{"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/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/template.js","../node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/react/index.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/base/css-constant.js","../node_modules/react/jsx-runtime.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","../node_modules/@mui/material/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/base/util.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/constant.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.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/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/createSuper.js","../node_modules/prop-types/index.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/@mui/system/esm/propsToClassKey.js","../node_modules/@mui/system/esm/createStyled.js","../node_modules/@mui/material/styles/styled.js","../node_modules/react-redux/es/utils/PropTypes.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.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/iterableToArrayLimit.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/nonIterableSpread.js","../node_modules/@mui/styles/createStyles/createStyles.js","../node_modules/@mui/styles/ServerStyleSheets/ServerStyleSheets.js","../node_modules/@mui/styles/useThemeVariants/useThemeVariants.js","../node_modules/@mui/styles/withTheme/withTheme.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/@mui/material/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","../node_modules/@mui/material/node_modules/clsx/dist/clsx.m.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/base/constant.js","../../src/utils/errors.ts","../../src/utils/common.ts","../../src/types/types-internal.ts","../../src/utils/plugins.ts","../../src/core/scope.ts","../../src/core/finalize.ts","../../src/core/proxy.ts","../../src/core/immerClass.ts","../../src/core/current.ts","../../src/immer.ts","../../src/utils/env.ts","../node_modules/@mui/material/utils/capitalize.js","../node_modules/@mui/x-date-pickers/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@mui/material/styles/useThemeProps.js","../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-operators.js","../node_modules/@mui/icons-material/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/lab/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/types.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/axios/index.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/util.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/enum.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/enum.js","../node_modules/nanoclone/src/index.js","../node_modules/yup/es/util/printValue.js","../node_modules/yup/es/locale.js","../node_modules/yup/es/util/isSchema.js","../node_modules/yup/es/Condition.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/yup/es/util/toArray.js","../node_modules/yup/es/ValidationError.js","../node_modules/yup/es/util/runTests.js","../node_modules/yup/es/Reference.js","../node_modules/yup/es/util/createValidation.js","../node_modules/yup/es/util/reach.js","../node_modules/yup/es/util/ReferenceSet.js","../node_modules/yup/es/schema.js","../node_modules/yup/es/mixed.js","../node_modules/yup/es/util/isAbsent.js","../node_modules/yup/es/boolean.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/yup/es/string.js","../node_modules/yup/es/number.js","../node_modules/yup/es/util/isodate.js","../node_modules/yup/es/date.js","../node_modules/yup/es/util/sortFields.js","../node_modules/yup/es/util/sortByKeyOrder.js","../node_modules/yup/es/object.js","../node_modules/yup/es/array.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/drawing-util.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/enum.js","../node_modules/@syncfusion/ej2-data/src/query.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/reactcss/lib/index.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/lodash/cloneDeep.js","../../src/index.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/redux/es/createStore.js","../node_modules/redux/es/combineReducers.js","../node_modules/redux/es/bindActionCreators.js","../node_modules/redux/es/compose.js","../node_modules/redux/es/applyMiddleware.js","../node_modules/@mui/system/esm/style.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/primitives/matrix.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-number.js","../../modules/HistoryContext.js","../../modules/createNameContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/withRouter.js","../../modules/hooks.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/@mui/x-date-pickers/internals/hooks/useUtils.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-name.js","../node_modules/@mui/x-date-pickers/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/tools.js","../../src/components/TableBodyCell.js","../../src/components/TableBodyRow.js","../../src/components/ExpandButton.js","../../src/components/TableSelectCell.js","../../src/utils.js","../../src/components/TableBody.js","../../src/components/TableFilter.js","../../src/components/TableFilterListItem.js","../../src/components/TableFilterList.js","../../src/components/JumpToPage.js","../../src/components/TablePagination.js","../../src/components/TableFooter.js","../../src/hooks/useColumnDrop.js","../../src/components/TableHeadCell.js","../../src/components/TableHeadRow.js","../../src/components/TableHead.js","../../src/components/TableResize.js","../../src/components/Popover.js","../../src/components/TableViewCol.js","../../src/components/TableSearch.js","../../src/components/TableToolbar.js","../../src/components/TableToolbarSelect.js","../../src/MUIDataTable.js","../../src/textLabels.js","../../src/localStorage/save.js","../../src/localStorage/load.js","../../src/plug-ins/DebounceSearchRender.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/constant.js","../node_modules/@mui/styles/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-dictionary.js","../node_modules/@mui/lab/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/universal-cookie/es6/utils.js","../node_modules/universal-cookie/es6/Cookies.js","../node_modules/universal-cookie/es6/index.js","../node_modules/@mui/material/utils/createSvgIcon.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.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","../node_modules/@mui/base/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/items.js","../node_modules/@mui/material/TextField/index.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-reference.js","../node_modules/@mui/material/Button/index.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-dictionary-properties.js","../node_modules/@mui/material/utils/useForkRef.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/util.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/utility/base-util.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-array.js","../node_modules/@mui/icons-material/DeleteOutline.js","../node_modules/@mui/material/Chip/chipClasses.js","../../../src/errors.js","../../../src/impl/formats.js","../../../src/impl/util.js","../../../src/impl/english.js","../../../src/impl/formatter.js","../../../src/impl/invalid.js","../../../src/zone.js","../../../src/zones/localZone.js","../../../src/zones/IANAZone.js","../../../src/zones/fixedOffsetZone.js","../../../src/zones/invalidZone.js","../../../src/impl/zoneUtil.js","../../../src/settings.js","../../../src/impl/locale.js","../../../src/impl/regexParser.js","../../../src/duration.js","../../../src/interval.js","../../../src/info.js","../../../src/impl/diff.js","../../../src/impl/digits.js","../../../src/impl/tokenParser.js","../../../src/impl/conversions.js","../../../src/datetime.js","../node_modules/lodash/lodash.js","../node_modules/core-js-pure/internals/export.js","../node_modules/@mui/icons-material/Check.js","../node_modules/@mui/icons-material/ExpandMore.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/@mui/base/generateUtilityClasses/generateUtilityClasses.js","../node_modules/@mui/base/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/material/Typography/index.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-drawings/src/drawing/primitives/size.js","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/icons-material/Close.js","../node_modules/react-dom/index.js","../node_modules/@mui/x-date-pickers/node_modules/clsx/dist/clsx.m.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/primitives/point.js","../node_modules/@mui/lab/node_modules/clsx/dist/clsx.m.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/connector-util.js","../node_modules/@mui/material/IconButton/index.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/@babel/runtime/helpers/esm/extends.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/primitives/rect.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/core-js-pure/internals/path.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-color.js","../node_modules/react-drag-drop-container/lib/bundle.js","../node_modules/moment-timezone/builds/moment-timezone-with-data.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font-metrics.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","../node_modules/@mui/material/styles/useTheme.js","../node_modules/@mui/base/composeClasses/composeClasses.js","../node_modules/lodash-es/_root.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","../node_modules/@mui/system/esm/breakpoints.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/enum.js","../../src/Enum.js","../../src/Utility.js","../../src/Tokenizer.js","../../src/Parser.js","../../src/Prefixer.js","../../src/Serializer.js","../../src/Middleware.js","../node_modules/core-js-pure/internals/fails.js","../node_modules/core-js-pure/internals/well-known-symbol.js","../node_modules/react-chartjs-2/es/index.js","../node_modules/@mui/material/List/ListContext.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","../node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js","../node_modules/@mui/material/InputBase/InputBase.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/core-js-pure/internals/define-well-known-symbol.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-layouter.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-pdfviewer/src/pdfviewer/base/spinner.js","../node_modules/@mui/system/esm/colorManipulator.js","../node_modules/@mui/material/Grid/index.js","../node_modules/@mui/x-date-pickers/internals/components/wrappers/WrapperVariantContext.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","../node_modules/@mui/styles/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@mui/styles/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@mui/styles/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@mui/styles/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@mui/styles/node_modules/jss/dist/jss.esm.js","../node_modules/@mui/system/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@mui/material/styles/createTransitions.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/action.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","../node_modules/@mui/system/esm/spacing.js","../node_modules/@mui/system/esm/memoize.js","../node_modules/@syncfusion/ej2-schedule/src/recurrence-editor/date-generator.js","../node_modules/core-js-pure/internals/global.js","../node_modules/@emotion/react/dist/emotion-element-699e6908.browser.esm.js","../node_modules/react-dnd/dist/esm/utils/js_utils.js","../node_modules/@mui/x-date-pickers/internals/components/icons/index.js","../node_modules/@mui/base/node_modules/clsx/dist/clsx.m.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-buttons/src/common/common.js","../node_modules/webpack/buildin/global.js","../node_modules/core-js-pure/internals/descriptors.js","../node_modules/core-js-pure/internals/entry-virtual.js","../node_modules/@mui/material/utils/useEnhancedEffect.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/utility/dom-util.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/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/@mui/material/transitions/utils.js","../node_modules/@mui/icons-material/Clear.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/core/elements/text-element.js","../node_modules/@mui/material/FormControl/index.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","../node_modules/@mui/system/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@mui/styles/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-custom-scrollbars/lib/index.js","../node_modules/@mui/material/Input/inputClasses.js","../node_modules/@mui/material/InputBase/inputBaseClasses.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-string-format.js","../node_modules/@mui/material/Tooltip/tooltipClasses.js","../node_modules/@mui/x-date-pickers/internals/utils/utils.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@mui/base/utils/isHostComponent.js","../node_modules/axios/lib/utils.js","../node_modules/core-js-pure/internals/is-object.js","../node_modules/core-js-pure/internals/has.js","../node_modules/@mui/material/Paper/index.js","../node_modules/react-dnd/dist/esm/decorators/utils.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-solid-brush.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@mui/material/utils/useEventCallback.js","../node_modules/moment/moment.js","../node_modules/@mui/x-date-pickers/internals/constants/dimensions.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","../node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","../node_modules/@mui/material/FilledInput/filledInputClasses.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/lodash/isArray.js","../node_modules/@mui/material/utils/useControlled.js","../node_modules/@mui/material/utils/ownerDocument.js","../node_modules/@mui/x-date-pickers/internals/hooks/usePickerState.js","../node_modules/@mui/x-date-pickers/internals/hooks/useOpenState.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","../node_modules/lodash-es/_Symbol.js","../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/selector.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-drawings/src/drawing/utility/path-util.js","../node_modules/react-beautiful-dnd/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-beautiful-dnd/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-beautiful-dnd/node_modules/redux/es/redux.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/components/Context.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/utils/batch.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/components/Provider.js","../node_modules/react-beautiful-dnd/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/connect/connect.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/hooks/useSelector.js","../node_modules/use-memo-one/dist/use-memo-one.esm.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/index.js","../node_modules/css-box-model/dist/css-box-model.esm.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/raf-schd/dist/raf-schd.esm.js","../node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.js","../node_modules/date-fns/esm/isBefore/index.js","../node_modules/@mui/x-date-pickers/internals/components/PickersToolbarButton.js","../node_modules/core-js-pure/internals/an-object.js","../node_modules/core-js-pure/internals/to-object.js","../node_modules/@mui/icons-material/Error.js","../node_modules/@mui/material/utils/debounce.js","../node_modules/dnd-core/node_modules/redux/es/redux.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/types.js","../node_modules/dnd-core/dist/esm/utils/equality.js","../node_modules/dnd-core/dist/esm/reducers/dragOffset.js","../node_modules/dnd-core/dist/esm/actions/registry.js","../node_modules/dnd-core/dist/esm/utils/js_utils.js","../node_modules/dnd-core/dist/esm/reducers/dragOperation.js","../node_modules/dnd-core/dist/esm/reducers/refCount.js","../node_modules/dnd-core/dist/esm/utils/dirtiness.js","../node_modules/dnd-core/dist/esm/reducers/dirtyHandlerIds.js","../node_modules/dnd-core/dist/esm/reducers/stateId.js","../node_modules/dnd-core/dist/esm/reducers/index.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/local/setClientOffset.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/beginDrag.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/publishDragSource.js","../node_modules/dnd-core/dist/esm/utils/matchesType.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/hover.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/drop.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/endDrag.js","../node_modules/dnd-core/dist/esm/utils/coords.js","../node_modules/dnd-core/dist/esm/DragDropMonitorImpl.js","../node_modules/dnd-core/dist/esm/interfaces.js","../node_modules/dnd-core/dist/esm/utils/getNextUniqueId.js","../node_modules/dnd-core/dist/esm/contracts.js","../node_modules/@react-dnd/asap/dist/esm/browser/asap.js","../node_modules/dnd-core/dist/esm/HandlerRegistryImpl.js","../node_modules/dnd-core/dist/esm/DragDropManagerImpl.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/index.js","../node_modules/dnd-core/dist/esm/factories.js","../node_modules/react-dnd/dist/esm/common/DndContext.js","../node_modules/@mui/base/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@mui/material/MenuItem/menuItemClasses.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/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/pdf-annotation.js","../node_modules/@mui/material/Typography/Typography.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","../node_modules/lodash/_root.js","../node_modules/core-js-pure/internals/to-indexed-object.js","../node_modules/core-js-pure/internals/array-method-uses-to-length.js","../node_modules/@mui/material/ListItemText/listItemTextClasses.js","../node_modules/@mui/material/Button/buttonClasses.js","../node_modules/@mui/material/Table/Tablelvl2Context.js","../node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/Select/selectClasses.js","../node_modules/date-fns/esm/_lib/roundingMethods/index.js","../node_modules/date-fns/esm/differenceInMilliseconds/index.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useDateValidation.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/object-object-pair/dictionary.js","../node_modules/@mui/system/esm/merge.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/@mui/x-date-pickers/internals/utils/date-utils.js","../../src/FileSaver.js","../node_modules/date-fns/esm/addMonths/index.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/core/containers/container.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/lodash/isObjectLike.js","../node_modules/webpack/buildin/module.js","../node_modules/core-js-pure/internals/create-non-enumerable-property.js","../node_modules/@mui/material/Checkbox/index.js","../node_modules/@mui/material/InputLabel/index.js","../node_modules/@mui/material/Select/index.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/@mui/material/utils/useId.js","../node_modules/@mui/material/Grid/gridClasses.js","../node_modules/@mui/material/Checkbox/checkboxClasses.js","../node_modules/@mui/icons-material/Menu.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/pdf-template.js","../node_modules/date-fns/esm/constants/index.js","../node_modules/@mui/x-date-pickers/internals/components/PickersToolbar.js","../node_modules/@mui/x-date-pickers/internals/utils/time-utils.js","../node_modules/date-fns/esm/startOfYear/index.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-tiling-brush.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/core-js-pure/internals/to-length.js","../node_modules/@mui/material/utils/useIsFocusVisible.js","../node_modules/@mui/material/TableRow/tableRowClasses.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@mui/material/colors/grey.js","../node_modules/@mui/material/styles/defaultTheme.js","../node_modules/property-expr/index.js","../node_modules/@mui/icons-material/EditOutlined.js","../node_modules/@mui/icons-material/LockOutlined.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/react-dnd/dist/esm/common/registration.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/@mui/icons-material/HomeOutlined.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/core/elements/drawing-element.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/month.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/view-base.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/@mui/x-date-pickers/node_modules/rifm/dist/rifm.esm.js","../node_modules/@mui/x-date-pickers/internals/components/KeyboardDateInput.js","../node_modules/@mui/x-date-pickers/internals/hooks/useMaskedInput.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js","../node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","../node_modules/jsep/build/jsep.js","../node_modules/date-fns/esm/addDays/index.js","../node_modules/date-fns/esm/endOfDay/index.js","../node_modules/date-fns/esm/endOfMonth/index.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-richtexteditor/src/rich-text-editor/models/default-locale.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@mui/icons-material/AccountCircleOutlined.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/startOfWeek/index.js","../node_modules/date-fns/esm/endOfWeek/index.js","../node_modules/@mui/x-date-pickers/internals/utils/text-field-helper.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-gradient-brush.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/enum/enum.js","../node_modules/@mui/utils/esm/ownerDocument.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_getNative.js","../node_modules/core-js-pure/internals/object-define-property.js","../node_modules/core-js-pure/internals/get-built-in.js","../node_modules/core-js-pure/internals/array-iteration.js","../node_modules/core-js-pure/internals/iterators.js","../node_modules/@mui/material/MenuItem/index.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@mui/material/IconButton/iconButtonClasses.js","../node_modules/@mui/material/TableCell/tableCellClasses.js","../node_modules/@mui/material/utils/ownerWindow.js","../node_modules/@mui/system/esm/useTheme.js","../node_modules/lodash/has.js","../node_modules/@mui/material/InputBase/utils.js","../node_modules/lodash-es/isBuffer.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/@mui/x-date-pickers/internals/hooks/date-helpers-hooks.js","../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/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/react-router-redux/node_modules/react-router/es/Router.js","../node_modules/react-router-redux/es/reducer.js","../node_modules/react-router-redux/es/ConnectedRouter.js","../node_modules/react-router-redux/es/actions.js","../node_modules/react-router-redux/es/middleware.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/@emotion/react/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/is-in-browser/dist/module.js","../node_modules/date-fns/esm/compareAsc/index.js","../node_modules/date-fns/esm/endOfYear/index.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","../node_modules/@mui/material/Button/Button.js","../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../node_modules/@mui/icons-material/ExpandLess.js","../node_modules/lodash/isObject.js","../node_modules/core-js-pure/internals/create-property-descriptor.js","../node_modules/core-js-pure/internals/is-pure.js","../node_modules/core-js-pure/internals/set-to-string-tag.js","../node_modules/core-js-pure/internals/classof.js","../node_modules/core-js-pure/internals/array-method-is-strict.js","../node_modules/@mui/material/FormControlLabel/index.js","../node_modules/@mui/material/Typography/typographyClasses.js","../node_modules/@mui/material/Paper/paperClasses.js","../node_modules/@mui/material/Table/tableClasses.js","../node_modules/@mui/material/TableBody/tableBodyClasses.js","../node_modules/@mui/material/FormControl/formControlClasses.js","../node_modules/@mui/material/FormGroup/formGroupClasses.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/Popover/popoverClasses.js","../node_modules/@mui/material/TextField/textFieldClasses.js","../node_modules/@mui/material/Toolbar/toolbarClasses.js","../node_modules/@mui/material/TableHead/tableHeadClasses.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/@mui/system/createTheme/createBreakpoints.js","../node_modules/@mui/utils/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@mui/icons-material/CheckCircle.js","../node_modules/@mui/styles/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@mui/icons-material/Remove.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/Visibility.js","../node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","../node_modules/@mui/icons-material/DateRange.js","../node_modules/@mui/icons-material/KeyboardArrowUp.js","../node_modules/@mui/icons-material/KeyboardArrowDown.js","../node_modules/@mui/icons-material/Link.js","../node_modules/@mui/lab/TreeView/TreeViewContext.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/getDaysInMonth/index.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useValidation.js","../node_modules/@mui/x-date-pickers/internals/components/PureDateInput.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/data.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/@mui/x-date-pickers/internals/hooks/validation/useTimeValidation.js","../node_modules/@mui/x-date-pickers/internals/components/PickersToolbarText.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/event-base.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/vertical-view.js","../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../node_modules/date-fns/esm/isLastDayOfMonth/index.js","../node_modules/date-fns/esm/differenceInMonths/index.js","../node_modules/@mui/material/internal/switchBaseClasses.js","../node_modules/@mui/material/internal/SwitchBase.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../node_modules/date-fns/esm/differenceInDays/index.js","../node_modules/@mui/x-date-pickers/internals/components/PickersPopper.js","../node_modules/@mui/x-date-pickers/internals/components/wrappers/DesktopWrapper.js","../node_modules/@mui/x-date-pickers/internals/components/PickersModalDialog.js","../node_modules/@mui/x-date-pickers/internals/components/wrappers/MobileWrapper.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/invariant/browser.js","../node_modules/symbol-observable/es/index.js","../node_modules/@mui/icons-material/Warning.js","../node_modules/cookie/index.js","../node_modules/@mui/material/node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/@mui/icons-material/CalendarToday.js","../slidedown.tsx","../node_modules/date-fns/esm/startOfMonth/index.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/byte-array.js","../node_modules/@syncfusion/ej2-schedule/src/common/calendar-util.js","../node_modules/@mui/system/esm/compose.js","../node_modules/@mui/system/esm/borders.js","../node_modules/@mui/system/esm/display.js","../node_modules/@mui/system/esm/flexbox.js","../node_modules/@mui/system/esm/grid.js","../node_modules/@mui/system/esm/positions.js","../node_modules/@mui/system/esm/palette.js","../node_modules/@mui/system/esm/shadows.js","../node_modules/@mui/system/esm/sizing.js","../node_modules/@mui/system/esm/typography.js","../node_modules/@mui/system/esm/getThemeValue.js","../node_modules/@emotion/react/node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/@emotion/react/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/react/node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.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-navigations/src/common/menu-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","../node_modules/@mui/utils/esm/setRef.js","../node_modules/@syncfusion/ej2-file-utils/src/encoding.js","../node_modules/@mui/utils/esm/deepmerge.js","../node_modules/@mui/utils/esm/useEventCallback.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/toString.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/keys.js","../node_modules/@mui/material/node_modules/react-is/index.js","../node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","../node_modules/core-js-pure/internals/classof-raw.js","../node_modules/core-js-pure/internals/require-object-coercible.js","../node_modules/core-js-pure/internals/a-function.js","../node_modules/core-js-pure/internals/object-create.js","../node_modules/core-js-pure/internals/object-keys.js","../node_modules/core-js-pure/internals/is-array.js","../node_modules/core-js-pure/internals/redefine.js","../node_modules/core-js-pure/internals/internal-state.js","../node_modules/core-js-pure/internals/create-property.js","../node_modules/core-js-pure/modules/es.string.iterator.js","../node_modules/core-js-pure/internals/array-method-has-species-support.js","../node_modules/@mui/styles/StylesProvider/index.js","../node_modules/@mui/material/InputBase/index.js","../node_modules/@mui/material/Popover/index.js","../node_modules/@mui/material/Grow/index.js","../node_modules/react-is/index.js","../node_modules/@emotion/react/node_modules/@emotion/weak-memoize/dist/weak-memoize.browser.esm.js","../node_modules/@mui/icons-material/Search.js","../node_modules/@emotion/is-prop-valid/node_modules/@emotion/memoize/dist/emotion-memoize.browser.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.browser.esm.js","../node_modules/@emotion/styled/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@emotion/styled/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/styled/node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/@emotion/styled/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/styled/node_modules/@emotion/memoize/dist/emotion-memoize.browser.esm.js","../node_modules/@emotion/styled/node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../node_modules/@mui/styled-engine/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/path-to-regexp/index.js","../node_modules/@mui/icons-material/ListOutlined.js","../node_modules/@mui/icons-material/CreditCardOutlined.js","../node_modules/@mui/icons-material/DeleteOutlined.js","../node_modules/@mui/material/Paper/Paper.js","../node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js","../node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js","../node_modules/react-dnd/dist/esm/utils/isRef.js","../node_modules/@mui/icons-material/DragHandle.js","../../index.ts","../node_modules/@mui/lab/TreeView/descendants.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","../node_modules/@syncfusion/ej2-schedule/src/schedule/timezone/timezone.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/@mui/utils/esm/useEnhancedEffect.js","../node_modules/react-device-detect/main.js","../node_modules/@mui/material/Tabs/tabsClasses.js","../node_modules/@mui/material/Dialog/dialogClasses.js","../node_modules/tinycolor2/tinycolor.js","../node_modules/@mui/icons-material/MoreVert.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/group.js","../node_modules/webpack/buildin/harmony-module.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_copyObject.js","../node_modules/@mui/styles/StylesProvider/StylesProvider.js","../node_modules/core-js-pure/internals/object-property-is-enumerable.js","../node_modules/core-js-pure/internals/indexed-object.js","../node_modules/core-js-pure/internals/to-primitive.js","../node_modules/core-js-pure/internals/function-bind-context.js","../node_modules/core-js-pure/internals/to-integer.js","../node_modules/core-js-pure/internals/hidden-keys.js","../node_modules/core-js-pure/internals/shared-key.js","../node_modules/core-js-pure/modules/web.dom-collections.iterator.js","../node_modules/@mui/material/ListItemText/index.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/createChainedFunction.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/nonIterableRest.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/_overArg.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/redux-thunk/es/index.js","../node_modules/@emotion/react/node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/@mui/private-theming/useTheme/ThemeContext.js","../node_modules/@mui/icons-material/Info.js","../node_modules/lodash/mapValues.js","../node_modules/@mui/styles/node_modules/@mui/private-theming/useTheme/ThemeContext.js","../node_modules/@mui/icons-material/PersonOutlined.js","../node_modules/@mui/icons-material/InfoOutlined.js","../node_modules/@mui/material/Accordion/AccordionContext.js","../node_modules/@mui/material/internal/svg-icons/Close.js","../node_modules/@mui/material/Table/TableContext.js","../node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","../node_modules/react-dnd/dist/esm/common/DragSourceMonitorImpl.js","../node_modules/react-dnd/dist/esm/common/SourceConnector.js","../node_modules/react-dnd/dist/esm/common/DropTargetMonitorImpl.js","../node_modules/react-dnd/dist/esm/common/TargetConnector.js","../node_modules/react-dnd/dist/esm/utils/isValidType.js","../node_modules/@mui/icons-material/Done.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/base-toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/dropdown-buttons.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/color-picker.js","../node_modules/@mui/material/RadioGroup/RadioGroupContext.js","../node_modules/@mui/icons-material/List.js","../node_modules/@mui/icons-material/BarChart.js","../node_modules/@mui/icons-material/DriveFolderUpload.js","../node_modules/@mui/material/Dialog/DialogContext.js","../node_modules/@mui/material/DialogTitle/dialogTitleClasses.js","../node_modules/@mui/icons-material/Edit.js","../node_modules/@mui/icons-material/ContentCopy.js","../node_modules/@mui/icons-material/ErrorOutline.js","../node_modules/@mui/icons-material/Reorder.js","../node_modules/@mui/icons-material/Cancel.js","../node_modules/react-number-format/dist/react-number-format.es.js","../node_modules/@mui/icons-material/Title.js","../node_modules/@mui/icons-material/FormatColorTextOutlined.js","../node_modules/@mui/icons-material/ArrowDropDownCircleOutlined.js","../node_modules/@mui/icons-material/AvTimerSharp.js","../node_modules/@mui/icons-material/SmartButton.js","../node_modules/@mui/icons-material/CheckBoxOutlined.js","../node_modules/@mui/icons-material/UploadFile.js","../node_modules/@mui/icons-material/CropOriginal.js","../node_modules/date-fns/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/addSeconds/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/addHours/index.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/differenceInQuarters/index.js","../node_modules/date-fns/esm/differenceInWeeks/index.js","../node_modules/date-fns/esm/differenceInHours/index.js","../node_modules/date-fns/esm/differenceInMinutes/index.js","../node_modules/date-fns/esm/differenceInSeconds/index.js","../node_modules/date-fns/esm/getHours/index.js","../node_modules/date-fns/esm/setHours/index.js","../node_modules/date-fns/esm/setMinutes/index.js","../node_modules/date-fns/esm/getSeconds/index.js","../node_modules/date-fns/esm/setSeconds/index.js","../node_modules/date-fns/esm/isSameDay/index.js","../node_modules/date-fns/esm/isSameMonth/index.js","../node_modules/date-fns/esm/isSameYear/index.js","../node_modules/date-fns/esm/getYear/index.js","../node_modules/date-fns/esm/setYear/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/isWithinInterval/index.js","../node_modules/date-fns/esm/setMonth/index.js","../node_modules/date-fns/esm/eachDayOfInterval/index.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/dom-helpers/esm/removeClass.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-grids/src/grid/services/focus-strategy.js","../node_modules/@mui/icons-material/FileDownload.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/vertical-view.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/timeline-view.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/format/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/@mui/material/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@mui/material/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/date-fns/esm/differenceInCalendarYears/index.js","../node_modules/date-fns/esm/differenceInYears/index.js","../node_modules/date-fns/esm/startOfHour/index.js","../node_modules/date-fns/esm/isSameHour/index.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/react-dnd/dist/esm/decorators/disposables.js","../node_modules/react-dnd/dist/esm/decorators/decorateHandler.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/react-dnd/dist/esm/utils/cloneWithRef.js","../node_modules/react-dnd/dist/esm/common/wrapConnectorHooks.js","../node_modules/@mui/utils/esm/formatMuiErrorMessage.js","../node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","../node_modules/@mui/material/Divider/dividerClasses.js","../node_modules/@mui/icons-material/ErrorSharp.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/core/elements/path-element.js","../node_modules/color-conversion-rgb/lib/index.js","../node_modules/@mui/utils/esm/useId.js","../node_modules/@mui/utils/esm/useControlled.js","../node_modules/@mui/utils/esm/useForkRef.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/ajax-handler.js","../node_modules/object-assign/index.js","../node_modules/process/browser.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/eq.js","../node_modules/lodash/_Map.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/core-js-pure/internals/object-define-properties.js","../node_modules/core-js-pure/internals/to-absolute-index.js","../node_modules/core-js-pure/internals/enum-bug-keys.js","../node_modules/core-js-pure/internals/shared.js","../node_modules/core-js-pure/internals/shared-store.js","../node_modules/core-js-pure/internals/uid.js","../node_modules/core-js-pure/internals/native-symbol.js","../node_modules/core-js-pure/internals/object-get-own-property-names.js","../node_modules/core-js-pure/internals/object-get-own-property-symbols.js","../node_modules/core-js-pure/internals/well-known-symbol-wrapped.js","../node_modules/core-js-pure/internals/to-string-tag-support.js","../node_modules/core-js-pure/internals/array-species-create.js","../node_modules/core-js-pure/internals/object-get-prototype-of.js","../node_modules/core-js-pure/internals/get-iterator-method.js","../node_modules/@babel/runtime-corejs3/core-js/symbol.js","../node_modules/core-js-pure/internals/engine-v8-version.js","../node_modules/core-js-pure/internals/whitespaces.js","../node_modules/@mui/material/Input/index.js","../node_modules/@mui/material/Chip/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/lodash/forOwn.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@emotion/react/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/@emotion/react/node_modules/@emotion/memoize/dist/emotion-memoize.browser.esm.js","../node_modules/@emotion/react/_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js","../node_modules/@emotion/react/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@mui/icons-material/ArrowDropDown.js","../node_modules/@mui/material/IconButton/IconButton.js","../node_modules/@mui/material/Grow/Grow.js","../node_modules/@mui/material/FormControl/FormControl.js","../node_modules/@mui/material/FormGroup/FormGroup.js","../node_modules/@mui/material/Input/Input.js","../node_modules/@mui/icons-material/FilterList.js","../node_modules/recompose/compose.js","../node_modules/react-beautiful-dnd/node_modules/react-is/index.js","../node_modules/@babel/runtime/helpers/inheritsLoose.js","../node_modules/@mui/icons-material/Folder.js","../node_modules/lodash/isEqual.js","../node_modules/@mui/material/utils/getScrollbarSize.js","../node_modules/@mui/material/MenuList/MenuList.js","../node_modules/@mui/material/Menu/menuClasses.js","../node_modules/@mui/material/Menu/Menu.js","../node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","../node_modules/@mui/material/NativeSelect/NativeSelectInput.js","../node_modules/@mui/material/Select/SelectInput.js","../node_modules/@mui/material/Select/Select.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/InputLabel/InputLabel.js","../node_modules/@mui/material/Grid/GridContext.js","../node_modules/@mui/material/Grid/Grid.js","../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../node_modules/lodash/snakeCase.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/mini-create-react-context/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@mui/styles/node_modules/@mui/private-theming/ThemeProvider/nested.js","../node_modules/@mui/icons-material/ImportExportOutlined.js","../node_modules/@react-dnd/asap/dist/esm/browser/raw.js","../node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","../node_modules/@syncfusion/ej2-splitbuttons/src/drop-down-button/drop-down-button.js","../node_modules/@syncfusion/ej2-inputs/src/slider/slider.js","../node_modules/@mui/icons-material/FiberManualRecord.js","../node_modules/react-beautiful-dnd/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/@mui/icons-material/MonetizationOn.js","../node_modules/@mui/icons-material/StarBorderOutlined.js","../node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.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/resize.js","../node_modules/@date-io/date-fns/build/index.esm.js","../node_modules/@mui/icons-material/AccountBalanceOutlined.js","../node_modules/@mui/icons-material/CreditCard.js","../node_modules/@mui/icons-material/CalendarTodayOutlined.js","../node_modules/@mui/icons-material/SecurityOutlined.js","../node_modules/element-resize-event/index.js","../node_modules/@mui/icons-material/RefreshOutlined.js","../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","../node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","../node_modules/@syncfusion/ej2-inputs/src/uploader/uploader.js","../node_modules/@mui/material/node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/@mui/material/node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@mui/material/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@mui/material/ButtonBase/Ripple.js","../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../node_modules/@mui/material/ButtonBase/TouchRipple.js","../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../node_modules/@mui/material/ButtonBase/ButtonBase.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/identity.js","../node_modules/lodash/_createCompounder.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/@mui/material/ListItemText/ListItemText.js","../node_modules/dom-css/index.js","../node_modules/core-js-pure/internals/ie8-dom-define.js","../node_modules/core-js-pure/internals/document-create-element.js","../node_modules/core-js-pure/internals/object-keys-internal.js","../node_modules/core-js-pure/internals/array-includes.js","../node_modules/core-js-pure/internals/function-bind.js","../node_modules/core-js-pure/es/object/keys.js","../node_modules/core-js-pure/es/object/get-own-property-symbols.js","../node_modules/core-js-pure/modules/es.symbol.js","../node_modules/core-js-pure/internals/use-symbol-as-uid.js","../node_modules/core-js-pure/es/object/define-property.js","../node_modules/core-js-pure/es/object/assign.js","../node_modules/core-js-pure/internals/object-assign.js","../node_modules/@babel/runtime-corejs3/core-js/array/is-array.js","../node_modules/core-js-pure/es/array/is-array.js","../node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime-corejs3/core-js/array/from.js","../node_modules/core-js-pure/internals/string-multibyte.js","../node_modules/core-js-pure/internals/define-iterator.js","../node_modules/core-js-pure/internals/create-iterator-constructor.js","../node_modules/core-js-pure/internals/iterators-core.js","../node_modules/core-js-pure/internals/correct-prototype-getter.js","../node_modules/core-js-pure/internals/object-set-prototype-of.js","../node_modules/core-js-pure/internals/array-from.js","../node_modules/@babel/runtime-corejs3/core-js/is-iterable.js","../node_modules/core-js-pure/modules/es.array.iterator.js","../node_modules/core-js-pure/internals/add-to-unscopables.js","../node_modules/core-js-pure/modules/es.array.concat.js","../node_modules/core-js-pure/internals/engine-user-agent.js","../node_modules/core-js-pure/modules/es.symbol.iterator.js","../node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js","../node_modules/core-js-pure/es/instance/slice.js","../node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js","../node_modules/core-js-pure/es/instance/index-of.js","../node_modules/@babel/runtime-corejs3/helpers/typeof.js","../node_modules/@babel/runtime-corejs3/core-js/object/define-property.js","../node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js","../node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js","../node_modules/core-js-pure/internals/object-to-array.js","../node_modules/@mui/material/Table/Table.js","../node_modules/@mui/material/TableBody/TableBody.js","../node_modules/@mui/material/TableCell/index.js","../node_modules/@mui/material/TableCell/TableCell.js","../node_modules/@mui/material/TableRow/TableRow.js","../node_modules/core-js-pure/internals/string-trim.js","../node_modules/core-js-pure/internals/native-url.js","../node_modules/core-js-pure/internals/an-instance.js","../node_modules/core-js-pure/modules/web.url-search-params.js","../node_modules/core-js-pure/internals/get-iterator.js","../node_modules/@mui/material/FormControlLabel/FormControlLabel.js","../node_modules/@mui/material/FormGroup/index.js","../node_modules/@mui/material/MenuItem/MenuItem.js","../node_modules/@mui/material/Popover/Popover.js","../node_modules/@mui/material/TextField/TextField.js","../node_modules/@mui/material/Toolbar/Toolbar.js","../node_modules/@mui/material/Toolbar/index.js","../node_modules/@mui/material/TableHead/TableHead.js","../node_modules/react-dnd/dist/esm/common/DndProvider.js","../node_modules/react-dnd/dist/esm/interfaces/index.js","../node_modules/react-dnd/dist/esm/decorators/index.js","../node_modules/react-dnd/dist/esm/decorators/DragLayer.js","../node_modules/@mui/icons-material/Delete.js","../node_modules/lodash/_baseEach.js","../node_modules/math-expression-evaluator/src/formula_evaluator.js","../node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js","../node_modules/react-dnd/dist/esm/hooks/internal/useCollector.js","../node_modules/react-dnd/dist/esm/hooks/internal/useMonitorOutput.js","../node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js","../node_modules/react-dnd/dist/esm/hooks/internal/drag.js","../node_modules/react-dnd/dist/esm/hooks/useDrag.js","../node_modules/react-dnd/dist/esm/hooks/internal/drop.js","../node_modules/react-dnd/dist/esm/hooks/useDrop.js","../node_modules/react-dnd/dist/esm/hooks/useDragLayer.js","../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@mui/material/Checkbox/Checkbox.js","../node_modules/@mui/base/utils/appendOwnerState.js","../node_modules/@mui/material/Tooltip/Tooltip.js","../node_modules/@mui/material/internal/svg-icons/Cancel.js","../node_modules/@mui/material/Chip/Chip.js","../node_modules/react-dnd/dist/esm/common/DragPreviewImage.js","../node_modules/react-dnd/dist/esm/decorators/createSourceFactory.js","../node_modules/react-dnd/dist/esm/decorators/DragSource.js","../node_modules/react-dnd/dist/esm/decorators/createTargetFactory.js","../node_modules/react-dnd/dist/esm/decorators/DropTarget.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/warning/warning.js","../node_modules/keymirror/index.js","../node_modules/@mui/base/generateUtilityClass/ClassNameGenerator.js","../node_modules/lodash/camelCase.js","../node_modules/lodash/mapKeys.js","../node_modules/toposort/index.js","../node_modules/@mui/icons-material/LinkOutlined.js","../node_modules/@mui/icons-material/KeyboardArrowLeftOutlined.js","../node_modules/@mui/icons-material/KeyboardArrowRightOutlined.js","../node_modules/@mui/icons-material/DateRangeOutlined.js","../node_modules/@mui/icons-material/AssessmentOutlined.js","../node_modules/@mui/icons-material/CheckOutlined.js","../node_modules/@mui/icons-material/ClearOutlined.js","../node_modules/@mui/icons-material/CloseOutlined.js","../node_modules/@mui/icons-material/NoteAddOutlined.js","../node_modules/@mui/icons-material/DashboardOutlined.js","../node_modules/@mui/icons-material/DnsOutlined.js","../node_modules/@mui/icons-material/EmailOutlined.js","../node_modules/@mui/icons-material/FolderOutlined.js","../node_modules/@mui/icons-material/Input.js","../node_modules/@mui/icons-material/GridOnOutlined.js","../node_modules/@mui/icons-material/AnnouncementOutlined.js","../node_modules/@mui/icons-material/AddOutlined.js","../node_modules/@mui/icons-material/AddCircleOutlined.js","../node_modules/@mui/icons-material/VisibilityOutlined.js","../node_modules/@mui/icons-material/TuneOutlined.js","../node_modules/@mui/icons-material/PaletteOutlined.js","../node_modules/@mui/icons-material/DeleteOutlineOutlined.js","../node_modules/@mui/icons-material/PeopleOutlined.js","../node_modules/@mui/icons-material/ViewListOutlined.js","../node_modules/@mui/icons-material/StarRate.js","../node_modules/@mui/icons-material/ViewColumnOutlined.js","../node_modules/@mui/icons-material/MenuOpenOutlined.js","../node_modules/@mui/icons-material/OutlinedFlag.js","../node_modules/@mui/icons-material/InsertLinkOutlined.js","../node_modules/@mui/icons-material/VerifiedUserOutlined.js","../node_modules/@mui/icons-material/SupervisorAccountOutlined.js","../node_modules/@mui/icons-material/FilterListOutlined.js","../node_modules/@mui/icons-material/FactCheckOutlined.js","../node_modules/@mui/icons-material/Person.js","../node_modules/@mui/icons-material/PlayArrow.js","../node_modules/@mui/icons-material/Send.js","../node_modules/@mui/icons-material/ArrowUpward.js","../node_modules/@mui/icons-material/ArrowDownward.js","../node_modules/@mui/icons-material/Undo.js","../node_modules/@mui/icons-material/PlayCircleOutline.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/@icons/material/UnfoldMoreHorizontalIcon.js","../node_modules/@icons/material/CheckIcon.js","../node_modules/@mui/icons-material/Square.js","../node_modules/@mui/icons-material/MonetizationOnOutlined.js","../node_modules/@mui/icons-material/LinkTwoTone.js","../node_modules/@mui/icons-material/ControlCameraTwoTone.js","../node_modules/@mui/icons-material/CheckCircleOutlined.js","../node_modules/@mui/icons-material/DoDisturbAlt.js","../node_modules/@mui/icons-material/NotificationImportant.js","../node_modules/@mui/icons-material/Article.js","../node_modules/@mui/icons-material/Event.js","../node_modules/@mui/icons-material/Campaign.js","../node_modules/@mui/icons-material/CellTowerOutlined.js","../node_modules/@mui/icons-material/VpnKeyOutlined.js","../node_modules/@mui/icons-material/AddBoxSharp.js","../node_modules/@mui/icons-material/ChevronRight.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","../node_modules/react-easy-crop/dist/index.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@mui/icons-material/Crop.js","../node_modules/@mui/icons-material/CheckBox.js","../node_modules/@mui/icons-material/Label.js","../node_modules/@mui/icons-material/ArrowCircleLeft.js","../node_modules/@mui/icons-material/Star.js","../node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","../node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","../node_modules/@mui/icons-material/OpenInNew.js","../node_modules/@mui/icons-material/PrintOutlined.js","../node_modules/react-idle-timer/dist/index.esm.js","../node_modules/@mui/material/styles/createMixins.js","../node_modules/@mui/material/colors/common.js","../node_modules/@mui/material/colors/purple.js","../node_modules/@mui/material/colors/red.js","../node_modules/@mui/material/colors/orange.js","../node_modules/@mui/material/colors/blue.js","../node_modules/@mui/material/colors/lightBlue.js","../node_modules/@mui/material/colors/green.js","../node_modules/@mui/material/styles/createPalette.js","../node_modules/@mui/material/styles/createTypography.js","../node_modules/@mui/material/styles/shadows.js","../node_modules/@mui/material/styles/zIndex.js","../node_modules/@mui/material/styles/createTheme.js","../node_modules/@mui/x-date-pickers/locales/utils/getPickersLocalization.js","../node_modules/@mui/x-date-pickers/locales/enUS.js","../node_modules/@mui/x-date-pickers/LocalizationProvider/LocalizationProvider.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/@mui/utils/esm/capitalize.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/styles/node_modules/@mui/private-theming/useTheme/useTheme.js","../node_modules/@mui/styles/node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","../node_modules/@mui/styles/node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","../node_modules/@mui/styles/node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","../node_modules/hyphenate-style-name/index.js","../node_modules/@mui/styles/node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","../node_modules/@mui/styles/node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","../node_modules/css-vendor/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/css-vendor/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/css-vendor/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/css-vendor/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/css-vendor/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/css-vendor/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/css-vendor/dist/css-vendor.esm.js","../node_modules/@mui/styles/node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","../node_modules/@mui/styles/node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","../node_modules/@mui/styles/jssPreset/jssPreset.js","../node_modules/@mui/base/ModalUnstyled/modalUnstyledClasses.js","../node_modules/@mui/base/ModalUnstyled/ModalManager.js","../node_modules/@mui/base/ModalUnstyled/ModalUnstyled.js","../node_modules/@mui/material/Modal/Modal.js","../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../node_modules/@mui/material/SvgIcon/SvgIcon.js","../node_modules/@mui/material/node_modules/react-transition-group/esm/config.js","../node_modules/@mui/material/node_modules/react-transition-group/esm/Transition.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/core/appearance.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/utility/diagram-util.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/node_modules/scheduler/index.js","../node_modules/react-dom/node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/isarray/index.js","../node_modules/@mui/system/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@mui/system/node_modules/@babel/runtime/helpers/extends.js","../node_modules/@mui/system/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/@emotion/styled/node_modules/@babel/runtime/helpers/extends.js","../node_modules/lodash/_baseHas.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/memoize.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/get.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_arrayReduce.js","../node_modules/lodash/deburr.js","../node_modules/lodash/_deburrLetter.js","../node_modules/lodash/_basePropertyOf.js","../node_modules/lodash/words.js","../node_modules/lodash/_asciiWords.js","../node_modules/lodash/_hasUnicodeWord.js","../node_modules/lodash/_unicodeWords.js","../node_modules/lodash/capitalize.js","../node_modules/lodash/upperFirst.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/babel-preset-react-app/node_modules/regenerator-runtime/runtime.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/isMap.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/isSet.js","../node_modules/lodash/_baseIsSet.js","../node_modules/redux-logger/dist/redux-logger.js","../node_modules/react-device-detect/node_modules/ua-parser-js/dist/ua-parser.min.js","../node_modules/@mui/styles/node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/@mui/styles/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/@emotion/react/node_modules/@babel/runtime/helpers/extends.js","../node_modules/@mui/material/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-custom-scrollbars/lib/Scrollbars/index.js","../node_modules/raf/index.js","../../src/performance-now.coffee","../node_modules/prefix-style/index.js","../node_modules/to-camel-case/index.js","../node_modules/to-space-case/index.js","../node_modules/to-no-case/index.js","../node_modules/add-px-to-style/index.js","../node_modules/react-custom-scrollbars/lib/utils/isString.js","../node_modules/react-custom-scrollbars/lib/utils/getScrollbarWidth.js","../node_modules/react-custom-scrollbars/lib/utils/returnFalse.js","../node_modules/react-custom-scrollbars/lib/utils/getInnerWidth.js","../node_modules/react-custom-scrollbars/lib/utils/getInnerHeight.js","../node_modules/react-custom-scrollbars/lib/Scrollbars/styles.js","../node_modules/react-custom-scrollbars/lib/Scrollbars/defaultRenderElements.js","../node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js","../node_modules/core-js-pure/stable/reflect/construct.js","../node_modules/core-js-pure/es/reflect/construct.js","../node_modules/core-js-pure/modules/es.reflect.construct.js","../node_modules/core-js-pure/internals/is-forced.js","../node_modules/core-js-pure/internals/html.js","../node_modules/core-js-pure/internals/set-global.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","../node_modules/core-js-pure/stable/object/keys.js","../node_modules/core-js-pure/modules/es.object.keys.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js","../node_modules/core-js-pure/stable/object/get-own-property-symbols.js","../node_modules/core-js-pure/internals/object-get-own-property-names-external.js","../node_modules/core-js-pure/internals/object-to-string.js","../node_modules/core-js-pure/internals/native-weak-map.js","../node_modules/core-js-pure/internals/inspect-source.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js","../node_modules/core-js-pure/stable/object/get-own-property-descriptor.js","../node_modules/core-js-pure/es/object/get-own-property-descriptor.js","../node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js","../node_modules/core-js-pure/stable/object/get-own-property-descriptors.js","../node_modules/core-js-pure/es/object/get-own-property-descriptors.js","../node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js","../node_modules/core-js-pure/internals/own-keys.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js","../node_modules/core-js-pure/stable/object/define-properties.js","../node_modules/core-js-pure/es/object/define-properties.js","../node_modules/core-js-pure/modules/es.object.define-properties.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js","../node_modules/core-js-pure/stable/object/define-property.js","../node_modules/core-js-pure/modules/es.object.define-property.js","../node_modules/@babel/runtime-corejs3/helpers/extends.js","../node_modules/@babel/runtime-corejs3/core-js/object/assign.js","../node_modules/core-js-pure/features/object/assign.js","../node_modules/core-js-pure/modules/es.object.assign.js","../node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js","../node_modules/@babel/runtime-corejs3/helpers/arrayWithoutHoles.js","../node_modules/core-js-pure/features/array/is-array.js","../node_modules/core-js-pure/modules/es.array.is-array.js","../node_modules/@babel/runtime-corejs3/helpers/iterableToArray.js","../node_modules/core-js-pure/features/array/from.js","../node_modules/core-js-pure/es/array/from.js","../node_modules/core-js-pure/internals/a-possible-prototype.js","../node_modules/core-js-pure/modules/es.array.from.js","../node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js","../node_modules/core-js-pure/internals/iterator-close.js","../node_modules/core-js-pure/internals/is-array-iterator-method.js","../node_modules/core-js-pure/internals/check-correctness-of-iteration.js","../node_modules/core-js-pure/features/is-iterable.js","../node_modules/core-js-pure/internals/dom-iterables.js","../node_modules/core-js-pure/internals/is-iterable.js","../node_modules/core-js-pure/features/symbol/index.js","../node_modules/core-js-pure/es/symbol/index.js","../node_modules/core-js-pure/modules/es.symbol.async-iterator.js","../node_modules/core-js-pure/modules/es.symbol.has-instance.js","../node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js","../node_modules/core-js-pure/modules/es.symbol.match.js","../node_modules/core-js-pure/modules/es.symbol.match-all.js","../node_modules/core-js-pure/modules/es.symbol.replace.js","../node_modules/core-js-pure/modules/es.symbol.search.js","../node_modules/core-js-pure/modules/es.symbol.species.js","../node_modules/core-js-pure/modules/es.symbol.split.js","../node_modules/core-js-pure/modules/es.symbol.to-primitive.js","../node_modules/core-js-pure/modules/es.symbol.to-string-tag.js","../node_modules/core-js-pure/modules/es.symbol.unscopables.js","../node_modules/core-js-pure/modules/es.json.to-string-tag.js","../node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js","../node_modules/core-js-pure/modules/esnext.symbol.dispose.js","../node_modules/core-js-pure/modules/esnext.symbol.observable.js","../node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js","../node_modules/core-js-pure/modules/esnext.symbol.replace-all.js","../node_modules/@babel/runtime-corejs3/core-js/instance/slice.js","../node_modules/core-js-pure/features/instance/slice.js","../node_modules/core-js-pure/es/array/virtual/slice.js","../node_modules/core-js-pure/modules/es.array.slice.js","../node_modules/@babel/runtime-corejs3/helpers/nonIterableSpread.js","../node_modules/@babel/runtime-corejs3/helpers/objectWithoutProperties.js","../node_modules/core-js-pure/features/instance/index-of.js","../node_modules/core-js-pure/es/array/virtual/index-of.js","../node_modules/core-js-pure/modules/es.array.index-of.js","../node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-symbols.js","../node_modules/core-js-pure/features/object/get-own-property-symbols.js","../node_modules/@babel/runtime-corejs3/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime-corejs3/core-js/object/keys.js","../node_modules/core-js-pure/features/object/keys.js","../node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js","../node_modules/core-js-pure/features/symbol/iterator.js","../node_modules/core-js-pure/es/symbol/iterator.js","../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js","../node_modules/@babel/runtime-corejs3/helpers/createClass.js","../node_modules/core-js-pure/features/object/define-property.js","../node_modules/@babel/runtime-corejs3/helpers/inherits.js","../node_modules/@babel/runtime-corejs3/core-js/object/create.js","../node_modules/core-js-pure/features/object/create.js","../node_modules/core-js-pure/es/object/create.js","../node_modules/core-js-pure/modules/es.object.create.js","../node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js","../node_modules/core-js-pure/features/object/set-prototype-of.js","../node_modules/core-js-pure/es/object/set-prototype-of.js","../node_modules/core-js-pure/modules/es.object.set-prototype-of.js","../node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js","../node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js","../node_modules/core-js-pure/features/object/get-prototype-of.js","../node_modules/core-js-pure/es/object/get-prototype-of.js","../node_modules/core-js-pure/modules/es.object.get-prototype-of.js","../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","../node_modules/core-js-pure/stable/instance/index-of.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","../node_modules/core-js-pure/stable/instance/map.js","../node_modules/core-js-pure/es/instance/map.js","../node_modules/core-js-pure/es/array/virtual/map.js","../node_modules/core-js-pure/modules/es.array.map.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/values.js","../node_modules/core-js-pure/stable/object/values.js","../node_modules/core-js-pure/es/object/values.js","../node_modules/core-js-pure/modules/es.object.values.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","../node_modules/core-js-pure/stable/instance/for-each.js","../node_modules/core-js-pure/stable/array/virtual/for-each.js","../node_modules/core-js-pure/es/array/virtual/for-each.js","../node_modules/core-js-pure/modules/es.array.for-each.js","../node_modules/core-js-pure/internals/array-for-each.js","../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js","../node_modules/core-js-pure/stable/array/is-array.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js","../node_modules/core-js-pure/stable/instance/reduce.js","../node_modules/core-js-pure/es/instance/reduce.js","../node_modules/core-js-pure/es/array/virtual/reduce.js","../node_modules/core-js-pure/modules/es.array.reduce.js","../node_modules/core-js-pure/internals/array-reduce.js","../node_modules/core-js-pure/internals/engine-is-node.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js","../node_modules/core-js-pure/stable/instance/splice.js","../node_modules/core-js-pure/es/instance/splice.js","../node_modules/core-js-pure/es/array/virtual/splice.js","../node_modules/core-js-pure/modules/es.array.splice.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/sort.js","../node_modules/core-js-pure/stable/instance/sort.js","../node_modules/core-js-pure/es/instance/sort.js","../node_modules/core-js-pure/es/array/virtual/sort.js","../node_modules/core-js-pure/modules/es.array.sort.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","../node_modules/core-js-pure/stable/instance/concat.js","../node_modules/core-js-pure/es/instance/concat.js","../node_modules/core-js-pure/es/array/virtual/concat.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/find-index.js","../node_modules/core-js-pure/stable/instance/find-index.js","../node_modules/core-js-pure/es/instance/find-index.js","../node_modules/core-js-pure/es/array/virtual/find-index.js","../node_modules/core-js-pure/modules/es.array.find-index.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","../node_modules/core-js-pure/stable/instance/filter.js","../node_modules/core-js-pure/es/instance/filter.js","../node_modules/core-js-pure/es/array/virtual/filter.js","../node_modules/core-js-pure/modules/es.array.filter.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js","../node_modules/core-js-pure/stable/object/assign.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js","../node_modules/core-js-pure/stable/instance/bind.js","../node_modules/core-js-pure/es/instance/bind.js","../node_modules/core-js-pure/es/function/virtual/bind.js","../node_modules/core-js-pure/modules/es.function.bind.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js","../node_modules/core-js-pure/stable/instance/some.js","../node_modules/core-js-pure/es/instance/some.js","../node_modules/core-js-pure/es/array/virtual/some.js","../node_modules/core-js-pure/modules/es.array.some.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js","../node_modules/core-js-pure/stable/instance/every.js","../node_modules/core-js-pure/es/instance/every.js","../node_modules/core-js-pure/es/array/virtual/every.js","../node_modules/core-js-pure/modules/es.array.every.js","../node_modules/@mui/material/Table/index.js","../node_modules/@mui/material/Tooltip/index.js","../node_modules/mui-datatables/node_modules/clsx/dist/clsx.m.js","../node_modules/lodash.assignwith/index.js","../node_modules/lodash.clonedeep/index.js","../node_modules/lodash.find/index.js","../node_modules/lodash.isequal/index.js","../node_modules/lodash.isundefined/index.js","../node_modules/lodash.merge/index.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js","../node_modules/core-js-pure/stable/instance/starts-with.js","../node_modules/core-js-pure/es/instance/starts-with.js","../node_modules/core-js-pure/es/string/virtual/starts-with.js","../node_modules/core-js-pure/modules/es.string.starts-with.js","../node_modules/core-js-pure/internals/not-a-regexp.js","../node_modules/core-js-pure/internals/is-regexp.js","../node_modules/core-js-pure/internals/correct-is-regexp-logic.js","../node_modules/@mui/material/TableBody/index.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","../node_modules/core-js-pure/stable/instance/slice.js","../node_modules/@mui/material/TableRow/index.js","../node_modules/@mui/icons-material/KeyboardArrowRight.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/trim.js","../node_modules/core-js-pure/stable/instance/trim.js","../node_modules/core-js-pure/es/instance/trim.js","../node_modules/core-js-pure/es/string/virtual/trim.js","../node_modules/core-js-pure/modules/es.string.trim.js","../node_modules/core-js-pure/internals/string-trim-forced.js","../node_modules/@babel/runtime-corejs3/core-js-stable/url.js","../node_modules/core-js-pure/stable/url/index.js","../node_modules/core-js-pure/web/url.js","../node_modules/core-js-pure/modules/web.url.js","../node_modules/core-js-pure/internals/string-punycode-to-ascii.js","../node_modules/core-js-pure/internals/redefine-all.js","../node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js","../node_modules/core-js-pure/stable/parse-int.js","../node_modules/core-js-pure/es/parse-int.js","../node_modules/core-js-pure/modules/es.parse-int.js","../node_modules/core-js-pure/internals/number-parse-int.js","../node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js","../node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js","../node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime-corejs3/core-js/get-iterator.js","../node_modules/core-js-pure/features/get-iterator.js","../node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js","../node_modules/@mui/material/TableHead/index.js","../node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js","../node_modules/core-js-pure/stable/set-timeout.js","../node_modules/core-js-pure/modules/web.timers.js","../node_modules/@mui/icons-material/Help.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js","../node_modules/core-js-pure/stable/object/entries.js","../node_modules/core-js-pure/es/object/entries.js","../node_modules/core-js-pure/modules/es.object.entries.js","../node_modules/react-dnd/dist/esm/index.js","../node_modules/@mui/icons-material/CloudDownload.js","../node_modules/@mui/icons-material/Print.js","../node_modules/@mui/icons-material/ViewColumn.js","../node_modules/react-to-print/lib/index.js","../node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js","../node_modules/core-js-pure/stable/json/stringify.js","../node_modules/core-js-pure/es/json/stringify.js","../node_modules/core-js-pure/modules/es.json.stringify.js","../node_modules/react-beautiful-dnd/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/recompose/withState.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/recompose/setDisplayName.js","../node_modules/recompose/setStatic.js","../node_modules/recompose/wrapDisplayName.js","../node_modules/recompose/getDisplayName.js","../node_modules/reactcss/lib/flattenNames.js","../node_modules/lodash/isString.js","../node_modules/lodash/_castFunction.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/map.js","../node_modules/lodash/_baseMap.js","../node_modules/lodash/_createBaseEach.js","../node_modules/reactcss/lib/mergeClasses.js","../node_modules/reactcss/lib/autoprefix.js","../node_modules/reactcss/lib/components/hover.js","../node_modules/reactcss/lib/components/active.js","../node_modules/reactcss/lib/loop.js","../node_modules/tslib/tslib.es6.js","../node_modules/react-easy-crop/dist/helpers.js","../node_modules/react-easy-crop/dist/styles.js","../node_modules/chart.js/dist/Chart.js","../node_modules/lodash/keyBy.js","../node_modules/lodash/_createAggregator.js","../node_modules/lodash/_arrayAggregator.js","../node_modules/lodash/_baseAggregator.js","../node_modules/math-expression-evaluator/src/postfix_evaluator.js","../node_modules/math-expression-evaluator/src/postfix.js","../node_modules/math-expression-evaluator/src/lexer.js","../node_modules/math-expression-evaluator/src/math_function.js","../node_modules/webpack/buildin/amd-options.js","../node_modules/react-color/es/helpers/alpha.js","../node_modules/react-color/es/helpers/checkboard.js","../node_modules/react-color/es/components/common/Checkboard.js","../node_modules/react-color/es/components/common/Alpha.js","../node_modules/react-color/es/components/common/EditableInput.js","../node_modules/react-color/es/helpers/hue.js","../node_modules/react-color/es/components/common/Hue.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/_assignMergeValue.js","../node_modules/lodash-es/_createBaseFor.js","../node_modules/lodash-es/_baseFor.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/isArrayLikeObject.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_safeGet.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/toPlainObject.js","../node_modules/lodash-es/_baseMergeDeep.js","../node_modules/lodash-es/_baseMerge.js","../node_modules/lodash-es/identity.js","../node_modules/lodash-es/_apply.js","../node_modules/lodash-es/_overRest.js","../node_modules/lodash-es/constant.js","../node_modules/lodash-es/_baseSetToString.js","../node_modules/lodash-es/_shortOut.js","../node_modules/lodash-es/_setToString.js","../node_modules/lodash-es/_baseRest.js","../node_modules/lodash-es/_isIterateeCall.js","../node_modules/lodash-es/_createAssigner.js","../node_modules/lodash-es/merge.js","../node_modules/react-color/es/components/common/Raised.js","../node_modules/lodash-es/now.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/toNumber.js","../node_modules/lodash-es/debounce.js","../node_modules/lodash-es/throttle.js","../node_modules/react-color/es/components/common/Saturation.js","../node_modules/react-color/es/helpers/saturation.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_createBaseEach.js","../node_modules/lodash-es/_baseEach.js","../node_modules/lodash-es/_baseForOwn.js","../node_modules/lodash-es/_castFunction.js","../node_modules/lodash-es/forEach.js","../node_modules/react-color/es/helpers/color.js","../node_modules/react-color/es/components/common/ColorWrap.js","../node_modules/react-color/es/helpers/interaction.js","../node_modules/react-color/es/components/common/Swatch.js","../node_modules/react-color/es/components/alpha/AlphaPointer.js","../node_modules/react-color/es/components/alpha/Alpha.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/_setCacheAdd.js","../node_modules/lodash-es/_setCacheHas.js","../node_modules/lodash-es/_SetCache.js","../node_modules/lodash-es/_arraySome.js","../node_modules/lodash-es/_cacheHas.js","../node_modules/lodash-es/_equalArrays.js","../node_modules/lodash-es/_mapToArray.js","../node_modules/lodash-es/_setToArray.js","../node_modules/lodash-es/_equalByTag.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_equalObjects.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_baseIsEqualDeep.js","../node_modules/lodash-es/_baseIsEqual.js","../node_modules/lodash-es/_baseIsMatch.js","../node_modules/lodash-es/_isStrictComparable.js","../node_modules/lodash-es/_getMatchData.js","../node_modules/lodash-es/_matchesStrictComparable.js","../node_modules/lodash-es/_baseMatches.js","../node_modules/lodash-es/_isKey.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/_castPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseGet.js","../node_modules/lodash-es/get.js","../node_modules/lodash-es/_baseHasIn.js","../node_modules/lodash-es/_hasPath.js","../node_modules/lodash-es/hasIn.js","../node_modules/lodash-es/_baseMatchesProperty.js","../node_modules/lodash-es/_baseProperty.js","../node_modules/lodash-es/_basePropertyDeep.js","../node_modules/lodash-es/property.js","../node_modules/lodash-es/_baseIteratee.js","../node_modules/lodash-es/_baseMap.js","../node_modules/lodash-es/map.js","../node_modules/react-color/es/components/block/BlockSwatches.js","../node_modules/react-color/es/components/block/Block.js","../node_modules/material-colors/dist/colors.es2015.js","../node_modules/react-color/es/components/circle/CircleSwatch.js","../node_modules/react-color/es/components/circle/Circle.js","../node_modules/lodash-es/isUndefined.js","../node_modules/react-color/es/components/chrome/ChromeFields.js","../node_modules/react-color/es/components/chrome/ChromePointer.js","../node_modules/react-color/es/components/chrome/ChromePointerCircle.js","../node_modules/react-color/es/components/chrome/Chrome.js","../node_modules/react-color/es/components/compact/CompactColor.js","../node_modules/react-color/es/components/compact/CompactFields.js","../node_modules/react-color/es/components/compact/Compact.js","../node_modules/react-color/es/components/github/GithubSwatch.js","../node_modules/react-color/es/components/github/Github.js","../node_modules/react-color/es/components/hue/HuePointer.js","../node_modules/react-color/es/components/hue/Hue.js","../node_modules/react-color/es/components/material/Material.js","../node_modules/react-color/es/components/photoshop/PhotoshopFields.js","../node_modules/react-color/es/components/photoshop/PhotoshopPointerCircle.js","../node_modules/react-color/es/components/photoshop/PhotoshopPointer.js","../node_modules/react-color/es/components/photoshop/PhotoshopButton.js","../node_modules/react-color/es/components/photoshop/PhotoshopPreviews.js","../node_modules/react-color/es/components/photoshop/Photoshop.js","../node_modules/react-color/es/components/sketch/SketchFields.js","../node_modules/react-color/es/components/sketch/SketchPresetColors.js","../node_modules/react-color/es/components/sketch/Sketch.js","../node_modules/react-color/es/components/slider/SliderSwatch.js","../node_modules/react-color/es/components/slider/SliderSwatches.js","../node_modules/react-color/es/components/slider/SliderPointer.js","../node_modules/react-color/es/components/slider/Slider.js","../node_modules/react-color/es/components/swatches/SwatchesColor.js","../node_modules/react-color/es/components/swatches/SwatchesGroup.js","../node_modules/react-color/es/components/swatches/Swatches.js","../node_modules/react-color/es/components/twitter/Twitter.js","../node_modules/react-color/es/components/google/GooglePointerCircle.js","../node_modules/react-color/es/components/google/GooglePointer.js","../node_modules/react-color/es/components/google/GoogleFields.js","../node_modules/react-color/es/components/google/Google.js","../node_modules/@emotion/styled-base/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/@emotion/styled-base/node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../node_modules/@emotion/sheet/dist/sheet.browser.esm.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/cache/dist/cache.browser.esm.js","../node_modules/@emotion/utils/dist/utils.browser.esm.js","../node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/@emotion/serialize/dist/serialize.browser.esm.js","../node_modules/@emotion/css/dist/css.browser.esm.js","../node_modules/@emotion/core/dist/core.browser.esm.js","../node_modules/@emotion/styled-base/node_modules/@emotion/utils/dist/utils.browser.esm.js","../node_modules/@emotion/styled-base/node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/@emotion/styled-base/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/styled-base/node_modules/@emotion/serialize/dist/serialize.browser.esm.js","../node_modules/@emotion/styled-base/dist/styled-base.browser.esm.js","../node_modules/react-easy-crop/node_modules/@emotion/styled/dist/styled.browser.esm.js","../node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js","../node_modules/react-dnd-html5-backend/dist/esm/EnterLeaveCounter.js","../node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js","../node_modules/react-dnd-html5-backend/dist/esm/MonotonicInterpolant.js","../node_modules/react-dnd-html5-backend/dist/esm/OffsetUtils.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/nativeTypesConfig.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/getDataFromDataTransfer.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/NativeDragSource.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/index.js","../node_modules/react-dnd-html5-backend/dist/esm/OptionsReader.js","../node_modules/react-dnd-html5-backend/dist/esm/HTML5BackendImpl.js","../node_modules/react-dnd-html5-backend/dist/esm/getEmptyImage.js","../node_modules/react-dnd-html5-backend/dist/esm/index.js","../node_modules/@mui/material/TablePagination/TablePaginationActions.js","../node_modules/@mui/material/internal/svg-icons/LastPage.js","../node_modules/@mui/material/internal/svg-icons/FirstPage.js","../node_modules/@mui/material/TablePagination/tablePaginationClasses.js","../node_modules/@mui/material/TablePagination/TablePagination.js","../node_modules/@mui/material/internal/svg-icons/ArrowDownward.js","../node_modules/@mui/material/TableSortLabel/tableSortLabelClasses.js","../node_modules/@mui/material/TableSortLabel/TableSortLabel.js","../node_modules/@mui/material/TableFooter/tableFooterClasses.js","../node_modules/@mui/material/TableFooter/TableFooter.js","../node_modules/@mui/utils/esm/createChainedFunction.js","../node_modules/@mui/private-theming/useTheme/useTheme.js","../node_modules/@mui/utils/esm/resolveProps.js","../node_modules/@mui/utils/esm/debounce.js","../node_modules/@mui/utils/esm/ownerWindow.js","../node_modules/@mui/utils/esm/useIsFocusVisible.js","../node_modules/@mui/styles/createGenerateClassName/createGenerateClassName.js","../node_modules/@mui/styles/getThemeProps/getThemeProps.js","../node_modules/@mui/material/Fade/Fade.js","../node_modules/@mui/material/GlobalStyles/GlobalStyles.js","../node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/FilledInput/FilledInput.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","../node_modules/@mui/core/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/styles/makeStyles/multiKeyStore.js","../node_modules/@mui/styles/makeStyles/indexCounter.js","../node_modules/@mui/styles/node_modules/@mui/utils/esm/deepmerge.js","../node_modules/@mui/styles/getStylesCreator/getStylesCreator.js","../node_modules/@mui/styles/getStylesCreator/noopTheme.js","../node_modules/@mui/styles/makeStyles/makeStyles.js","../node_modules/@mui/material/Alert/alertClasses.js","../node_modules/@mui/material/Alert/Alert.js","../node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js","../node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js","../node_modules/@mui/material/internal/svg-icons/ErrorOutline.js","../node_modules/@mui/material/internal/svg-icons/InfoOutlined.js","../node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","../node_modules/@mui/material/ListSubheader/ListSubheader.js","../node_modules/@mui/material/Autocomplete/autocompleteClasses.js","../node_modules/@mui/material/Autocomplete/Autocomplete.js","../node_modules/@mui/base/BackdropUnstyled/backdropUnstyledClasses.js","../node_modules/@mui/base/BackdropUnstyled/BackdropUnstyled.js","../node_modules/@mui/material/Backdrop/Backdrop.js","../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../node_modules/@mui/material/DialogActions/DialogActions.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/material/OutlinedInput/NotchedOutline.js","../node_modules/@mui/material/OutlinedInput/OutlinedInput.js","../node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","../node_modules/@mui/material/FormHelperText/FormHelperText.js","../node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","../node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","../node_modules/@mui/material/styles/adaptV4Theme.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/styles/withStyles/withStyles.js","../node_modules/@mui/styles/mergeClasses/mergeClasses.js","../node_modules/@mui/icons-material/esm/ExpandLess.js","../node_modules/@mui/icons-material/esm/ExpandMore.js","../node_modules/@mui/material/ListItemIcon/ListItemIcon.js","../node_modules/@mui/material/Divider/Divider.js","../node_modules/@mui/lab/Alert/Alert.js","../node_modules/@mui/base/ClickAwayListener/ClickAwayListener.js","../node_modules/@mui/base/Portal/Portal.js","../node_modules/@mui/styles/node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","../node_modules/@mui/utils/esm/getScrollbarSize.js","../node_modules/@mui/base/Unstable_TrapFocus/Unstable_TrapFocus.js","../node_modules/@mui/lab/Autocomplete/Autocomplete.js","../node_modules/@mui/base/AutocompleteUnstyled/useAutocomplete.js","../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.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/@mui/material/RadioGroup/RadioGroup.js","../node_modules/@mui/material/Stack/Stack.js","../node_modules/@mui/material/ListItemButton/ListItemButton.js","../node_modules/@mui/material/Dialog/Dialog.js","../node_modules/@mui/material/DialogTitle/DialogTitle.js","../node_modules/@mui/core/composeClasses/composeClasses.js","../node_modules/@mui/core/generateUtilityClasses/generateUtilityClasses.js","../node_modules/@mui/material/useMediaQuery/useMediaQuery.js","../node_modules/@mui/x-date-pickers/PickersActionBar/PickersActionBar.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/grid.component.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/columns-directive.js","../node_modules/@mui/material/CssBaseline/CssBaseline.js","../node_modules/@syncfusion/ej2-react-calendars/src/datepicker/datepicker.component.js","../node_modules/@syncfusion/ej2-react-calendars/src/datetimepicker/datetimepicker.component.js","../node_modules/@syncfusion/ej2-react-inputs/src/textbox/textbox.component.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/aggregate-columns-directive.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/aggregates-directive.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-true-type-font.js","../node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js","../node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/reorder.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/detail-row.js","../node_modules/@mui/lab/LocalizationProvider/LocalizationProvider.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/magnification/magnification.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/navigation/page-navigation.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/annotation/link-annotation.js","../node_modules/@syncfusion/ej2-navigations/src/treeview/treeview.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/thumbnail-view/thumbnail-view.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/print/print.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/text-selection/text-selection.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/text-search/text-search.js","../node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","../node_modules/@syncfusion/ej2-react-buttons/src/button/button.component.js","../node_modules/@syncfusion/ej2-react-schedule/src/schedule/views-directive.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/day.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/week.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/work-week.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/month.js","../node_modules/@syncfusion/ej2-react-inputs/src/uploader/uploader.component.js","../node_modules/@mui/lab/internal/pickers/hooks/useUtils.js","../node_modules/@mui/lab/DatePicker/shared.js","../node_modules/@mui/lab/internal/pickers/PickersToolbar.js","../node_modules/@mui/lab/internal/svg-icons/Pen.js","../node_modules/@mui/lab/internal/svg-icons/Calendar.js","../node_modules/@mui/lab/internal/svg-icons/Clock.js","../node_modules/@mui/lab/DatePicker/DatePickerToolbar.js","../node_modules/@mui/lab/internal/pickers/wrappers/WrapperVariantContext.js","../node_modules/@mui/lab/internal/pickers/PickersPopper.js","../node_modules/@mui/lab/internal/pickers/wrappers/DesktopWrapper.js","../node_modules/@mui/lab/internal/pickers/utils.js","../node_modules/@mui/lab/internal/pickers/hooks/useViews.js","../node_modules/@mui/lab/ClockPicker/shared.js","../node_modules/@mui/lab/ClockPicker/ClockPointer.js","../node_modules/@mui/lab/ClockPicker/Clock.js","../node_modules/@mui/lab/ClockPicker/ClockNumber.js","../node_modules/@mui/lab/ClockPicker/ClockNumbers.js","../node_modules/@mui/lab/internal/svg-icons/ArrowLeft.js","../node_modules/@mui/lab/internal/svg-icons/ArrowRight.js","../node_modules/@mui/lab/internal/pickers/PickersArrowSwitcher.js","../node_modules/@mui/lab/internal/pickers/time-utils.js","../node_modules/@mui/lab/internal/pickers/hooks/date-helpers-hooks.js","../node_modules/@mui/lab/ClockPicker/ClockPicker.js","../node_modules/@mui/lab/MonthPicker/PickersMonth.js","../node_modules/@mui/lab/MonthPicker/MonthPicker.js","../node_modules/@mui/lab/internal/pickers/date-utils.js","../node_modules/@mui/lab/CalendarPicker/useCalendarState.js","../node_modules/@mui/lab/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@mui/lab/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@mui/lab/node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/@mui/lab/node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/@mui/lab/node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@mui/lab/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@mui/lab/CalendarPicker/PickersFadeTransitionGroup.js","../node_modules/@mui/lab/PickersDay/PickersDay.js","../node_modules/@mui/lab/internal/pickers/constants/dimensions.js","../node_modules/@mui/lab/node_modules/react-transition-group/esm/config.js","../node_modules/@mui/lab/node_modules/react-transition-group/esm/Transition.js","../node_modules/@mui/lab/node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/@mui/lab/CalendarPicker/PickersCalendar.js","../node_modules/@mui/lab/CalendarPicker/PickersSlideTransition.js","../node_modules/@mui/lab/internal/svg-icons/ArrowDropDown.js","../node_modules/@mui/lab/CalendarPicker/PickersCalendarHeader.js","../node_modules/@mui/lab/YearPicker/PickersYear.js","../node_modules/@mui/lab/YearPicker/yearPickerClasses.js","../node_modules/@mui/lab/CalendarPicker/CalendarPicker.js","../node_modules/@mui/lab/YearPicker/YearPicker.js","../node_modules/@mui/lab/internal/pickers/Picker/PickerView.js","../node_modules/rifm/dist/rifm.esm.js","../node_modules/@mui/lab/internal/pickers/text-field-helper.js","../node_modules/@mui/lab/internal/pickers/hooks/useMaskedInput.js","../node_modules/@mui/lab/internal/pickers/KeyboardDateInput.js","../node_modules/@mui/lab/internal/pickers/hooks/useIsLandscape.js","../node_modules/@mui/lab/internal/pickers/Picker/Picker.js","../node_modules/@mui/lab/internal/pickers/hooks/useValidation.js","../node_modules/@mui/lab/internal/pickers/hooks/useOpenState.js","../node_modules/@mui/lab/internal/pickers/hooks/usePickerState.js","../node_modules/@mui/lab/DesktopDatePicker/DesktopDatePicker.js","../node_modules/@mui/lab/internal/pickers/PickersModalDialog.js","../node_modules/@mui/lab/internal/pickers/wrappers/MobileWrapper.js","../node_modules/@mui/lab/internal/pickers/PureDateInput.js","../node_modules/@mui/lab/MobileDatePicker/MobileDatePicker.js","../node_modules/@mui/lab/DatePicker/DatePicker.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@mui/base/PopperUnstyled/PopperUnstyled.js","../node_modules/@mui/material/Popper/Popper.js","../node_modules/@mui/x-date-pickers/internals/hooks/useViews.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useId.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useEnhancedEffect.js","../node_modules/@mui/x-date-pickers/ClockPicker/shared.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockPointer.js","../node_modules/@mui/x-date-pickers/ClockPicker/Clock.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockNumber.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockNumbers.js","../node_modules/@mui/x-date-pickers/internals/components/PickersArrowSwitcher.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockPickerClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickerViewRoot/PickerViewRoot.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockPicker.js","../node_modules/@mui/x-date-pickers/internals/utils/warning.js","../node_modules/@mui/x-date-pickers/MonthPicker/PickersMonth.js","../node_modules/@mui/x-date-pickers/MonthPicker/monthPickerClasses.js","../node_modules/@mui/x-date-pickers/MonthPicker/MonthPicker.js","../node_modules/@mui/x-date-pickers/CalendarPicker/useCalendarState.js","../node_modules/@mui/x-date-pickers/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@mui/x-date-pickers/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@mui/x-date-pickers/node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/@mui/x-date-pickers/node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/@mui/x-date-pickers/node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@mui/x-date-pickers/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@mui/x-date-pickers/CalendarPicker/PickersFadeTransitionGroup.js","../node_modules/@mui/x-date-pickers/PickersDay/pickersDayClasses.js","../node_modules/@mui/x-date-pickers/PickersDay/PickersDay.js","../node_modules/@mui/x-date-pickers/node_modules/react-transition-group/esm/config.js","../node_modules/@mui/x-date-pickers/node_modules/react-transition-group/esm/Transition.js","../node_modules/@mui/x-date-pickers/node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/@mui/x-date-pickers/CalendarPicker/PickersSlideTransition.js","../node_modules/@mui/x-date-pickers/CalendarPicker/DayPicker.js","../node_modules/@mui/x-date-pickers/CalendarPicker/PickersCalendarHeader.js","../node_modules/@mui/x-date-pickers/YearPicker/PickersYear.js","../node_modules/@mui/x-date-pickers/YearPicker/yearPickerClasses.js","../node_modules/@mui/x-date-pickers/YearPicker/YearPicker.js","../node_modules/@mui/x-date-pickers/internals/utils/defaultReduceAnimations.js","../node_modules/@mui/x-date-pickers/CalendarPicker/calendarPickerClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/CalendarPicker.js","../node_modules/@mui/x-date-pickers/internals/hooks/useIsLandscape.js","../node_modules/@mui/x-date-pickers/internals/components/CalendarOrClockPicker/CalendarOrClockPicker.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-schedule/src/schedule/renderer/header-renderer.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/scroll.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/touch.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/keyboard.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/data.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/inline-edit.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/popups/form-validator.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/popups/quick-popups.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/popups/event-tooltip.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-schedule/src/recurrence-editor/recurrence-editor.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/popups/event-window.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/virtual-scroll.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/renderer.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/work-hours.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/time-scale.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/quick-info-templates.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/header-rows.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/crud.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/work-cells.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/field-options.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/fields.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/event-settings.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/group.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/resources.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/base/resource.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/base/schedule.js","../node_modules/@syncfusion/ej2-react-schedule/src/schedule/schedule.component.js","../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/pages/pdf-page-template-element.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-grids/src/grid/actions/pdf-export.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-filemanager/src/file-manager/models/ajax-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/contextMenu-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/models/upload-settings.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/actions/enter-key.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-notifications/src/toast/toast.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/text-layer.js","../node_modules/@syncfusion/ej2-navigations/src/tab/tab.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/signature.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/context-menu.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/navigation-pane.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/rendering/canvas-renderer.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/rendering/svg-renderer.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/dom-util.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/blazor-context-menu.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/blazor-ui-adaptor.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/pdfviewer-base.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/form-fields/form-fields.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/core/elements/image-element.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/rendering/renderer.js","../node_modules/@syncfusion/ej2-drawings/src/drawing/core/containers/canvas.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/html-element.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/drawing.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/pdfviewer.js","../node_modules/@syncfusion/ej2-react-pdfviewer/src/pdfviewer/pdfviewer.component.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/annotation/text-markup-annotation.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/annotation/shape-annotation.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/annotation/measure-annotation.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/annotation/stamp-annotation.js","../node_modules/@syncfusion/ej2-navigations/src/accordion/accordion.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-inplace-editor/src/inplace-editor/base/classes.js","../node_modules/@syncfusion/ej2-inplace-editor/src/inplace-editor/base/models.js","../node_modules/@syncfusion/ej2-inplace-editor/src/inplace-editor/base/util.js","../node_modules/@syncfusion/ej2-inplace-editor/src/inplace-editor/base/inplace-editor.js","../node_modules/@syncfusion/ej2-inplace-editor/src/inplace-editor/base/events.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/annotation/sticky-notes-annotation.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/annotation/ink-annotation.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/annotation/free-text-annotation.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/annotation/input-element.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/annotation/annotation.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-grids/src/grid/renderer/filter-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-operator.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-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-grids/src/grid/actions/column-menu.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/@mui/x-date-pickers/DateTimePicker/shared.js","../node_modules/@mui/x-date-pickers/DateTimePicker/DateTimePickerTabs.js","../node_modules/@mui/x-date-pickers/DateTimePicker/DateTimePickerToolbar.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useDateTimeValidation.js","../node_modules/@mui/x-date-pickers/DesktopDateTimePicker/DesktopDateTimePicker.js","../node_modules/@mui/x-date-pickers/MobileDateTimePicker/MobileDateTimePicker.js","../node_modules/@mui/x-date-pickers/DateTimePicker/DateTimePicker.js","../node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","../node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","../node_modules/@mui/material/Radio/RadioButtonIcon.js","../node_modules/@mui/material/Radio/radioClasses.js","../node_modules/@mui/material/Radio/Radio.js","../node_modules/@mui/material/RadioGroup/useRadioGroup.js","../node_modules/@mui/utils/esm/scrollLeft.js","../node_modules/@mui/material/internal/animate.js","../node_modules/@mui/material/Tabs/ScrollbarSize.js","../node_modules/@mui/material/TabScrollButton/tabScrollButtonClasses.js","../node_modules/@mui/material/TabScrollButton/TabScrollButton.js","../node_modules/@mui/material/Tabs/Tabs.js","../node_modules/@mui/x-date-pickers/TimePicker/shared.js","../node_modules/@mui/x-date-pickers/TimePicker/timePickerToolbarClasses.js","../node_modules/@mui/x-date-pickers/TimePicker/TimePickerToolbar.js","../node_modules/@mui/x-date-pickers/DesktopTimePicker/DesktopTimePicker.js","../node_modules/@mui/x-date-pickers/MobileTimePicker/MobileTimePicker.js","../node_modules/@mui/x-date-pickers/TimePicker/TimePicker.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/@mui/base/SliderUnstyled/sliderUnstyledClasses.js","../node_modules/@mui/base/SliderUnstyled/SliderValueLabelUnstyled.js","../node_modules/@mui/utils/esm/visuallyHidden.js","../node_modules/@mui/base/SliderUnstyled/SliderUnstyled.js","../node_modules/@mui/material/Slider/Slider.js","../node_modules/@mui/x-date-pickers/DatePicker/shared.js","../node_modules/@mui/x-date-pickers/DatePicker/DatePickerToolbar.js","../node_modules/@mui/x-date-pickers/DesktopDatePicker/DesktopDatePicker.js","../node_modules/@mui/x-date-pickers/MobileDatePicker/MobileDatePicker.js","../node_modules/@mui/x-date-pickers/DatePicker/DatePicker.js","../node_modules/@mui/material/ListItem/listItemClasses.js","../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js","../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../node_modules/@mui/material/ListItem/ListItem.js","../node_modules/@mui/private-theming/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@mui/private-theming/ThemeProvider/nested.js","../node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","../node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","../node_modules/date-fns/esm/getDay/index.js","../node_modules/date-fns/esm/parseISO/index.js","../node_modules/@mui/x-date-pickers/node_modules/@date-io/date-fns/build/index.esm.js","../node_modules/date-fns/esm/formatISO/index.js","../node_modules/@mui/lab/TreeItem/TreeItemContent.js","../node_modules/@mui/lab/TreeItem/useTreeItem.js","../node_modules/@mui/lab/TreeItem/treeItemClasses.js","../node_modules/@mui/lab/TreeItem/TreeItem.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-navigations/src/menu/menu.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/toolbar/annotation-toolbar.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/toolbar/formdesigner-toolbar.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/toolbar/toolbar.js","../node_modules/@mui/system/node_modules/clsx/dist/clsx.m.js","../node_modules/@mui/system/esm/createBox.js","../node_modules/@mui/material/Box/Box.js","../node_modules/@mui/styles/node_modules/@mui/utils/esm/capitalize.js","../node_modules/@mui/styles/node_modules/@mui/utils/esm/formatMuiErrorMessage.js","../node_modules/@mui/styles/propsToClassKey/propsToClassKey.js","../node_modules/@mui/material/internal/svg-icons/Person.js","../node_modules/@mui/material/Avatar/avatarClasses.js","../node_modules/@mui/material/Avatar/Avatar.js","../node_modules/@mui/material/Accordion/accordionClasses.js","../node_modules/@mui/material/Accordion/Accordion.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@mui/material/Slide/Slide.js","../node_modules/@mui/material/Drawer/drawerClasses.js","../node_modules/@mui/material/Drawer/Drawer.js","../node_modules/@syncfusion/ej2-inputs/src/common/signature-base.js","../node_modules/@syncfusion/ej2-inputs/src/signature/signature.js","../node_modules/@syncfusion/ej2-react-inputs/src/signature/signature.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-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-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/@mui/material/DialogContent/dialogContentClasses.js","../node_modules/@mui/material/DialogContent/DialogContent.js","../node_modules/@mui/material/DialogContentText/dialogContentTextClasses.js","../node_modules/@mui/material/DialogContentText/DialogContentText.js","../node_modules/@mui/material/List/listClasses.js","../node_modules/@mui/material/List/List.js","../node_modules/@mui/material/Link/linkClasses.js","../node_modules/@mui/material/Link/Link.js","../node_modules/@mui/material/Collapse/collapseClasses.js","../node_modules/@mui/material/Collapse/Collapse.js","../node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js","../node_modules/@mui/material/AccordionSummary/AccordionSummary.js","../node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js","../node_modules/@mui/material/AccordionDetails/AccordionDetails.js","../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../node_modules/@mui/material/CircularProgress/CircularProgress.js","../node_modules/@mui/styles/node_modules/clsx/dist/clsx.m.js","../node_modules/@mui/styles/styled/styled.js","../node_modules/@mui/material/Switch/switchClasses.js","../node_modules/@mui/material/Switch/Switch.js","../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../node_modules/@mui/material/InputAdornment/InputAdornment.js","../node_modules/@mui/material/Card/cardClasses.js","../node_modules/@mui/material/Card/Card.js","../node_modules/@mui/material/CardContent/cardContentClasses.js","../node_modules/@mui/material/CardContent/CardContent.js","../node_modules/@mui/material/Tab/tabClasses.js","../node_modules/@mui/material/Tab/Tab.js","../node_modules/@mui/material/TableContainer/tableContainerClasses.js","../node_modules/@mui/material/TableContainer/TableContainer.js","../node_modules/@mui/material/AppBar/appBarClasses.js","../node_modules/@mui/material/AppBar/AppBar.js","../node_modules/@mui/material/ListItemAvatar/listItemAvatarClasses.js","../node_modules/@mui/material/ListItemAvatar/ListItemAvatar.js","../node_modules/@mui/material/Fab/fabClasses.js","../node_modules/@mui/material/Fab/Fab.js","../node_modules/@mui/lab/TreeView/treeViewClasses.js","../node_modules/@mui/lab/TreeView/TreeView.js","../node_modules/@syncfusion/ej2-layouts/src/dashboard-layout/dashboard-layout.js","../node_modules/@syncfusion/ej2-react-layouts/src/dashboard-layout/dashboardlayout.component.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/freeze-row-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/infinite-scroll.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/year.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/year.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/agenda-base.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/agenda.js","../node_modules/@syncfusion/ej2-splitbuttons/src/split-button/split-button.js","../node_modules/@syncfusion/ej2-inputs/src/color-picker/color-picker.js","../node_modules/@syncfusion/ej2-lists/src/list-view/list-view.js","../node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/bookmark-view/bookmark-view.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","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","currencyCode","customNumberFormat","integerPart","spaceCapture","spaceGrouping","fractionPart","isCurrencyPercent","parts","actual","symbol","part","loc","fractionDigitsPattern","minDigits","maxDigits","diff","minimumIntegerPattern","integer","x","groupingPattern","3","4","5","C","P","N","A","E","formatSplit","dateObj","actualPattern","tLength","timeZonePattern","options_1","minFrac","numrericObject","curMatch","curCode","hasNegativePattern","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","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","regX","platform","maxTouchPoints","defineProperty","get","uA","set","enumerable","configurable","info","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","SVG_REG","tagName","properties","createElementNS","className","styles","setAttribute","attrs","attributes","addClass","elements","classes","classList","getClassList","ele","_b","classList_1","curClass","contains","removeClass","classList_2","classArr","isVisible","style","visibility","offsetWidth","prepend","fromElements","toElement","isEval","docFrag","createDocumentFragment","insertBefore","firstElementChild","executeScript","append","script","head","detach","removeChild","iKey","select","selector","needsVDOM","querySelectId","selectAll","charRegex","idList","list","splitId","setId","closest","el","nodeType","setStyleAttribute","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","filter","getComponent","comp","instance","getElementById","getObject","curKey","defaultValue","getObjectArray","isSetter","isFactory","curType","propertyGetter","propertySetter","oldVal","complexGetter","complexSetter","complexFactoryGetter","complexFactorySetter","complexArrayGetter","defCollection","ignore","controlParent","extendFunc","descriptor","complexArrayDefinedCallback","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","propName","getParentKey","model_1","getArrayModel","model","ejsAction","isControlParent","arrayFunction","modelObject","Property","target","propertyDescriptor","addPropertyCollection","Complex","ComplexFactory","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","getAttribute","frameId","cancelAnimationFrame","applyAnimation","timeStamp","step","timerId","prevTimeStamp","duration","startAnimation","begin","avg","timingFunction","progress","requestAnimationFrame","fail","newProp","oldProp","rippleEffect","rippleOptions","done","rippleModel","rippleFlag","isCenterRipple","getRippleModel","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","offset","getBoundingClientRect","offsetX","pageX","body","scrollLeft","offsetY","pageY","scrollTop","documentElement","left","right","top","bottom","radius","sqrt","diameter","rippleElement","getComputedStyle","getPropertyValue","transform","removeRipple","rippleElements","opacity","getElementsByClassName","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","parent_1","parentKey","complexKeys","isFinal","valueLength","componentCount","lastHistoryLen","versionBasedStatePersistence","Component","randomId","uniqueID","isStringTemplate","needsID","isReactHybrid","enableRtl","moduleLoader","localObserver","detectFunction","appendTo","enablePersistence","setPersistData","refresh","preRender","injectModules","render","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","localStorage","getItem","ej2StatePersistenceVersion","mergePersistData","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","setState","currentContext","calls","setItem","getPersistData","appendReactElement","container","renderReactTemplates","clearTemplate","templateName","isHistoryChanged","pageID","location","href","history","hash","charCodeAt","addOnPersist","persistObj","objValue","getActualProperties","stringify","ignoreOnPersist","iterateJsonProperties","ignoreList","newObj","newList","this_1","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","padding","diffX","prevLeft","prevTop","dragProcessStarted","eleTop","tapHoldTimer","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","enableScrollHandler","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","helper","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","trim","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","now","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","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","ignorePrefix","evalExpResult","varCOunt","localKeys","isClass","singleSpace","cnt","matchStr","rlStr","addNameSpace","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","SlashReplace","NameSpaceForspecialChar","evalExp","addNS","tempStr","nameSpaceNew","quotes","NameSpaceArrObj","HAS_ROW","HAS_SVG","blazorTemplates","getRandomId","random","templateString","compiler","engineObj","templateId","blazorId","childNodes","updateBlazorTemplate","isEmpty","callBack","updateTemplate","resetBlazorTemplate","templateDiv","innerTemplates","tempId","tempElement","setTemplateEngine","classObj","getTemplateEngine","Engine","removeTags","removeAttrs","attribute","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","tags","sanitize","item","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","children","localName","attr","hasAttribute","exports","require","ROOT","RTL","DEVICE_CLASS","MULTI_DRAG","ICON","ENABLE_CLASS","DISABLE_CLASS","TABLE_CONTAINER_CLASS","SCHEDULE_TABLE_CLASS","ALLDAY_CELLS_CLASS","HEADER_POPUP_CLASS","HEADER_CALENDAR_CLASS","ALLDAY_ROW_CLASS","CONTENT_TABLE_CLASS","WORK_CELLS_CLASS","WORK_HOURS_CLASS","POPUP_OPEN","DATE_HEADER_WRAP_CLASS","DATE_HEADER_CONTAINER_CLASS","HEADER_CELLS_CLASS","HEADER_WEEK_CELLS_CLASS","HEADER_MONTH_CELLS_CLASS","HEADER_YEAR_CELLS_CLASS","WORKDAY_CLASS","OTHERMONTH_CLASS","CURRENT_DAY_CLASS","CURRENTDATE_CLASS","CURRENT_PANEL_CLASS","PREVIOUS_PANEL_CLASS","NEXT_PANEL_CLASS","PREVIOUS_DATE_CLASS","NEXT_DATE_CLASS","TRANSLATE_CLASS","LEFT_INDENT_CLASS","LEFT_INDENT_WRAP_CLASS","EVENT_TABLE_CLASS","RESOURCE_LEFT_TD_CLASS","RESOURCE_GROUP_CELLS_CLASS","RESOURCE_TEXT_CLASS","RESOURCE_COLUMN_WRAP_CLASS","RESOURCE_COLUMN_TABLE_CLASS","RESOURCE_CHILD_CLASS","RESOURCE_PARENT_CLASS","RESOURCE_EXPAND_CLASS","RESOURCE_COLLAPSE_CLASS","RESOURCE_TREE_ICON_CLASS","RESOURCE_CELLS_CLASS","TIME_CELLS_WRAP_CLASS","TIME_CELLS_CLASS","TIME_SLOT_CLASS","ALTERNATE_CELLS_CLASS","CURRENT_TIME_CLASS","CURRENT_TIMELINE_CLASS","PREVIOUS_TIMELINE_CLASS","HIDE_CHILDS_CLASS","SCROLL_CONTAINER_CLASS","TIMELINE_WRAPPER_CLASS","APPOINTMENT_WRAPPER_CLASS","DAY_WRAPPER_CLASS","TOOLBAR_CONTAINER","RESOURCE_TOOLBAR_CONTAINER","HEADER_TOOLBAR","RESOURCE_HEADER_TOOLBAR","SELECTED_CELL_CLASS","WEEK_NUMBER_WRAPPER_CLASS","WEEK_NUMBER_CLASS","WRAPPER_CONTAINER_CLASS","APPOINTMENT_CONTAINER_CLASS","APPOINTMENT_CLASS","BLOCK_APPOINTMENT_CLASS","BLOCK_INDICATOR_CLASS","APPOINTMENT_BORDER","APPOINTMENT_DETAILS","SUBJECT_WRAP","RESOURCE_NAME","APPOINTMENT_TIME","TABLE_WRAP_CLASS","OUTER_TABLE_CLASS","CONTENT_WRAP_CLASS","VIRTUAL_TRACK_CLASS","AGENDA_CELLS_CLASS","AGENDA_CURRENT_DAY_CLASS","AGENDA_SELECTED_CELL","MONTH_HEADER_CLASS","AGENDA_HEADER_CLASS","AGENDA_RESOURCE_CLASS","AGENDA_DATE_CLASS","NAVIGATE_CLASS","DATE_HEADER_CLASS","AGENDA_DAY_BORDER_CLASS","DATE_BORDER_CLASS","AGENDA_DAY_PADDING_CLASS","DATE_TIME_CLASS","DATE_TIME_WRAPPER_CLASS","AGENDA_EMPTY_EVENT_CLASS","AGENDA_NO_EVENT_CLASS","EVENT_INDICATOR_CLASS","EVENT_ICON_UP_CLASS","EVENT_ICON_DOWN_CLASS","EVENT_ICON_LEFT_CLASS","EVENT_ICON_RIGHT_CLASS","EVENT_ACTION_CLASS","NEW_EVENT_CLASS","DRAG_CLONE_CLASS","EVENT_RESIZE_CLASS","RESIZE_CLONE_CLASS","LEFT_RESIZE_HANDLER","RIGHT_RESIZE_HANDLER","TOP_RESIZE_HANDLER","BOTTOM_RESIZE_HANDLER","EVENT_RECURRENCE_ICON_CLASS","EVENT_RECURRENCE_EDIT_ICON_CLASS","HEADER_ROW_CLASS","ALLDAY_APPOINTMENT_WRAPPER_CLASS","ALLDAY_APPOINTMENT_CLASS","EVENT_COUNT_CLASS","ROW_COUNT_WRAPPER_CLASS","ALLDAY_APPOINTMENT_SECTION_CLASS","APPOINTMENT_ROW_EXPAND_CLASS","APPOINTMENT_ROW_COLLAPSE_CLASS","MORE_INDICATOR_CLASS","CELL_POPUP_CLASS","EVENT_POPUP_CLASS","MULTIPLE_EVENT_POPUP_CLASS","POPUP_HEADER_CLASS","POPUP_HEADER_ICON_WRAPPER","POPUP_CONTENT_CLASS","POPUP_FOOTER_CLASS","DATE_TIME_DETAILS_CLASS","RECURRENCE_SUMMARY_CLASS","QUICK_POPUP_EVENT_DETAILS_CLASS","EVENT_CREATE_CLASS","EDIT_EVENT_CLASS","DELETE_EVENT_CLASS","TEXT_ELLIPSIS","MORE_POPUP_WRAPPER_CLASS","MORE_EVENT_POPUP_CLASS","MORE_EVENT_HEADER_CLASS","MORE_EVENT_DATE_HEADER_CLASS","MORE_EVENT_HEADER_DAY_CLASS","MORE_EVENT_HEADER_DATE_CLASS","MORE_EVENT_CLOSE_CLASS","MORE_EVENT_CONTENT_CLASS","MORE_EVENT_WRAPPER_CLASS","QUICK_DIALOG_CLASS","QUICK_DIALOG_OCCURRENCE_CLASS","QUICK_DIALOG_SERIES_CLASS","QUICK_DIALOG_FOLLOWING_EVENTS_CLASS","FOLLOWING_EVENTS_DIALOG","QUICK_DIALOG_DELETE_CLASS","QUICK_DIALOG_CANCEL_CLASS","QUICK_DIALOG_ALERT_OK","QUICK_DIALOG_ALERT_CANCEL","QUICK_DIALOG_ALERT_FOLLOWING","QUICK_DIALOG_ALERT_BTN_CLASS","EVENT_WINDOW_DIALOG_CLASS","FORM_CONTAINER_CLASS","FORM_CLASS","EVENT_WINDOW_ALLDAY_TZ_DIV_CLASS","EVENT_WINDOW_ALL_DAY_CLASS","TIME_ZONE_CLASS","TIME_ZONE_ICON_CLASS","TIME_ZONE_DETAILS_CLASS","EVENT_WINDOW_REPEAT_DIV_CLASS","EVENT_WINDOW_REPEAT_CLASS","EVENT_WINDOW_TITLE_LOCATION_DIV_CLASS","SUBJECT_CLASS","LOCATION_CLASS","LOCATION_ICON_CLASS","LOCATION_DETAILS_CLASS","EVENT_WINDOW_START_END_DIV_CLASS","EVENT_WINDOW_START_CLASS","EVENT_WINDOW_END_CLASS","EVENT_WINDOW_RESOURCES_DIV_CLASS","DESCRIPTION_CLASS","DESCRIPTION_ICON_CLASS","DESCRIPTION_DETAILS_CLASS","EVENT_WINDOW_TIME_ZONE_DIV_CLASS","EVENT_WINDOW_START_TZ_CLASS","EVENT_WINDOW_END_TZ_CLASS","EVENT_WINDOW_BACK_ICON_CLASS","EVENT_WINDOW_SAVE_ICON_CLASS","EVENT_WINDOW_CANCEL_BUTTON_CLASS","EVENT_WINDOW_SAVE_BUTTON_CLASS","EVENT_WINDOW_DIALOG_PARENT_CLASS","EVENT_WINDOW_TITLE_TEXT_CLASS","EVENT_WINDOW_ICON_DISABLE_CLASS","EDIT_CLASS","EDIT_ICON_CLASS","DELETE_CLASS","DELETE_ICON_CLASS","CLOSE_CLASS","CLOSE_ICON_CLASS","ERROR_VALIDATION_CLASS","EVENT_TOOLTIP_ROOT_CLASS","ALLDAY_ROW_ANIMATE_CLASS","TIMESCALE_DISABLE","DISABLE_DATE","HIDDEN_CLASS","DISABLE_DATES","POPUP_WRAPPER_CLASS","POPUP_TABLE_CLASS","RESOURCE_MENU","RESOURCE_MENU_ICON","RESOURCE_LEVEL_TITLE","RESOURCE_TREE","RESOURCE_TREE_POPUP_OVERLAY","RESOURCE_TREE_POPUP","RESOURCE_CLASS","RESOURCE_ICON_CLASS","RESOURCE_DETAILS_CLASS","DATE_TIME_ICON_CLASS","VIRTUAL_SCROLL_CLASS","ICON_DISABLE_CLASS","AUTO_HEIGHT","IGNORE_WHITESPACE","EVENT_TEMPLATE","READ_ONLY","MONTH_HEADER_WRAPPER","INLINE_SUBJECT_CLASS","INLINE_APPOINTMENT_CLASS","SCROLL_HIDDEN","ALLDAY_APPOINTMENT_SCROLL","ALLDAY_APPOINTMENT_AUTO","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","beforeOpenAdaptiveDialog","resizeStart","onResize","resizeStop","checkBoxChange","beforeCopy","beforePaste","beforeAutoFill","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","filterSearchBegin","exportGroupCaption","initialLoad","initialEnd","dataReady","contentReady","uiUpdate","onEmpty","inBoundModelChanged","modelChanged","colGroupRefresh","headerRefreshed","pageComplete","sortComplete","filterComplete","searchComplete","reorderComplete","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","freezeRender","columnMenuClick","columnMenuOpen","filterOpen","filterDialogCreated","filterMenuClose","initForeignKeyColumn","getForeignKeyData","generateQuery","showEmptyGrid","foreignKeyData","dataStateChange","dataSourceChanged","rtlUpdated","beforeFragAppend","frozenHeight","textWrapRefresh","recordAdded","cancelBegin","editNextValCell","hierarchyPrint","expandChildGrid","printGridInit","exportRowDataBound","exportDataBound","rowPositionChanged","batchForm","beforeStartEdit","beforeBatchCancel","batchEditFormRendered","partialRefresh","beforeCustomFilterOpen","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","beforeFltrcMenuOpen","valCustomPlacement","filterCboxValue","restoreFocus","detailStateChange","detailIndentCellInfo","virtaulCellFocus","virtualScrollEditActionBegin","virtualScrollEditSuccess","virtualScrollEditCancel","virtualScrollEdit","refreshVirtualCache","editReset","virtualScrollAddActionBegin","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infiniteScrollHandler","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","initialCollapse","closeFilterDialog","getFilterBarOperator","resetColumns","pdfAggregateQueryCellInfo","excelAggregateQueryCellInfo","setGroupCache","lazyLoadScrollHandler","groupCollapse","beforeCheckboxRenderer","refreshHandlers","refreshFrozenColumns","setReorderDestinationElement","refreshVirtualFrozenHeight","setFreezeSelection","beforeRefreshOnDataChange","immutableBatchCancel","refreshVirtualFrozenRows","checkScrollReset","preventFrozenScrollRefresh","nextCellIndex","refreshInfiniteCurrentViewData","infiniteCrudCancel","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","refreshInfiniteEditrowindex","afterFilterColumnMenuClose","ownKeys","object","enumerableOnly","getOwnPropertySymbols","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_defineProperty","writable","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","downArrow","upArrow","pageUp","pageDown","enter","shiftEnter","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","count","gLen","groupSettings","items","dataRowCnt","agrCnt","indent","gLevel","GroupGuid","childLevels","recursive","nLevel","iterateArrayOrObject","collection","predicate","pred","iterateExtend","array","baseExtend","templateCompiler","baseTemplateComplier","setStyleAndAttributes","node","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","getElementIndex","isEqualNode","inArray","getActualPropFromColl","coll","getUid","appendChildren","parents","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","getPrototypeOf","concat","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","state","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","reduce","o","assign","k","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","rules","mRules","frRules","isCustom","validationRules","getMovableTbody","frozenRows","newRowPosition","getMovableHeaderTbody","getMovableContentTbody","getFrozenRightTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","numberFormat","mtch_1","addBiggerDialog","enableAdaptiveUI","dialogs","performComplexDataOperation","mapObject","returnObj","duplicateMap","setDisplayValue","tr","idx","displayVal","isContent","trs","td","addRemoveEventListener","isOn","evt_1","createEditElement","classNames","complexFieldName","getColumnModelByUid","registerEventHandlers","evts","handlers","eventHandlers","removeEventHandlers","clearReactVueTemplates","templates","destroyTemplate","isReact","renderTemplates","getRowIndexFromElement","generateExpandPredicates","fields","filterCols","allowCaseSensitive","ignoreAccent","filterSettings","CheckBoxFilterBase","generateNullValuePredicates","getPredicate","getPredicates","predicateList","getGroupKeysAndFields","rowsObject","timer","_extends","WEEK_LENGTH","DEFAULT_WEEKS","MS_PER_DAY","MS_PER_MINUTE","getElementHeightFromClass","elementClass","getTranslateY","WebKitCSSMatrix","webkitTransform","m42","getWeekFirstDate","firstDayOfWeek","date1","getWeekLastDate","weekFirst","weekLast","firstDateOfMonth","lastDateOfMonth","getWeekNumber","valueOf","dayOfYear","getWeekMiddleDate","setTime","time","tzOffsetBefore","tzOffsetDiff","resetTime","getDateInMs","localOffset","timezoneOffset","getDateCount","startDate","endDate","addDays","noOfDays","addMonths","noOfMonths","setMonth","getMaxDays","addYears","noOfYears","getStartEndHours","startHour","endHour","date2","getDaysCount","strTime","endTime","round","getDateFromString","ratio","devicePixelRatio","findIndexInData","resourceCollection","field_1","includes","groupIDField","getOuterHeight","removeChildren","elementChildren_1","elementChild","isDaylightSavingTime","jan","jul","getUniversalTime","hours","minutes","seconds","getMilliseconds","UTC","isMobile","isIPadDevice","capitalizeFirstWord","inputString","charAt","toLocaleUpperCase","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","enterHandler","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","_classCallCheck","Constructor","TypeError","_defineProperties","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_typeof","Symbol","iterator","_possibleConstructorReturn","self","assertThisInitialized","_createSuper","Derived","Super","isNativeReflectConstruct","NewTarget","construct","PointF","SizeF","RectangleF","arg1","arg2","arg3","arg4","pointf","sizef","Rectangle","topLeft","size","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","_excluded","string","propsToClassKey","variant","other","_objectWithoutPropertiesLoose","classKey","sort","capitalize","_excluded2","_excluded3","getStyleOverrides","theme","components","styleOverrides","getVariantStyles","variants","variantsStyles","definition","variantsResolver","_theme$components","_theme$components$nam","ownerState","themeVariants","themeVariant","isMatch","shouldForwardProp","systemDefaultTheme","createTheme","rootShouldForwardProp","slotShouldForwardProp","styled","defaultTheme","tag","label","inputOptions","componentName","componentSlot","slot","inputSkipVariantsResolver","skipVariantsResolver","inputSkipSx","skipSx","overridesResolver","shouldForwardPropOption","defaultStyledResolver","styledEngineStyled","muiStyledResolver","styleArg","expressions","expressionsWithDefaultTheme","stylesArg","__emotion_real","_ref","themeInput","transformedStyleArg","styleFunctionSx","numOfCustomFnsApplied","placeholders","fill","raw","_ref2","createStyled","subscriptionShape","PropTypes","shape","trySubscribe","func","isRequired","tryUnsubscribe","notifyNestedSubs","isSubscribed","storeShape","subscribe","dispatch","getState","React","forwardRef","createProvider","storeKey","_Provider$childContex","subscriptionKey","Provider","_Component","_inheritsLoose","_proto","store","getChildContext","Children","only","propTypes","childContextTypes","_assertThisInitialized","ReferenceError","nullListeners","Subscription","parentSub","onStateChange","unsubscribe","listeners","addNestedSub","Boolean","current","next","clear","createListenerCollection","prefixUnsafeLifecycleMethods","hotReloadingVersion","dummyState","noop","connectAdvanced","selectorFactory","_contextTypes","_childContextTypes","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","shouldHandleStateChanges","_ref2$storeKey","_ref2$withRef","withRef","connectOptions","contextTypes","WrappedComponent","invariant","isValidElementType","wrappedComponentName","displayName","selectorFactoryOptions","Connect","renderCount","propsMode","setWrappedInstance","initSelector","initSubscription","_ref3","subscription","componentDidMount","run","shouldComponentUpdate","forceUpdate","componentWillReceiveProps","nextProps","componentWillUnmount","getWrappedInstance","wrappedInstance","ref","sourceSelector","makeSelectorStateful","componentDidUpdate","notifyNestedSubsOnComponentDidUpdate","addExtraProps","withExtras","UNSAFE_componentWillReceiveProps","hoistStatics","hasOwn","is","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","pure","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextState","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","_slicedToArray","arr","arrayWithHoles","_arr","_n","_d","_e","_s","err","unsupportedIterableToArray","nonIterableRest","_toConsumableArray","arrayLikeToArray","iterableToArray","createStyles","ServerStyleSheets","sheetsManager","Map","sheetsRegistry","SheetsRegistry","generateClassName","createGenerateClassName","_jsx","StylesProvider","serverGenerateClassName","dangerouslySetInnerHTML","__html","useThemeVariants","useTheme","variantsClasses","withThemeCreator","withTheme","WithTheme","hoistNonReactStatics","excluded","sourceKeys","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","toVal","mix","tmp","cellClick","cellDoubleClick","moreEventsClick","hover","navigating","renderCell","eventClick","eventRendered","dataBinding","popupOpen","popupClose","inlineClick","eventsLoaded","virtualScroll","scrollUiUpdate","documentClick","cellMouseDown","die","msg","isDraft","DRAFT_STATE","isDraftable","proto","DRAFTABLE","isMap","isSet","each","iter","getArchtype","entry","thing","type_","has","propOrOldValue","t","delete","hasMap","hasSet","Set","latest","copy_","base_","shallowCopy","descriptors","freeze","dontMutateFrozenCollections","getPlugin","pluginKey","plugin","plugins","getCurrentScope","currentScope","usePatchesInScope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer","immer_","canAutoFreeze_","unfinalizedDrafts_","draft","revoke_","revoked_","processResult","baseDraft","isReplaced","useProxies_","willFinalizeES5_","modified_","finalize","maybeFreeze","generateReplacementPatches_","NOTHING","rootScope","path","childValue","finalizeProperty","scope_","finalized_","draft_","generatePatches_","parentState","targetObject","rootPath","assigned_","autoFreeze_","peek","getDescriptorFromProto","markChanged","prepareCopy","createProxy","proxyMap_","proxySet_","isManual_","traps","objectTraps","arrayTraps","Proxy","revocable","revoke","createES5Proxy_","currentImpl","archType","hasChanges_","copyHelper","from","hasSymbol","hasProxies","for","currentState","deleteProperty","owner","fn","useProxies","setUseProxies","autoFreeze","setAutoFreeze","produce","produceWithPatches","recipe","defaultBase","hasError","patches","inversePatches","_this2","ip","createDraft","finishDraft","applyPatches","patch","op","applyPatchesImpl","applyPatches_","useThemeProps","getThemeProps","systemUseThemeProps","consts","endsWith","startsWith","fnSort","order","fnAscending","fnDescending","localeCompare","extractFields","jsonArray","newData","group","level","groupDs","isLazyLoad","jsonData","indx","grouped","groupedArray","records","_loop_2","this_2","getVal","tempObj","_loop_3","aggs","buildHierarchy","fKey","lookup","pKey","grp","fKeyData","getFieldList","copyObj","ds","comparer","middle","ignoreDiacritics","diacritics","fieldName","callAdaptorFunction","fnName","param1","param2","getAddParams","adp","req","reqParams","isPlainObject","isCors","xhr","getGuid","rand","Uint8Array","isNull","getItemFromComparer","castRequired","distinct","requiresCompleteRecord","processData","prepareQuery","sampledata","requiresCounts","requiresCount","returnValue","parseJson","condition","ignoreCase","predicates","search","aggregate","sorted","sortBy","direction","skip","take","mainPred","childPred","cpre","serverTimezoneOffset","timeZoneHandling","sum","average","truecount","falsecount","operatorSymbols","odBiOperator","odUniOperator","odv4UniOperator","fnOperators","equal","expected","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","requiredArgs","required","Operators","forTest","endObj","whiteSpace","slash","newLine","stream","endStream","xref","n","trailer","startxref","eof","beginText","endText","beginPath","appendLineSegment","stroke","fillEvenOdd","fillStroke","fillStrokeEvenOdd","appendbeziercurve","appendRectangle","saveState","restoreState","paintXObject","modifyCtm","modifyTM","setLineWidth","setLineCapStyle","setLineJoinStyle","setDashPattern","setFlatnessTolerance","closePath","closeStrokePath","closeFillStrokePath","setCharacterSpace","setWordSpace","setHorizontalScaling","setTextLeading","setFont","setRenderingMode","setTextRise","setTextScaling","setCoords","goToNextLine","setText","setTextWithFormatting","setTextOnNewLine","selectcolorspaceforstroking","selectcolorspacefornonstroking","setrbgcolorforstroking","setrbgcolorfornonstroking","setcmykcolorforstroking","setcmykcolorfornonstroking","setgraycolorforstroking","setgraycolorfornonstroking","clipPath","clipPathEvenOdd","endPath","setGraphicsState","comment","evenOdd","setMiterLimit","setColorAndPattern","setColorAndPatternStroking","__esModule","_utils","createSvgIcon","CommentStatus","FontStyle","ContextMenuItem","SignatureType","AnnotationResizerLocation","DisplayMode","CursorType","DynamicStampItem","SignStampItem","StandardBusinessStampItem","AllowedInteraction","AnnotationDataFormat","toDate","argStr","console","warn","undoRedoItems","inlineNode","getIndex","toLocaleLowerCase","hasClass","getDropDownValue","returnType","subCommand","isNOU","iconCss","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","fontFamily","fontNameContent","name_1","title","fontSizeDropDown","fontSizeItems","fontSize","fontSizeContent","getCollection","getTBarItemsIndex","toolbarItems","itemsIndex","command","updateUndoRedoStatus","baseToolbar","undoRedoStatus","trgItems","toolbarObj","enableItems","dispatchEvent","createEvent","initEvent","parseHtml","tempNode","DocumentFragment","createRange","createContextualFragment","getTextNodesUnder","docElement","firstChild","nextSibling","toObjectLowerCase","convertedValue","getEditValue","rteObj","enableHtmlEncode","updateTextNode","decode","enterKey","resultElm","isPreviousInlineElem","previousParent","insertElem","nodeName","textContent","imageElm","getDefaultValue","isEditableValueEmpty","sanitizeHelper","enableHtmlSanitizer","convertToBlob","dataUrl","mime","bstr","atob","u8arr","Blob","getLocaleFontFormat","localeItems","localeObj","fontNameLocale","formatsLocale","numberFormatListLocale","bulletFormatListLocale","PdfPageOrientation","PdfPageRotateAngle","PdfNumberStyle","PdfDockStyle","PdfAlignmentStyle","TemplateType","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","PdfHorizontalAlignment","PdfVerticalAlignment","PdfTextAlignment","TextRenderingMode","PdfLineJoin","PdfLineCap","PdfDashStyle","PdfFillMode","PdfColorSpace","PdfBlendMode","PdfGraphicsUnit","PdfGridImagePosition","PdfTextDirection","_","baseClone","circulars","clones","entries","findIndex","errorToString","regExpToString","symbolToString","SYMBOL_REGEXP","printNumber","printSimpleValue","quoteStrings","typeOf","toISOString","printValue","mixed","oneOf","notOneOf","notType","originalValue","isCast","defined","email","uuid","lowercase","uppercase","number","lessThan","moreThan","positive","negative","boolean","isValue","noUnknown","__isYupSchema__","Condition","refs","otherwise","check","every","pop","schema","branch","isSchema","Parent","Class","_cache","Wrapper","toArray","strReg","ValidationError","errorOrErrors","errors","inner","isError","captureStackTrace","runTests","cb","endEarly","tests","callback","fired","once","nestedErrors","prefixes","Reference","isContext","isSibling","getter","__isYupRef","createValidation","validate","sync","rest","Ref","isRef","createError","overrides","nextParams","mapValues","formatError","ctx","validOrError","OPTIONS","getIn","lastPart","lastPartDebug","_part","isBracket","innerType","_type","parentPath","reach","ReferenceSet","description","describe","newItems","removeItems","BaseSchema","deps","conditions","_whitelist","_blacklist","exclusiveTests","transforms","withMutation","typeError","spec","strip","strict","abortEarly","nullable","presence","_value","_mutate","_typeError","_whitelistError","_blacklistError","cloneDeep","meta","before","combined","mergedSpec","v","_typeCheck","resolvedSchema","_cast","assert","isType","formattedValue","formattedResult","rawValue","_options","getDefault","initialTests","maybeCb","_validate","validateSync","_getDefault","isStrict","exclusive","_isPresent","isNullable","opts","isExclusive","dep","enums","valids","invalids","method","alias","notRequired","Mixed","BooleanSchema","String","isAbsent","receiver","rEmail","rUrl","rUUID","isTrimmed","objStringTag","StringSchema","strValue","excludeEmptyString","NumberSchema","parsed","less","more","isInteger","_method","avail","truncate","isoReg","invalidDate","DateSchema","timestamp","struct","numericKeys","minutesOffset","isoParse","param","cast","limit","prepareParam","INVALID_DATE","sortFields","excludes","edges","addNode","depPath","toposort","reverse","_err$path","sortByKeyOrder","unknown","known","defaultSort","ObjectSchema","_sortErrors","_nodes","_excludedEdges","_options$stripUnknown","stripUnknown","intermediateValue","innerOptions","__validating","isChanged","exists","fieldValue","inputValue","fieldSpec","nextFields","schemaOrRef","dft","getDefaultFromShape","additions","picked","to","fromGetter","noAllow","unknownKeys","allow","mapKeys","transformKeys","camelCase","snakeCase","ArraySchema","_opts","castArray","castElement","_options$abortEarly","_options$recursive","original","rejector","FieldSettings","dropDownBaseClasses","root","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","actionFailureTemplateId","noRecordsTemplateId","noDataCompTemp","componentLocale","getLocaleName","l10n","liElem","getTextByValue","setEnableRtl","enableRtlElements","bindEvent","jsonElement","ListBase","createJsonFromElement","resetList","setListData","renderItemsBySelect","setEnabled","enabled","updateDataAttribute","invalidAttr","htmlAttributes","getJSONfromOption","optionGroup","isHeader","updateFields","groupBy","innerText","scrollTimer","isRequested","isDataFetched","itemTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","isActive","showSpinner","emptyDataRequest","executeQuery","getQuery","listItems","renderItems","onActionComplete","groupTemplate","renderGroupTemplate","bindChildItems","onActionFailure","hideSpinner","dataManager","localDataArgs","itemTemplate","updateDataList","childNode","remainingItems","sortedData","liCollections","updateListValues","raiseDataBound","findListElement","findNode","liElement","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","createListItemFromArray","listOption","createListItemFromJson","fixedHeaderElement","allowCustomValue","postRender","listElement","focusItem","selectedItem","listEle","groupTemplateID","headerItems","groupValue","tempHeaders","isGroupChecking","createListItems","sortOrder","getSortedDataSource","groupDataSource","createList","fieldValues","showIcon","ariaAttributes","groupItemRole","setFloatingHeader","setFixedHeader","scrollStop","liHeight","getValidLi","topIndex","currentLi","templateID","renderContentTemplate","liWidth","firstLi","textField","getDataSource","addSorting","getIndexByValue","getItems","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","updateDataSource","setUpdateInitial","setZIndex","isEmptyData","rippleFun","addItem","itemIndex","itemsCount","selectedItemValue","itemText","addItemTemplate","createTextNode","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","validationAttribute","hidden","itemCount","getDataByValue","_c","isLineShapes","shapeAnnotationType","setElementStype","formFieldAnnotationType","strokeWidth","strokeDashArray","borderDashArray","fillColor","strokeColor","borderColor","color","thickness","findPointsLength","points","Point","findLength","getBaseShapeAttributes","baseShapeAttributes","actualSize","pivot","angle","rotateAngle","parentTransform","pivotX","pivotY","dashArray","tx","ty","cloneObject","additionalProp","newObject","sourceObject","customProperties","propAdditional","internalProp","getInternalProperties","properties_1","cloneArray","HTMLElement","innerHtml","sourceArray","clonedArray","isLeader","rotatedPoint","leaderCount","newPoint1","wrapper","findAngle","sourcePoint","targetPoint","center","bounds","leaderHeight","matrix","identityMatrix","rotateMatrix","transformPointByMatrix","leader","PdfFontStyle","PdfFontFamily","PdfFontType","PdfWordWrapType","PdfSubSuperScript","FontEncoding","TtfCmapFormat","TtfCmapEncoding","TtfPlatformID","TtfMicrosoftEncodingID","TtfMacintoshEncodingID","FontDescriptorFlags","TtfCompositeGlyphFlags","subQuery","isChild","distincts","queries","fromTable","lookups","expands","sortedColumns","groupedColumns","lazyLoad","setKey","using","execute","always","cloned","subQuerySelector","isCountRequired","addParams","expand","tables","searchKey","fieldNames","isFromGroup","sortByForeignKey","sorts","filterQueries","sortByDesc","page","pageIndex","nos","hierarchy","selectorFn","foreignKey","q","filterQueryLists","singles","filtered","isComplex","combinePredicates","combine","fromJson","fromJSONData","record","isAnd","toJson","preds","BrowserRouter","createHistory","resolveToLocation","currentLocation","normalizeToLocation","createLocation","forwardRefShim","LinkAnchor","innerRef","navigate","onClick","ex","isModifiedEvent","forwardedRef","Link","RouterContext","ariaCurrent","activeClassName","activeStyle","classNameProp","exact","isActiveProp","locationProp","sensitive","toLocation","escapedPath","matchPath","classnames","joinClassnames","Input","CLASSNAMES","floatType","isBindClearAction","bindInitialEvent","checkInputValue","floatLabelType","getParentNode","inputElement","_focusFn","_blurFn","wireFloatingEvents","createFloatingInput","inputObject","internalCreateElement","makeElement","createInputContainer","customTag","floatLinelement","floatLabelElement","placeholder","encodePlaceHolder","inputWrap","updateLabelState","checkFloatLabelType","updateIconState","button","activeElement","wireClearBtnEvents","readOnly","validateLabel","tagClass","spanEle","setCssClass","cssClass","oldClass","setPlaceholder","setReadonly","isReadonly","readonly","isRtl","isEnable","inputContainer","disabledAttrs","considerWrapper","removeAttributes","addAttributes","setClearButton","isClear","initial","clearButton","insertAdjacentElement","createClearButton","_internalRipple","isRipple","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","setRipple","addIcon","icons","internalCreate","result_1","result_2","ReactCSS","loop","handleActive","handleHover","_flattenNames2","_interopRequireDefault","_mergeClasses2","_autoprefix2","_hover3","_active2","_loop3","_len","activations","_key","activeNames","merged","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","process","request","virtualSelectRecords","fnQueryChild","subDeffer","childArgs","subUrl","childReq","subData","isGraphQLAdaptor","ajaxReqOption","virtualRecords","getData","ajax_1","all","pResult","cResult","settings","batchRequest","doAjaxRequest","batchUpdate","deff_1","ajax_2","insert","addRecord","deleteRecord","update","updateRecord","successFunc","failureFunc","ajaxDeffered","ajaxFunc","ajax_3","CLONE_DEEP_FLAG","argIndex","ActionTypes","createStore","reducer","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","$$observable","outerSubscribe","observer","observeState","getUndefinedStateErrorMessage","actionType","combineReducers","reducers","reducerKeys","finalReducers","finalReducerKeys","shapeAssertionError","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","actionCreator","actionCreators","boundActionCreators","compose","funcs","applyMiddleware","middlewares","chain","_dispatch","middlewareAPI","middleware","getPath","acc","themeMapping","propValueFinal","userValue","cssProperty","themeKey","propValue","handleBreakpoints","filterProps","MatrixTypes","Matrix","m11","m12","m21","m22","Identity","pt","Translation","Scaling","num2","multiplyPoint","centerX","centerY","multiplyMatrix","sin","cos","Unknown","setMatrix","createRotationRadians","scaleMatrix","scaleX","scaleY","createScaling","matrix1","matrix2","type2","assignMatrix","mat","PdfNumber","position5","status5","isSaving5","index5","save","writer","intValue","crossTable","floatToString","returnString","historyContext","createContext","createNamedContext","Router","computeRootMatch","isExact","pathname","_pendingLocation","unlisten","staticContext","HistoryContext","cacheCount","matched","cacheKey","pathCache","regexp","pathToRegexp","compilePath","memo","Route","addLeadingSlash","stripBasename","basename","createURL","createPath","staticHandler","Switch","computedMatch","withRouter","wrappedComponentRef","remainingProps","useContext","useHistory","toInteger","dirtyNumber","useLocalizationContext","localization","MuiPickersAdapterContext","useUtils","utils","useDefaultDates","defaultDates","useLocaleText","localeText","useNow","ToolbarType","DialogType","PdfName","stringStartMark","internalValue","isSaving6","position6","normalizeValue","status6","index6","escapeString","newName","stringValue","len_1","ch","delimiters","replacements","ul","icon","expanded","hasChild","collapsible","image","iconWrapper","anchorWrap","navigable","getFieldValues","fieldData","dataField","compileTemplate","defaultMappedFields","isChecked","hasChildren","tooltip","urlAttributes","imageAttributes","imageUrl","defaultAriaAttributes","listRole","itemRole","wrapperRole","defaultListBaseOptions","showCheckBox","expandCollapse","listClass","itemClass","processSubChild","headerTemplate","expandIconClass","moduleName","expandIconPosition","itemNavigable","createListFromArray","isSingleLevel","componentInstance","generateUL","subChild","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","compiledString","compiledElement","innerDiv","getSiblingLI","isPrevious","siblingLI","liIndex","curFields","cusQuery","itemObj","grpItem","newtext","_id","curEle","jsonAr","childs","anchor","hasChildNodes","attributes_1","liCollection","currentID","category","headerItems_1","headerData","generateIcon","ToolBase","pdfViewer","pdfViewerBase","protectChange","commandHandler","inAction","currentElement","blocked","isTooltipVisible","childTable","undoElement","annotations","undoParentElement","startAction","startPosition","currentPosition","prevPosition","mouseMove","prevPageId","activeElements","activePageID","endAction","tool","mouseWheel","mouseLeave","updateSize","corner","initialBounds","isMouseUp","zoom","viewerBase","getZoomFactor","difx","dify","TextElement","deltaWidth","deltaHeight","annotName","annotationSettings","annotationModule","findAnnotationSettings","annotationMaxHeight","annotationMaxWidth","annotationMinHeight","annotationMinWidth","minWidth","maxWidth","minHeight","maxHeight","isAnnotationSet","getPositions","newWidth","newHeight","getPivot","SelectTool","mouseEventHelper","overlappedCollections","findActiveElement","isLock","checkAllowedInteractions","currentSelctor","annotationSelectorSettings","selectedObject","selectedItems","annotation","formField","formFields","currentAnnot","currentSource","freeTextAnnotationModule","isInuptBoxInFocus","formDesignerModule","clearSelection","isFreeTextSelected","isAnnotationMouseDown","isFormFieldMouseDown","enableToolbar","enableDesktopMode","toolbarModule","showToolbar","fireAnnotationUnSelect","fontStyle","backgroundColor","alignment","isReadOnly","maxLength","isPrint","rotation","isSelected","fireFormFieldUnselectEvent","MoveTool","prevNode","nodeMouseDown","redoElement","vertexPoints","checkisAnnotationMove","dragSelectedObjects","calculateMouseActionXDiff","calculateMouseActionYDiff","updateHTMLElement","renderSelector","isAnnotationMouseMove","isFormFieldMouseMove","newShapeObject","modifiedDate","X","Y","Width","Height","previousPosition","fireFormFieldMoveEvent","addAction","stampAnnotationModule","updateSessionStorage","stickyNotesAnnotationModule","updateStickyNotes","calculateMouseXDiff","calculateMouseYDiff","isStamp","isSkip","requiredX","requiredY","cobject","stampFillColor","dynamicText","enableShapeLabel","labelContent","checkBoundaryConstraints","currentSelctor_1","triggerAnnotationMove","StampTool","nodeElement","moveStampElement","textWidth","getTextWidth","widthRatio","sourceWrapper","font","getContext","measureText","InkDrawingTool","disableTextSelectionMode","inkAnnotationModule","drawInkInCanvas","storePathData","ConnectTool","prevSource","measureType","notes","sizeObject","checkAnnotationWidth","nodePropertyChange","newShapeElementObject","updateCalibrateValues","cloneShapebject","dragConnectorEnds","selectedSegment","ResizeTool","Rect","isPreventHistory","oldObject","isAnnotationSelect","isFormFieldSelect","deltaValues","scaleObjects","stampSettings","boundsRatio","horizontalAlignment","verticalAlignment","setOffsetWithRespectToBounds","fireFormFieldResizeEvent","annotationElement","getPoints","rotatePoint","getChanges","getTooltipContent","pdfAnnotationBaseModel","Selector","scaleSelectedItems","NodeDrawingTool","updateFreeTextProperties","isFormDesign","formFieldElement","drawingObject","pageNumber","getActivePage","updateFormFieldInitialSize","pageWidth","pageContainer","pageHeight","clientHeight","targetParentRect","updateNodeDimension","formFieldCollection","signatureIndicatorSettings","formFieldCollections","drawHTMLContent","isMouseDown","equals","dragging","toBounds","updateRadiusLinePosition","trasPoint","renderDrawing","PolygonDrawingTool","lastPoint","nodeAnnotElement","author","subject","borderStyle","updatePerimeterLabel","measureAnnotationModule","isDoubleClineck","isMouseLeave","currentSelector","containsPoint","enableShapeAnnotation","shapeAnnotationModule","renderShapeAnnotations","enableMeasureAnnotation","calculateArea","addTextToComments","calculateVolume","renderMeasureShapeAnnotations","sourceDecoraterShapes","taregetDecoraterShapes","calculatePerimeter","annotationObject","LineTool","nodeAnnot","lineHeadEnd","lineHeadStart","measureModule","annotationNode","leaderLength","RotateTool","refPoint","rotate","useStyles","makeStyles","cellHide","simpleHeader","breakpoints","down","fontWeight","boxSizing","simpleCell","stackedHeader","verticalAlign","stackedCommon","borderBottom","stackedCommonAlways","stackedParent","stackedParentAlways","cellStackedSmall","responsiveStackedSmall","responsiveStackedSmallParent","TableBodyCell","colIndex","columnHeader","tableId","otherProps","onCellClick","handleClick","useCallback","methods","innerCells","clsx","lastColumn","responsive","setTableProps","_indexOfInstanceProperty","_sliceInstanceProperty","TableCell","TableBodyRow","isRowSelectable","TableRow","rowHover","hoverCursor","selectableRowsOnClick","expandableRowsOnClick","responsiveSimple","responsiveStacked","bool","withStyles","palette","cursor","borderTop","ExpandButton","areAllRowsExpanded","buttonClass","expandableRowsHeader","iconIndeterminateClass","isHeaderCell","onExpand","IconButton","RemoveIcon","KeyboardArrowRightIcon","fixedHeader","fixedLeft","transition","hide","headerCell","background","paper","expandDisabled","checkboxRoot","TableSelectCell","fixedSelectColumn","expandableOn","selectableOn","isRowExpanded","selectableRowsHeader","hideExpandButton","selectableRowsHideCheckboxes","setHeadCellRef","CheckboxComponent","Checkbox","ExpandButtonComponent","cellClass","refProp","alignItems","buildMap","_reduceInstanceProperty","accum","escapeDangerousCSVCharacters","warnInfo","warning","consoleWarnings","consoleWarn","getPageValue","rowsPerPage","totalPages","getCollatorComparator","Intl","Collator","numeric","sensitivity","compare","sortCompare","aData","bData","downloadCSV","csv","filename","blob","msSaveOrOpenBlob","dataURI","URL","_URL","webkitURL","downloadURI","createObjectURL","link","createCSVDownload","replaceDoubleQuoteInString","buildHead","soFar","download","downloadOptions","separator","CSVHead","buildBody","_trimInstanceProperty","_mapInstanceProperty","CSVBody","onDownload","buildCSV","onChange","TableBody","nativeEvent","shiftAdjacentRows","previousSelectedRow","selectedRows","clickedDataIndex","_filterInstanceProperty","selectRowUpdate","_startsWithInstanceProperty","selectableRows","selectRow","handleRowSelect","expandableRows","isRowExpandable","expandRow","toggleExpandRow","onRowClick","columnOrder","serverSide","highestPageInRange","fromIndex","toIndex","tableRows","buildRows","visibleColCnt","MuiTableBody","customRowRender","isRowSelected","bodyClasses","setRowProps","processedRow","processRow","Fragment","_bindInstanceProperty","handleRowClick","lastStackedCell","lastSimpleCell","getRowIndex","setCellProps","renderExpandableRow","colSpan","Typography","emptyTitle","textLabels","noMatch","filterList","searchText","textAlign","TableFilter","customUpdate","newFilterList","updateFilterByType","filterUpdate","confirmFilters","onFilterUpdate","labelFilterAll","filterType","handleClose","onFilterConfirm","onFilterReset","filterData","renderItem","filterOptions","renderValue","Grid","xs","FormGroup","checkboxListTitle","filterValue","filterIndex","FormControlLabel","checkboxFormControl","checkboxFormControlLabel","control","checkboxIcon","handleCheckboxChange","checkbox","fullWidth","gridListTile","FormControl","InputLabel","htmlFor","Select","_this3","handleDropdownChange","MenuItem","TextField","_this4","handleTextFieldChange","multiple","_this5","handleMultiselectChange","ListItemText","filterListOptions","handleCustomChange","customFooter","Button","resetLink","tabIndex","resetFilters","filtersSelected","justifyContent","spacing","_this6","renderCheckbox","renderMultiselect","renderTextField","renderCustomField","renderSelect","applyFilters","flex","noMargin","alignSelf","checkboxFormGroup","TableFilterListItem","onDelete","Chip","flexWrap","chip","TableFilterList","filterListRenderers","columnNames","serverSideFilterList","customFilterListUpdate","ItemComponent","removeFilter","columnName","removedFilter","_Array$isArray","onFilterChipClose","customFilterChip","customFilterItem","customFilterItemIndex","itemKey","setFilterChipProps","filterListRenderersValue","getFilterList","arrayOf","oneOfType","any","caption","flexShrink","selectRoot","paddingTop","paddingBottom","paddingLeft","paddingRight","textAlignLast","typography","pxToRem","selectIcon","JumpToPage","textLabel","changePage","pagination","jumpToPage","pages","lastPage","MenuItemComponent","Toolbar","InputBase","_parseInt","menuItem","pageVal","tableCellContainer","navContainer","toolbar","TablePagination","MuiTableFooter","MuiTableRow","MuiTableCell","changeRowsPerPage","MuiTablePagination","labelRowsPerPage","labelDisplayedRows","displayRows","backIconButtonProps","previous","nextIconButtonProps","SelectProps","SelectDisplayProps","MenuProps","MenuListProps","rowsPerPageOptions","onPageChange","onRowsPerPageChange","TableFooter","rowCount","MuiTable","getColModel","headCellRefs","colModel","leftMostCell","headCells","_Object$entries","parentOffsetLeft","columnIndex","colIdx","cmIndx","mon","updateColumnOrder","transitionTime","tableRef","timers","hoverIdx","reorderedCols","prevColumnOrder","newPosition","srcIndex","targetIndex","newItem","reorderColumns","newColModel","getClientOffset","modelIdx","columnShift","curColModel","transitions","allElms","dividers","elms","jj","divider","newColIndex","_setTimeout","mypopper","sortAction","dragCursor","sortLabelRoot","sortActive","toolButton","textTransform","contentWrapper","hintIconAlone","hintIconWithSortIcon","TableHeadCell","cellHeaderProps","colPosition","draggableHeadCellRefs","draggingHook","hint","setCellRef","sortDirection","toggleSort","useState","sortTooltipOpen","setSortTooltipOpen","hintTooltipOpen","setHintTooltipOpen","setDragging","Tooltip","MuiTooltip","ariaSortDirection","isDraggingEnabled","draggableColumns","sortLabelProps","active","hideSortIcon","useDrag","monitor","collect","isDragging","dragRef","useDrop","_Object$assign","isOver","useColumnDrop","onMouseDown","_sortInstanceProperty","columnHeaderTooltip","toolTip","placement","onOpen","onClose","popper","onKeyUp","TableSortLabel","HelpIcon","enterDelay","TableHeadRow","main","responsiveStackedAlways","TableHead","toggleAllExpandableRows","handleToggleColumn","numSelected","isIndeterminate","disableToolbarSelect","selectToolbarPlacement","orderedColumns","colPos","MuiTableHead","indeterminate","customHeadRender","setCellHeaderProps","customHeadLabelRender","getParentOffsetLeft","tableEl","TableResize","resizeCoords","priorPosition","tableWidth","tableHeight","windowWidth","setDividers","cellsRef","finalCells","cellMinusOne","_item","ix","updateWidths","lastPosition","resizableColumns","roundWidthPercentages","thCell","originalWidth","elRect","minWidths","isResize","fixedMinWidth1","fixedMinWidth2","nextId","tries","idNumber","nextCoord","prevCoord","handleMoveRightmostBoundary","fixedMinWidth","handleMoveLeftmostBoundary","handleMoveRight","handleMoveLeft","isFirstColumn","firstColumn","isLastColumn","curCoord","newResizeCoords","setResizeable","setCellRefs","updateDividers","updateCoords","handleResize","onMouseMove","onResizeMove","onMouseUp","onResizeEnd","onResizeStart","resizer","border","Popover","refExit","providedProps","isOpen","anchorEl","useRef","useEffect","handleRequestClose","closeIconClass","closeIcon","triggerProps","MuiPopover","elevation","TransitionProps","onExited","anchorOrigin","vertical","horizontal","transformOrigin","CloseIcon","formGroup","formControl","TableViewCol","onColumnUpdate","updateColumns","viewColumns","titleAria","searchIcon","clearIcon","TableSearch","onSearch","onHide","clearIconVisibility","searchAlwaysOpen","Grow","appear","in","timeout","SearchIcon","autoFocus","InputProps","inputProps","onKeyDown","searchPlaceholder","searchProps","ClearIcon","TableToolbar","iconActive","showSearch","searchOpen","displayData","dataToDownload","columnsToDownload","columnOrderCopy","newRow","useDisplayedRowsOnly","filteredDataToDownload","find","useDisplayedColumnsOnly","isSearchShown","iconName","prevIconActive","prevState","setTableAction","onFilterDialogOpen","onFilterDialogClose","nextVal","onSearchClose","onSearchOpen","searchClose","searchTextUpdate","hideSearch","setActiveIcon","prevProps","toggleViewColumn","TableViewColComponent","TableFilterComponent","SearchIconComponent","DownloadIconComponent","DownloadIcon","PrintIconComponent","PrintIcon","ViewColumnIconComponent","ViewColumnIcon","FilterIconComponent","FilterIcon","downloadCsv","filterTable","fullWidthRoot","fullWidthLeft","customSearchRender","handleSearch","titleRoot","titleText","fullWidthTitleText","actions","fullWidthActions","disableFocusListener","searchButton","getActiveIcon","handleSearchIconClick","handleCSVDownload","ReactToPrint","PrintContextConsumer","handlePrint","filterCloseIcon","hideFilterPopover","filterPaper","customFilterDialogFooter","customToolbar","spacer","TableToolbarSelect","_someInstanceProperty","onRowsDelete","Paper","customToolbarSelect","handleCustomSelectedRows","iconButton","deleteAria","DeleteIcon","deleteIcon","unit","TABLE_LOAD","TOOLBAR_ITEMS","STP","REPLACE","ABOVE","NONE","MUIDataTable","caseSensitive","enableNestedDataAccess","filterArrayFullMatch","sortFilterList","tableBodyHeight","tableBodyMaxHeight","warnDeprecated","warnDep","onRowsSelect","onRowsExpand","fixedHeaderOptions","yAxis","xAxis","customFilterListRender","onTableChange","storageKey","savedState","_JSON$stringify","onTableInit","resizeHeadCellRefs","tableContent","newColumns","prevColumns","newColumnOrder","columnOptions","empty","searchable","sortThirdClickReset","sortDescFirst","toSearch","toFind","needle","changedData","tableMeta","getTableMeta","funcResult","customBodyRender","isValidElement","prevFilterIndex","comparator","getDisplayData","rowData","tableData","curState","currentTableData","tableState","onViewColumnsChange","onColumnViewChange","newOrder","sequenceOrder","newSortOrder","orderLabel","getSortDirectionLabel","newState","announceText","activeColumn","sortTable","onColumnSortChange","onChangeRowsPerPage","onChangePage","onSearchChange","onFilterChange","filterPos","_findIndexInstanceProperty","isEqual","_spliceInstanceProperty","expandedRowsData","affecttedRows","onRowExpansionChange","onColumnOrderChange","selectedMap","cleanRows","setTableData","UPDATE","shouldCollapseExpandedRow","hasRemovedRow","removedRow","cIndex","curExpandedRows","prevSelectedRows","selectedRowsLen","isDeselect","newRows","curSelectedRows","onRowSelectionChange","rowPos","shiftAdjacentMap","aRow","createRef","setHeadResizeable","mergeDefaultOptions","restoredState","showResponsive","getInitTableOptions","INITIAL","setTableInit","updateOptions","didDataUpdate","assignwith","srcValue","handleOptionDeprecation","defaultOptions","getDefaultOptions","theProps","rowsSelected","optionNames","optState","validateOptions","dataUpdated","fromConstructor","buildColumns","sortIndex","transformData","elmVal","names","selectedRowsData","selectedRowIndex","rowsExpanded","stateUpdates","dataForTableMeta","isFiltered","isSearchFound","displayRow","columnDisplay","columnValue","customBodyRenderLite","updateDataCol","columnVal","filterVal","logic","hasSearchText","_everyInstanceProperty","customSearch","customSearchResult","computeDisplayRow","tableProps","tableRoot","noSortData","columnSortCompare","hasCustomTableSort","customSort","dataSrc","sIndex","sortFn","responsiveClass","DragDropBackend","HTML5Backend","TableBodyComponent","DefaultTableBody","TableFilterListComponent","DefaultTableFilterList","TableFooterComponent","DefaultTableFooter","TableHeadComponent","DefaultTableHead","TableResizeComponent","DefaultTableResize","TableToolbarComponent","DefaultTableToolbar","TableToolbarSelectComponent","DefaultTableToolbarSelect","hasToolbarItem","_this7","responsiveOption","paperClasses","responsiveScroll","responsiveScrollMaxHeight","responsiveScrollFullHeight","paperResponsiveScrollFullHeightFullWidth","responsiveStackedFullWidth","responsiveBase","tableHeightVal","tableClassNames","dndProps","selectRowDelete","getTableContentRef","customFilterListOptions","toggleSortColumn","customTableBodyFooterRender","DndProvider","backend","liveAnnounce","getTextLabels","objectOf","DefaultTableFilter","outline","clip","_DebounceTableSearch","debouncedSearch","wait","immediate","callNow","debounceWait","handleTextChangeWrapper","inputRef","searchField","DebounceTableSearch","debounceSearchRender","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","PdfDictionary","dictionary","position7","primitiveItems","Dictionary","suffix","resources","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","readCookie","cleanValue","cleanupCookieValue","doNotParse","isParsingCookie","__assign","Cookies","cookies","changeListeners","HAS_DOCUMENT_COOKIE","cookie","parseCookies","_updateBrowserValues","_emitChange","getAll","finalOptions","expires","maxAge","addChangeListener","removeChangeListener","SvgIcon","muiName","_createForOfIteratorHelper","F","it","normalCompletion","didErr","_e2","defaulthtmlkeys","delayUpdate","ComponentBase","attrKeys","cachedTimeOut","isAppendCalled","initRenderCalled","isReactForeceUpdate","isshouldComponentUpdateCalled","refreshChild","canDelayUpdate","renderReactComponent","portals","prev","refreshProperties","reactElement","updateProperties","silent","dProps","propkey","isClassName","htmlattributes","compareValues","clsName","propsClsName","dpropsClsName","processComplexTemplate","compTemplate","complexTemplate","PropVal","getDefaultAttributes","propKeys","controlAttributes","reactUid","clsList","syntheticEvent","value1","value2","tempVal","tempVal2","compareObjects","oldProps","newProps","diffArray","_j","checkInjectedModules","prevModule","curModule_1","getInjectedServices","directivekeys","changedProps","directiveValue","validateChildren","skipRefresh","prevProperties","dKeys","compareOutput","_c1","allColumns","propInstance","changedProps_1","propInstance_1","ReactDOM","templateNames","tempPortal","indexCount","propIndexCount","portal","childCache","childs_1","ifield","getChildType","childProps","getChildProps","isDirective","matcher","subChild_1","accessProp","cacheVal","cachedValue","childs_2","isService","services","applyMixins","derivedClass","baseClass","ComplexBase","stringCompiler","templateElement","cEle","actTemplate","actData","isLegacyTemplate","rele","templateItems","tools","alignmentLocale","alignmentItems","imageAlignItems","displayLocale","imageDisplayItems","tableCellItems","tableRowLocale","tableRowsItems","tableColumnLocale","tableColumnsItems","tableVerticalLocale","TableCellVerticalAlignItems","tableStyleLocale","TableStyleItems","predefinedItems","fontColor","numberFormatList","bulletFormatList","getLocale","updateDropDownLocale","PdfReference","objNumber","genNumber","index3","position3","status3","isSaving3","PdfReferenceHolder","obj2","index4","position4","objectIndex","status4","isSaving4","primitiveObject","pdfReference","PdfArray","PdfStream","PdfString","cTable","isSaving","getReference","kids","mediaBox","decodeParms","type1","baseFont","encoding","subtype","contents","procset","colorSpace","extGState","xObject","bitsPerComponent","dctdecode","blackIs1","predictor","deviceRgb","annot","uri","annots","ca","CA","xyz","fit","dest","BM","flatedecode","bBox","form","w","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","shading","antiAlias","function","shadingType","coords","domain","functionType","bitsPerSample","patternType","paintType","tilingType","xStep","yStep","useForkRef","setEditFrameFocus","editableElement","iframe","contentWindow","paraElm","tableElm","tdElm","borderLeft","removeProperty","borderRight","getLastTextNode","startChildNodes","finalNode","getDefaultHtmlTbStatus","bold","italic","subscript","superscript","strikethrough","orderedlist","unorderedlist","underline","alignments","backgroundcolor","fontcolor","fontname","fontsize","formats","createlink","insertcode","chars","cornersPointsBeforeRotation","topRight","bottomLeft","bottomRight","rotateSize","minX","minY","maxX","maxY","Size","getBounds","corners","middleLeft","topCenter","bottomCenter","middleRight","textAlignToString","wordBreakToString","bBoxText","svg","getChildNode","getBBox","whiteSpaceToString","getOffset","desiredSize","addLeadingZeros","targetLength","sign","output","startMark","endMark","position9","clonedObject9","internalElements","tempArray","tempNumberArray","pdfNumber","status9","isSaving9","index9","pdfCrossTable","markedChange","fromRectangle","tempElements","removeAt","_createSvgIcon","_jsxRuntime","_default","jsx","getChipUtilityClass","generateUtilityClass","chipClasses","generateUtilityClasses","LuxonError","InvalidDateTimeError","InvalidIntervalError","InvalidDurationError","ConflictingSpecificationError","InvalidUnitError","InvalidArgumentError","ZoneIsAbstractError","DATE_SHORT","DATE_MED","DATE_MED_WITH_WEEKDAY","DATE_FULL","DATE_HUGE","TIME_SIMPLE","TIME_WITH_SECONDS","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","hasIntl","hasFormatToParts","hasRelative","bestBy","by","pair","best","pick","integerBetween","padStart","repeat","parseInteger","parseMillis","roundTo","towardZero","factor","rounder","isLeapYear","daysInYear","daysInMonth","modMonth","floorMod","objToLocalTS","weeksInWeekYear","weekYear","p1","last","p2","untruncateYear","parseZoneInfo","ts","offsetFormat","intlOpts","modified","without","included","diffed","signedOffset","offHourStr","offMinuteStr","offHour","offMin","asNumber","numericValue","normalizeObject","normalizer","nonUnitKeys","normalized","formatOffset","RangeError","timeObject","ianaRegex","monthsLong","monthsShort","monthsNarrow","months","weekdaysLong","weekdaysShort","weekdaysNarrow","weekdays","meridiems","erasLong","erasShort","erasNarrow","eras","stringifyTokens","tokenToString","token","macroTokenToFormatOpts","D","DD","DDD","DDDD","tt","ttt","tttt","T","TT","TTT","TTTT","ff","fff","ffff","FF","FFF","FFFF","Formats","Formatter","parseFormat","currentFull","bracketed","fmt","literal","formatWithSystemDefault","systemLoc","dtFormatter","dt","formatDateTime","formatDateTimeParts","resolvedOptions","formatDateTimeFromString","knownEnglish","listingMode","useDateTimeFormatter","outputCalendar","extract","meridiem","English","standalone","allowZ","formatOpts","maybeMacro","formatDurationFromString","lildur","tokenToField","tokens","realTokens","found","collapsed","dur","mapped","Invalid","toMessage","Zone","offsetName","singleton","LocalZone","otherZone","matchingRegex","dtfCache","typeToPos","ianaZoneCache","IANAZone","resetCache","isValidSpecifier","isValidZone","zone","parseGMTOffset","specifier","dtf","formatted","filled","partsOffset","fMonth","fDay","hackyOffset","asTS","over","millisecond","FixedOffsetZone","parseSpecifier","fixed","InvalidZone","normalizeZone","defaultZone","lowered","defaultLocale","defaultOutputCalendar","throwOnInvalid","Settings","resetCaches","Locale","numberingSystem","intlDTCache","getCachedDTF","locString","intlNumCache","intlRelCache","getCachedRTF","cacheKeyOpts","inf","sysLocaleCache","listStuff","defaultOK","englishFn","intlFn","PolyNumberFormatter","forceSimple","getCachedINF","PolyDateFormatter","DateTime","tokenFormat","knownFormat","formatToParts","PolyRelFormatter","isEnglish","rtf","narrow","units","years","quarters","weeks","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","localeStr","uIndex","smaller","parseLocaleString","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","numbering","intlConfigString","fromOpts","defaultToEN","specifiedLocale","computedSys","systemLocale","fromObject","hasFTP","isActuallyEn","hasNoWeirdness","alts","redefaultToEN","redefaultToSystem","formatStr","mapMonths","mapWeekdays","matching","relFormatter","fastNumbersCached","combineRegexes","regexes","full","combineExtractors","extractors","mergedVals","mergedZone","patterns","extractor","simpleParse","offsetRegex","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","extractISOWeekData","extractISOOrdinalData","sqlTimeRegex","sqlTimeExtensionRegex","int","fallback","extractISOYmd","extractISOTime","extractISOOffset","local","fullOffset","extractIANAZone","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","maybeNegate","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","rfc2822","extractRFC2822","obsOffset","milOffset","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDataAndTime","extractISOTimeAndOffset","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOYmdTimeOffsetAndIANAZone","extractISOTimeOffsetAndIANAZone","lowOrderMatrix","casualMatrix","accurateMatrix","daysInYearAccurate","daysInMonthAccurate","orderedUnits","reverseUnits","conf","conversionAccuracy","Duration","convert","fromMap","fromUnit","toMap","toUnit","conv","added","antiTrunc","accurate","fromMillis","fromISO","parseISODuration","invalid","explanation","normalizeUnit","quarter","week","isDuration","toFormat","fmtOpts","isValid","toObject","toISO","as","plus","friendlyDuration","minus","mapUnits","reconfigure","shiftTo","normalize","vals","normalizeValues","u","built","accumulated","lastUnit","own","ak","negate","negated","durationish","INVALID","validateStartEnd","Interval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","after","startIsValid","endIsValid","isInterval","toDuration","startOf","hasSame","isAfter","isBefore","dateTime","splitAt","dateTimes","results","splitBy","divideEqually","overlaps","abutsStart","abutsEnd","engulfs","intersection","union","intervals","sofar","final","xor","currentCount","ends","difference","toISODate","toISOTime","mapEndpoints","mapFn","invalidReason","Info","hasDST","isValidIANAZone","monthsFormat","weekdaysFormat","features","intlTokens","zones","relative","dayDiff","earlier","utcDayStart","keepLocalTime","differ","lowestOrder","delta","highWater","highOrderDiffs","remainingMillis","lowerOrderUnits","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","digitRegex","intUnit","post","deser","code","parseDigits","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","strings","groups","simple","partTypeStyleToTokenVal","short","long","dayperiod","dayPeriod","dummyDateTimeCache","maybeExpandMacroToken","formatter","tokenForPart","explainFromTokens","expandMacroTokens","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","unitate","unitForToken","disqualifyingUnit","buildRegex","matchIndex","rawMatches","toField","dateTimeFromMatches","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","js","computeOrdinal","uncomputeOrdinal","ordinal","month0","gregorianToWeek","gregObj","weekNumber","weekToGregorian","weekdayOfJan4","yearInDays","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","hasInvalidGregorianData","validYear","validMonth","validDay","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","unsupportedZone","possiblyCachedWeekData","old","fixOffset","localTS","tz","utcGuess","o2","o3","tsToObj","objToTS","adjustTime","oPre","millisToAdd","parseDataToDateTime","parsedZone","setZone","interpretationZone","toTechFormat","toTechTimeFormat","suppressSeconds","suppressMilliseconds","includeOffset","includeZone","spaceZone","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedWeekUnits","orderedOrdinalUnits","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","tsNow","diffRelative","ot","utcInstance","fromJSDate","isDate","zoneToUse","fromSeconds","offsetProvis","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","useWeekData","objNow","defaultValues","foundFirst","validWeek","validWeekday","hasInvalidWeekData","validOrdinal","hasInvalidOrdinalData","parseISODate","fromRFC2822","preprocessRFC2822","parseRFC2822Date","fromHTTP","parseHTTPDate","fromFormat","parseFromTokens","fromString","fromSQL","parseSQL","isDateTime","resolvedLocaleOpts","toLocal","keepCalendarTime","newTS","offsetGuess","normalizedUnit","endOf","toLocaleString","toLocaleParts","toISOWeekDate","toRFC2822","toHTTP","toSQLDate","toSQLTime","toSQL","toMillis","toSeconds","toBSON","toJSDate","otherDateTime","durOpts","maybeArray","otherIsLater","diffNow","until","inputMs","toRelative","toRelativeCalendar","calendary","fromFormatExplain","fromStringExplain","dateTimeish","FUNC_ERROR_TEXT","PLACEHOLDER","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","global","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","isRegExp","nodeIsSet","nodeIsTypedArray","isTypedArray","thisArg","arrayAggregator","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","defaults","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","objectCreate","propertyIsEnumerable","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","lower","upper","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","buffer","byteOffset","byteLength","cloneDataView","cloneTypedArray","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","seen","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","mergeFunc","safeGet","isTyped","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","MAX_ARRAY_LENGTH","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","thru","getFuncName","funcName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","reorder","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","charsLength","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","setData","setWrapToString","createRound","precision","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrLength","arrStacked","arrValue","flatten","otherFunc","isKeyable","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","memoize","memoizeCapped","quote","subString","differenceBy","differenceWith","findLastIndex","intersectionBy","intersectionWith","pull","pullAll","pullAt","unionBy","unionWith","unzip","unzipWith","xorBy","xorWith","zip","zipWith","interceptor","wrapperAt","countBy","findLast","forEachRight","invokeMap","keyBy","partition","bindKey","WRAP_BIND_FLAG","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","flush","defer","resolver","memoized","Cache","overArgs","funcsLength","partial","partialRight","rearg","gt","gte","isString","lt","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","omit","basePick","pickBy","toPairs","toPairsIn","word","upperFirst","kebabCase","lowerCase","lowerFirst","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","chunk","compact","cond","conforms","baseConforms","curry","curryRight","dropRight","dropRightWhile","dropWhile","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","spread","tail","takeRight","takeRightWhile","takeWhile","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeepWith","cloneWith","conformsTo","defaultTo","escape","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEqualWith","isMatchWith","isNative","isNil","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","radix","floating","reduceRight","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","omission","newEnd","unescape","uniqueId","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","define","isForced","createNonEnumerableProperty","wrapConstructor","NativeConstructor","USE_NATIVE","VIRTUAL_PROTOTYPE","sourceProperty","targetProperty","nativeProperty","resultProperty","TARGET","GLOBAL","STATIC","stat","PROTO","nativeSource","targetPrototype","forced","noTargetGet","sham","real","defaultToString","toStringFunction","nElements","toStr","previousElement","keysArray","namesOfKeys","index1","pair1","valuesArray","namesOfValues","index2","pair2","slots","globalStateClassesMapping","completed","focused","focusVisible","ClassNameGenerator","generate","_objectWithoutProperties","sourceSymbolKeys","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","CellRenderer","locator","localizer","tabindex","rowChkBox","getGui","toView","getFormatter","cell","fData","isEdit","isReactCompiler","literals_1","dummyData","getColumnTemplate","invokeFormatter","refreshCell","refreshTD","cellIndex","parentRow","newTD","cloneAttributes","displayAsCheckBox","fromFormatter","appendHtml","getDomSetter","selectionSettings","persistSelection","checkWrap","createCheckBox","rowID","checkAllRows","setAttributes","buildAttributeFromCell","rowRenderingMode","clipMode","isCheckBoxType","rowSpan","isTemplate","isColumnSelected","cellType","Header","point1","point2","isEmptyPoint","PI","pow","atan2","distancePoints","pt1","pt2","getLengthFromListOfPoints","adjustPoint","isStart","getClassName","getConnectorPoints","newPoints","updateSegmentElement","connector","segmentPath","getPt","pts","clipDecorators","getSegmentPath","getSegmentElement","segmentElement","staticSize","updateDecoratorElement","adjacentPoint","isSource","decoratorShapes","RotateTransform","Self","canMeasurePath","getDecoratorElement","offsetPoint","decEle","PathElement","clipDecorator","initDistanceLabel","measure","pdfviewer","labels","textele","textElement","enableImportAnnotationMeasurement","setConversion","pixelToPointFactor","rotateValue","labelBorderColor","labelFillColor","updateDistanceLabel","textElement_1","refreshTextElement","updateRadiusLabel","textElement_2","initPerimeterLabel","perimeter","textElement_3","updateCalibrateLabel","textElement_5","getPolygonPath","seg","relativeMode","textWrapping","initLeaders","leaders","initLeader","isSecondLeader","finalPoint","isPointOverConnector","Inflate","intersectinPt","findNearestPoint","segment1","x1","x2","y1","y2","segment2","intersectDetails","intersect3","intersectPt","rect_1","shortestPoint","angleBWStAndEnd","angleBWStAndRef","vaAngle","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","MAX_VALUE","rect1","rect2","uniteRect","unitePoint","intersects","top_1","containsRect","toPoints","points_1","scale","MIN_VALUE","globalTimeOut","spinTemplate","spinCSSClass","createSpinner","spinnerContainer","spinnerInnerContainer","inner_wrap","create_spinner_container","getTheme","defaultSize","calculateRadius","setTheme","labelEle","createLabel","replaceContent","innerContainer","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","createBootstrap5Spinner","createTailwindSpinner","generateSeries","series","increment","formSeries","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","svgMaterial","matCirclePath","animateMaterial","spinnerInfo","globalInfo","previousId","startTime","strokeSize","getStrokeSize","mat_animation","currentTime","getDashOffset","updatePath","createCircle","easeAnimation","drawArc","timecount","innerConainer","trgClass","circle","defineCircle","endArc","defineArc","radians","showHideSpinner","isHide","spinnerWrap","svgEle","isAnimate","globalObject","globalVariables","timeOutVar","startMatAnimate","boot_animate","animateBootstrap","deprecatedPropType","validator","setRef","_getPrototypeOf","PdfColor","color1","color2","color3","color4","assignRGB","redColor","greenColor","g","blueColor","grayColor","gray","alpha","maxColourChannelValue","cyanColor","magentaColor","yellowColor","blackColor","assignCMYK","red","green","blue","black","cyan","magenta","yellow","Rgb","rgbToString","GrayScale","grayScaleToString","Cmyk","cmykToString","ifStroking","colour","grayStringsSroke","grayStringsFill","rgbStrings","__self","__source","$$typeof","_owner","defaultProps","createFactory","cloneAndReplaceKey","_self","_source","cloneElement","framesToPop","encodeURIComponent","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","isReactComponent","enqueueSetState","enqueueCallback","enqueueForceUpdate","isPureReactComponent","PureComponent","isMounted","enqueueReplaceState","return","addListeners","handleMouseDown","handleTouchStart","handleTouchMove","handleTouchEnd","buildCustomEvent","CustomEvent","initCustomEvent","bubbles","cancelable","dragElem","containerElem","sourceElem","setCurrentTarget","setFixedOffset","fixedOffsetLeft","fixedOffsetTop","doScroll","scrollBy","xScroll","yScroll","startScrolling","stopScrolling","generateEnterLeaveEvents","targetKey","prevTarget","generateDropEvent","noDragging","handleMouseMove","handleMouseUp","startDrag","stopPropagation","targetTouches","onDrop","clicked","leftOffset","topOffset","onDragStart","getSelection","removeAllRanges","getOffscreenCoordinates","yOnly","xOnly","onDrag","_isMounted","onDragEnd","getDisplayMode","dragClone","customDragElement","disappearDraggedElement","dragHandleClassName","dragElemOpacity","handleDrop","dropElem","dropData","onHit","highlighted","handleDragEnter","log","highlightClassName","onDragEnter","handleDragLeave","onDragLeave","DragDropContainer","DropTarget","__reactAutoBindPairs","mixins","autobind","statics","getDefaultProps","getInitialState","componentWillMount","componentWillUpdate","UNSAFE_componentWillMount","UNSAFE_componentWillUpdate","updateComponent","getDerivedStateFromProps","__isMounted","replaceState","instanceOf","checkPropTypes","O","instancePool","destructor","poolSize","addPoolingTo","getPooled","release","oneArgumentPooler","twoArgumentPooler","threeArgumentPooler","fourArgumentPooler","createClass","createMixin","DOM","__spread","keyPrefix","mapIntoWithKeyPrefixInternal","abbr","address","article","aside","audio","bdi","bdo","big","blockquote","br","canvas","cite","colgroup","datalist","dd","del","dfn","dialog","dl","em","embed","fieldset","figcaption","figure","footer","h1","h2","h3","h4","h5","h6","hgroup","hr","html","img","ins","kbd","keygen","legend","mark","menu","menuitem","meter","nav","noscript","ol","optgroup","picture","pre","rp","rt","ruby","samp","section","small","strong","sub","summary","sup","textarea","tfoot","th","thead","track","var","video","wbr","defs","ellipse","line","linearGradient","mask","polygon","polyline","radialGradient","tspan","factory","moment","cachedGuess","countries","guesses","logError","momentVersion","major","minor","charCodeToInt","charCode","unpackBase60","whole","fractional","arrayToInt","mapIndices","unpack","offsets","untils","intToUntil","abbrs","population","packedString","_set","Country","country_name","zone_names","OffsetAt","timeString","toTimeString","ZoneScore","offsetScore","abbrScore","findChange","sortZoneScores","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","DateTimeFormat","normalizeName","zoneScore","startYear","userOffsets","zoneScores","getZone","scoreOffsetAt","addZone","packed","caller","addLink","aliases","normal0","normal1","loadData","country_code","country_zones","addCountries","dataVersion","needsOffset","isUnixTimestamp","_f","_tzm","isMoment","unpacked","_index","zone_name","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","mom","utcOffset","offsetAt","_zones","_links","_names","_countries","zoneExists","didShowError","guess","ignoreCache","zonesForCountry","country","with_offset","abbrWrap","_z","resetZoneWrap","updateOffset","keepTime","_isUTC","zoneName","zoneAbbr","setDefault","momentProperties","PdfFontMetrics","lineGap","getAscent","PdfFont","charSizeMultiplier","getSize","getDescent","getLineGap","getHeight","clearTypeFonts","clearTypeFontCollection","subSuperScript","SubScript","subScriptSizeFactor","SuperScript","superscriptSizeFactor","widthTable","WidthTable","internalWidthTable","StandardWidthTable","widths","dropDownListClasses","disable","inputFocus","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","filterParent","mobileFilter","clearIconHide","popupFullScreen","disableIcon","hiddenElement","DropDownList","isListSearched","valueTempElement","initializeData","activeIndex","queryString","isPopupOpen","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initRemoteRender","isNotSearchList","preventFocus","preventAutoFill","isValidKey","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isCustomFilter","isSecondClick","previousValue","keyConfigure","tab","home","up","space","popupObj","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","resetSelection","getItemData","onChangeEvent","allowFiltering","selectedLI","itemData","setSelection","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","setEnable","defaultAttr","getAriaAttributes","targetElement","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","initValue","updateValues","setHiddenValue","onBlurHandler","relatedTarget","isFilterLayout","focusOutAction","focusOut","onFocusOut","onFocus","resetValueHandler","formElement","wireEvent","dropDownClick","focusIn","bindCommonEvent","keyboardModule","mobileKeyActionHandler","keyActionHandler","bindClearEvent","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","searchKeyEvent","onServerIncrementalSearch","incrementalSearch","isValidLI","back","closePopup","setHover","hoveredItem","setScrollPosition","spinnerElement","filterInputObj","preventAction","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","getPageCount","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","focusEle","isSelectFocusItem","nextItem","findLi","steps","previousItem","unWireEvent","checkSelector","onDocumentClick","activeStateChange","proxy_1","updateSelectedItem","preventSelect","isSelection","selectedData","selectEventCallback","setSelectOptions","detachChanges","previousItemData","focusedItem","activeItem","valueTemplate","setValueTemplate","clearElement","previousSelectedLI","dropdownCompiler","dropdownTemplate","valueCompTemp","dataValue","dataText","eve","detachChangeEvent","preItems","selectedElement","onFilterUp","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","filterQuery","selectionStart","selectionEnd","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","focusIndexItem","setSearchBox","popupElement","filterBarPlaceholder","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","renderPopup","checkField_1","updateActionCompleteDataValues","addNewItem","newElement","value_1","actionCompleteDataUpdate","highlightedItem","refreshPopup","popupEle","searchBox","listHeight","popupHeight","setHeaderTemplate","footerTemplate","setFooterTemplate","searchBoxHeight","offsetValue","getOffsetValue","firstItem","isEmptyList","textIndent","borderLeftWidth","getFocusElement","createPopup","checkCollision","collision","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","scrollHandler","listScroll","inputParent","destroyPopup","show","isCollide","resolveCollision","popupStyles","borderTopWidth","borderBottomWidth","setPopupPosition","Popup","targetType","relateTo","actionList","targetExitViewport","popupOffset","lastItem","popupWidth","scrollBottom","isInitial","currentOffset","nextBottom","nextOffset","boxRange","isPopupButton","blur","setEleWidth","scrollableParentElements_1","animModel","updatedCssClassValues","setReadOnly","selectElement","selectedIndex","onselect","stopImmediatePropagation","onchange","footerCompTemp","headerCompTemp","contentEle","setOldText","setOldValue","refreshPosition","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","listLength_1","checkField","listLength_2","ddlProps","newClass","invokeRenderPopup","proxy_2","onpopstate","pushState","renderHightSearch","isSelectVal","isFocused","resetIncrementalSearchValues","attrArray","useThemeSystem","composeClasses","getUtilityClass","RowRenderer","isSpan","rowTemplate","refreshRow","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","sm","md","lg","xl","defaultBreakpoints","styleFromPropValue","themeBreakpoints","breakpoint","cssKey","createEmptyBreakpointObject","_breakpointsInput$key","breakpointsInput","breakpointsInOrder","removeUnusedBreakpoints","breakpointKeys","breakpointOutput","resolveBreakpointValues","breakpointValues","breakpointsKeys","computeBreakpointsBase","Row","setRowValue","setRowData","setCellValue","pKeyField","makechanges","getDataModule","Cell","PdfLayoutType","PdfLayoutBreakType","PathPointType","MS","MOZ","COMMENT","RULESET","DECLARATION","KEYFRAMES","replacement","indexof","charat","strlen","sizeof","character","characters","caret","alloc","dealloc","delimit","delimiter","whitespace","escaping","commenter","identifier","rule","rulesets","pseudo","declarations","atrule","scanning","ampersand","declaration","ruleset","serialize","rulesheet","prefixer","shared","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","_chart","Scatter","Bubble","Polar","Radar","HorizontalBar","Bar","Line","Pie","Doughnut","_react","_propTypes","_isEqual","_keyBy","_objectSpread","_setPrototypeOf","hasNativeReflectConstruct","_isNativeReflectConstruct","NODE_ENV","ChartComponent","_React$Component","chartInstance","_this$props","getDatasetAtEvent","getElementAtEvent","getElementsAtEvent","onElementsClick","renderChart","redraw","destroyChart","updateChart","_this$props2","nextData","transformDataProp","shadowDataProp","datasets","saveCurrentDatasets","isDev","usingCustomKeyProvider","datasetKeyProvider","getLabelAsKey","multipleDatasets","shouldWarn","dataset","getCurrentDatasets","memoizeDataProps","helpers","configMerge","currentDatasets","nextDatasets","checkDatasets","currentDatasetsIndexed","pid","_this$props3","_this$props4","handleOnClick","controllers","_React$Component2","_super2","_React$Component3","_super3","_React$Component4","_super4","_React$Component5","_super5","_ref4","_React$Component6","_super6","_this8","_ref5","_React$Component7","_super7","_this9","_ref6","_React$Component8","_super8","_this10","_ref7","_React$Component9","_super9","_this11","_ref8","_React$Component10","_super10","_this12","_ref9","ListContext","disableHtmlEncode","allowSorting","allowResizing","allowGrouping","showColumnMenu","enableGroupByFormat","showInColumnChooser","edit","allowSearching","autoFit","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","valueFormatter","ValueFormatter","commands","commandsTemplate","templateFn","headerTemplateFn","fltrTemplateFn","editTemplate","filterTemplate","isForeignColumn","ddEditedData","sortComparer","a_1","xObj","yObj","getSortDirection","setSortDirection","freezeTable","refreshReactColumnTemplateByUid","refreshReactHeaderTemplateByUid","formatFn","getParser","parserFn","getHeaderTemplate","getFilterItemTemplate","CommandColumnModel","StackedColumn","GridColumn","getStyleValue","computedStyle","TextareaAutosize","maxRows","minRows","isControlled","handleRef","shadowRef","renders","syncHeight","ownerWindow","inputShallow","singleRowHeight","outerHeight","outerHeightStyle","resizeObserver","containerWindow","ResizeObserver","observe","disconnect","useEnhancedEffect","_jsxs","rootOverridesResolver","startAdornment","adornedStart","endAdornment","adornedEnd","sizeSmall","multiline","hiddenLabel","inputOverridesResolver","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel","InputBaseRoot","body1","lineHeight","inputBaseClasses","InputBaseComponent","light","shorter","placeholderHidden","placeholderVisible","letterSpacing","WebkitTapHighlightColor","animationName","animationDuration","boxShadow","WebkitAppearance","WebkitTextFillColor","resize","MozAppearance","inputGlobalStyles","GlobalStyles","inProps","ariaDescribedby","autoComplete","componentsProps","inputComponent","inputPropsProp","inputRefProp","onBlur","renderSuffix","valueProp","handleInputRefWarning","handleInputPropsRefProp","handleInputRefProp","handleInputRef","setFocused","muiFormControl","useFormControl","fcs","formControlState","states","onFilled","checkDirty","isFilled","InputComponent","setAdornedStart","getInputBaseUtilityClass","useUtilityClasses","Root","rootProps","isHostComponent","FormControlContext","onAnimationStart","_formatMuiErrorMessage","elementRect","popupRect","parentDocument","fixedParent","fixedElement","anchorPos","tempAnchor","calculatePosition","positionX","positionY","targetValues","ownerDocument","posX","posY","setPosx","getElementHCenter","setPosy","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","updatePosition","getBodyScrollTop","getBodyScrollLeft","wrappedWellKnownSymbolModule","NAME","PdfBrush","LineType","PdfStringLayouter","isOverloadWithPosition","layout","arg5","arg6","arg7","clientSize","doLayout","rectSize","rectangle","reader","StringTokenizer","PdfStringLayoutResult","lineResult","lines","peekLine","lineIndent","getLineIndent","layoutLine","numSymbolsInserted","returnedValue","copyToResult","success","numInserted","read","readLine","finalizeResult","firstLine","firstLineIndent","paragraphIndent","getLineHeight","lineSpacing","getLineWidth","layoutLineHeight","lineWidth","lineType","FirstParagraphLine","readWord","addToLineResult","NewLineBreak","builder","curLine","curIndent","peekWord","curLineWidth","getWrapType","None","WordOnly","textRemainder","wordWrap","Character","Word","ln","LayoutBreak","LastParagraphLine","layoutLines","breakType","LineInfo","allowPartialLines","lineLimit","expHeight","trimLine","size1","readToEnd","spaces","Regular","setStyle","metrics","Bold","Italic","Strikeout","Underline","fontMetrics","pdfFontInternals","measureString","PdfStringFormat","temparg2","layoutArea","temparg3","equalsTo","equalsToFont","getInternals","setInternals","internals","applyFormatSettings","realWidth","characterSpacing","wordSpacing","getCharsCount","syncObject","textValue","numSymbols","text2","whiteSpacePattern","innerWrap","createSpinnerContainer","randomGenerator","createMaterialElement","matCalculateAttributes","createFabricElement","fbCalculateAttributes","createBootstrapElement","bootCalculateAttributes","matAnimation","bootAnimate","decomposeColor","re","colors","hexToRgb","marker","recomposeColor","getLuminance","rgb","hslToRgb","getContrastRatio","foreground","lumA","lumB","darken","coefficient","lighten","WrapperVariantContext","RowModelGenerator","generateRows","enableInfiniteScrolling","getInfiniteIndex","generateRow","ensureColumns","cols","generateCell","RowDragIcon","tIndex","parentUid","parentGid","refreshForeignKeyRow","generateCells","foreignKeyColumns","dummies","rowId","oIndex","opt","isDataCell","refreshRows","plainObjectConstrurctor","cloneStyle","newStyle","createRule","decl","jss","declCopy","onCreateRule","toCssValue","ignoreImportant","cssValue","getWhitespaceSymbols","linebreak","indentStr","toCss","_options$indent","fallbacks","_getWhitespaceSymbols","_prop","_prop2","_value2","allowEmpty","escapeRegex","nativeEscape","CSS","BaseStyleRule","isProcessed","sheet","Renderer","renderer","onChangeValue","isDefined","renderable","setProperty","attached","StyleRule","_BaseStyleRule","scoped","selectorText","_proto2","applyTo","setSelector","replaceRule","pluginStyleRule","defaultToStringOptions","atRegExp","ConditionalRule","atMatch","RuleList","getRule","addRule","onProcessRule","keyRegExp","pluginConditionalRule","defaultToStringOptions$1","nameRegExp","KeyframesRule","frames","nameMatch","keyRegExp$1","refRegExp","findReferencedKeyframe","keyframes","replaceRef","refKeyframe","pluginKeyframesRule","onProcessStyle","KeyframeRule","pluginKeyframeRule","FontFaceRule","keyRegExp$2","pluginFontFaceRule","ViewportRule","pluginViewportRule","SimpleRule","keysMap","defaultUpdateOptions","forceUpdateOptions","counter","ruleOptions","_this$options","register","unregister","updateOne","_this$options2","onUpdate","nextValue","_nextValue","_prevValue","css","StyleSheet","deployed","attach","deploy","queue","insertRule","addRules","deleteRule","_this$rules","PluginsRegistry","internal","external","onProcessSheet","processedValue","use","newPlugin","sheets","globalThis$1","globalThis","ns","moduleId","createGenerateId","ruleCounter","jssId","classNamePrefix","minify","cssRule","attributeStyleMap","getHead","findPrevNode","insertionPoint","findHigherSheet","findHighestSheet","findCommentNode","getNonce","_insertRule","appendRule","cssRules","getValidRuleInsertionIndex","maxIndex","DomRenderer","hasInsertedRules","media","createStyle","nonce","nextNode","insertionPointElement","insertStyle","insertRules","nativeParent","latestNativeParent","_insertionIndex","refCssRule","ruleStr","insertionIndex","nativeRule","getRules","instanceCounter","Jss","isInBrowser","setup","createStyleSheet","removeStyleSheet","createJss","hasCSSTOMSupport","getDynamicStyles","extracted","sharp","shortest","standard","complex","enteringScreen","leavingScreen","formatMs","getAutoHeightDuration","createTransitions","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","animatedProp","pdfBase","isOverlapped","objects","findObjectsUnderMouse","touchArg","actualTarget","pageDiv","getEventPageNumber","pageCurrentRect","boundsDiff","findElementUnderMouse","newpoint","CalculateLeaderPoints","rotationValue","objectBounds","findObjectUnderMouse","region","objCollection","objCollection_1","insertObject","findObjects","getPageTable","currentobject","segment","shapeElement","Container","findTargetElement","rotateThumb","findTargetShapeElement","ActiveElements","activePage","SummaryModelGenerator","groupFooterTemplate","groupCaptionTemplate","columnSelector","getIndentCount","buildSummaryData","getGeneratedRow","summaryRow","indents","getIndentByLevel","isDetailGridAlone","indentLength","getGeneratedCell","getCellType","Indent","DetailFooterIntent","isAggregateRow","sColumn","scolumn","dummy","summaryRows","single","setTemplate","disp","Summary","GroupSummaryModelGenerator","GroupSummary","CaptionSummaryModelGenerator","CaptionSummary","directions","marginX","marginY","paddingX","paddingY","getCssProperties","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","themeSpacing","createUnarySpacing","transformer","transformed","resolveCssProperty","cssProperties","getStyleFromPropValue","generateSummary","calendarType","cldrObj","cldrObj1","ruleObject","extractObjectFromRule","EVERY","calendarMode","nameSpace1","freq","DAYS","WEEKS","ON","DAYINDEXOBJECT","MONTHS","getMonthSummary","YEARS","TIMES","tempDate","UNTIL","monthDay","setPosition","WEEKPOS","excludeDate","startDayOfWeek","maximumCount","viewDate","oldTimezone","newTimezone","MAXOCCURRENCE","cacheDate","calendarUtil","getCalendarUtil","tempExcludeDate","Timezone","parsedDate","getDateFromRecurrenceDateString","recExceptionCount","tempViewDate","maxOccurrence","dayIndex","setFirstDayOfWeek","DAYINDEX","expectedCount","expectedDays","compareDates","validateRules","excludeDateHandler","dailyType","wkstIndex","weekState","weekCollection","wkst","startDateDiff","weekstartDate","weekendDate","compareTempDate","insertDataCollection","getStartDateForWeek","weeklyType","monthlyType","yearDay","weekNo","checkYearlyType","startDay","firstWeekSpan","maxDate","minDate","stDate","getYearLastDate","weekNos","insertDateCollection","insertDatasIntoExistingCollection","processWeekNo","dateCollection","getLeapYearDaysCount","getYearDaysCount","processYearDay","yearlyType","recDateString","zeroIndex","validateMonthlyRuleType","monthlyDayTypeProcessforMonthFreq","isHavingNumber","HASNUMBER","currentMonthDate","currentDate","monthCollection","monthInit","getMonthStartDate","datas","isSameYear","expectedDaysArray","SPLITNUMBERANDSTRING","isSameMonth","setNextValidDate","beginDate","filterDateCollectionByIndex","insertDateCollectionBasedonBySetPos","isLastMonth","setValidDate","processDateCollectionforByDayWithInteger","checkMonth","compareMonth","newstr","getDayString","insertDateCollectionBasedonIndex","monthlyDayTypeProcess","monthlyDateTypeProcessforMonthFreq","ruleData","initializeRecRuleVariables","mainDate","processDateCollectionForByMonthDay","monthlyDateTypeProcess","getMonthDaysCount","recRuleVariables","isByMonth","validateProperDate","dates","dayCycleData","processWeekDays","initialDate","getMonthCollection","getDateCollectionforBySetPosNull","recurrenceCollections","recurrenceCollectionObject","expectedDaysArrays","arrPosition","getRecurrenceCollection","dayData","chDate","weekCount","firstOfMonth","numberOfDaysInMonth","used","weekIndex","validRules","REMOVENUMBERINSTRING","expectedDaysArr","rulesList","splitData","dayCycle","checkYear","expectedyearDay","startDateCollection","getYearDay","expectedMonth","expectedDate","getExpectedDays","sortedExpectedDays","expectedDaysNumberSplit","checkDayIndex","checkDate","Islamic","Gregorian","SU","MO","TU","WE","TH","FR","SA","getRecurrenceStringFromDate","getUTCFullYear","roundDateValues","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","EmotionCacheContext","createCache","withEmotionCache","ThemeContext","typePropName","createEmotionProps","Noop","Emotion","cssProp","registered","registeredStyles","getRegisteredStyles","serialized","serializeStyles","insertStyles","possiblyStyleElement","ArrowDropDown","ArrowLeft","ArrowRight","Calendar","Clock","DateRange","Pen","Time","isAbsolute","spliceOne","resolvePathname","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","valueEqual","aValue","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","hashIndex","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","prompt","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","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","allKeys","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","prevIndex","nextKeys","goBack","goForward","block","unblock","listen","HashPathCoders","hashbang","encodePath","decodePath","noslash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","pushHashPath","nextPaths","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","wrapperInitialize","WRAPPER","ejInstance","getTextNode","childnode","enableRipple","rippleSpan","frameSpan","labelSpan","rippleMouseHandler","setHiddenInput","fails","CONSTRUCTOR","measurePath","currentValue","xmin","xmax","ymin","ymax","currentpath","svgBounds","wrapSvgText","txtValue","bounds1","breakWord","dy","newText","existingWidth","existingText","eachLine","wrapText","wordWrapping","txt","wrapBounds","textOverflow","textDecoration","doWrap","getTextOptions","txtWidth","wrapSvgTextAlign","getDiagramElement","elementId","contentId","createHtmlElement","elementType","setAttributeHtml","createMeasureElements","usageCount","divElement","imageElement","tSpan","setAttributeNS","measureImage","contentSize","compareContext","compareResult","bHasOwnProperty","valueA","valueB","PdfPageLayer","streamClipPageTemplates","pdfColorSpace","sublayer","contentLength","pdfPage","clipPageTemplates","layerid","layerName","pdfGraphics","initializeGraphics","layer","PdfPageLayerCollection","oPage","gr","GetResourceEventHandler","PdfGraphics","mediaBoxUpperRightBound","sc","isSame","origin","initializeCoordinates","clipRect","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","lists","doAdd","setPage","layoutResult","stringFormat","drawString","brush","setColor","cs","colours","PdfPage","annotationCollection","defaultLayer","setSection","resetProgress","isProgressOn","getClientSize","doc","drawPageTemplates","containsTemplates","backLayer","drawTemplates","automaticFields","fieldInfo","performDraw","scalingX","scalingY","frontLayer","reflow","getTransitionProps","_style$transitionDura","_style$transitionTimi","transitionDuration","transitionTimingFunction","transitionDelay","canMeasure","canConsiderBounds","textNodes","isDirt","textWrapBounds","availableSize","validateDesiredSize","arrange","updateBounds","DrawingElement","fromView","Scrollbars","_Scrollbars","_Scrollbars2","getInputUtilityClass","inputClasses","scalingFactor","wordWrapType","internalLineLimit","textAlignment","Top","isRightToLeft","internalCharacterSpacing","internalWordSpacing","pdfSubSuperScript","internalParagraphIndent","trailingSpaces","isNoClip","initialLineIndent","getTooltipUtilityClass","tooltipClasses","itemOrItems","onSpaceOrEnter","innerFn","isFormData","FormData","isArrayBufferView","isView","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","deepMerge","getDecoratedComponent","instanceRef","currentRef","decoratedRef","isRefable","_item$$$typeof","isRefForwardingComponent","checkDecoratorArguments","functionName","signature","PdfSolidBrush","pdfColor","monitorChanges","streamWriter","currentColorSpace","setColorAndSpace","resetChanges","useEventCallback","hookCallback","hooks","hasOwnProp","isObjectEmpty","createUTC","createLocalOrUTC","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","weekdayMismatch","_isValid","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","createInvalid","fun","updateInProgress","copyConfig","_isAMomentObject","_l","_offset","_locale","Moment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","zeroFill","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","formatMoment","expandFormat","makeFormatFunction","replaceLongDateFormatTokens","longDateFormat","addUnitAlias","shorthand","normalizeUnits","normalizeObjectUnits","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","set$1","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","strictRegex","getParseRegexForToken","regexEscape","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","dayOfMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","parseTwoDigitYear","getSetYear","createDate","M","createUTCDate","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","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","matchMeridiem","_meridiemParse","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","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","defineLocale","_config","parentLocale","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","UT","configFromISO","allowTime","timeFormat","tzFormat","configFromStringAndFormat","configFromRFC2822","parsedArray","extractFromRFC2822Strings","parsedInput","checkWeekday","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","configFromArray","expectedWeekday","yearToUse","nowValue","_useUTC","currentDateArray","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","configFromObject","configFromInput","createFromConfig","prototypeMin","prototypeMax","moments","isoWeek","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_data","_bubble","absRound","offsetFromString","chunkOffset","cloneWithOffset","getDateOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","positiveMomentsDifference","momentsDifference","inp","createAdder","period","addSubtract","isAdding","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","sod","calendarFormat","asFloat","that","zoneDelta","startOfDate","isoWeekday","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","keepOffset","inspect","isLocal","creationData","eraName","since","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepMinutes","localAdjust","_changeInProgress","parseZone","hasAlignedHourOffset","isDST","isUtcOffset","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","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","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","DAY_SIZE","DAY_MARGIN","DIALOG_WIDTH","VIEW_HEIGHT","prevString","prevElementId","Search","inputVal","searchType","queryStr","itemsData","getOutlinedInputUtilityClass","outlinedInputClasses","getFilledInputUtilityClass","filledInputClasses","PositionData","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","orientationOnChange","getRelateToElement","scrollRefresh","parent_2","relateToElement","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","scrollParents","parent_3","isElementVisible","checkGetBoundingClientRect","win","windowView","scrollY","scrollX","outerWidth","elementView","parent_4","reposition","relateToElem","checkFixedParent","parentDisplay","getAnchorPosition","anchorEle","eleRect","anchorRect","callFlip","viewPortElement","callFit","viewPortRect","horz","vert","animationOptions","relativeElement","zIndexElement","getZindexPartial","showAnimation","hideAnimation","parentStyle","overflowRegex","parentZindex","childrenZindex","siblingsZindex","finalValue","currentZindexValue","Adaptor","pvt","countFlg","keyCount","agg","lazyLoadData","lazyLoadGroup","getAggregate","onDemandGroupInfo","onPage","formGroupResult","onWhere","aggQuery","deletedRecordsLen","onAggregates","onSortBy","fnCompare","onGroup","onRange","onTake","onSkip","onSelect","hierarchyFilters","getQueryRequest","filters","searches","getFiltersFrom","getRequestQuery","pvtData","convertToQueryString","request1","selects","handleTimeZone","formRemoteGroupedData","getAggregateResult","childLevel","getGroupedRecords","hasRecords","childGroupedRecords","changed","deleted","keyColumn","predicats","aggregateData","isServerGrouping","groupQuery","multipartAccept","batch","changeSet","batchPre","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","requiresCast","guid","getField","onComplexPredicate","onEachWhere","onEachSearch","onEachSort","onCount","overrideMimeType","rootUrl","dataUrls","resourceTableName","dataCopy","emptyAndBatch","processBatchResponse","versionCheck","keys_4","localTimeReplacer","convertObj","localTime","compareAndRemove","initialGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","generateBodyContent","org","cIdx","jsonObj","exVal","changeGuid","ODataV4Adaptor","exArr","sel","close_1","combineVal","expandQueryIndex","onDistinct","distinctFields","WebApiAdaptor","host","Items","WebMethodAdaptor","updateKey","GraphQLAdaptor","response","getVariables","datamanager","urlQuery","vars","variables","resData","inserted","generateCrudData","crudData","getMutation","isCrudAction","isInsertAction","cacheAdaptor","guidId","forDel","requestTime","removeItem","generateKey","currentFilter","newQuery","cachedItems","useControlled","usePickerState","valueManager","onAccept","closeOnSelect","isControllingOpenProp","openState","setIsOpenState","setIsOpen","newIsOpen","useOpenState","parsedDateValue","parseInput","lastValidDateValue","setLastValidDateValue","committed","resetFallback","dateState","setDateState","skipOnChangeCall","areValuesEqual","wrapperProps","onClear","emptyValue","onDismiss","onCancel","onSetToday","getTodayValue","isMobileKeyboardViewOpen","setMobileKeyboardViewOpen","pickerProps","parsedValue","toggleMobileKeyboardView","onDateChange","newDate","wrapperVariant","selectionState","handleInputChange","newParsedValue","keyboardInputValue","cleanParsedValue","valueReducer","pickerState","openPicker","MuiPickerState","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","getAndSetChkElem","sBox","hideSearchbox","inputargs","spinner","cBox","showDialog","columnType","Dialog","animationSettings","effect","btnClick","buttonModel","isPrimary","created","dialogCreated","renderResponsiveFilter","isResponsiveFilter","getAllData","openDialog","isBlanks","filterTemplateCol","registeredTemplate","filterItemTemplate","isVue","clearFilter","fltrBtnHandler","searchInput","optr","ddlValue","isMenuNotEqual","fObj","caseSen","isNotEqual","itemsCnt","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","searchSettings","sSettings","filterColumn","filteredData","getDistinct","processDataSource","updateResult","createFilterItems","updateAllCBoxes","updateIndeterminatenBtn","setFocus","prevElem","cBoxes_1","createCheckbox","btn","btnObj","cBoxes","nullCounter","selectAllValue","checkBox","isColFiltered","isRndere","args_1","getCheckedState","checkState","foreignDataObj","updateDateFilter","getCaseValue","startOfDay","dirtyDate","init","diagram","measureChildren","nameTable","PdfAnnotationBase","PdfFormFieldBase","upDownKeyHandler","defaultIdx","liIdx","selectedLi","setBlankIconStyle","blankIconList","iconLi","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","processPathData","arrayCollection","tokenizer","isExponential","parsePathData","ob","r1","r2","largeArc","sweep","getRectanglePath","cornerRadius","pathSegmentCollection","x0","y0","segments","ctrl","cpt2","newSeg","transformPath","sX","sY","bX","bY","iX","iY","scalePathData","updatedSegment","getPathString","isScale","scaleFactor","oldOffset","newOffset","splitArrayCollection","getNewString","getString","cmd","ang","randomString","INIT","PROBE_UNKNOWN_ACTION","observable","ReactReduxContext","handleChangeWrapper","contextValue","useMemo","previousState","Context","useIsomorphicLayoutEffect","useLayoutEffect","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","payload","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","_ref2$forwardRef","_ref2$context","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","Consumer","isContextConsumer","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","useReducer","previousStateUpdateResult","renderedWrappedComponent","forwarded","newBatch","useMemoOne","getResult","inputs","newInputs","lastInputs","areInputsEqual","getRect","expandBy","shrink","shrinkBy","noSpacing","createBox","borderBox","_ref2$margin","_ref2$border","_ref2$padding","marginBox","paddingBox","contentBox","shiftBy","shifted","withScroll","calculateBox","borderRightWidth","getBox","memoizeOne","resultFn","lastResult","calledOnce","newArgs","rafSchd","wrapperFn","bindings","sharedOptions","unbindings","fromBinding","RbdInvariant","ErrorBoundary","callbacks","onWindowError","getCallbacks","tryAbort","setCallbacks","componentDidCatch","withLocation","isInHomeList","droppableId","endPosition","withCombine","draggableId","returnedToStart","preset","otherValue","offsetByPosition","getCorners","frame","shouldClipSubject","executeClip","pageMarginBox","getSubject","withPlaceholder","increased","_extends2","increasedBy","increase","displacement","scrollDroppable","droppable","newScroll","scrollable","scrollDiff","scrollDisplacement","toDroppableMap","toDraggableMap","draggables","toDroppableList","toDraggableList","getDraggablesInsideDroppable","tryGetDestination","impact","tryGetCombine","removeDraggableFromList","isHomeOf","noDisplacedBy","emptyGroups","invisible","noImpact","displaced","displacedBy","isWithin","isPartiallyVisibleThroughFrame","isWithinVertical","isWithinHorizontal","isPartiallyVisibleVertically","isPartiallyVisibleHorizontally","isBiggerVertically","isBiggerHorizontally","isTotallyVisibleThroughFrame","crossAxisLine","crossAxisStart","crossAxisEnd","crossAxisSize","toBeDisplaced","viewport","withDroppableDisplacement","isVisibleThroughFrameFn","displacedTarget","getDroppableDisplaced","isVisibleInDroppable","isVisibleInViewport","isPartiallyVisible","isTotallyVisible","getDisplacementGroups","afterDragging","forceShouldAnimate","getTarget","shouldAnimate","getShouldAnimate","goAtEnd","insideDestination","inHomeList","newIndex","indexOfLastItem","getIndexOfLastItem","calculateReorderImpact","withoutDragging","sliceFrom","didStartAfterCritical","afterCritical","effected","moveToNextIndex","isMovingForward","previousImpact","wasAt","_newIndex","currentIndex","proposedIndex","firstIndex","fromReorder","isCombineEnabled","combineId","combineWithIndex","fromCombine","whenCombining","combineWith","displaceBy","isDisplaced","getCombinedItemDisplacement","distanceFromStartToBorderBoxCenter","box","getCrossAxisBorderBoxCenter","isMoving","goAfter","moveRelativeTo","goBefore","distanceFromEndToBorderBoxCenter","whenReordering","draggablePage","moveInto","goIntoStart","closestAfter","withDisplacement","getPageBorderBoxCenterFromImpact","withoutDisplacement","getResultWithoutDroppableDisplacement","scrollViewport","getDraggables","ids","getClientFromPageBorderBoxCenter","pageBorderBoxCenter","withoutPageScrollChange","withViewportDisplacement","client","isTotallyVisibleInNewLocation","newPageBorderBoxCenter","_ref$onlyOnMainAxis","onlyOnMainAxis","changeNeeded","isTotallyVisibleOnAxis","moveToNextPlace","previousPageBorderBoxCenter","previousClientSelection","isEnabled","getImpact","closestId","withoutDraggable","indexOfClosest","moveToNextCombine","clientSelection","scrollJumpRequest","maxScrollChange","scrolledViewport","scrolledDroppable","withViewportScroll","withDroppableScroll","tryGetVisible","speculativelyIncrease","getKnownActive","getCurrentPageBorderBoxCenter","getCurrentPageBorderBox","getDisplacedBy","withMaxScroll","addPlaceholder","placeholderSize","requiredGrowth","availableSpace","needsToGrowBy","dimension","getRequiredGrowthForPlaceholder","oldFrameMaxScroll","maxScroll","newFrame","moveCrossAxis","isBetweenSourceClipped","candidates","activeOfTarget","isBetweenDestinationClipped","isWithinDroppable","getBestCrossAxisDroppable","proposed","proposedPageBorderBoxCenter","isGoingBeforeTarget","relativeTo","moveToNewDroppable","distanceToA","distanceToB","getClosestDraggable","whatIsDraggedOver","moveInDirection","isActuallyOver","getDroppableOver","dimensions","isMainAxisMovementAllowed","critical","isMovingOnMainAxis","borderBoxCenter","_state$dimensions","isMovementAllowed","phase","isPositionInFrame","getDroppableOver$1","pageBorderBox","childCenter","isContained","isStartContained","isEndContained","startCenter","candidate","getFurthestAway","offsetRectByPosition","getIsDisplaced","getDragImpact","pageOffset","destinationId","pageBorderBoxWithDroppableScroll","targetRect","targetStart","targetEnd","childRect","didStartAfterCritical$1","getCombineImpact","atIndex","getReorderImpact","patchDroppableMap","updated","clearUnusedPlaceholder","lastDroppable","oldMaxScroll","removePlaceholder","forcedClientSelection","forcedDimensions","forcedViewport","forcedImpact","newImpact","withUpdatedPlaceholders","cleaned","patched","recomputePlaceholders","recompute","getDraggables$1","getClientBorderBoxCenter","refreshSnap","movementMode","needsVisibilityCheck","getLiftEffect","insideHome","rawIndex","inVirtualList","finish","adjustAdditionsForScrollChanges","updatedDroppables","windowScrollChange","droppableScrollChange","getFrame","offset$1","initialWindowScroll","offsetDraggable","isSnapping","postDroppableChange","isEnabledChanging","patchDimensionMap","removeScrollJumpRequest","idle","shouldFlush","_action$payload","isWindowScrollAllowed","isFixedOnPage","_getLiftEffect","onLiftImpact","published","withScrollChange","existing","updatedAdditions","removals","wasOverId","wasOver","draggingState","isWaiting","publishWhileDraggingInVirtual","_clientSelection","_action$payload2","scrolled","_action$payload3","_target","_action$payload4","_id2","_target2","_updated","_newScroll","_viewport","_result2","_action$payload5","dropDuration","newHomeClientOffset","publishWhileDragging","collectionStarting","updateDroppableScroll","updateDroppableIsEnabled","updateDroppableIsCombineEnabled","moveUp","moveDown","moveRight","moveLeft","completeDrop","dropAnimationFinished","curves","combining","outOfTheWayTiming","fluid","snap","timing","outOfTheWay","moveTo","isCombining","translate","minDropTime","maxDropTime","dropTimeRange","drop$1","_getDropImpact","lastImpact","didDropInsideDroppable","getDropImpact","newClientCenter","getNewHomeClientOffset","distance$1","getDropDuration","animateDrop","dropPending","getWindowScroll","getScrollListener","onWindowScroll","scheduled","capture","scrollListener","shouldEnd","getAsyncMarshal","shallow","withTimings","getDragStart","responder","announce","getDefaultMessage","willExpire","wasCalled","isExpired","timeoutId","getExpiringAnnounce","responders","getResponders","publisher","asyncMarshal","beforeCapture","onBeforeCapture","beforeStart","onBeforeDragStart","lastCritical","lastLocation","lastCombine","hasCriticalChanged","isDraggableEqual","isDroppableEqual","isCriticalEqual","hasLocationChanged","hasGroupingChanged","isCombineEqual","onDragUpdate","getPublisher","dropAnimationFinish","dropAnimationFlushOnScroll","pendingDrop","postActionState","composeEnhancers","marshal","dimensionMarshal","focusMarshal","styleMarshal","autoScroller","createStore$1","dropping","resting","stopPublishing","dimensionMarshalStopper","scrollOptions","shouldPublishImmediately","_marshal$startPublish","startPublishing","initialPublish","lift$1","shouldStop","autoScroll","isWatching","tryRecordFocus","tryRestoreFocusRecorded","tryShiftRecord","getMaxScroll","getDocumentElement","getMaxWindowScroll","getInitialPublish","getViewport","windowScroll","getAllByType","getDimensionAndWatchScroll","getDimension","shouldPublishUpdate","getById","createDimensionMarshal","staging","_staging","getScrollWhileDragging","publish","createPublisher","subscriber","dragStopped","canStartDrag","scrollWindow","getScrollableDroppables","getBestScrollableDroppable","_dimension","getScrollableDroppableOver","percentage","stopDampeningAt","accelerateAt","getPercentage","startOfRange","endOfRange","stopAt","distanceToEdge","dragStartTime","shouldUseTimeDampening","startScrollingFrom","maxScrollValueAt","percentageFromMaxScrollValueAt","getValueFromDistance","proposedScroll","runTime","betweenAccelerateAtAndStopAtPercentage","dampenValueByTime","getScrollOnAxis","distanceToEdges","getDistanceThresholds","clean$2","getScroll","limited","isTooBigVertically","isTooBigHorizontally","adjustForSizeLimits","smallestSigned","getOverlap","getRemainder","targetScroll","overlap","canPartiallyScroll","rawMax","smallestChange","canScrollWindow","canScrollDroppable","scroll$1","_change","getWindowScrollChange","getDroppableScrollChange","createJumpScroller","scrollDroppableAsMuchAsItCan","getDroppableOverlap","whatTheDroppableCanScroll","scrollWindowAsMuchAsItCan","getWindowOverlap","whatTheWindowCanScroll","droppableRemainder","windowRemainder","moveByOffset","createAutoScroller","fluidScroller","scheduleWindowScroll","scheduleDroppableScroll","tryScroll","_dragging","wasScrollNeeded","fakeScrollCallback","createFluidScroller","jumpScroll","dragHandle","prefix$1","contextId","scrollContainer","getStyles","createStyleEl","useStyleMarshal","getSelector","dragHandle$1","grabCursor","dropAnimating","userCancel","getStyles$1","alwaysRef","dynamicRef","setDynamicStyle","setAlwaysStyle","dynamic","getWindowFromEl","isHtmlElement","findDragHandle","possible","createRegistry","subscribers","findDraggableById","findDroppableById","findById","StoreContext","getBodyElement","visuallyHidden","useUniqueId","AppContext","useDev","useHook","useDevSetupWarning","useStartupValidation","usePrevious","_preventedKeys","preventedKeys","preventStandardKeyEvents","supportedEventName","_scrollJumpKeys","idle$1","getCaptureBindings","getPhase","setPhase","pending","fluidLift","shouldBlockNextClick","shouldRespectForcePress","noop$1","scrollJumpKeys","getDraggingBindings","idle$2","interactiveTagNames","isEventInInteractiveElement","isAnInteractiveElement","getBorderBoxCenterPosition","supportedMatchesName","Element","closest$1","closestPonyfill","findClosestDragHandleFromEvent","_isActive","isLockActive","canStart","lockAPI","isClaimed","tryStart","forceSensorStop","sourceEvent","draggable$1","findDraggable","canDragInteractiveElements","lock","claim","getShouldRespectForcePress","tryDispatchWhenDragging","getAction","cleanup","lift","liftActionArgs","move$1","snapLift","defaultSensors","api","phaseRef","unbindEventsRef","startCaptureBinding","defaultPrevented","metaKey","findClosestDraggableId","tryGetLock","startPendingDrag","preventForcePressBinding","findOptionsForDraggable","canGetLock","listenForCapture","bindCapturingEvents","preDrag","isCapturing","touch","touches","longPressTimerId","unbindTarget","hasMoved","_event$touches$","shouldRespect","getHandleBindings","unbindWindow","getWindowBindings","startDragging","useSensorMarshal","customSensors","enableDefaultSensors","useSensors","abandon","newLock","tryAbandon","tryAbandonLock","forceStop","tryGetClosestDraggableIdFromEvent","tryReleaseLock","isLockClaimed","getStore","lazyRef","App","sensors","dragHandleUsageInstructions","lazyStoreRef","lastPropsRef","createResponders","getId","useAnnouncer","dragHandleUsageInstructionsId","useHiddenTextElement","lazyDispatch","marshalCallbacks","useRegistry","entriesRef","recordRef","restoreFocusFrameRef","isMountedRef","tryGiveFocus","tryGiveFocusTo","redirectTo","useFocusMarshal","tryResetStore","getCanLift","getIsMovementAllowed","appContext","canLift","count$1","DragDropContext","isEqual$1","isScroll","isAuto","isEither","isElementScrollable","getClosestScrollable","getScroll$1","getEnv","closestScrollable","getIsFixed","env","isDropDisabled","targetRef","getClient","frameClient","scrollSize","getDroppableDimension","delayed","getListenerOptions","useRequiredContext","getClosestScrollableFromDrag","noop$2","getStyle","isAnimatingOpenOnMount","flexGrow","Placeholder$1","animateOpenTimerRef","tryClearAnimateOpenTimer","onTransitionEnd","_useState","setIsAnimatingOpenOnMount","onSizeChangeEnd","DroppableContext","AnimateInOut","_React$PureComponent","provided","zIndexOptions","getDraggingTransition","shouldAnimateDragMovement","getDraggingOpacity","isDropAnimating","getStyle$1","getShouldDraggingAnimate","getDraggingStyle","shouldAnimateDisplacement","useDraggablePublisher","getDraggableRef","computedStyles","getDimension$1","publishedRef","isFirstPublishRef","useValidation$1","getRef","preventHtml5Dnd","isStrictEqual","whatIsDraggedOverFromResult","getSecondarySnapshot","combineTargetFor","isClone","dropAnimation","draggingOver","atRest","snapshot","ConnectedDraggable","connect","draggingSelector","memoizedOffset","getMemoizedSnapshot","getMemoizedProps","_draggingOver","_combineWith","getCombineWithFromResult","curve","getDraggableSelector","secondarySelector","getFallback","getProps","ownId","draggingId","visualDisplacement","isAfterCriticalInVirtualList","getSecondarySelector","_useRequiredContext","_useRequiredContext2","dropAnimationFinishedAction","dragHandleProps","onMoveEnd","draggableProps","rubric","PrivateDraggable","isUsingCloneFor","PublicDraggable","isDragDisabled","disableInteractiveElementBlocking","isMatchingType","getDraggable","ignoreContainerClipping","renderClone","getContainerForClone","ConnectedDroppable","idleWithAnimation","shouldAnimatePlaceholder","isDraggingOver","draggingOverWith","draggingFromThisWith","isUsingPlaceholder","useClone","idleWithoutAnimation","getDraggableRubric","getMapProps","isDraggingOverForConsumer","isDraggingOverForImpact","_snapshot","_completed","wasCombining","isHome","updateViewportMaxScroll","droppableRef","placeholderRef","getDroppableRef","setDroppableRef","setPlaceholderRef","onPlaceholderTransitionEnd","whileDraggingRef","previousRef","publishedDescriptorRef","memoizedUpdateScroll","getClosestScroll","updateScroll","scheduleScrollUpdate","onClosestScroll","useDroppablePublisher","droppableProps","droppableContext","draggableProvided","draggableSnapshot","createPortal","getClone","dirtyDateToCompare","dateToCompare","PickersToolbarButtonRoot","PickersToolbarButton","align","typographyClassName","PickersToolbarText","requireObjectCoercible","formatProdErrorMessage","INIT_COORDS","BEGIN_DRAG","PUBLISH_DRAG_SOURCE","HOVER","DROP","END_DRAG","strictEquality","areCoordsEqual","offsetA","offsetB","areArraysEqual","initialState","initialSourceClientOffset","initialClientOffset","clientOffset","sourceClientOffset","ADD_SOURCE","ADD_TARGET","REMOVE_SOURCE","REMOVE_TARGET","itemsA","itemsB","insertItem","itemType","sourceId","targetIds","dropResult","didDrop","isSourcePublic","targetId","ALL","areDirty","dirtyIds","handlerIds","_action$payload$targe","_action$payload$prevT","prevTargetIds","didChange","prevInnermostTargetId","innermostTargetId","dirtyHandlerIds","dragOffset","refCount","dragOperation","stateId","__IS_NONE__","__IS_ALL__","setClientOffset","ResetCoordinatesAction","createBeginDrag","manager","sourceIds","publishSource","_options$publishSourc","getSourceClientOffset","getMonitor","getRegistry","verifyInvariants","getDraggableSource","verifyGetSourceClientOffsetIsFunction","getSource","beginDrag","verifyItemIsObject","pinSource","getSourceType","canDragSource","createPublishDragSource","matchesType","draggedItemType","createHover","targetIdsArg","verifyTargetIdsIsArray","checkInvariants","getItemType","removeNonMatchingTargetIds","hoverAllTargets","getTargetType","createDrop","getDroppableTargets","determineDropResult","verifyDropResultType","getDropResult","getTargetIds","canDropOnTarget","createEndDrag","verifyIsDragging","getSourceId","endDrag","unpinSource","HandlerRole","DragDropMonitorImpl","prevStateId","handleChange","currentStateId","canDrag","_getSourceClientOffset","_getDifferenceFromInitialOffset","nextUniqueId","validateType","allowArray","freeTasks","pendingErrors","requestErrorThrow","rawAsap","makeRequestCallFromTimer","asap","task","rawTask","RawTask","_arrayWithHoles","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","getNextHandlerId","SOURCE","parseRoleFromHandlerId","handlerId","mapContainsValue","searchValue","isDone","_entries$next","HandlerRegistryImpl","dragSources","dropTargets","pinnedSourceId","pinnedSource","validateSourceContract","addHandler","_addSource","validateTargetContract","_addTarget","includePinned","isSourceId","isPinned","isTargetId","_removeSource","_removeTarget","makeStoreInstance","debugMode","reduxDevTools","__REDUX_DEVTOOLS_EXTENSION__","instanceId","DragDropManagerImpl","isSetUp","handleRefCountChange","shouldSetUp","teardown","publishDragSource","createDragDropActions","boundActions","createDragDropManager","backendFactory","globalContext","backendOptions","receiveBackend","DndContext","dragDropManager","createDndContext","getMenuItemUtilityClass","menuItemClasses","PdfWriter","pdfDocument","overload","tempOverload","PdfMainObjectCollection","objectCollections","mainObjectCollection","primitiveObjectCollection","objInfo","ObjectInfo","ObjectStatus","Registered","lookFor","wasNew","trySetReference","setReference","pdfObject","objectCollectionIndex","StreamWriter","bufferBlob","bufferText","Save","isMicrosoftBrowser","msSaveBlob","enc","Encoding","setBomByte","includeBom","arrayUnicode","uint8","arrayUtf8","utf8","fileName","validateNullOrUndefined","bufferArray","getBytes","writeLine","PdfDocumentBase","isStreamCopied","PdfDocument","currentSavingObject","pdfCatalog","setMainObjectCollection","setCrossTable","setCatalog","catalog","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","orientation","PageSettingsState","pageCount","documentHeaders","getDocumentTemplates","sectionTemplates","getSectionTemplates","applyDocumentTopTemplate","applyDocumentBottomTemplate","applyDocumentLeftTemplate","applyDocumentRightTemplate","page_1","checkPresence","pageAddedMethod","rh","onPageAdded","document_1","getActualSize","getLeftIndentWidth","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","opcode","updateY","writeComment","forStroking","patternOffset","setLineDashPatternHelper","tempPattern","lineCapStyle","lineJoinStyle","appendBezierSegment","setColourWithPattern","patternName","PdfTransformationMatrix","radDegFactor","transformationMatrix","degreesToRadians","degreesX","degRadFactor","radiansToDegrees","metrixElements","tempMatrix","dispose","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","clipBounds","pageLayer","bStateSaved","currentBrush","currentFont","bCSInitialized","currentStringFormat","requireProcedureSet","drawPdfTemplate","bNeedScale","getTranslateTransform","getScaleTransform","getName","restore","newLocation","PdfAutomaticFieldInfo","arg8","arg9","temparg4","temparg5","temparg6","temparg7","temparg8","temparg9","checkCorrectLayoutRectangle","drawStringLayoutResult","drawLine","stateControl","drawRectangle","PdfTilingBrush","xOffset","yOffset","PdfGradientBrush","drawPathHelper","Winding","isPen","isBrush","isEvenOdd","Alternate","drawImage","physicalDimension","name_2","resource","getLineBounds","lineIndex","layoutRectangle","lineCount","getTextVerticalAlignShift","hShift","getHorizontalAlignShift","shouldJustify","textSize","layoutedRectangle","Center","lineAlignment","Middle","pageSave","applyStringSettings","horizontalScalingFactor","resultHeight","remainingString","drawLayoutResult","underlineStrikeoutText","getNextPage","setClip","tm","getTextRenderingMode","textHeight","boundsHeight","vAlignShift","ttfFont","unicode","isUnicode","isEmbedFont","lineInfo","hAlignShift","drawUnicodeLine","drawAsciiLine","justifyLine","useWordSpace","Justify","rtlRender","RtlRenderer","textDirection","blocks","rightAlign","RightToLeft","splitLayout","drawUnicodeBlocks","breakUnicodeLine","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","drawPath","buildUpPath","pathPoints","pathTypes","fillMode","constructArcPath","typeValue","pathTypesValuesMask","Start","Bezier3","result1","getBezierPoints","checkFlags","CloseSubpath","startAng","sweepAngle","getBezierArc","numX1","numY1","numX2","numY2","s1","e1","fragAngle1","numFragments","xcen","ycen","rx","ry","halfAng","kappa","pointsList","thetaValue0","thetaValue1","cos0","cos1","sin0","sin1","transparencyObject","internalTextRenderingMode","internalTextScaling","pdfPen","pdfFont","alphaPen","alphaBrush","blendMode","startOfUTCWeek","dirtyOptions","localeWeekStartsOn","weekStartsOn","defaultWeekStartsOn","setUTCDate","setUTCHours","PdfBounds","isBold","isStrikeout","isUnderline","ZOrderPageTable","pageIdTemp","zIndexTemp","childNodesTemp","TypographyRoot","noWrap","gutterBottom","paragraph","defaultVariantMapping","subtitle1","subtitle2","body2","inherit","colorTransformations","textPrimary","textSecondary","themeProps","transformDeprecatedColors","extendSxProp","variantMapping","getTypographyUtilityClass","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","detailRowModule","getGridModel","parentID","parentPrimaryKeys","parentKeyField","parentKeyFieldValue","parentRowData","exportId","isExportGrid","getGridExportColumns","actualGridColumns","ExportValueFormatter","internationalization","returnFormattedValue","formatCellValue","cFormat","IndexedObject","DESCRIPTORS","thrower","METHOD_NAME","ACCESSORS","argument0","argument1","getListItemTextUtilityClass","listItemTextClasses","getButtonUtilityClass","buttonClasses","Tablelvl2Context","getFormControlLabelUtilityClasses","formControlLabelClasses","getSelectUtilityClasses","selectClasses","roundingMap","trunc","getRoundingMethod","differenceInMilliseconds","dateLeft","dateRight","validateDate","adapter","shouldDisableDate","disableFuture","disablePast","isAfterDay","isBeforeDay","useIsDayDisabled","isSameDateError","useDateValidation","useValidation","AriaService","setOptions","setStateAndProperties","setExpand","setSort","setBusy","isBusy","busy","setGrabbed","isGrabbed","grabbed","setDropTarget","isTarget","dropeffect","multiselectable","haspopup","colcount","rowcount","mKeys","mValues","deepmerge","startOfUTCISOWeek","findClosestEnabledDate","isDateDisabled","today","forward","backward","parsePickerInputValue","MouseEvent","HTMLAnchorElement","autoBom","saveAs","dirtyAmount","amount","endOfDesiredMonth","desiredBounds","prevRotateAngle","childBounds","desired","GetChildrenBounds","preventContainer","offsetPt","newPoint","stretchChildren","findChildOffsetFromCenter","childSize","_taggedTemplateLiteral","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","webpackPolyfill","definePropertyModule","createPropertyDescriptor","useId","getGridUtilityClass","GRID_SIZES","gridClasses","getCheckboxUtilityClass","checkboxClasses","PdfTemplate","writeTransformation","tempSize","setSize","templateSize","addType","addSubType","millisecondsInMinute","millisecondsInHour","pickersToolbarClasses","PickersToolbarRoot","flexDirection","isLandscape","PickersToolbarContent","PickersToolbarPenIconButton","penIconButton","getViewTypeIcon","viewType","defaultGetKeyboardInputSwitchingButtonText","isKeyboardInputOpen","PickersToolbar","getMobileKeyboardInputViewButtonText","landscapeDirection","toolbarTitle","penIconButtonLandscape","getMeridiem","convertValueToMeridiem","ampm","convertToMeridiem","newHoursAmount","getSecondsInDay","createIsAfterIgnoreDatePart","disableIgnoringDatePartForTimeValidation","startOfYear","cleanDate","mStroking","mLocation","mDictionaryProperties","mPage","brushStream","mResources","setBox","setObligatoryFields","mTransformationMatrix","tempBrushStream","tempResource","mBox","tileTransform","mGraphics","name1","cssClassName","removeRippleEffect","tempContent","setIconCss","controlStatus","iconPosition","isToggle","btnClickHandler","useIsFocusVisible","getTableRowUtilityClass","tableRowClasses","ReactIs","REACT_STATICS","contextType","getDerivedStateFromError","KNOWN_STATICS","callee","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","objectPrototype","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","grey","50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700","maxSize","_maxSize","_size","_values","SPLIT_REGEX","DIGIT_REGEX","LEAD_DIGIT_REGEX","SPEC_CHAR_REGEX","CLEAN_QUOTES_REGEX","setCache","getCache","normalizePath","isQuoted","shouldBeQuoted","hasLeadingNumber","hasSpecialChars","safe","registerTarget","addTarget","removeTarget","registerSource","addSource","removeSource","addMilliseconds","isRectElement","isCalculateDesiredSize","elementActions","ElementAction","unitMode","float","floatingBounds","getAbsolutePosition","MonthEvent","renderedEvents","monthHeaderHeight","moreIndicatorHeight","renderType","activeView","getPanel","eventFields","eventSettings","enableMaxHeight","enableIndicator","rowAutoHeight","withIndicator","maxOrIndicator","ignoreWhitespace","removeEventWrapper","appElement","appElement_1","currentView","renderAppointments","dragAndDropModule","conWrap","uiStateValues","appointmentWrapper","crudModule","crudObj","groupIndex","targetEvent","appointmentWrapper_1","removeHeightProperty","cellTd","eventHeight","util","virtualScrollModule","currentAction","activeViewOptions","renderResourceEvents","updateFocusedWorkCell","renderEventsHandler","renderDates","workDays","updateBlockElements","isPreventScrollUpdate","scrollPosition","updateVirtualScrollHeight","showWeekNumber","totalCells_1","dateRender","eventsList","blockList","groupOrder","eventBase","filterEventsByResource","eventsProcessed","blockProcessed","workCells","sortByDateTime","totalCells","height_1","cellDetail","isTimelineView","cellWidth","cellHeight","filteredDates","getRenderedDates","getSlotDates","processBlockEvents","eventsList_1","resourceBase","getCssClass","spannedEvents_1","splitEvent","sDate","getStartTime","updateIndicatorIcon","renderEvents","blockEvents","blockEvents_1","event_3","blockSpannedList","isAllDay","isSameDate","isBlockIcon","blockSpannedList_1","blockEvent","spannedEvents_2","event_4","renderBlockEvents","isIcon","getEndTime","getIndexOfDate","getCellTd","renderBlockIndicator","diffInDays","appWidth","getEventWidth","appLeft","appRight","appHeight","appTop","getRowTop","blockElement","createBlockAppointmentElement","renderEventElement","blockIndicator","cloneData","getStartHour","getEndHour","actualStartTime","actualEndTime","isLeft","actualStartHour","actualEndHour","lastResourceLevel","sourceRes","resources_1","slotData","showWeekend","createAppointmentElement","isCloneElement","eventSubject","newRecord","getReadonlyAttribute","getAnnouncementString","Guid","appointmentDetails","eventObj","getEventData","eventTemplate","eventLocation","appointmentSubject","appointmentStartTime","isAdaptive","getTimeString","appointmentEndTime","innerElement","eventTemplateName","getAppointmentTemplate","appendEventIcons","renderResizeHandler","recurrenceRule","recurrenceID","iconLeft","iconRight","overlapCount","Index","enableAppRender","appointmentElement","inlineValue","inlineModule","createInlineAppointmentElement","applyResourceColor","wireAppointmentEvents","updateCellHeight","cellTd_1","filterEvents","getFilteredEvents","appArea","renderedAppCount","moreIndicatorElement","getMoreIndicatorElement","renderElement","moreIndicatorClick","blockElement_1","filteredEvents","getOverlapEvents","appointments","appointmentsList","appointments_1","app","appIndex","appLevel","getSmallestMissingNumber","moreArgs","viewName","getNavigateView","clickArgs","moreArgs_1","quickPopup","moreEventClick","selectedDate","changeView","eventType","isAppointment","setMaxEventHeight","wrapperEle","globalize","headerHeight","EventBase","ViewBase","getContentRows","refreshHeader","refreshResourceHeader","lastElementChild","resTd","createResourceColumn","getDayName","getDayNames","getCalendarMode","getTimelineDate","createEventTable","trCount","eventTable","getEventRows","eventContainer","eventRows","renderedResources","collapseRows","hideResourceRows","createTableLayout","createColGroup","lastRow","colGroupEle","getScrollXIndent","scrollTopPanel","getDatesHeaderElement","scrollHeaderLabels","headerTable","colWidth","applyLeft","headerCells","currentCell","tdLeft","hiddenLeft","headerCells_2","classNames_1","headerCells_1","getHeaderBarHeight","headerBarHeight","headerModule","getHeaderElement","resHeader","renderPanel","setPanel","panel","getDateSlots","generateColumnLevels","getColumnLevels","colLevels","highlightCurrentTime","getStartEndTime","isCurrentDate","getCurrentTime","isCurrentMonth","displayDate","numberOfWeeks","getStartDate","getEndDate","isWorkDay","isWorkHour","getRenderDates","length_2","dayCount","agendaDaysCount","previousNextIconHandler","getNextPreviousDate","daysCount","weekLength","getLabelText","viewStr","getDateRangeText","formatDateRange","formattedStr","getMobileDateElement","setResourceHeaderContent","tdElement","tdData","resourceHeaderTemplate","resourceData","resourceHeaderTemplateName","quickTemplate","getResourceHeaderTemplate","renderResourceMobileLayout","renderResourceHeader","renderResourceTree","addAutoHeightClass","getColElements","setColWidth","colElements","colWidth_1","resourceColumn","headerCellColSpan","resetColWidth","colElements_1","getContentAreaElement","wireExpandCollapseIconEvents","treeIcons_1","onTreeIconClick","scrollToDate","scrollDate","scrollWrap","tdDate","dateElement","getContentTable","setPersistence","contentWrap","retainScrollPosition","getViewStartDate","getResourceRenderDates","getViewEndDate","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","tokenValue","addSuffix","comparison","buildFormatLongFn","defaultWidth","formatLong","medium","formatRelativeLocale","yesterday","tomorrow","buildLocalizeFn","dirtyIndex","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","valueCallback","formatRelative","_date","_baseDate","localize","ordinalNumber","rem100","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseResult","firstWeekContainsDate","useRifm","valueRef","isDeleleteButtonDownRef","eventValue","isSizeIncreaseOperation","isDeleleteButtonDown","isNoOperation","deleteWasNoOp","acceptedCharIndexAfterDelete","charsToSkipAfterDelete","valueBeforeSelectionStart","getCursorPosition","cleanPos","newPos","newCleanPos","replacedValue","handleKeyDown","handleKeyUp","KeyboardDateInput","disableOpenPicker","getOpenDialogAriaTextProp","getOpenDialogAriaText","InputAdornmentProps","OpenPickerButtonProps","renderInput","openDatePickerDialogue","textFieldProps","acceptRegex","disableMaskedInput","ignoreInvalidInputs","inputFormat","rifmFormatter","TextFieldProps","validationError","formatHelperText","getFormatHelperText","shouldUseMaskedInput","maskToUse","computedMaskToUse","getMaskFromCurrentFormat","checkMaskIsValidForCurrentFormat","maskedDateFormatter","st","innerInputValue","setInnerInputValue","getDisplayDate","innerDisplayedInputValue","setInnerDisplayedInputValue","prevRawValue","rawValueChange","newDisplayDate","finalString","rifmProps","inputStateArgs","useMaskedInput","adornmentPosition","OpenPickerIcon","InputAdornment","edge","isMuiElement","muiNames","VScroll","browser","browserCheck","customStep","ieCheck","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","clsUp","navElement","navUpItem","CLS_NAVUPARROW","onKeyPress","ev","keyTimer","keyTimeout","eleScrolling","tapHold","tabHoldHandler","repeatScroll","clickEventHandler","trgt","scrollDis","isContinuous","frameScrollRequest","deltaY","swipeElement","scrollUpdating","scrollVal","scrollValue","arrowDisabling","addDisableCls","removeDisableCls","arrowIcon","navUpEle","navDownEle","upOverlay","downOverlay","disEle","unary_ops","binary_ops","getMaxKeyLen","max_len","max_unop_len","max_binop_len","binaryPrecedence","op_val","createBinaryExpression","isDecimalDigit","isIdentifierStart","isIdentifierPart","jsep","expr","ch_i","charAtFunc","charCodeAtFunc","exprI","exprICode","gobbleSpaces","gobbleExpression","consequent","alternate","gobbleBinaryExpression","gobbleBinaryOp","to_check","tc_len","biop","prec","biop_info","cur_biop","gobbleToken","gobbleNumericLiteral","gobbleStringLiteral","gobbleArray","gobbleVariable","chCode","closed","gobbleIdentifier","gobbleArguments","termination","separator_count","gobbleGroup","addUnaryOp","op_name","addBinaryOp","precedence","addLiteral","literal_name","literal_value","removeUnaryOp","removeAllUnaryOps","removeBinaryOp","removeAllBinaryOps","removeLiteral","removeAllLiterals","endOfDay","endOfMonth","baseDictionary","getNames","primitive","sName","generateName","PdfImage","PdfBitmap","pdfNames","fonts","dereference","procedureSetName","procSets","removeFont","getNewGuidString","xobjects","savable","transDic","parentXObjects","hasSameImageStream","oldReference","values_1","PdfUnitConverter","dpi","updateProportionsHelper","convertUnits","convertFromPixels","convertToPixels","proportions","pixelPerInch","horizontalResolution","verticalResolution","imageWidth","imageHeight","imagePhysicalDimension","getPointSize","imageStream","dpiX","dpiY","ucX","ucY","ptWidth","Pixel","ptHeight","targetContainer","elemData","containerWidth","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","elemOffset","topCollideCheck","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","updateElementData","leftFlip","deepCheck","collideSide","topFlip","setPopup","eStatus","getTargetContainerLeft","getTargetContainerTop","documentReact","startOfWeek","endOfWeek","formatByString","inferredFormatPatternWith1Digits","inferredFormatPatternWith2Digits","isMaskValid","lib","acceptRegexp","outputCharIndex","inputCharIndex","maskChar","nextMaskChar","acceptedChar","formattedChar","mbackground","mbStroking","mfunction","mpatternDictionary","sh","aa","PdfBoolean","mcolorSpace","csValue","colorSpaceToDeviceName","mshading","patternDictionary","mmatrix","resetFunction","resetPatternDictionary","cloneAntiAliasingValue","cloneBackgroundValue","ConnectorConstraints","ThumbsConstraints","SelectorConstraints","NoOfSegments","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","Attributes","aFunction","namespace","arraySpeciesCreate","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","specificCreate","boundFunction","sheetRef","speedy","isSpeedy","rehydrating","hydrate","sheetRefCurrent","nextElementSibling","insertable","anim","getIconButtonUtilityClass","iconButtonClasses","getTableCellUtilityClass","tableCellClasses","useThemeWithoutDefault","hasValue","SSR","isAdornedStart","getTimezoneOffsetInMilliseconds","utcDate","useNextMonthDisabled","lastEnabledMonth","startOfMonth","usePreviousMonthDisabled","firstEnabledMonth","useMeridiemMode","meridiemMode","handleMeridiemChange","timeWithMeridiem","HeaderCellRenderer","ariaService","hTxtEle","sortEle","gui","chkAllBox","fltrMenuEle","prepareHeader","hValueAccer","ariaAttr","innerDIV","headerValueAccessor","checkAllWrap","matchFlColumns","extendPrepareHeader","getColumnIndexByField","headerTempID","headerTextAlign","matchFilteredColumns","StackedHeaderCellRenderer","IndentCellRenderer","GroupCaptionCellRenderer","fKeyValue","captionTemplate","tempID","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","RowDragDropHeaderRenderer","Render","emptyGrid","headerRenderer","getRenderer","contentRenderer","Content","isLayoutRendered","renderTable","scrollModule","setHeight","setPadding","refreshDataManager","dataLength","prevPageMoving","pagerModule","pagerObj","getGroupCache","refreshContentRows","resetTemplates","detailTemplateID","toolbarTemplate","isCaptionCollapse","isFActon","isNeedForeignAction","deffered_1","disablePageWiseAggregates","validateGroupRecords","dataManagerSuccess","dataManagerFailure","deferred","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","getTable","spanCount","colspan","dynamicColumnChange","updateColumnType","isColTypeDef","actionArgs","isInfiniteDelete","infiniteScrollSettings","enableCache","infiniteScrollModule","dataArgs","isInfiniteEnd","prevCurrentView","currentViewData","updatesOnInitialRender","isInitialLoad","refreshUI","enableImmutableMode","immutableModeRendering","alert","setRowObjects","setRowCount","isQueryInvokedFromData","dataRowCount","getHeaderTable","isAutoGen","iterateComplexColumns","complexCols","instantiateRenderer","addRenderer","HeaderRender","ContentRender","cellrender","addCellRenderer","GroupCaption","GroupCaptionEmpty","Expand","DetailHeader","RowDragHIcon","group0","groupN","addWhere","curFilter","rPredicate","updateGroupInfo","untouched","uGroup","itemGroup","uGroupItem","data_1","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","gridElement","hidePopUp","mouseDownHandler","getHeaderContent","isEditing","editModule","formObj","isPersistSelection","getSelectedMovableRow","getMovableRowByIndex","getSelectedFrozenRightRow","getFrozenRightContent","getFrozenRightRowByIndex","getCurrentBatchRecordChanges","currentRecords","getBatchChanges","primaryKey","enableSimpleMultiRowSelection","addRowsToSelection","selectedRow","getRowByIndex","selectedMovableRow","selectedFrozenRightRow","isAvailable","frozenData","getRowObjectByIndex","getRowObjectFromUID","getSelectedRecords","clearRowSelection","isRowType","activeTarget","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","isHeaderCheckboxClicked","addMovableArgs","isRemoved","can","toggle","removed","checkboxMode","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectMovableRow","selectRowIndex","isHeaderCheckBoxClicked","updateRowProps","targetObj","mRow","frRow","mObj","previousMovRow","getMovableRows","selectRowsByRange","endIndex","selectRows","getCollectionFromIndexes","selectedDataUpdate","rowIndexes","currentRow","isSingleSel","prevRow","getRows","selectRowFn","rightEle","rowIndexes_1","checkboxOnly","checkboxColumn","rowIndexes_2","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","clearRowCallBack","selectedEle","updatePersistCollection","updateCheckBoxes","chkState","ensureCheckboxFieldSelection","pKey_1","updatePersistDelete","chkBox","checkedTarget","setCheckAllState","getPrevIndexes","contextMenuModule","mouseButton","checkSelectAllClicked","clearCellSelection","clearColumnSelection","prevCIdxs","prevECIdxs","row_1","mRow_1","fRightRow_1","rowIndex_1","foreignKeyData_1","target_1","mRows","frRows","getFrozenRightRows","isRowClicked","getCheckAllStatus","updatePersistSelectedData","movableRow","rowDeselectCallBack","frozenRightRow","isSingleDeSel","rowDeselectObj","getSelectedMovableCell","getColumnByIndex","getMovableCellFromIndex","getColIndex","selectCell","isCellType","selectedCell","getCellFromIndex","isCellSelected","successCallBack","previousRowCell","getCellIndex","cellSelectingArgs","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","rIdx","selectCellsByRange","cellIndexes","stIndex","edIndex","cellSelectionMode","getLastColIndex","addAttribute","cellSelectedArgs","selectCells","rowCellIndexes","cellSelectArgs","cellLen","addRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","getFrozenLeftColumnsCount","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","cLen","bdrElement","showHideBorders","addMovableRows","mouseMoveHandler","gBRect","isCellDrag","startAFCell","startCell","endAFCell","selectLikeExcel","startDIndex","isAutoFillSel","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","createBorders","positionBorders","isLastCell","isLastRow","isFirstRow","isFirstCell","setBorders","bdrStr","stOff","endOff","parentOff","topOffSet","rightOffset","selectDirection","updateStartEndCells","getMovableContent","mcBdrElement","frcBdrElement","fhBdrElement","getMovableHeader","mhBdrElement","getFrozenRightHeader","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","rowLen","colLen","cellIdx","endCell","startCellIndex","trIdx","mouseUpHandler","mUPTarget","updateAutoFillPosition","lastCell","updateStartCellsIndex","autofill","enableAutoFill","rindex","isFrozenCol","isFrozenRow","isFrozenRight","clientRect","allowRowDragAndDrop","enableDrag","isUpdate","postion","clearSelAfterRefresh","isInfiniteScroll","evtHandlers","enableAfterRender","onCellFocused","actionBeginFunction","actionCompleteFunction","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","keyDownHandler","keyUpHandler","getCheckAllBox","enable","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","isLeftRightFrozen","renderFrozenRightContent","gobj","chkField","refreshPersistSelection","setRowSelection","editChkBox","onDataBound","getSelectedRows","totalRecords","checkSelectAllAction","cRenderer","editForm","getVirtualRowIndex","checkSelectAll","stateStr","triggerChkChangeEvent","checkSelect","rIndex","rowCellSelectionHandler","moveIntoUncheckCollection","updateSelectedRowIndex","selectedVal","isAllSelected","isInteraction","checkToSelectAll","checkedLen","allowColumnSelection","popUpClickHandler","chkSelect","hoverFrozenRows","headerSelectionHandler","getColumnIndexByUid","byKey","keyArgs","isJump","isSelectable","headerAction","thLen","selectedIndexes","getSelectedRowCellIndexes","getKeyColIndex","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","ctrlPlusA","applySpaceSelection","allowNextRowEdit","innerColumn","getstackedColumns","getColumnByUid","applyUpDown","selectColumn","selectColumnsByRange","innerColumnIndexes","isAdd","detailIndentCell","dragdropIndentCell","selectedCol","getColumnHeaderByUid","isColSelected","isMultiColumns","clearColDependency","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","getFrozenRightColumnHeaderByIndex","getMovableColumnHeaderByIndex","columnDeselect","selectedHeader","getSelectedColumnCells","movableRows","isRowTemplate","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteFunc","actionCompleteHandler","resizeEndFn","checkAllBox","isInfinitecroll","isSelectedRowIndexUpdating","ShowHide","showBy","getToggleFields","setVisible","hideBy","getKeyBy","changedStateColumns","showHideArgs","currentViewCols","emptyVcRows","allowSelection","col1","col2","columnQueryMode","Scroll","previousValues","oneTimeReady","widthService","ColumnWidthService","uiupdate","setWidthToColumns","refreshOverflow","mHdrHeight","ensureOverflow","getThreshold","cssProps","removePadding","hDiv","footerDiv","getFooterContent","getSiblingsHeight","setScrollLeft","onFrozenContentScroll","isPreventScrollEvent","onContentScroll","scrollTarget","isDown","scrollDown","isFooter","onCustomScrollbarScroll","mCont","mHdr","onTouchScroll","pointerType","pageXY","getPointXY","setPageXY","getScrollbleParent","scrollingElement","addStickyListener","makeStickyHeader","mScrollBar","enableStickyHeader","sHeight","contentRect","getClientRects","headerEle","toolbarEle","groupHeaderEle","parentTop","elemTop","showDropArea","setSticky","ccDlg","cont","AggregateColumn","getTemplate","setPropertiesSilent","AggregateRow","Clipboard","copyContent","isSelect","isMacLike","clipBoardTextArea","x_1","y_1","scrollTo","isAvail","dataRows","fTr","mTr","selectionModule","setCopyData","withHeader","headerTextArray","getCopyData","checkBoxSelection","colIndexes","getColumnHeaderByIndex","isCell","splitKey","queryCommandSupported","execCommand","rowCellIndxes","SortDescriptor","SortSettings","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","inViewIndexes","keyA","frozenRightCount","frozenLeftCount","tablesCount","movableCount","visibleFrozenLeft","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","isFreezeRefresh","tableIndex","componentRefresh","vGroupOffsets","rowUid","isManualRefresh","isAutoFitColumns","enableDeepCompare","lockcolPositionCount","pageTemplateChange","mediaBindInstance","commandDelIndex","asyncTimeOut","enableLogger","Grid_1","mergePersistGridData","keyEntity","sortSettings","currentObject","pagerTemplate","persistData","setFrozenCount","enableInfiniteAggrgate","allowExcelExport","allowPdfExport","isDetail","isCommandColumn","allowAdding","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","mediaCol","mergeCells","filterOperators","greaterThan","greaterThanOrEqual","lessThanOrEqual","notEqual","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Cancel","Update","Delete","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","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","ctrlHome","ctrlEnd","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","altDownArrow","altUpArrow","ctrlDownArrow","ctrlUpArrow","ctrlPlusP","f2","ctrlEnter","shiftTab","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","searchModule","getMediaColumns","checkLockColumns","processModel","gridRender","addListener","updateDefaultCursor","updateStackedFilter","gcol","getShowHideService","hideAtMedia","pushMediaColumn","matchMedia","mediaQueryUpdate","updateMediaColumns","mediaColumn","invokedFromMedia","showHider","refreshMediaCol","footerContent","enableHover","removeMediaListener","removeListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","focusModule","clipboardModule","printModule","enableBoxSelection","checkCursor","requireRefresh","requireGridRefresh","freezeRefresh","isEllipsisTooltip","updateColumnObject","rowTemplateFn","detailTemplateFn","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","getContextMenu","columnMenuModule","getColumnMenu","showFilterBarOperator","updateResizeLines","updateGridLines","columnMenuItems","allowTextWrap","applyTextWrap","removeTextWrap","case","isModeChg","pending_1","deepWatch","isPending","gResult","isDataChanged","setWidthToTable","enableVerticalRendering","fn_1","filterModule","refreshFilter","setTablesCount","frozenCols","getTablesCount","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","setTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getFrozenRowByIndex","getFrozenDataRows","getRowElements","getRowInfo","getMovableRowElements","getFrozenRightRowElements","includeAdd","getFrozenLeftContentTbody","hdrTbody","freezeRows","generateDataRows","fRows","mrows","includAdd","dRows","isCollapseStateEnabled","getAllFrozenDataRows","pkName","fieldIdx","frIdx","Idx","sRow","columnUid","getNormalizedColumnIndex","rowsObj","headerCellRenderer","rowObjects","rowRenderer","getFrozenRightCellFromIndex","getMovableVirtualHeader","getFrozenLeftColumnHeaderByIndex","getFrozenVirtualHeader","isMovable","rowObject","getColumnHeaderByField","getStackedColumns","getUidByColumnField","rowDropSettings","targetID","getColumnFieldNames","getRowTemplate","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedColumnsUid","showColumns","hideColumns","getFrozenCount","splitFrozenCount","getVisibleFrozenLeftCount","getVisibleFrozenRightCount","getVisibleMovableCount","getFrozenRightColumns","getFrozenLeftColumns","getMovableColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","getFilterUIInfo","visibleFrozenColumns","goToPage","pageNo","updateExternalMessage","sortColumn","isMultiSort","sortModule","clearSorting","removeSortColumn","clearGridActions","filterByColumn","filterOperator","actualFilterValue","actualOperator","clearFiltering","removeFilteredColsByField","isClearFilterBar","searchString","fieldname","startEdit","endEdit","deleteRow","editCell","saveCell","updateRow","enableToolbarItems","recalcIndentWidth","indentWidth","headerCol","contentCol","perPixel","parentOffset","applyWidth","resetIndentWidth","tgridWidth","getTableWidth","setMinwidthBycalculation","refreshFrozenScrollbar","textWrapSettings","wrapMode","fromFName","toFName","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","reorderRows","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","contentTable","headerRows","disValue","autoFitColumns","resizeModule","createColumnchooser","columnChooserModule","renderColumnChooser","valueFormatterService","FocusStrategy","gCols","sCols","sLen","initForeignColumn","rendererFactory","createGridPopUpElement","createTooltip","gridLines","opensOn","getTooltipStatus","htable","ctable","prevElement","enableHtmlParse","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","focusHeader","addOutline","focusContent","setInjectedModules","refreshColumns","fCnt","frCnt","isColFrozen","mTbl","frTbl","colGrp","excelExport","excelExportProperties","isMultipleExport","workbook","excelExportModule","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","grabColumnByFieldFromAllCols","grabColumnByUidFromAllCols","getFilteredRecords","getUserAgent","getRowUid","getMovableVirtualContent","getFrozenVirtualContent","getRowElementByUID","rowEle","frozenRigtRows","frHdr","cntRows","rows_2","getHiddenColumns","calculatePageSizeByParentHeight","pagesize","getNoncontentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","serverCsvExport","setHeaderText","gridInput","submit","include","getFormat","updateRowValue","setForeignKeyData","colpending","getForeignKeyDataState","setForeignKeyDataState","resetFilterDlgPosition","filterDlg","gClient","fClient","processRowChanges","batchAsyncUpdate","processBulkRowChanges","loopstring","setNewData","oldValues","bulkRefresh","deleteRowElement","mtr","out_i_1","this_3","_loop_4","isRowExist","this_4","renderRowElement","modelData","addRowObject","moveTbody","updateVisibleExpandCollapseRows","getFrozenHeaderTbody","showResponsiveCustomFilter","showCustomFilter","showResponsiveCustomSort","showCustomSort","showAdaptiveFilterDialog","showAdaptiveSortDialog","isColVirtualization","gridCols_1","computeMatch","router","route","LOCATION_CHANGE","routerReducer","ConnectedRouter","handleLocationChange","propsStore","unsubscribeFromHistory","updateLocation","routerMiddleware","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","getCharWidthInternal","stFont","fontFamilyEqual","lineReducer","styleEqual","createInternals","WinAnsiEncoding","charOffset","rawClassName","isStringTag","isBrowser","compareAsc","dirtyDateLeft","dirtyDateRight","endOfYear","ButtonGroupContext","commonIconStyles","ButtonRoot","ButtonBase","colorInherit","disableElevation","borderRadius","hoverOpacity","shadows","dark","disabledBackground","getContrastText","contrastText","ButtonStartIcon","startIcon","ButtonEndIcon","endIcon","resolvedProps","resolveProps","disableFocusRipple","endIconProp","focusVisibleClassName","startIconProp","composedClasses","focusRipple","getListItemButtonUtilityClass","listItemButtonClasses","bitmap","TO_STRING_TAG_SUPPORT","TO_STRING_TAG","wellKnownSymbol","TAG","SET_METHOD","classofRaw","CORRECT_ARGUMENTS","tryGet","typographyClasses","getPaperUtilityClass","getTableUtilityClass","tableClasses","getTableBodyUtilityClass","tableBodyClasses","getFormControlUtilityClasses","formControlClasses","getFormGroupUtilityClass","formGroupClasses","getInputLabelUtilityClasses","inputLabelClasses","getPopoverUtilityClass","popoverClasses","getTextFieldUtilityClass","textFieldClasses","getToolbarUtilityClass","toolbarClasses","getTableHeadUtilityClass","tableHeadClasses","_objectWithoutPropertiesLoose2","between","reactIs","Memo","HScroll","createOverlay","scrollDiv","overlay","navEles","rightOverlayEle","clsRight","CLS_NAVRIGHTARROW","leftEle","clsLeft","navLeftItem","CLS_NAVLEFTARROW","rootEle","swipeEle","addDisable","removeDisable","navLeftEle","navRightEle","leftOverlay","rightOverlay","TreeViewContext","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","getDaysInMonth","lastDayOfMonth","isSameError","previousValidationErrorRef","PureDateInput","PureDateInputProps","dataState","foreignKeyDataState","initDataManager","addRows","removeRows","crudActions","refreshFilteredCols","skipPage","selectQueryFields","searchQuery","aggregateQuery","sortQuery","virtualGroupPageQuery","pageQuery","isAllPage","isGrpFmt","formatGroupColumn","sortGrp","fcolumn","getSearchColumnFieldNames","needForeignKeySearch","fGeneratePredicate","predList","skipFoerign","foreignColEmpty","actualFilter","foreignCols","defaultFltrCols","excelPredicate","foreignCols_1","column_1","_g","getKey","crud","deferred_1","pr","previousData","deff","editArgs_1","cancelEdit","colFieldNames","currentInfo","isLoaded","viewColIndexes","infiniteCache","isRemove","visibleRows","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","rafCallback","fHdr","prevPage","maxBlock","maxBlocks","rowIdx","generator","getModelGenerator","droppableDestroy","pressedKey","contentDiv","virtualTable","virtualTrack","createContentTable","initializeContentDrop","cellspacing","setColGroup","getColGroup","currentMovableRows","frag","initialPageRecords","trElement","hdrfrag","tbdy","fCont","virtualInfo","sentinelInfo","renderMovableContent","checkCache","setTbody","getTbody","isFrozenLeft","templatetoclear","rootNodes","updateVirtualCells","blockLoad","offsets_1","bSize","isEndBlock","blockIndexes","contentPanel","isVFFrozenOnly","bIndex","mhdrData","vgenerator","virtualFrozenHdrRefresh","setRowsInLazyGroup","setInfiniteVisibleRows","getBlockSize","rowTemplateID","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","splitRows","getFrozenHeader","parentTable","setIsFrozen","isVFTable","frCont","appendContent","renderNextFrozentPart","maintainRows","initialGroupRows","getCurrentBlockInfiniteRecords","isFreeze","getReorderedVFRows","getReorderedFrozenRows","getReorderedRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","infiniteRows","testRow","rightRows","rightLen","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","clen","colG","infiniteFreezeData","mTable","infiniteMovableData","setDisplayNone","isXaxis","getHeaderColGroup","replaceChild","canSkip","GroupModelGenerator","getInfiniteRowIndex","firstRowIndex","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","prevLen","currentLen","oldIndex","refreshImmutableContent","objectEqualityChecker","isDirty","updateCellIndex","infiniteChildCount","renderInfiniteAgg","summaryModelGen","captionModelGen","ensureRowVisibility","parentid","childId","preCaption","captionRow","generateCaptionRow","getPreCaption","isRenderAggregate","rowCnt","aggregatesCount","setInfiniteRowVisibility","preCap","getCaptionRowCells","visibles","groupedLen","generateIndentCell","captionCells","cIndex_1","wFlag","tmpFlag","childID","childGid","gSummary","fkValue","cRow","childRow","totalColumnsWidth","setColumnWidth","tWidth","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","cWidth","getWidth","fWidth","isDraggable","freezeLeft","freezeRight","getColumnLevelFrozenColgroup","editTableCol","frzMode","frozenScrollbar","movableScrollbar","frozencontent","frozenWidth","movableWidth","frozenRightScrollbar","frozenRightWidth","placeHolder","getHeightFromDirection","sibling","isWidUndefCount","calcMovableOrFreezeColWidth","tableType","setWidthToFrozenRightTable","freezeWidth","isAutoResize","headerTbl","cntTbl","setWidthToFrozenLeftTable","setWidthToMovableTable","isColUndefined","isWidthAuto","setWidthToFrozenEditTable","setWidthToMovableEditTable","resizeSettings","validateTime","minTime","maxTime","minutesStep","shouldDisableTime","isSameTimeError","useTimeValidation","PickersToolbarTextRoot","isDoubleTapped","timeZonePropChanged","processed","generateID","updateEventDateTime","processTimezoneChange","processTimezone","occurrence","generateGuid","recurrenceEvent_1","generateOccurrence","events_1","isBlock","blockData","blockData_1","getProcessedEvents","eventCollection","eventsData","eventCollection_1","timezonePropertyChange","processedData","timezoneConvert","startTimezone","endTimezone","startTz","endTz","tzModule","isReverse","filterBlockEvents","eStart","eEnd","getGroupIndexFromEvent","eventObj_1","resourceTdData","fieldMapping","sortByTime","filterEventsByRange","appointmentsCollection","fieldMappings_1","d1","d2","fieldMapping_1","object1","object2","d3","d4","d5","d6","large","splitEventByDay","eventStartTime","eventEndTime","eventLength","orgStart","orgEnd","ranges","cStart","byDate","slotDates","slot_1","renderedDates","renderedDates_1","firstSlot","hasBreak","cloneEventObject","dateInRange","availSlot","availSlot_1","slot_2","getSelectedEventElements","removeSelectedAppointmentClass","selectedElements","elementSelector","focusElements_1","addSelectedAppointments","getSelectedEvents","eventSelect","elementSelect","getEventByGuid","selectedAppointments","getSelectedAppointments","selectedAppointments_1","removeSelectedClass","focusElement","eventWindow","dialogObject","activeEle","getSelectedElements","keyboardInteractionModule","activeCellsData","selectWorkCellByTime","nearestTime","isAllDayAppointment","targetArea","getAllDayRow","getCellDetails","levelIndex","levelName","idField","parentField","getIndexFromResourceId","isFullDay","spannedEventPlacement","appointmentBorderRemove","isPreventCrud","eventTouchClick","eventDoubleClick","wireResizeEvent","wireDragEvent","spanEvent","resizeEdge","resizeHandler","isTop","isBottom","activeEventData","selectArgs","selectEventArgs","eventClickArgs","quickPopupHide","allowInline","inlineArgs","openEditor","openRecurrenceAlert","getEventById","getEventIDType","getEventMaxID","resourceId","eventId","idType","maxId","isMultiple","eventObject","isMaxCount","eventRule","maxCount","recurrenceException","getLocalTimezoneName","generatedDates","occurrenceCollection","dates_1","clonedObject","followingID","getParentEvent","isParent","parentEvent","getFollowingEvent","getEventCollections","followObj","follow","childObj","followingCollection","followingEvent","getOccurrenceEvent","collections","fields_1","isFollowingEvent","parentStart","childStart","isFollowing","fieldKey","getOccurrencesByID","parentObject_1","getOccurrencesByRange","getDeletedOccurrences","recurrenceData","parentObject","deletedOccurrences","exDateString_1","exDate","childObject","getResourceColor","alphaColor","setWrapperAttributes","isBlockRange","isBlockAlert","event_5","dataCol","dataCol_1","getFilterEventsList","getSeriesEvents","deleteFutureEditEvents","futureEvents","deleteFutureEvent","deleteFutureEditEventList","delId","followingId","startTimeQuery","getEditedOccurrences","delEditedEvents","deleteRecurrenceEventList","deleteFutureEditEventList_1","event_6","delEventQuery","firstDate","lastDate","isValidEvent","schedule","isHourRange","isSameRange","allDayExpandScroll","dateHeader","indentHeight","updateEventMinimumDuration","startEndHours","minimumEventDuration","tempEnd","tempStart","appElements_1","VerticalView","viewClass","isInverseTableSelect","baseCssClass","appointment","timeScale","VerticalEvent","removeNewEventElement","scrollLeftPanel","onAdaptiveMove","onAdaptiveScroll","leftPanel","getLeftPanelElement","timeCells","getScrollableElement","scrollerHeight","setContentHeight","scrollBarWidth","rtlBorder","rtlPadding","isDateHeaderScroll","enableAllDayScroll","scrollToWorkHour","leftPanelElement","workHours","highlight","firstWorkHourCell","scrollToHour","getTopFromDateTime","columnLevels","generateResourceLevels","resourceLevel","resStartHour","startHourField","resEndHour","endHourField","workStartHour","workEndHour","dateCol","renderDates_1","isWorkHourRange","showTimeIndicator","getCurrentTimeIndicatorIndex","changeCurrentTimePosition","currentTimeIndicatorTimer","clearCurrentTimeIndicatorTimer","updateCurrentTimeIndicatorTimer","currentDateIndex","removeCurrentTimeIndicatorElements","timeIndicator_1","indicator","firstRow","topInPx","timeCellsWrap","timeTrs","curTimeWrap","currentDateIndex_1","currentTimeEle","getWorkCellHeight","slotCount","getTdContent","cntEle","dateHeaderTemplate","dateHeaderTemplateName","getDateHeaderTemplate","majorSlotTemplate","getMajorSlotTemplate","minorSlotTemplate","getMinorSlotTemplate","cellTemplate","cellTemplateName","getCellTemplate","renderHeader","renderLayout","allowVirtualScrolling","renderContent","dateTd","renderDatesHeader","indentTd","renderLeftIndent","workTd","renderTimeCells","renderContentArea","timesTd","tbl","trEle","ntr_1","getWeekNumberContent","createTd","renderHeaderIndentTemplate","ntr","appointmentExpandCollapse","lastLevel","createAllDayRow","ntd","wireCellEvents","createEventWrapper","tdEle","isMinMaxDate","wireMouseEvents","workCellAction","cellDblClick","getTimeSlotRows","renderContentTable","createContentTd","renderContentTableHeader","getContentTdClass","cellDate","tooltipTemplate","levels","appointmentWrap","getEndDateFromStartDate","msInterval","msMajorInterval","msStartHour","msEndHour","timeOffset","majorTickDivider","contentScrollableEle","scheduleTouchModule","resetValues","differenceInCalendarMonths","yearDiff","isLastDayOfMonth","differenceInMonths","isLastMonthNotFull","getSwitchBaseUtilityClass","SwitchBaseRoot","SwitchBaseInput","SwitchBase","checkedProp","checkedIcon","defaultChecked","disabledProp","controlled","setCheckedState","hasLabelFor","centerRipple","newChecked","differenceInCalendarDays","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","compareLocalAsc","differenceInDays","isLastDayNotFull","PickersPopperRoot","Popper","modal","PickersPopperPaper","PickersPopper","_components$ActionBar","containerRef","PopperProps","TransitionComponent","TrapFocusProps","PaperProps","lastFocusedElementRef","onClickAway","movedRef","syntheticEventRef","nodeRef","activatedRef","armClickAwayListener","handleClickAway","insideReactTree","clickedRootScrollbar","composedPath","handleSynthetic","useClickAwayListener","clickAwayRef","onPaperClick","onPaperTouchStart","paperRef","handlePaperRef","onPaperClickProp","onPaperTouchStartProp","onTouchStart","otherPaperProps","ActionBar","PickersActionBar","TrapFocus","disableAutoFocus","disableEnforceFocus","actionBar","DesktopWrapper","DateInputProps","KeyboardDateInputComponent","ownInputRef","PickersModalDialogRoot","dialogClasses","PickersModalDialogContent","DialogContent","PickersModalDialog","DialogProps","MobileWrapper","PureDateInputComponent","PdfGraphicsElement","drawHelper","bNeedSave","gState","drawInternal","PdfAutomaticField","internalBounds","internalTemplateSize","internalFont","internalBrush","internalPen","internalStringFormat","performDrawHelper","getFont","location_1","getBrush","defaultFont","getPageFromGraphics","ponyfill","pairSplitRegExp","eq_idx","tryDecode","fieldContentRegExp","toUTCString","httpOnly","secure","sameSite","decodeURIComponent","childrenLeaving","SlideDownContent","outerRef","ByteArray","mPosition","readByte","getBuffer","writeFromBase64String","base64","encodedString","chr1","chr2","chr3","enc2","enc3","keyStr","resultIndex","totalLength","readNextTwoBytes","isMonthStart","getMonthEndDate","monthValue","finalGDate","finalHDate","updateDateObj","currentHijri","tempHijri","hDate1","getBorder","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borders","flexbox","gap","columnGap","rowGap","_props$theme","_props$theme$breakpoi","_props$theme$breakpoi2","breakpointsValues","sizing","filterPropsMapping","positions","styleFunctionMapping","propToStyleFunction","styleFnName","getThemeValue","styleFunction","murmur2","unitlessKeys","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flexPositive","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","orphans","tabSize","widows","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","unitless","handleInterpolation","interpolation","__emotion_styles","interpolated","createStringFromObject","previousCursor","cached","labelPattern","stringMode","identifierName","hashString","ImageFormat","ImageDecoder","sof1Marker","sof2Marker","sof3Marker","sof5Marker","sof6Marker","sof7Marker","sof9Marker","sof10Marker","sof11Marker","sof13Marker","sof14Marker","sof15Marker","mFormat","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","addScrolling","scrollType","containerOffset","contentOffset","parentElem","createScrollbar","destroyScroll","scrollObj","skipEle","FOCUSED","HEADER","SELECTED","ITEM","HIDE","POPUP","MenuAnimationSettings","MenuBase","navIdx","isTapHold","tempItem","showSubMenuOn","isMenu","ejInst","clonedElement","refEle","getWrapper","enableScrolling","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","removeChildElement","createItems","targetElems","menuHeaderClickHandler","cmenuHandler","delegateMoverHandler","moverHandler","delegateMouseDownHandler","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","item_1","items_1","sli","beforeCloseArgs","popups","getPopups","isClose","ul_1","liElem_1","getLI","parentItem","observedCloseArgs","closeArgs","trgtliId","closedLi","trgtLi","popupId","unWireKeyboardEvent","toggleAnimation","updateReactTemplate","trgtpopUp","submenus","afterCloseMenu","isMenusClosed","sli_1","cliIdx","item_2","removeStateWrapper","getMenuItemModel","getFields","lItem","elemId","uList","lastChild","ICONS","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","iconSize","offsetEle","offsetRight","toggleVisiblity","newTop","xCollision","hasField","listBaseOptions","liTrgt","hdrWrapper","isDifferentElem","isClosed","cliWrapper","isInstLI","cliWrapperId","setLISelected","showSubMenu","culIdx","classname","getItemIndex","isUniqueId","isText","setItems","skipHdr","updateItemsByNavIdx","updateItem","ul_2","ul_3","getChangedItemIndex","insertAfter","popStr","uls","targetSelctor","isMenuOpen","pUlHeight","pElement","nIndex","isCallBack","skipItem","showItems","showHideItems","hideItems","ishide","iitems","insertItems","itemId","parentId","emitBOM","encodingType","initBOM","getByteCount","utf8Len","getByteCountInternal","codePoint","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint","uint16","byteUni","byte16","propertyIsEnumerableModule","toIndexedObject","nativeGetOwnPropertyDescriptor","activeXDocument","enumBugKeys","hiddenKeys","documentCreateElement","sharedKey","EmptyConstructor","scriptTag","NullProtoObject","ActiveXObject","parentWindow","NullProtoObjectViaActiveX","iframeDocument","NullProtoObjectViaIFrame","Properties","internalObjectKeys","classof","NATIVE_WEAK_MAP","objectHas","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","propertyKey","InternalStateModule","defineIterator","setInternalState","getInternalState","iterated","V8_VERSION","SPECIES","foo","weakMemoize","reactPropsRegex","isPropValid","testOmitPropsOnStringTag","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","isReal","optionsShouldForwardProp","__emotion_forwardProp","newStyled","targetClassName","__emotion_base","defaultShouldForwardProp","shouldUseAs","Styled","finalTag","classInterpolations","finalShouldForwardProp","withComponent","nextTag","nextOptions","emStyled","isarray","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","modifier","asterisk","escapeGroup","encodeURIComponentPretty","encodeURI","pretty","attachKeys","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","getOverlayAlpha","PaperRoot","square","rounded","backgroundImage","evalAsync","binops","unops","evaluateArray","evaluateMember","_node","DescendantContext","useDescendant","descendant","registerDescendant","unregisterDescendant","descendants","previousDescendants","someDescendantsHaveChanged","newDescendant","DescendantProvider","oldItems","compareDocumentPosition","DOCUMENT_POSITION_PRECEDING","binaryFindElement","tempDictionaryProperties","objectStatus","saving","boolToStr","timezoneData","getTimezoneData","convertedDate","fromOffset","toOffset","fromLocalOffset","toLocalOffset","removeLocalOffset","Value","Text","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","i1","i2","i3","i4","writeUInt","buff","writeString","TtfReader","fontData","isTtcFont","isMacTtf","metricsName","isMacTTF","missedGlyphs","tableNames","entrySelectors","macintoshDictionary","microsoftDictionary","internalMacintoshGlyphs","internalMicrosoftGlyphs","readFontDictionary","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","xMin","yMin","xMax","yMax","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","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","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","formatName","createFontDescriptor","systemInfo","createSystemInfo","getDescriptorFlags","getBoundBox","descFonts","usedChars","getDescendantWidth","generateCmap","generateFontProgram","chLen","firstGlyphIndex","lastGlyphIndex","firstGlyphIndexWasSet","widthDetails","middlePart","toHexString","nextRange","FixedPitch","Symbolic","Nonsymbolic","ForceBold","isCaseChange","React__default","UA","getBrowser","getCPU","getDevice","engine","getEngine","os","getOS","getUA","setDefaults","getNavigatorInstance","isIOS13Check","MSStream","DEVICE_TYPES","BROWSER_TYPES","OS_TYPES","initialData","isTablet","isSmartTV","isConsole","isWearable","mobilePayload","vendor","osVersion","checkType","isEdgeChromiumType","isEdgeType","getIPad13","isMobileSafari","isChromium","isMobileAndTabletType","isMobileOnly","isAndroid","isWinPhone","isIOS","isChrome","isFirefox","isSafari","isOpera","osName","fullBrowserVersion","browserVersion","browserName","mobileVendor","mobileModel","engineName","engineVersion","isEdge","isYandex","deviceType","isIOS13","getIOS13","isIPad13","isIPhone13","isIPod13","isElectron","isElectronType","isEdgeChromium","isLegacyEdge","isWindows","isMacOs","isMIUI","AndroidView","renderWithFragment","viewClassName","BrowserView","ConsoleView","_ref10","CustomView","_ref12","IEView","IOSView","MobileOnlyView","MobileView","SmartTVView","TabletView","WearableView","_ref11","WinPhoneView","deviceDetect","browserMajorVersion","browserFullVersion","broPayload","stvPayload","consolePayload","wearPayload","withOrientationChange","_class","isEventListenerAdded","handleOrientationChange","onOrientationChange","onPageLoad","isPortrait","getTabsUtilityClass","tabsClasses","getDialogUtilityClass","trimLeft","trimRight","tinyCounter","mathRound","mathMin","mathMax","mathRandom","tinycolor","named","matchers","rgba","hsl","hsla","hsv","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","bound01","convertToPercentage","hsvToRgb","hue2rgb","boundAlpha","inputToRGB","_originalInput","_r","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","hex","pad2","rgbaToArgbHex","convertDecimalToHex","desaturate","toHsl","clamp01","saturate","greyscale","brighten","toRgb","spin","hue","complement","triad","tetrad","splitcomplement","analogous","slices","monochromatic","toHsv","modification","isDark","getBrightness","isLight","getOriginalInput","getAlpha","RsRGB","GsRGB","BsRGB","setAlpha","toHsvString","toHslString","toHex","toHex8","allow4Char","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","_applyCombination","fromRatio","newColor","rgb1","rgb2","readability","c1","c2","isReadable","wcag2","wcag2Parms","parms","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellowgreen","flipped","isOnePointZero","processPercent","isPercentage","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","sortRequired","isAppliedGroup","isAppliedUnGroup","reorderingColumns","visualElement","animateDropper","draggableType","preventDrop","rearrangeGroup","dragField","dropTarget","dropField","dropIndex","dragIndex","addColToGroupDrop","addLabel","removeColFromGroupDrop","aria","contentRefresh","groupGenerator","dragLabel","dropArea","refreshSortIcons","onGroupAggregates","updateExpand","grpRow","expandCollapseRows","getFocusedElement","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","pKeyVal","cItem","eData","aggrds","aggregateRows","aggr","groupedCols","closestParent","originalModule","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","injectFirstNode","jssPreset","disableGeneration","sheetsCache","StylesContext","injectFirst","localOptions","outerOptions","createComment","nativePropertyIsEnumerable","NASHORN_BUG","V","PREFERRED_STRING","DOMIterables","Iterators","COLLECTION_NAME","CollectionPrototype","unsupportedProp","propFullName","createChainedFunction","_iterableToArray","createThunkMiddleware","extraArgument","thunk","withExtraArgument","_insertTag","ctr","createStyleElement","styleSheets","ownerNode","sheetForTag","AccordionContext","TableContext","isCallingCanDrag","isCallingIsDragging","DragSourceMonitorImpl","internalMonitor","isDraggingSource","subscribeToStateChange","isOverTarget","subscribeToOffsetChange","getInitialClientOffset","getInitialSourceClientOffset","getDifferenceFromInitialOffset","SourceConnector","wrapConnectorHooks","dragSource","clearDragSource","dragSourceOptions","dragSourceRef","dragSourceNode","reconnectDragSource","dragPreview","clearDragPreview","dragPreviewOptions","dragPreviewRef","dragPreviewNode","reconnectDragPreview","dragSourceOptionsInternal","dragPreviewOptionsInternal","lastConnectedHandlerId","lastConnectedDragSource","lastConnectedDragSourceOptions","lastConnectedDragPreview","lastConnectedDragPreviewOptions","newHandlerId","reconnect","didHandlerIdChange","didConnectedDragSourceChange","didDragSourceOptionsChange","disconnectDragSource","dragSourceUnsubscribe","connectDragSource","didConnectedDragPreviewChange","didDragPreviewOptionsChange","disconnectDragPreview","dragPreviewUnsubscribe","connectDragPreview","isCallingCanDrop","DropTargetMonitorImpl","TargetConnector","clearDropTarget","dropTargetOptions","dropTargetRef","dropTargetNode","dropTargetOptionsInternal","lastConnectedDropTarget","lastConnectedDropTargetOptions","didDropTargetChange","didOptionsChange","disconnectDropTarget","unsubscribeDropTarget","connectDropTarget","isValidType","BaseToolbar","renderFactory","itemConfigs","setRtl","getClass","getTemplateObject","getID","inlineMode","tooltipText","prefixIcon","callback_1","undo","getUndoRedoStack","tbItems_1","getToolbarOptions","rteToolbarObj","overflowMode","toolbarRenderer","renderToolbar","DropDownButtons","initializeInstance","beforeRender","dropdownContent","renderDropDowns","containerType","tbElement","formatOLItem","numberFormatListDropDown","renderListDropDown","itemName","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","ColorPickerInput","renderColorPickerInput","suffixID","fontNode","fontColorPicker","fontColorDropDown","renderColorPickerDropDown","backNode","backgroundColorPicker","backgroundColorDropDown","defaultColorPicker","presetColors","colorCode","modeSwitcher","RadioGroupContext","DialogContext","getDialogTitleUtilityClass","dialogTitleClasses","emptyFunction","emptyFunctionWithReset","resetWarningCache","createCommonjsModule","shim","getShim","ReactPropTypes","factoryWithThrowingShims","charIsNumber","_char","splitDecimal","numStr","allowNegative","hasNagation","addNegation","beforeDecimal","afterDecimal","limitToScale","fixedDecimalScale","filler","setCaretPosition","caretPos","createTextRange","getCurrentCaretPosition","propTypes$1","thousandSeparator","decimalSeparator","allowedDecimalSeparators","thousandsGroupStyle","decimalScale","displayType","removeFormatting","isNumericString","customInput","allowEmptyFormatting","allowLeadingZeros","onValueChange","isAllowed","renderText","getInputRef","validateProps","formatValueProp","numAsString","selectionBeforeInput","updateValueIfRequired","focusedElm","stateValue","_state$numAsString","lastNumStr","lastValueWithNewFormat","formatNumString","floatValue","lastFloatValue","_this$getSeparators","getSeparators","numRegex","getNumberRegex","hasNegation","firstDecimalIndex","ignoreDecimalSeparator","_this$props$mask","_this$getSeparators3","firstHashPosition","nextPos","caretLeftBound","caretRightBound","inputNumber","formattedNumber","currentInputChar","currentFormatChar","correctCaretPosition","suffixLastIndex","formatArray","_this$props5","removePatternFormatting","removePrefixAndSuffix","getFloatString","hashCount","formattedNumberAry","getMaskAtIndex","_this$props6","_this$getSeparators4","hasDecimalSeparator","_splitDecimal","thousandsGroupRegex","getThousandsGroupRegex","applyThousandSeparator","_this$props7","formatWithPattern","formatAsNumber","_this$props8","_this$props9","_this$props9$value","isNonNumericFalsy","shoudHaveDecimalSeparator","roundedDecimalParts","intPart","roundedStr","decimalPart","roundToPrecision","formatInput","negationRegex","doubleNegationRegex","removeNegation","formatNegation","_this$props10","isCharacterAFormat","lastValue","_this$props11","_this$getSeparators6","_this$selectionBefore","_findChangedIndex","prevValue","prevLength","newLength","findChangedIndex","leftBound","rightBound","checkIfFormatGotDeleted","numericString","_splitDecimal2","isBeforeDecimalPoint","_params$setCaretPosit","currentCaretPosition","getCaretPosition","setPatchedCaretPosition","getValueObject","correctInputValue","focusTimeout","fixLeadingZero","expectedCaretPosition","_el$value","_this$props12","negativeRegex","isPatternFormat","newCaretPosition","isUnitTestRun","_el$value2","caretPosition","persist","_el$value3","_this$props13","keyMaps","filteredObj","inputMode","CustomInput","dateLongFormatter","timeLongFormatter","dateTimeFormat","datePattern","timePattern","addSeconds","addMinutes","addHours","addWeeks","differenceInQuarters","roundingMethod","differenceInWeeks","differenceInHours","differenceInMinutes","differenceInSeconds","dirtyHours","dirtyMinutes","dirtySeconds","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","getYear","setYear","dirtyYear","longFormatters","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","subMilliseconds","dirtyLeftDate","dirtyRightDate","isWithinInterval","dirtyMonth","dateWithDesiredMonth","eachDayOfInterval","dirtyInterval","replaceClassName","origClass","classToRemove","baseVal","isAsyncPrint","defered","isContentReady","isPrintGrid","removeColGroup","printGridObj","renderPrintGrid","printGrid","viewContainerRef","injectedModues","printgrid","headerDiv","waitingPop","printGridElement","printWind","resizeTo","screen","availWidth","availHeight","groupCaption","colGroups","contentColGroups","hideColGroup","sortedCols","sortPredicate","isCustomDialog","closeCustomDialog","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","saveBtn","backBtn","customExcelFilterParent","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","dialogEle","outerDiv","customFilterDlg","getDialogOptions","isModal","showCloseIcon","closeOnEscape","adaptiveDlgTarget","renderResponsiveHeader","sortField","closeResponsiveDialog","closeCustomFilter","keyHandler","primaryKeyValue","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","applyCustomFilter","mainfilterdiv","destroyCustomFilterDialog","customEle","frzIdx","notfrzIdx","isFirstCol","headercelldiv","getClosest","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","toggleStackClass","createHeaderTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","tHead","createHeader","tableEle","tblName","findHeaderRow","createHeaderContent","bodyCell","rowBody","updateColGroup","colHeader","headerRow","colFreezeMode","len_2","lockColsRendered","appendCells","isFirstObj","isLastCol","isStackLastCol","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","oneTime","swap","forget","skipFocus","focusByClick","prevIndexes","refMatrix","refreshMatrix","isVirtualScroll","rowModelGen","focusCheck","setActive","enableHeaderFocus","passiveFocus","skipAction","beforeArgs","byClick","clearOutline","skipOn","activeKey","swapInfo","jump","toHeader","toFrozen","toFrozenRight","getNextCurrent","setActiveByKey","lastIdxCell","clearIndicator","filterCell","focusVirtualElement","virtualData","isCancel","isKeyFocus","elementToFocus","preventScroll","fContent","frContent","fHeader","frHeader","setFocusedElement","addFocus","getFocusInfo","resetFocus","getInfo","focusedColumnUid","FixedContentFocus","FixedRightContentFocus","ContentFocus","FixedHeaderFocus","FixedRightHeaderFocus","HeaderFocus","cFocus","index_1","newMovableRows","newFrozenRows","newfrRows","handlerInstance","cellPosition","gridPosition","passiveHandler","filterfocus","restoreFocusWithAction","internalCellFocus","forgetPrevious","getFocusable","emptyTable","inValid","vector","keyActions","indexesByKey","getCurrentFromAction","editNextRow","isLastCellPrimaryKey","visibleIndex","isPresent","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","nextRowFocusValidate","previousRowFocusValidate","frozenSwap","frSwap","enterFrozen","isHeaderFocus","optionals","defaultLen","isData","isCellWidth","getGridSeletion","headerSwap","fMatrix","current1","current2","hMatrix","current3","SearchBox","searchFocus","searchBlur","headerMat","pageNumberFieldLocation","pageNumberField","renderedAllDayEvents","overlapEvents","moreEvents","overlapList","allDayEvents","allDayLevel","animationUiUpdate","wrapperElements","wrapperElements_1","allDayElement","setAllDayRowHeight","rowExpandCollapse","initializeValues","appendEvent","dateCount","getResourceList","filterEvents_1","setValues","spannedData","isSpannedEvent","blockTop","blockHeight","getTopValue","isRender","renderedDate","filterEvents_2","renderAllDayEvents","getOverlapIndex","renderNormalEvents","filterEvents_3","resources_2","resourceIndex","recordSubject","timeStr","recurrenceIcon","renderSpannedIcon","createMoreIndicator","allDayRow","currentDay","countWrapper","innerCountWrap","countCell","moreCount","iconTop","iconBottom","eventDates","inline","currentDates","allDayRowCell","cellTop","isDateRange","isAlreadyRendered","allDayDifference_1","allDayIndex_1","widthAdjustment","appointmentElement_1","allDayRow_1","wIndex_1","eventWrapper_1","length_3","allDayRowHeight","addOrRemoveClass","appHeight_1","argsData","tempData","adjustOverlapElements","iconHeight","subjectElement","tempWidth","getEventLeft","tempLeft","diffInMinutes","date_1","appointmentList_1","appointment_1","recordStart_1","recordEnd_1","length1","length2","eleGuid","apps","moreEventCount","getEventHeight","eventElement","TimelineEvent","cellTops","eventContainers","dayLength","slotsPerDay","appointments_2","trimStartTime","trimEndTime","getSortComparerIndex","getOverlapSortComparerEvents","appointmentsCollection_1","appWidth_1","renderApp","getFirstChild","moreIndicator","appPos","position_1","renderTimelineMoreIndicator","position_2","isAlreadyAvail","startDateTime","slotStartTime","slotEndTime","getFilterEvents","resourceCell","monthHeader","blockIndicator_1","getNextDay","getPreviousDay","getSameDayEventsWidth","getSpannedEventsWidth","endWidth","startWidth","spannedWidth","getAppointmentLeft","slotTd","gIndex","indicatorPos","wrapIndex","dirtyObject","setUTCDay","dirtyDay","numericPatterns","timezonePatterns","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","parsers","G","incompatibleTokens","isTwoDigitYear","normalizedTwoDigitYear","R","_match","_flags","firstWeekOfYear","Q","setUTCMonth","dirtyWeek","getUTCWeek","setUTCWeek","I","dirtyISOWeek","getUTCISOWeek","setUTCISOWeek","subPriority","wholeWeekDays","setUTCISODay","B","K","setUTCSeconds","S","setUTCMilliseconds","timestampIsSet","_token","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","formatString","subFnOptions","setters","dateToSystemTimezone","firstCharacter","longFormatter","usedTokens","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","incompatibleToken","usedToken","fullToken","cleanEscapedString","uniquePrioritySetters","setterArray","getUTCMilliseconds","formatters","signedYear","dayPeriodEnumValue","numberOfDigits","fractionalSeconds","dayPeriodEnum","formatTimezoneShort","dirtyDelimiter","absOffset","formatTimezoneWithOptionalMinutes","formatTimezone","lightFormatters","signedWeekYear","startOfYearTimestamp","getUTCDayOfYear","localDayOfWeek","isoDayOfWeek","_localize","_originalDate","originalDate","dirtyFormatStr","formatterOptions","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","Ligature","Type","shapeValue","shapeType","shapeVowel","shapeLigature","shapeShapes","Bidi","indexLevels","mirroringShapeCharacters","doMirrorShaping","getLogicalToVisualString","inputText","rtlCharacters","RtlCharacters","getVisualOrder","setDefaultIndexLevel","doOrder","resultBuilder","eIndex","odd","even","pstart","pend","reArrange","textOrder","rtlCharacterTypes","LRE","LRO","AL","RLE","RLO","PDF","EN","ES","ET","AN","CS","NSM","BN","WS","charTypes","getCharacterCode","doVisualOrder","characterCodes","setDefaultLevels","setLevels","updateLevels","getEmbeddedCharactersLength","preview","preType","checkNSM","checkEmbeddedCharacters","startType","endType","charType","checkEuropeanDigits","checkArabicCharacters","checkEuropeanNumberSeparator","checkEuropeanNumberTerminator","getLength","checkOtherNeutrals","checkOtherCharacters","pst","checkCommanCharacters","validSet","byte","openBracket","closeBracket","customLayout","customSplitLayout","getGlyphIndex","glyphs","layouted","addChars","differenceInCalendarYears","differenceInYears","isLastYearNotFull","startOfHour","isSameHour","dateLeftStartOfHour","dateRightStartOfHour","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","Disposable","isDisposed","isDisposable","CompositeDisposable","disposables","shouldDispose","currentDisposables","_i2","SerialDisposable","decorateHandler","DecoratedComponent","createHandler","createMonitor","createConnector","registerHandler","containerDisplayName","getType","_options$arePropsEqua","arePropsEqual","Decorated","getCurrentState","disposable","receiveProps","currentType","receiveType","handlerMonitor","handlerConnector","_registerHandler2","receiveHandlerId","setDisposable","receiveDragDropManager","_this2$handlerConnect","getBackend","startOfUTCWeekYear","firstWeek","startOfUTCISOWeekYear","fourthOfJanuary","cloneWithRef","newRef","throwIfCompositeComponentElement","wrappedHooks","hook","wrappedHook","elementOrNode","wrapHookToRecognizeElement","formatMuiErrorMessage","getListItemIconUtilityClass","listItemIconClasses","getDividerUtilityClass","dividerClasses","isModelChanged","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","sortColumns","cancelBeginEvent","colObj","initiateSort","showPopUp","colUid","enableSortMultiTouch","allowUnsort","filterElement","updateAriaAttr","pathData","absolutePath","absoluteBounds","newPathString","getHsl","hslArray","percentToDecimal","percent","randomColor","reg","getHoverRgbColor","sColor","sColorNew","sColorChange","_getHsl","rgbaArray","rgbaToRgba","globalId","idOverride","defaultId","setDefaultId","defaultProp","valueState","refA","refB","refValue","AjaxHandler","retryCount","sendRequest","isPasswordAvailable","passwordData","resendRequest","statusString","responseType","fireAjaxRequestFailed","withCredentials","ajaxRequestSettings","addExtraData","setCustomAjaxHeaders","jsonObject","ajaxData","fireAjaxRequestInitiate","ajaxHeaders","headerName","headerValue","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","argv","versions","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","umask","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","stackClear","stackDelete","stackGet","stackHas","stackSet","objectKeys","IS_PURE","copyright","setGlobal","postfix","originalArray","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","ITERATOR","v8","requirePropFactory","componentNameInError","identifierWithPointTracking","toRules","fixedElements","compat","isImplicitRule","parentRules","removeLabel","defaultStylisPlugins","ssrStyles","stylisPlugins","_insert","nodesToHydrate","attrib","omnipresentPlugins","currentSheet","finalizingPlugins","serializer","shouldCache","hoistNonReactStatics$1","IconButtonRoot","disableRipple","getScale","entering","entered","addEndListener","inProp","onEnter","onEntered","onEntering","onExit","onExiting","Transition","autoTimeout","foreignRef","normalizedTransitionCallback","maybeIsAppearing","handleEntering","handleEnter","isAppearing","handleEntered","handleExiting","handleExit","handleExited","muiSupportAuto","FormControlRoot","visuallyFocused","initialAdornedStart","initialFilled","setFilled","focusedState","childContext","registerEffect","FormGroupRoot","InputRoot","inputBaseRootOverridesResolver","disableUnderline","bottomLineColor","borderBottomStyle","InputInput","InputBaseInput","inputBaseInputOverridesResolver","componentsPropsProp","inputComponentsProps","getScrollbarSize","disableListWrap","previousElementSibling","textCriteriaMatches","nextFocus","textCriteria","repeating","moveFocus","currentFocus","disabledItemsFocusable","traversalFunction","wrappedOnce","nextFocusDisabled","MenuList","autoFocusItem","listRef","textCriteriaRef","previousKeyMatched","lastTime","adjustStyleForScrollbar","noExplicitWidth","scrollbarSize","activeItemIndex","List","currTime","performance","keepFocusOnCurrent","getMenuUtilityClass","RTL_ORIGIN","LTR_ORIGIN","MenuRoot","MenuPaper","WebkitOverflowScrolling","MenuMenuList","Menu","disableAutoFocusItem","PopoverClasses","menuListActionsRef","getNativeSelectUtilityClasses","nativeSelectClasses","nativeSelectSelectStyles","userSelect","NativeSelectSelect","nativeSelectIconStyles","NativeSelectIcon","iconOpen","NativeSelectInput","IconComponent","SelectSelect","SelectIcon","SelectNativeInput","nativeInput","areEqualValues","_Input","_FilledInput","SelectInput","ariaLabel","displayEmpty","labelId","openProp","tabIndexProp","setValueState","displayRef","displayNode","setDisplayNode","isOpenControlled","menuMinWidthState","setMenuMinWidthState","setOpenState","handleDisplayRef","isCollapsed","displaySingle","childrenArray","handleItemClick","clonedEvent","displayMultiple","computeDisplay","curr","menuMinWidth","buttonId","classesProp","ArrowDropDownIcon","native","variantProps","outlined","OutlinedInput","FilledInput","inputComponentRef","notched","getFormLabelUtilityClasses","formLabelClasses","FormLabelRoot","colorSecondary","AsteriskComponent","FormLabel","InputLabelRoot","disableAnimation","animated","shrinkProp","GridContext","resolveSpacingClasses","GridRoot","zeroMinWidth","directionValues","rowSpacing","rowSpacingValues","columnSpacing","columnSpacingValues","globalStyles","flexBasis","columnsBreakpointValues","generateGrid","columnsProp","columnSpacingProp","rowSpacingProp","columnsContext","createBreakpoints","createSpacing","spacingInput","mui","argsInput","contextTheme","muiUseTheme","commonjsGlobal","createEventEmitter","changedBits","calculateChangedBits","_Consumer$contextType","contextProp","getUniqueId","emitter","objectIs","_Component2","observedBits","requestFlush","scan","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","timeoutHandle","handleTimer","intervalHandle","characterData","makeRequestCallFromMutationObserver","CLS_ITEMS","CLS_ITEM","CLS_POPUP","resizeContext","btnItems","destroyItems","trgtEle","ctrlTem","popObj","tbarAlign","attrb","enableCollision","tbarItemsCol","isVertical","isExtendedOpen","popupPriCount","keyModule","docKeyDown","unwireKeyboardEvent","popCheck","docEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","popAnimate","eleFocus","popupCheck","extendedPopup","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","sib","isPopupElement","popupNav","popupClickHandler","clickedArgs","getElementOffsetY","renderControl","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","createPopupIcon","innerNavDom","checkPriority","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","CLS_POPUPCLASS","popupInit","eleStyles","tbarPopupHandler","toolEle","popupElePos","popIcon","overflowHeight","tbEleData","inEle","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","isVer","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","eleSplice","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","algIndex","removeItemByIndex","eleIdx","indexAgn","btnItem","templateRender","templateProp","isComponent","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","DropDownButton","isPopupCreated","openPopUp","getULElement","getTargetElement","getPopUpElement","appendItems","hasIcon","createAnchor","appendArrowSpan","setActiveElem","isColorPicker","createPopupOnClick","activeElem","popupUnWireEvents","delegateMousedownHandler","mousedownHandler","popupWireEvents","keyEventHandler","popupElem","splitButton","beforeOpenArgs","observedArgs","openArgs","arrowSpan","TicksData","ColorRangeData","LimitData","TooltipData","Slider","horDir","verDir","rangeBar","transitionOnMaterialTooltip","customAriaText","isDragComplete","initialTooltip","incrementTitle","decrementTitle","isElementFocused","tickElementCollection","tooltipFormatInfo","ticksFormatInfo","initCultureInfo","initCultureFunc","formChecker","isForm","formResetValue","ticks","formatInfo","formatValue","numberOfDecimals","makeRoundNumber","elementVal","decimals","fractionalToInteger","noOfDecimals","tens","initRender","setZindex","sliderContainer","setCSSClass","setElementWidth","oldCSSClass","tooltipElement","showOn","sliderTrack","getThemeInitialization","setHandler","createRangeBar","limits","createLimitBar","setOrientClass","hiddenInput","showButtons","setButtons","setEnableRTL","rangeValueUpdate","previousVal","checkHandleValue","previousChanged","setLimitBar","renderScale","renderTooltip","isMaterial","isBootstrap","isBootstrap4","isTailwind","isBootstrap5","isMaterialTooltip","firstElementClassName","limitBarFirst","limitBarSecond","firstHandle","secondHandle","setAriaAttributes","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","tooltipPlacement","tooltipBeforeOpen","setTooltipTransform","tooltipCollision","tooltipOffsetValue","materialTooltipEventCallBack","wireMaterialTooltipEvent","tooltipPositionCalculation","transformProperties","openMaterialTooltip","refreshTooltip","tooltipContentElement","closeMaterialTooltip","tooltipTarget","checkTooltipPosition","tooltipClass","collidedPosition","tooltipCollidedPosition","showTipPointer","beforeCollision","beforeClose","tooltipBeforeClose","initializeTooltipProps","tooltipShowOn","firstBtn","secondBtn","buttonTitle","enabledRTL","buttonFocusOut","repeatButton","hVal","handleValueUpdate","getLimitCorrectedValues","changeHandleValue","repeatHandlerMouse","buttonClick","repeatInterval","materialChange","focusHandle","repeatHandlerUp","changeEvent","customTickCounter","bigNum","tickCount","orien","smallStep","showSmallTicks","largeStep","islargeTick","tickWidth","largestep","startValue","createTick","formatTicksValue","decimalPoints","ticksAlignment","triggerEvent","ticksWrapper","tickElements","scaleAlignment","spanElement","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","minValue","maxValue","limitBar","preHandlePos1","setHandlePosition","validateRangeValue","setRangeValue","modifyZindex","updateRangeValue","changeEventArgs","preHandlePos2","tempStartEnd","startHandleFixed","endHandleFixed","xyToPosition","stepValueCalculation","percentStep","remain","addition","positionToValue","handlepos","handleVal","focusedElement","checkRepeatedValue","handleValueAdjust","handleValue","handleNumber","minDiff","dragRangeBarMove","xPostion","yPostion","rangeBarDragged","secondPartRemain","firstPartRemain","valueAndPostion","dragRangeBarUp","wireButtonEvt","sliderFocusOut","rangeBarMousedown","elementClick","onresize","formResetHandler","changeSliderType","updateConfig","changeRtl","limitsPropertyChange","setMinMaxValue","setTooltip","trackPosition","trackClassName","colorRange","startingPosition","trackContainer","cx","cy","containerAttr","DatePicker","previousElementValue","isDateIconClicked","isAltKeyPressed","invalidValueString","checkPreviousValue","maskedDateValue","isIconClicked","isDynamicValueChanged","datepickerOptions","setTimeZone","timeZoneDiff","isDayLightSaving","updateInput","firstOffset","secondOffset","setAllowEdit","allowEdit","checkInvalidValue","enableMask","updateHtmlAttributeToWrapper","updateInputValue","previousDate","inputValueCopy","ariaAttrs","l10nLocale","INPUTWRAPPER","isDynamic","isCalendar","disabledDates","checkValue","strictMode","minMaxUpdates","minMaxUpdate","dateValue","tempFormat","changedArgs","errorClass","checkStringValue","returnDate","checkDateValue","valueDate","valueString","basicISOString","bindInputEvent","inputHandler","dateIconHandler","inputFocusHandler","inputBlurHandler","keydownHandler","inputChangeHandler","resetFormHandler","defaultKeyConfigs","keyboardModules","inputKeyActionHandle","unBindEvents","restoreValue","clearedArgs","popupUpdate","preventEventBubbling","interopAdaptor","invokeMethodAsync","updatedClassValues","updateHtmlAttributeToElement","updateCssClass","newCssClass","oldCssClass","calendarKeyActionHandle","focusArguments","openOnFocus","isPopupClicked","strictModeUpdate","changeTrigger","blurArguments","calendarKeyboardModules","calendarElement","documentHandler","generateTodayVal","clickedView","defaultAction","keyActionHandle","setActiveDescendant","targetdate","navigateTo","dateOptions","createCalendar","modelHeader","resetCalendar","preventArgs","setAriaDisabled","yearHeading","daySpan","monthSpan","navigatedEvent","navigatedArgs","selectCalendar","prevent_1","outOfRange","mobilePopupWrapper","openAnimation","setOverlayIndex","tableBodyElement","prevent_2","closeEventCallback","prevent","inputElementCopy","ensureInputAttribute","ngTag","getDefaultKeyConfig","checkHtmlAttributes","controlUp","controlDown","shiftPageUp","shiftPageDown","controlHome","controlEnd","nameAttribute","checkFormat","skeletonString","checkView","valueCopy","previousValCopy","dateIdString","isDisabledDate","dayOfTheWeek","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","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","fillWindow","canFlush","compressSlow","lookAheadCompleted","slideWindow","prevMatch","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","subarray","updateHash","chainLen","niceLen","bestEnd","bestLength","stringEnd","scanEnd1","scanEnd","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","Int32Array","codeCount","codeLength","codes","lengths","lengthTemp","nextCode","bitsCount","reverseBits","blTree","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","pPos","nodesCount","iIndex","constructHuffmanTree","buildLength","lastVal","minDepth","numNodes","numLeafs","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum_uint","s2","checkSumBitOffset","checksumIterationCount","checksumBase","extension","mimeType","getMimeType","downloadLink","saveInternal","hasDownloadAttribute","dataUrl_1","revokeObjectURL","reader_1","FileReader","onloadend","readAsDataURL","resizeClassList","Resize","tapped","isDblClk","findColumn","newarray","resizeColumn","footerTable","headerTextClone","contentTextClone","footerTextClone","contentDivTag","footerDivTag","columnIndexByField","indentWidthClone","detailsElement","contentText","footerText","wHeader","wFooter","wContent","columnbyindex","colMaxWidth","calcTableWidth","offsetWidthValue","refreshHeight","setHandlerHeight","getResizeHandlers","touchResizeStart","callAutoFit","getTargetColumn","refreshColumnWidth","refreshStackedColumnWidth","mtbody","ftbody","frtbody","ftr","frTr","parentElementWidth","appendHelper","getPointX","minMove","removeHelper","cancelResizeAction","resizeEnd","resizing","updateCursor","removeEvents","updateResizeEleHeight","getColData","mousemove","setHelperHeight","finalColumns","getSubColumns","calulateColumnsWidth","finalColumns_1","updateHelper","subColumns","isFrozenColResized","doubleTapEvent","getStackedWidth","headerRows_1","calcPos","fLeft","timeoutHandler","defaultFormats","fullDate","fullDateWithWeekday","fullDateTime","fullDateTime12h","fullDateTime24h","fullTime","fullTime12h","fullTime24h","hours12h","hours24h","keyboardDate","keyboardDateTime","keyboardDateTime12h","keyboardDateTime24h","monthAndDate","monthAndYear","monthShort","weekdayShort","normalDate","normalDateWithWeekday","shortDate","DateFnsUtils","is12HourCycleInCurrentLocale","getCurrentLocaleCode","getDiff","comparing","toJsDate","dateFnsParse","formatKey","isBeforeYear","isAfterYear","isWithinRange","numberToFormat","getMeridiemText","getNextMonth","getPreviousMonth","getMonthArray","monthArray","prevMonth","mergeDateAndTime","getWeekdays","getWeekArray","nestedWeeks","getYearRange","resizeListener","__resizeRAF__","__resizeTrigger__","__resizeListeners__","attachEvent","__resizeElement__","contentDocument","detachEvent","FRAME","RIPPLE","CheckBox","isMouseClick","clickTriggered","changeState","ariaState","updateVueArrayModel","focusHandler","initialCheckedValue","setDisabled","initWrapper","labelPosition","labelMouseDownHandler","labelMouseUpHandler","rippleElem","labelWrap","changeHandler","formElem","TextBox","isHiddenInput","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","prevOnChange","isBlank","raiseChangeEvent","updateHTMLAttrToElement","updateHTMLAttrToWrapper","checkAttributes","autocomplete","attributeName","apiAttributes","attrs_1","autoCompleteTxt","updatedCssClassValue","getInputValidClassList","initialValue","setInitialValue","inputClassName","resetForm","animationHandler","resetValue","localChange","interaction","resetInputHandler","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","uploadedFilesData","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","checkHTMLAttributes","renderPreLoadFiles","updateDirectoryAttributes","setLocalizedTexts","preLocaleObj","browseButton","localizedTexts","uploadWrapper","updateFileList","getKeyValue","keyValue","autoUpload","uploadButton","listParent","createFileList","actionButtons","removeActionButtons","renderActionButtons","checkActionButtonStatus","Browse","Upload","dropFilesHint","invalidMaxFileSize","invalidMinFileSize","invalidFileType","uploadFailedMessage","uploadSuccessMessage","removedSuccessMessage","removedFailedMessage","inProgress","readyToUploadMessage","pauseUpload","pause","resume","retry","fileUploadCancel","invalidFileSelection","totalFiles","formRendered","directoryUpload","renderBrowseButton","initializeUpload","isPreloadFiles","wireActionButtonEvents","serverActionButtonsEventBind","unwireActionButtonEvents","uploadButtonClick","clearButtonClick","uploadText","dropAreaWrapper","setDropArea","files","clearData","files_1","fileData","rawFile","validationMessages","minSize","statusCode","allowUpload","showFileList","sequentialUpload","dropTextArea","dropZoneElement","enableDropText","createDropTextHint","bindDropEvents","fileDropArea","pro","uploadStyle","newAttr","createAttribute","setAttributeNode","checkAutoUpload","sequenceUpload","isFileListCreated","updatedOldCssClass","browseButtonClick","onSelectFiles","metaData","getCurrentMetaData","file","abortUpload","resumeUpload","chunkUpload","removeFiles","fileInfo","targetMetaData","dropElement","dragHover","onPasteFile","dropEffect","dataTransfer","clipboardData","pasteFile","kind","renderSelectedFiles","getAsFile","getSelectedFiles","allFiles","getFilesData","nameElements","formUpload","isFormUpload","getFilesInArray","spinnerTarget","uploadSequential","checkActionComplete","removeFilesData","customTemplate","getLiElement","removeUploadedFile","removeDirectly","ajax","asyncSettings","formData","currentRequest","removingEventCallback","removeCompleted","removeFailed","postRawFile","updateFormData","customFormData","customData","updateCustomheader","getResponse","operation","updateStatus","statusElement","getFilesFromFolder","filesEntries","checkDirectoryUpload","webkitGetAsEntry","files_2","fileObj","fullPath","isDirectory","traverseFileTree","directoryReader","createReader","readFileFromDirectory","readEntries","pushFilesEntries","targetFiles","sortFilesList","sortFileList","getBase64","fileReader","directory","isModified","modifiedFilesData","progressInterval","isCanceled","updateInitialFileDetails","checkExtension","_internalRenderSelect","fileDetails","getFileType","webkitRelativePath","validatedFileSize","fileSource","dataFiles","updateSortedFileList","raiseActionComplete","allowFormUpload","saveUrl","singleUpload","previousListClone","removedList_1","oldList","createParentUL","dropFiles","extensions_1","fileSize","minSizeError","maxSizeError","minFileSize","maxFileSize","isPreLoadFile","isPreload","createCustomfileList","fileData_1","listItem","uploadTemplateFn","templateComplier","liTempCompiler","eventsArgs","formFileList","statusMessage","fileContainer","fileData_2","fileNameEle","getFileNameOnly","fileTypeEle","fileType","rtlContainer","truncateName","formValidateFileInfo","setListToFileInfo","infoEle","bytesToSize","getFileSize","createFormInput","mergeFileInfo","addInvalidClass","typeValidationMessage","fileData_3","fileData_4","fileNames","fileData_5","statusForFormUpload","fileData_6","formCustomFileList","isSelectedFile","fileData_7","textContainer","fileExtension","preventActionComplete","getSlicedName","nameElement","fileData_8","setInitialAttributes","filterfileList","filterFiles","updateLiStatus","createProgressBar","progressbarWrapper","progressBar","progressbarInnerWrapper","progressbarText","updateProgressbar","loaded","changeProgressValue","progressValue","uploadInProgress","customUI","cancelUploadingFile","updateProgressBarClasses","removecanceledFile","renderFailureState","removeProgressbar","pauseButton","reloadcanceledFile","uploadComplete","raiseSuccessEvent","uploadFailed","spinnerEle","getSelectedFileStatus","matchFiles","matchFilesIndex","selectFileIndex","selectedFileData","fileDataIndex","callType","progressAnimation","animateProgressBar","extensions","uploadTemplate","isMutiple","isDisabled","fileIndex","chunkSize","chunkIndex","totalChunk","chunkUploadComplete","chunkUploadInProgress","currentChunkIndex","uploadingEventCallback","chunkUploadFailed","eventCancelByArgs","removeIcon","checkChunkUpload","requestResponse","updateMetaData","sendNextRequest","removeChunkFile","removeChunkProgressBar","pauseIcon","chunkCount","cancelButton","retryRequest","retryAfterDelay","file_1","failureMessage","checkPausePlayAction","retryUpload","fromcanceledStage","retryElement","progressVal","totalChunks","abortIcon","sortedFilesData","sortedFileNames_1","attributes_2","uploadFiles_1","uploadFiles","serverReadFileBase64","totalCount","uploadFileCount","getFileRead","fileCount","getFileInfo","uploadFilesRequest","chunkEnabled","name_4","spliceFiles","beforeEventArgs","isLiRemoved","removingFiles_1","validUrl","_loop_5","fileUploadedIndex","removeFiles_1","fileDataFiles","pauseUploading","getFiles","resumeFiles","retryFailedFiles","cancelingFiles","cancelUpload","showHideUploadSpinner","getChildMapping","getProp","getNextChildMapping","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","exit","TransitionGroup","isMounting","firstRender","mounted","currentChildMapping","childFactory","TransitionGroupContext","Ripple","pulsate","rippleX","rippleY","rippleSize","leaving","setLeaving","rippleClassName","ripple","rippleVisible","ripplePulsate","rippleStyles","childClassName","childLeaving","childPulsate","touchRippleClasses","_t","_t2","_t3","_t4","enterKeyframe","exitKeyframe","pulsateKeyframe","TouchRippleRoot","TouchRippleRipple","TouchRipple","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","startTimerCommit","startCommit","oldRipples","fakeElement","sizeX","sizeY","getButtonBaseUtilityClass","buttonBaseClasses","ButtonBaseRoot","colorAdjust","disableTouchRipple","LinkComponent","onContextMenu","onFocusVisible","onTouchEnd","onTouchMove","TouchRippleProps","buttonRef","rippleRef","isFocusVisibleRef","handleFocusVisible","handleBlurVisible","focusVisibleRef","setFocusVisible","useRippleHandler","rippleAction","eventCallback","skipRippleAction","handleContextMenu","handleMouseLeave","handleBlur","isNonNativeButton","keydownRef","ComponentProp","buttonProps","handleOwnRef","mountedState","setMountedState","enableTouchRipple","paramsSerializer","serializedParams","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","common","settle","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","requestData","requestHeaders","auth","username","password","Authorization","btoa","baseURL","responseURL","ontimeout","timeoutErrorMessage","xsrfValue","onDownloadProgress","cancelToken","enhanceError","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","axiosKeys","otherKeys","baseIsTypedArray","ListItemTextRoot","inset","dense","disableTypography","primaryProp","primaryTypographyProps","secondaryProp","secondaryTypographyProps","toCamelCase","addPxToStyle","camel","detect","EXISTS","toAbsoluteIndex","IS_INCLUDES","partArgs","$","getBuiltIn","nativeObjectCreate","getOwnPropertyNamesModule","getOwnPropertyNamesExternal","getOwnPropertySymbolsModule","getOwnPropertyDescriptorModule","redefine","defineWellKnownSymbol","setToStringTag","$forEach","HIDDEN","TO_PRIMITIVE","$Symbol","$stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperty","$defineProperties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","unsafe","keyFor","useSetter","useSimple","$replacer","nativeAssign","argumentsLength","CONVERT_TO_STRING","codeAt","createIteratorConstructor","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","PrototypeOfArrayIteratorPrototype","arrayIterator","aPossiblePrototype","CORRECT_SETTER","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","mapfn","mapping","iteratorMethod","addToUnscopables","Arguments","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","spreadable","_Array$from","_context","ArrayPrototype","_Symbol$iterator","_Symbol","TO_ENTRIES","TableRoot","stickyHeader","borderCollapse","borderSpacing","captionSide","Table","TableBodyRoot","tablelvl2","TableCellRoot","fontWeightMedium","paddingCheckbox","componentProp","paddingProp","scopeProp","sizeProp","variantProp","isHeadCell","ariaSort","TableRowRoot","selectedOpacity","ltrim","rtrim","searchParams","USE_NATIVE_URL","redefineAll","anInstance","getIterator","$fetch","Headers","getInternalParamsState","getInternalIteratorState","URL_SEARCH_PARAMS","sequences","percentSequence","percentDecode","sequence","deserialize","parseSearchParams","updateSearchParams","validateArgumentsLength","passed","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","entryNext","updateURL","URLSearchParamsPrototype","entriesIndex","sliceIndex","fetch","FormControlLabelRoot","labelPlacement","controlProps","MenuItemRoot","disableGutters","gutters","backgroundClip","focusOpacity","disabledOpacity","menuItemRef","getOffsetTop","getOffsetLeft","getTransformOriginValue","resolveAnchorEl","PopoverRoot","Modal","PopoverPaper","anchorPosition","anchorReference","containerProp","marginThreshold","transitionDurationProp","getAnchorOffset","resolvedAnchorEl","getTransformOrigin","elemRect","getPositioningStyle","elemTransformOrigin","anchorOffset","heightThreshold","widthThreshold","setPositioningStyles","positioning","BackdropProps","variantComponent","TextFieldRoot","FormHelperTextProps","helperText","InputLabelProps","InputMore","_InputLabelProps$requ","displayRequired","helperTextId","inputLabelId","InputElement","FormHelperText","ToolbarRoot","TableHeadRoot","_getDndContextValue2","getGlobalContext","instanceSymbol","createSingletonDndContext","isGlobalInstance","getDndContextValue","DragLayer","DragLayerContainer","isCurrentlyMounted","unsubscribeFromOffsetChange","unsubscribeFromStateChange","Mexp","formulaEval","pop1","pop2","pop3","useCollector","_useState2","collected","setCollected","updateCollected","useMonitorOutput","onCollect","_useCollector2","getHandlerId","useDragDropManager","specRef","_useDragSourceMonitor2","useDragSourceMonitor","_spec$current","beginResult","globalMonitor","_registerSource2","useDragHandler","previewOptions","_useDropTargetMonitor2","useDropTargetMonitor","_registerTarget2","useDropHandler","useDragLayer","CheckboxRoot","defaultCheckedIcon","CheckBoxIcon","defaultIcon","CheckBoxOutlineBlankIcon","defaultIndeterminateIcon","IndeterminateCheckBoxIcon","_icon$props$fontSize","_indeterminateIcon$pr","iconProp","indeterminateIcon","indeterminateIconProp","appendOwnerState","existingProps","TooltipPopper","disableInteractive","popperInteractive","arrow","popperArrow","popperClose","TooltipTooltip","tooltipArrow","fontWeightRegular","TooltipArrow","hystersisOpen","hystersisTimer","composeEventHandler","eventHandler","_components$Popper","_components$Transitio","_components$Tooltip","_components$Arrow","_componentsProps$popp","describeChild","disableHoverListener","disableInteractiveProp","disableTouchListener","enterNextDelay","enterTouchDelay","followCursor","idProp","leaveDelay","leaveTouchDelay","PopperComponentProp","PopperComponent","TransitionComponentProp","setChildNode","arrowRef","setArrowRef","ignoreNonTouchEvents","closeTimer","enterTimer","leaveTimer","touchTimer","prevUserSelect","stopTouchInteraction","WebkitUserSelect","handleOpen","setChildIsFocusVisible","detectTouchStart","childrenProps","handleMouseOver","handleUseRef","handleFocusRef","positionRef","popperRef","nameOrDescProps","titleIsString","interactiveWrapperListeners","popperOptions","_PopperProps$popperOp","tooltipModifiers","modifiers","TooltipComponent","ArrowComponent","Arrow","popperProps","transitionProps","tooltipProps","tooltipArrowProps","_componentsProps$tool","_componentsProps$arro","TransitionPropsInner","ChipRoot","clickable","avatar","deletable","deleteIconColor","avatarColorPrimary","avatarColorSecondary","avatarSmall","iconSmall","deleteIconSmall","ChipLabel","isDeleteKeyboardEvent","keyboardEvent","avatarProp","clickableProp","deleteIconProp","chipRef","handleDeleteIconClick","moreProps","customClasses","CancelIcon","DragPreviewImage","Image","connected","ALLOWED_SPEC_METHODS","REQUIRED_SPEC_METHODS","SourceImpl","createSourceFactory","DragSource","createSource","TargetImpl","createTargetFactory","createTarget","symbolObservablePonyfill","defaultGenerator","configure","createClassNameGenerator","visited","outgoingEdges","makeOutgoingEdges","nodesHash","makeNodesHash","visit","predecessors","nodeRep","outgoing","uniqueNodes","jsxs","fillRule","_react2","_ref$fill","_ref$width","_ref$height","_ref$style","viewBox","refreshSearch","onSearchComplete","_helpers","_styles","Cropper","_getPrototypeOf2","containerRect","mediaSize","naturalWidth","naturalHeight","dragStartPosition","dragStartCrop","lastPinchDistance","lastPinchRotation","rafDragTimeout","rafPinchTimeout","cropSize","hasWheelJustStarted","preventZoomSafari","cleanEvents","onDragStopped","onMediaLoad","computeSizes","emitCropData","setInitialCrop","onMediaLoaded","onImageLoaded","initialCroppedAreaPixels","_getInitialCropFromCr","getInitialCropFromCroppedAreaPixels","crop","onCropChange","onZoomChange","videoWidth","videoHeight","getCropSize","aspect","recomputeCropPosition","getMousePoint","onPinchStart","getTouchPoint","onPinchMove","onInteractionStart","requestedPosition","restrictPosition","onInteractionEnd","onWheel","newZoom","zoomSpeed","setNewZoom","wheelTimer","getPointOnContainer","getPointOnMedia","zoomPoint","zoomTarget","maxZoom","minZoom","restrictedPosition","_computeCroppedArea","computeCroppedArea","getAspect","croppedAreaPercentages","croppedAreaPixels","onCropComplete","complete","pointA","pointB","getDistanceBetweenPoints","getRotationBetweenPoints","getCenter","newRotation","onRotationChange","mediaProps","_this$props4$crop","cropShape","showGrid","_this$props4$style","containerStyle","cropAreaStyle","mediaStyle","imageStyle","_this$props4$classes","containerClassName","cropAreaClassName","mediaClassName","imageClassName","crossOrigin","Img","onMediaError","onImgError","alt","Video","autoPlay","muted","onLoadedMetadata","controls","CropArea","OTHERMONTH","DISABLED","OVERLAY","FOCUSEDDATE","islamicModule","tempValues","copyValues","copyDate","setClass","todayButtonClick","showTodayButton","isTodayClicked","todayButtonEvent","checkPresentDate","triggerChange","createContent","previousDateTime","minMaxDate","localDate","renderMonths","isCustomDate","renderDays","isMultiSelect","tempDays","validateValues","renderYears","islamicRenderYears","renderDecades","islamicRenderDecade","renderTemplate","classNm","islamicRenderTemplate","getIdValue","storeView","switchView","rangeValidation","isDateSelected","addDate","tempDates","removeDate","setTodayDate","todayDate","setValueUpdate","selectDate","CalendarBase","calendarEleCopy","todayDisabled","spacebar","altRightArrow","altLeftArrow","headerElement","iconContainer","previousIcon","nextIcon","headerTitleElement","adjustLongHeaderSize","contentElement","createContentHeader","createContentBody","createContentFooter","getCultureValues","culShortNames","dayFormat","dayHeaderFormat","getCultureObjects","toCapitalize","tableHeadElement","shortNames","shiftArray","updateFooter","todayElement","l10","minimum","maximum","keyConfig","navigateTitle","dateWireEvents","serverModuleName","getViewNumber","renderDayCellArgs","multiSelection","focusedDate","depthValue","levelRestrict","keyboardNavigate","contentClick","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigatePrevious","navigateNextHandler","navigateNext","navigateHandler","triggerNavigate","tdEles","numCells","islamicRenderDays","isTodayDate","currentMonth","titleUpdate","setStartDate","weekEle","weekAnchor","numberOfDays","weekRule","finalDate","getWeek","dateFormatOptions","dayCell","dayLink","isOutOfRange","renderDayCellEvent","argsDate","otherMnthBool","disabledCls","getDateVal","updateFocus","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","yr","curYrs","minYr","minMonth","maxYr","maxMonth","localMonth","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","rowIterator","findLastDay","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","islamicDate","getIslamicDate","skipIndex","tempValueString","minFormatOption","minString","maxFormatOption","maxString","dayFormatOptions","monthFormatOptions","focusedEle","previousIconHandler","nextIconHandler","compareYear","compareDecade","stringVal","islamicPrevious","islamicNext","ld","gregorianFormat","islamicFormat","tzOffset","setDateDecade","setDateYear","checkPrevious","findNextTD","rangeValue","tmpDate","inValue","ComboBox","preventBlur","targetFocus","customValue","allowCustom","valueMuteChange","setHoverList","inlineSearch","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","currentPoints","prevEnd","curEnd","prevStart","curStart","isKeyNavigate","previousValue_1","updateCustomValueCallback","changeData","comboProps","isEscape","searchItem","Et","ke","bt","yt","wt","$e","pe","Ye","fastUniqueNumbers","MAX_SAFE_INTEGER","addUniqueNumber","generateUniqueNumber","Ot","St","xt","At","ne","kt","Lt","Mt","ie","Ke","Worker","Je","timerType","ze","nt","mc","MessageChannel","port1","port2","onStorage","storageArea","onmessage","onmessageerror","BroadcastChannel","he","APPLY","TELL","CLOSE","REGISTER","DEREGISTER","IDLE","ACTIVE","PROMPT","START","RESET","ACTIVATE","PAUSE","RESUME","MESSAGE","Me","isDead","isApplying","reApply","channel","awaitLeadership","sendAction","responseTime","assumeLead","fallbackInterval","PROMPTED","xe","allIdle","isLastActive","channelName","leaderElection","elector","waitForLeadership","activate","onMessage","onPrompt","onIdle","onActive","Ae","ct","ve","promptTimeout","promptBeforeIdle","immediateEvents","onPresenceChange","onAction","eventsThrottle","startOnMount","startManually","stopOnIdle","se","crossTab","Se","syncTimers","Oe","Ce","ae","Z","ee","Re","De","Ie","Ee","te","ce","le","ue","J","Rt","Ne","ge","prompted","He","be","U","de","ye","me","we","Fe","Le","Ue","Pe","ut","mt","ft","We","Be","ht","vt","Ve","Ge","Tt","It","isIdle","isPrompted","isLastActiveTab","getTabId","getRemainingTime","getElapsedTime","getTotalElapsedTime","getLastIdleTime","getLastActiveTime","getIdleTime","getTotalIdleTime","getActiveTime","getTotalActiveTime","setOnPresenceChange","setOnPrompt","setOnIdle","setOnActive","setOnAction","setOnMessage","Te","Nt","createMixins","lightBlue","activatedOpacity","addLightOrDark","intent","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","createPalette","contrastThreshold","getDefaultPrimary","getDefaultSecondary","getDefaultError","getDefaultInfo","getDefaultSuccess","getDefaultWarning","augmentColor","mainShade","lightShade","darkShade","modes","caseAllCaps","createTypography","fontWeightLight","fontWeightBold","htmlFontSize","allVariants","pxToRem2","coef","buildVariant","casing","overline","createShadow","mobileStepper","speedDial","appBar","drawer","snackbar","mixinsInput","paletteInput","transitionsInput","typographyInput","systemTheme","systemCreateTheme","muiTheme","pickersTranslations","enUSPickers","previousMonth","nextMonth","openPreviousView","openNextView","calendarViewSwitchingButtonAriaLabel","cancelButtonLabel","clearButtonLabel","okButtonLabel","todayButtonLabel","clockLabelText","hoursClockNumberText","minutesClockNumberText","secondsClockNumberText","openTimePickerDialogue","timeTableLabel","dateTableLabel","DEFAULT_LOCALE","LocalizationProvider","Utils","dateAdapter","dateFormats","dateLibInstance","adapterLocale","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","RotateAngle0","Portrait","isRotation","Landscape","finalSx","inSx","sx","systemProps","splitProps","fnValuesNs","fnRuleNs","functionPlugin","fnValues","styleRule","fnRule","GlobalContainerRule","GlobalPrefixedRule","separatorRegExp","addScope","jssGlobal","handleNestedGlobalContainerRule","handlePrefixedGlobalRule","parentRegExp","jssNested","getReplaceRef","replaceParentRefs","nestedProp","parentProp","parentSelectors","nestedSelectors","getOptions","prevOptions","nestingLevel","isNested","isNestedConditional","uppercasePattern","msPattern","toHyphenLower","hyphenateStyleName","hName","convertCase","hyphenate","hyphenatedProp","px","addCamelCasedVersion","regExp","motion","perspective","iterate","innerProp","_innerProp","defaultUnit","camelCasedOptions","jsCssMap","Moz","Webkit","appearence","noPrefill","supportedProperty","camelize","pascalize","textOrientation","writingMode","breakPropsOld","inlineLogicalOld","unprefixed","prefixed","pascalized","scrollSnap","overscrollBehavior","propMap","flex2012","propMap$1","prefixCss","propertyDetectors","key$1","el$1","cache$1","transitionProperties","transPropsRegExp","prefixTransitionCallback","prefixedValue","supportedValue","jssVendorPrefixer","prefixStyle","changeProp","supportedProp","changeValue","supportedValue$1","atRule","supportedKeyframes","jssPropsSort","prop0","prop1","vendorPrefixer","propsSort","getModalUtilityClass","ariaHidden","getPaddingRight","ariaHiddenSiblings","mountElement","elementsToExclude","blacklistTagNames","findIndexOf","handleContainer","containerInfo","restoreStyle","disableScrollLock","isOverflowing","ModalManager","containers","modals","modalIndex","modalRef","hiddenSiblings","getHiddenSiblings","containerIndex","nextTop","defaultManager","ModalUnstyled","BackdropComponent","closeAfterTransition","disableEscapeKeyDown","disablePortal","disableRestoreFocus","hideBackdrop","keepMounted","onBackdropClick","onTransitionEnter","onTransitionExited","exited","setExited","mountNodeRef","hasTransition","getHasTransition","getModal","mountNode","handleMounted","resolvedContainer","getContainer","isTopModal","handlePortalRef","Portal","ModalRoot","ModalBackdrop","Backdrop","backdrop","_componentsProps$root","commonProps","extendUtilityClasses","getSvgIconUtilityClass","SvgIconRoot","_theme$palette$ownerS","_theme$palette$ownerS2","htmlColor","titleAccess","focusable","initialStatus","appearStatus","unmountOnExit","mountOnEnter","nextCallback","nextStatus","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","appearing","findDOMNode","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","setNextCallback","doesNotHaveTimeoutOrListener","maybeNextCallback","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","selectedHandler","resizeWestWidth","RESTRICT_LEFT","dialogBorderResize","originalHeight","originalX","originalY","originalMouseX","originalMouseY","setLeft","previousWidth","setBorderResizeElm","calculateValues","getDOMElement","domElement","resizers","borderResizers","getEventType","targetEle","coordinates","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","DLG_TARGET","SCROLL_DISABLED","FULLSCREEN","dlgClosedBy","enableResize","setResize","getMinHeight","allowMaxHeight","preventVisibility","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","overlayClickEventArgs","checkPositionData","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","footerEle","minimumHeight","footerHeight","onResizing","onResizeComplete","isBlazorServerRender","computedHeight","computedWidth","resizeHandles","directionValue","resizeBegin","resizeComplete","boundary","createResize","wireWindowResizeEvent","unWireWindowResizeEvent","buttonObj","ftrTemplateContent","focusableElements","buttonIndex_1","isTagName","isContentEdit","primaryButtonEle","setMaxHeight","initialRender","setzIndex","calculatezIndex","setTargetContent","setHeader","renderCloseIcon","setButton","allowDragging","setAllowDragging","setIsModal","dlgContainer","dlgOverlay","refElement","resetResizeIcon","openEventArgs","unBindEvent","storeActiveElement","positionChange","setOverlayZindex","dialogConHeight","resizeIcon","zIndexValue","dragObj","dragEventArgs","buttonContent","buttonType","footerBtn","buttonClickHandler","innerContentElement","templateProps","templateValue","dialogItem","closeIconBtnObj","DLG_CLOSE_ICON","closeIconTitle","getValidFocusNode","disableElement","getAutoFocusNode","validNode","elementMatch","msGetRegionContent","updateSanitizeContent","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","setPopupZindex","windowResizeHandler","classArray","isFullScreen","fullScreen","closedBy","closeAnimation","getButtons","createDialog","formOptions","formButtonModel","buttonPropModel","alertDialogObj","dialogElement","alertButtonModel","okButton","setAlertButtonModel","alertOptions","confirmDialogObj","okButtonModel","cancelButtonModel","setConfirmButtonModel","confirmOptions","getGradientType","LinearGradient","RadialGradient","Stop","Margin","Gradient","ShapeStyle","StrokeStyle","TextStyle","lineUtil1","lineUtil2","l1","l2","na","nb","ub","mousePosition","StrictMode","Profiler","Suspense","_status","_result","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","lazy","_payload","_init","useDebugValue","useImperativeHandle","ba","da","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","oa","pa","qa","ma","la","xlinkHref","ra","sa","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Qa","_render","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","Ya","_wrapperState","initialChecked","Za","$a","ab","bb","eb","db","fb","defaultSelected","gb","hb","ib","jb","kb","lb","mb","MSApp","execUnsafeLocalFunction","namespaceURI","pb","qb","gridArea","lineClamp","rb","sb","tb","vb","wb","xb","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","$b","memoizedState","dehydrated","ac","cc","bc","ec","fc","gc","hc","ic","jc","kc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","targetContainers","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","LN2","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","nd","od","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","isPropagationStopped","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","isTrusted","ud","detail","vd","Ad","screenX","screenY","getModifierState","zd","fromElement","movementX","movementY","Bd","Dd","Fd","Hd","elapsedTime","pseudoElement","Jd","Ld","Md","Esc","Spacebar","Up","Down","Del","Win","Apps","MozPrintableKey","Nd","8","9","12","13","16","17","18","19","20","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","Od","Alt","Control","Meta","Shift","Pd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","Vd","Xd","Zd","deltaX","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","$d","documentMode","fe","datetime","tel","oe","qe","oninput","HTMLIFrameElement","contentEditable","Qe","anchorNode","focusNode","focusOffset","Xe","Ze","Yb","af","bf","cf","df","Nb","ef","gf","hf","je","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","hg","jg","kg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","firstContext","lanes","ug","vg","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","Mg","Ng","Og","getSnapshotBeforeUpdate","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","mutableReadLanes","Nh","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","hi","ji","ki","mi","baseLanes","ni","oi","pi","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","_reactRootContainer","hj","ij","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","Wj","Xj","pingCache","Yj","Zj","va","bk","dk","rangeCount","focusedElem","selectionRange","ek","setStart","addRange","setEnd","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","hk","unstable_observedBits","unmount","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","supportsFiber","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","unstable_forceFrameRate","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","ReactPropTypesSecret","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","isAsyncMode","isConcurrentMode","isContextProvider","isForwardRef","isFragment","isPortal","isProfiler","isStrictMode","isSuspense","Axios","mergeConfig","defaultConfig","axios","instanceConfig","CancelToken","promises","InterceptorManager","dispatchRequest","interceptors","fulfilled","rejected","getUri","eject","throwIfCancellationRequested","throwIfRequested","fns","normalizedName","isAxiosError","lineNumber","columnNumber","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","originURL","msie","urlParsingNode","resolveURL","protocol","hostname","port","requestURL","toGMTString","executor","resolvePromise","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","setCacheAdd","setCacheHas","rsModifier","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","outerFn","tryLocsList","protoGenerator","Generator","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","isGeneratorFunction","genFun","ctor","awrap","skipTempReset","rootRecord","rval","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","cloneSymbol","baseIsMap","baseIsSet","super_","prefilter","lhs","rhs","groupCollapsed","groupEnd","logger","actionTransformer","titleFormatter","started","startedTime","took","stateTransformer","errorTransformer","logErrors","diffPredicate","DeepDiff","observableDiff","applyDiff","applyChange","revertChange","isConflict","createLogger","MODEL","VENDOR","MOBILE","TABLET","SMARTTV","mergedRegexes","lowerize","rgx","maps","oldsafari","1.2","1.3","amazon","sprint","HTC","Sprint","windows","ME","2000","XP","Vista","7","8.1","10","RT","cpu","UAParser","uastring","rgxmap","architecture","setUA","BROWSER","MAJOR","CPU","ARCHITECTURE","DEVICE","CONSOLE","WEARABLE","EMBEDDED","ENGINE","OS","jQuery","Zepto","_raf2","_raf3","_domCss2","_propTypes2","_isString2","_getScrollbarWidth2","_returnFalse2","_getInnerWidth2","_getInnerHeight2","_defaultRenderElements","getScrollLeft","getScrollTop","getScrollWidth","getScrollHeight","getClientWidth","getClientHeight","getValues","getThumbHorizontalWidth","getThumbVerticalHeight","getScrollLeftForOffset","getScrollTopForOffset","scrollToLeft","scrollToTop","scrollToRight","scrollToBottom","handleTrackMouseEnter","handleTrackMouseLeave","handleHorizontalTrackMouseDown","handleVerticalTrackMouseDown","handleHorizontalThumbMouseDown","handleVerticalThumbMouseDown","handleWindowResize","handleScroll","handleDrag","handleDragEnd","didMountUniversal","componentDidMountUniversal","universal","removeListeners","requestFrame","hideTracksTimeout","detectScrollingInterval","_ref2$scrollLeft","_ref2$scrollTop","_ref2$scrollWidth","_ref2$scrollHeight","_ref2$clientWidth","_ref2$clientHeight","thumbSize","thumbMinSize","_view","trackWidth","trackHorizontal","_props2","_view2","trackHeight","trackVertical","_view3","_view4","thumbHorizontal","thumbVertical","teardownDragging","_props3","onScroll","onScrollFrame","viewScrollLeft","viewScrollTop","detectScrolling","onScrollStart","handleScrollStartAutoHide","autoHide","showTracks","onScrollStop","handleScrollStopAutoHide","hideTracks","targetLeft","thumbWidth","thumbHeight","handleDragStart","prevPageX","prevPageY","disableSelectStyle","onselectstart","disableSelectStyleReset","setupDragging","handleDragEndAutoHide","trackMouseOver","handleTrackMouseEnterAutoHide","handleTrackMouseLeaveAutoHide","scrolling","autoHideTimeout","handleScrollStart","lastViewScrollLeft","lastViewScrollTop","handleScrollStop","raf","_update","_props4","hideTracksWhenNotNeeded","trackHorizontalWidth","thumbHorizontalWidth","thumbHorizontalStyle","trackVerticalHeight","thumbVerticalHeight","thumbVerticalStyle","trackHorizontalStyle","trackVerticalStyle","scrollbarWidth","_props5","renderView","renderTrackHorizontal","renderTrackVertical","renderThumbHorizontal","renderThumbVertical","autoHideDuration","autoHeight","autoHeightMin","autoHeightMax","containerStyleDefault","containerStyleAutoHeight","viewStyle","viewStyleDefault","viewStyleAutoHeight","viewStyleUniversalInitial","trackAutoHeightStyle","trackHorizontalStyleDefault","trackVerticalStyleDefault","thumbHorizontalStyleDefault","thumbVerticalStyleDefault","renderViewDefault","renderTrackHorizontalDefault","renderTrackVerticalDefault","renderThumbHorizontalDefault","renderThumbVerticalDefault","vendors","caf","_now","cp","cancelled","polyfill","titleCase","hasSpace","hasSeparator","separatorSplitter","unseparate","hasCamel","camelSplitter","uppers","uncamelize","IS_UNITLESS","maybe","MsOverflowStyle","_domCss","_getComputedStyle","finalStyle","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","feature","detection","POLYFILL","NATIVE","windowNames","getWindowNames","inspectSource","functionToString","FAILS_ON_PRIMITIVES","arrayWithoutHoles","nonIterableSpread","_isIterable","checkCorrectnessOfIteration","iteratorClose","ENTRIES","returnMethod","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","isIterable","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","entryVirtual","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","nativeSlice","fin","_Object$getOwnPropertySymbols","objectWithoutPropertiesLoose","$indexOf","arrayMethodIsStrict","nativeIndexOf","NEGATIVE_ZERO","STRICT_METHOD","searchElement","_Object$keys","WrappedWellKnownSymbolModule","_Object$defineProperty","_Object$create","_Object$setPrototypeOf","_Object$getPrototypeOf","nativeGetPrototypeOf","$map","$values","$reduce","CHROME_VERSION","IS_NODE","IS_RIGHT","deleteCount","insertCount","actualDeleteCount","actualStart","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","$findIndex","SKIPS_HOLES","$filter","FunctionPrototype","$some","$every","addMapEntry","addSetEntry","isHostObject","cloneFunc","cloneMap","cloneSet","reLeadingDot","UNORDERED_COMPARE_FLAG","StringPrototype","notARegExp","correctIsRegExpLogic","nativeStartsWith","CORRECT_IS_REGEXP_LOGIC","MATCH","error1","error2","$trim","forcedStringTrimMethod","whitespaces","EOF","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getInternalURLState","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","ipv4","numbersSeen","ipv4Piece","swaps","pieceIndex","pointer","serializeHost","ignore0","ipv6","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","ftp","http","https","wss","scheme","includesCredentials","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","seenAt","seenBracket","seenPasswordToken","fragment","encodedCodePoints","URLConstructor","urlString","searchParamsState","serializeURL","getOrigin","getProtocol","getUsername","getPassword","getHost","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","nativeRevokeObjectURL","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","digitToBasic","digit","adapt","numPoints","baseMinusTMin","inputLength","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","encoded","parseIntImplementation","$parseInt","iterableToArrayLimit","_getIterator","scheduler","boundArgs","$entries","655","__rest","__param","__metadata","__awaiter","__generator","__createBinding","__exportStar","__values","__read","__spreadArrays","__spreadArray","__asyncGenerator","__asyncDelegator","__asyncValues","__makeTemplateObject","__importStar","__importDefault","__classPrivateFieldGet","__classPrivateFieldSet","throw","trys","ops","156","111","useReactToPrint","copyStyles","pageStyle","removeAfterPrint","suppressErrors","startPrint","onAfterPrint","onPrintError","documentTitle","handleRemoveIframe","logMessages","triggerPrint","onBeforePrint","onBeforeGetContent","bodyClass","linkTotal","linksLoaded","linksErrored","fontsLoaded","fontsErrored","FontFace","family","core","fix","_extends3","_inheritsLoose2","stateName","stateUpdaterName","BaseComponent","WithState","updateStateValue","updateFn","_setStatic","_getDisplayName","hocName","flattenNames","_isString3","_forOwn3","_isPlainObject3","_map3","things","mergeClasses","_cloneDeep3","toMerge","autoprefix","_forOwn2","msBorderRadius","MozBorderRadius","OBorderRadius","WebkitBorderRadius","msBoxShadow","MozBoxShadow","OBoxShadow","WebkitBoxShadow","WebkitTouchCallout","KhtmlUserSelect","MozUserSelect","msUserSelect","WebkitBoxFlex","MozBoxFlex","WebkitFlex","msFlex","WebkitFlexBasis","WebkitJustifyContent","msTransition","MozTransition","OTransition","WebkitTransition","msTransform","MozTransform","OTransform","WebkitTransform","absolute","otherElementStyles","otherStyle","Span","Hover","handleMouseOut","onMouseOut","Active","setProp","paramIndex","decorator","metadataKey","metadataValue","_arguments","verb","ar","il","jl","fulfill","cooked","restrictPositionCoord","maxPosition","limitArea","noOp","rotateAroundMidPoint","xMid","yMid","degrees","radian","translateSize","_outerBounds$reduce","mediaWidth","mediaHeight","_translateSize","_translateSize2","limitAreaFn","widthInPixels","heightInPixels","isImgWiderThanHigh","sizePixels","mediaZoom","getZoomFromCroppedAreaPixels","cropZoom","_styled","mediaStyles","willChange","lineBorder","cropperLines","cropperArea","roundShape","colorName","conversions","reverseKeywords","channels","hwb","cmyk","lab","lch","keyword","ansi16","ansi256","hcg","apple","comparativeDistance","rdif","gdif","bdif","diffc","reversed","currentClosestKeyword","currentClosestDistance","t1","t2","t3","smin","lmin","sl","vmin","bl","z2","ansi","mult","rem","colorString","chroma","deriveBFS","fromModel","graph","models","buildGraph","adjacents","adjacent","wrapConversion","toModel","conversion","routes","wrappedFn","wrapRounded","wrapRaw","colorConvert","colorName$1","getRgba","getHsla","getRgb","getHwb","hexString","hexDouble","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","reverseNames","hexAlpha","Color","valid","lightness","whiteness","setSpace","rgbArray","hsvArray","hwbArray","cmykArray","hslaArray","setChannel","saturation","saturationv","blackness","rgbNumber","luminosity","lum","chan","contrast","lum1","lum2","contrastRatio","whiten","blacken","clearer","opaquer","mixinColor","weight","w1","w2","maxes","capped","chans","sname","svalues","chartjsColor","isNullOrUndef","valueOrDefault","valueAtIndexOrDefault","loopable","arrayEquals","ilen","v0","v1","klen","_merger","tval","sval","_mergerIf","mergeIf","merger","dst","inherits","ChartElement","Surrogate","__super__","_deprecated","helpers_core","callCallback","getValueOrDefault","getValueAtIndexOrDefault","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","chart","clearRect","roundedRect","arc","drawPoint","rad","lineTo","SQRT1_2","_isPointInArea","unclipArea","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","helpers_options","toLineHeight","toPadding","_parseFont","globalDefaults","toFontString","cacheable","exports$2","_factorize","log10","LOG10E","powerOf10","helpers_math","helpers$1","math","getRtlAdapter","rectX","xPlus","leftForLtr","_itemWidth","overrideTextDirection","getPropertyPriority","prevTextDirection","restoreTextDirection","configuration","_model","_start","c0","tooltipPosition","core_element","exports$3","currentStep","numSteps","onAnimationProgress","onAnimationComplete","core_animation","onComplete","core_animations","animations","addAnimation","animating","cancelAnimation","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","unlistenArrayEvents","stub","_chartjs","DatasetController","datasetIndex","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","scales","getDataset","scalesOpts","xAxisID","xAxes","yAxisID","yAxes","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","createMetaDataset","_datasetIndex","createMetaData","addElementAndReset","updateElement","buildOrUpdateElements","isExtensible","resyncElements","_configure","_cachedDataOpts","easingValue","_resolveDatasetElementOptions","_resolveDataElementOptions","readKey","datasetOpts","elementOptions","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","hoverOptions","numMeta","numData","insertElements","onDataPush","onDataPop","onDataShift","onDataSplice","onDataUnshift","core_datasetController","TAU","clipArc","startAngle","endAngle","pixelMargin","angleMargin","outerRadius","innerRadius","drawBorder","vm","borderAlign","fullCircles","drawFullCircleBorders","element_arc","inLabelRange","mouseX","hoverRadius","chartX","chartY","pointRelativePosition","getAngleFromPoint","betweenAngles","withinRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","circumference","fillStyle","strokeStyle","valueOrDefault$1","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","currentVM","spanGaps","_children","globalOptionLineElements","lastDrawnIndex","_loop","setLineDash","lineDashOffset","valueOrDefault$2","defaultColor$1","xRange","hitRadius","pointStyle","element_point","mouseY","inXRange","inYRange","chartArea","defaultColor$2","getBarBounds","half","orig","v2","parseBorderWidth","maxW","maxH","borderSkipped","parseBorderSkipped","skipX","skipY","element_rectangle","rects","boundingRects","fillRect","Arc","deprecated","valueOrDefault$3","computeFitCategoryTraits","ruler","barThickness","stackCount","pixels","_length","getTicks","getPixelForTick","computeMinSampleSize","categoryPercentage","barPercentage","offsetGridLines","bar","controller_bar","scaleOpts","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","_updateElementGeometry","vscale","getBasePixel","isHorizontal","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","_getStacks","metasets","_getMatchingVisibleMetas","stacks","getStackCount","getStackIndex","getPixelForValue","_startPixel","_endPixel","imeta","ivalue","stackLength","_parseValue","computeFlexCategoryTraits","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","tooltips","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","generateLabels","controller","legendItem","cutoutPercentage","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","isDatasetVisible","ratioX","ratioY","arcs","cutout","chartWeight","_getRingWeight","endX","endY","contains0","contains90","contains270","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","animationOpts","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","defaultClip","toClip","controller_line","showLine","_showLine","lineTension","_scale","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","dsMeta","stackedRightValue","sumPos","sumNeg","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","capControlPoint","cubicInterpolationMode","splineCurveMonotone","splineCurve","resolve$3","angleLines","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","scatter","bubble","polarArea","pie","radar","getRelativePosition","parseVisibleItems","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","indexMode","core_interaction","nearest","intersectsItem","filterByPosition","sortByWeight","getCombinedMax","maxPadding","updateDims","getPadding","boxPadding","sizes","getMargins","marginForPositions","fitBoxes","boxes","refit","refitBoxes","placeBoxes","userPadding","core_layouts","addBox","_layers","removeBox","layoutItem","layoutOptions","availableWidth","availableHeight","layoutBoxes","wrapBoxes","leftAndTop","rightAndBottom","buildLayoutBoxes","verticalBoxes","horizontalBoxes","vBoxMaxWidth","hBoxMaxHeight","layouts","setLayoutDims","updatePos","handleMaxPadding","stylesheet","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","eventListenerOptions","supports","createDiv","addResizeListener","expando","CSS_PREFIX","CSS_SIZE_MONITOR","_reset","createResizer","ticking","throttled","maintainAspectRatio","renderProxy","watchForRender","removeResizeListener","unwatchForRender","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","getRootNode","rootNode","containsStyles","injectCSS","acquireContext","renderHeight","renderWidth","displayWidth","aspectRatio","displayHeight","initCanvas","releaseContext","proxies","fromNativeEvent","addEvent","removeEvent","core_plugins","_plugins","_cacheId","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","addScalesToLayout","valueOrDefault$8","getRtlHelper","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","afterFooter","positioners","eventPosition","nearestElement","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","indexScale","valueScale","getLabelForIndex","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","getTitle","getBeforeBody","getBody","bodyItems","bodyItem","getAfterBody","getFooter","existingModel","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","combinedBodyLength","titleLineCount","footerLineCount","widthPadding","maxLineWidth","getTooltipSize","paddingAndSize","radiusAndPadding","getBackgroundPoint","olf","orf","midX","midY","determineAlignment","drawCaret","tooltipPoint","x3","y3","ptX","ptY","drawTitle","rtlHelper","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","handleEvent","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","mergeScaleConfig","slen","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","hasId","positionIsHorizontal","compare2Level","onHover","responsiveAnimationDuration","Chart","initConfig","_bufferedRender","retinaScale","initToolTip","getMaximumWidth","getMaximumHeight","newSize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationObject","easingFunction","stepDecimal","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementsAtXAxis","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","updateHoverStyle","bufferedRequest","core_controller","abstract","DateAdapter","Controller","scaleMerge","_create","override","members","core_adapters","core_ticks","tickValue","logDelta","tickString","logTick","numExponential","numDecimal","logarithmic","valueOrDefault$a","getPixelForGridLine","validIndex","lineValue","computeLabelSizes","tickFonts","tickFont","nestedLabel","widest","highest","heights","widestLabelSize","highestLabelSize","valueAt","gcLen","garbageCollect","getTickMarkLength","drawTicks","tickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","parseTickFontOptions","nonSkipped","ticksToFilter","majorStart","majorEnd","tick","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","Scale","zeroLineIndex","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","samplingEnabled","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","numItems","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","startPixel","endPixel","reversePixels","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","labelSizes","maxLabelWidth","maxLabelHeight","maxLabelDiagonal","numTicks","labelRotation","_isVisible","_getLabelSizes","toDegrees","scaleLabelOpts","gridLineOpts","firstLabelSize","lastLabelSize","lineSpace","tickPadding","isRotated","angleRadians","toRadians","cosRotation","sinRotation","labelHeight","labelWidth","handleMargins","isFullWidth","_getScaleLabel","getValueForPixel","decimal","getDecimalForPixel","pixel","getBaseValue","avgMajorSpacing","axisLength","ticksLimit","maxTicksLimit","_tickSize","majorIndices","getMajorIndices","numMajorIndices","skipMajors","factors","evenMajorSpacing","getEvenSpacing","calculateSpacing","optionTicks","rot","_computeGridLineItems","alignedLineValue","tx1","ty1","tx2","ty2","lineColor","ticksLength","tl","axisWidth","axisHalfWidth","alignPixel","_alignPixel","alignBorderValue","_computeLabelItems","textOffset","isMirrored","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelX","scaleLabelY","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","gz","_draw","core_scale","isNullOrUndef$1","scale_category","ticksOpts","minIndex","_startValue","_valueRange","valueCategory","_defaults","isNullOrUndef$2","scale_linearbase","handleTickRangeOptions","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","maxTicks","stepSize","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","fixedStepSize","generationOptions","dataRange","niceMin","niceMax","numSpaces","maxNumSpaces","rmin","rmax","niceNum","_decimalPlaces","almostWhole","almostEquals","generateTicks","ticksAsNumbers","_endValue","defaultConfig$1","stackData","neg","getOrCreateStack","relativePoints","updateMinMax","scale_linear","hasStacks","NEGATIVE_INFINITY","stackValues","_defaults$1","valueOrDefault$b","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","minNotZero","valuesPerStack","valuesForType","minVal","maxVal","significand","tickVal","endExp","endSignificand","lastTick","generateTicks$1","tickValues","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","numberOrZero","scale_radialLinear","drawingArea","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","longestText","getIndexAngle","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","pointLabelOpts","tickBackdropHeight","outerDistance","pointLabelPosition","pointLabelFontColor","drawPointLabels","drawRadiusLine","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","INTERVALS","UNITS","sorter","getMin","getMax","interpolate$1","skey","tkey","i0","lo","toTimestamp","_adapter","determineUnitForAutoTicks","minUnit","ticksFromTimestamps","majorUnit","setMajorTicks","scale_time","adapters","displayFormats","labelsAdded","timestamps","dataLabels","arrayUnique","_table","_timestamps","timeOpts","getLabelCapacity","distribution","unitStepSize","_unit","determineUnitForFormatting","_majorUnit","determineMajorUnit","buildLookupTable","_offsets","computeOffsets","tooltipFormat","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","_defaults$4","displayFormat","radialLinear","FORMATS","propagate","mappers","decodeFill","computeBoundary","computeCircularBoundary","scaleBottom","scaleTop","scaleZero","computeLinearBoundary","resolveTarget","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","p0","d0","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","valueOrDefault$e","getBoxWidth","labelOpts","usePointStyle","boxWidth","onLeave","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","lineWidths","vPadding","columnWidths","columnHeights","currentColWidth","currentColHeight","lineDefault","legendHeight","legendWidth","alignmentOffset","blockSize","itemHeight","realX","SQRT2","drawLegendBox","halfFontSize","xLeft","yMiddle","_getLegendItemAt","hitBox","createNewLegendAndAttach","legendOpts","plugin_legend","_element","beforeInit","afterEvent","Title","titleX","titleY","fontOpts","createNewTitleBlockAndAttach","titleOpts","titleBlock","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","_getParentNode","constrainedNode","constrainedContainer","hasCNode","hasCContainer","filterCallback","findNextWhere","arrayToSearch","currentItem","findPreviousWhere","epsilon","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","boundingRect","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","currentStyle","forceRatio","pixelRatio","pixelSize","arrayOfThings","nestedThing","longest","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","core_helpers","_adapters","animationService","Interaction","scaleService","Ticks","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","postfixEval","UserDefined","Exception","eval","lex","toPostfix","popped","prep","inc","eva","acos","atan","cosh","acosh","fact","tanh","atanh","mul","sinh","asinh","sigma","preced","2","6","11","14","type1Asterick","type3Asterick","type6","newAr","tokenize","addToken","changeSignObj","changeSign","closingParObj","openingParObj","ptc","inpStr","allowed","bracToClose","asterick","cToken","cType","cEv","cPre","cShow","hasDec","isDegree","choice","toRadian","inverse","pow10x","sinha","cosha","__webpack_amd_options__","calculateChange","initialA","checkboardCache","serverCanvas","checkboard","Checkboard","renderers","reactCSS","Alpha","unbindEventListeners","gradient","shadow","slider","overwrite","VALID_KEY_CODES","EditableInput","blurValue","setUpdatedValue","getNumberValue","getArrowOffset","updatedValue","dragMax","getValueObjectWithLabel","inputId","arrowOffset","spellCheck","hideLabel","_h","Hue","_props$direction","Raised","zDepth","_ref$styles","passedStyles","Saturation","_container$getBoundin","bright","renderWindow","getContainerRenderWindow","simpleCheckForValidColor","toState","oldHue","isValidHex","getContrastingColor","isvalidColorString","stringWithoutDegree","ColorWrap","Picker","ColorPicker","onChangeComplete","handleSwatchHover","onSwatchHover","optionalEvents","Focus","_ref$onClick","_ref$title","_ref$focusStyle","focusStyle","transparent","swatch","AlphaPointer","picker","AlphaPicker","_ref$className","BlockSwatches","swatches","Swatch","Block","triangle","hexCode","card","deepPurple","lightGreen","amber","deepOrange","blueGrey","CircleSwatch","circleSize","circleSpacing","Circle","material","ChromeFields","toggleViews","showHighlight","hideHighlight","iconHighlight","UnfoldMoreHorizontalIcon","onMouseEnter","ChromePointer","ChromePointerCircle","Chrome","disableAlpha","toggles","CompactColor","dot","colorUtils","CompactFields","HEXwrap","HEXinput","HEXlabel","RGBwrap","RGBinput","RGBlabel","Compact","hoverSwatch","Github","triangleShadow","GithubSwatch","SliderPointer","HuePicker","HuePointer","Hex","PhotoshopPicker","fieldSymbols","PhotoshopPointerCircle","triangleBorder","Extend","leftInside","rightInside","PhotoshopButton","PhotoshopPreviews","currentColor","new","Photoshop","_props$styles","_props$className","previews","PhotoshopPointer","PhotoshopFields","SketchFields","double","SketchPresetColors","swatchWrap","colorObjOrString","Sketch","sliders","activeColor","SliderSwatch","SliderSwatches","SwatchesColor","CheckIcon","SwatchesGroup","Swatches","Twitter","hexcode","GooglePointerCircle","GooglePointer","GoogleFields","_values2","hsvValue","input2","label2","rgbValue","hslValue","Google","_tag","isImportRule","stylis_min","toSheet","Sheet","ruleSheet","stylisOptions","stylis","Stylis","murmurhash2_32_gc","couldBeSelectorInterpolation","toAdd","_len2","_key2","EnterLeaveCounter","isNodeInDocument","enteringNode","previousLength","leavingNode","safari","MonotonicInterpolant","ys","dx","dys","dxs","c1s","m2","mNext","dxNext","c2s","c3s","_i3","invDx","_common","xHere","diffSq","getNodeClientOffset","_el$getBoundingClient","getEventClientOffset","getDragPreviewOffset","sourceNode","anchorPoint","_document$documentEle","isImageNode","dragPreviewNodeOffsetFromClient","offsetFromDragPreview","sourceWidth","sourceHeight","anchorX","anchorY","_getDragPreviewSize","dragPreviewWidth","dragPreviewHeight","getDragPreviewSize","isManualOffsetY","calculateYOffset","_nativeTypesConfig","TEXT","getDataFromDataTransfer","typesToTry","resultSoFar","typeToTry","nativeTypesConfig","NativeTypes","exposeProperties","matchesTypes","urls","NativeDragSource","initializeExposedProperties","newProperties","matchNativeItemType","dataTransferTypes","nativeItemType","OptionsReader","emptyImage","HTML5BackendImpl","sourcePreviewNodes","sourcePreviewNodeOptions","sourceNodes","sourceNodeOptions","dragStartSourceIds","dropTargetIds","dragEnterTargetIds","currentNativeSource","currentNativeHandle","currentDragSourceNode","altKeyPressed","mouseMoveTimeoutTimer","asyncEndDragFrameId","dragOverTargetIds","endDragNativeItem","isDraggingNativeItem","endDragIfSourceWasRemovedFromDOM","clearCurrentDragSourceNode","handleTopDragStartCapture","handleTopDragStart","nativeType","setDragImage","_this$getCurrentSourc","getCurrentSourcePreviewNodeOptions","dragPreviewOffset","setCurrentDragSourceNode","captureDraggingState","beginDragNativeItem","handleTopDragEndCapture","handleTopDragEnterCapture","enterLeaveCounter","handleTopDragEnter","getCurrentDropEffect","handleTopDragOverCapture","handleTopDragOver","handleTopDragLeaveCapture","leave","handleTopDropCapture","_this$currentNativeSo","loadDataTransfer","handleTopDrop","handleSelectStart","dragDrop","isContentEditable","getActions","_this$dragStartSource","_this$dragOverTargetI","__isReactDndBackendSetUp","addEventListeners","removeEventListeners","handleDragOver","getCurrentSourceNodeOptions","createNativeDragSource","getEmptyImage","_LastPageIcon","_FirstPageIcon","_KeyboardArrowRight","_KeyboardArrowLeft","_KeyboardArrowLeft2","_KeyboardArrowRight2","_FirstPageIcon2","_LastPageIcon2","TablePaginationActions","getItemAriaLabel","showFirstButton","showLastButton","LastPageIcon","FirstPageIcon","KeyboardArrowRight","KeyboardArrowLeft","getTablePaginationUtilityClass","_InputBase","tablePaginationClasses","TablePaginationRoot","TablePaginationToolbar","TablePaginationSpacer","TablePaginationSelectLabel","selectLabel","TablePaginationSelect","TablePaginationMenuItem","TablePaginationDisplayedRows","displayedRows","defaultLabelDisplayedRows","defaultGetAriaLabel","ActionsComponent","colSpanProp","selectId","rowsPerPageOption","_createElement","getTableSortLabelUtilityClass","tableSortLabelClasses","TableSortLabelRoot","TableSortLabelIcon","ArrowDownwardIcon","getTableFooterUtilityClass","tableFooterClasses","TableFooterRoot","hadFocusVisibleRecentlyTimeout","hadKeyboardEvent","hadFocusVisibleRecently","inputTypesWhitelist","handlePointerDown","handleVisibilityChange","visibilityState","isFocusVisible","focusTriggersKeyboardModality","stateClasses","disableGlobal","productionPrefix","seed","seedPrefix","getNextCounterId","styleSheet","defaultTimeout","Fade","webkitTransition","SystemGlobalStyles","FilledInputRoot","borderTopLeftRadius","borderTopRightRadius","FilledInputInput","caretColor","filledInputComponentsProps","mouseMoveEvent","mouseMoveTarget","isBodyContainer","formatPosition","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","ARROW_TIP","tipClass","ARROW_TIP_OUTER","ARROW_TIP_INNER","tooltipEle","elePos","mouseTrail","getTooltipPosition","openPopupHandler","closePopupHandler","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","findTarget","needTemplateReposition","tooltipEventArgs","tooltipEleWidth","tooltipEleHeight","arrowEle","tipWidth","tipHeight","tipAdjust","tipHeightAdjust","tipWidthAdjust","updateTipPosition","selEle","removeList","adjustArrow","tipPosExclude","tooltipWidth","tooltipHeight","arrowInnerELe","tipPointerPosition","POINTER_ADJUST","tooltipContent","tempArr","templateFunction","isSticky","tipClose","onStickyClose","addDescribedBy","describedby","removeDescribedBy","orgdescribedby","tapHoldHandler","autoCloseTimer","targetHover","touchEndHandler","targetClick","hideTooltip","closeDelay","targetList_1","ctrlId","restoreElement","showTooltip","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showTimer","hideTimer","openDelay","beforeRenderArgs","beforeRenderCallback","isHidden","TOOLTIP_WRAP","tooltipBeforeRender","tooltipAfterRender","PopupAnimation","appendContainer","ctrlObj","beforeOpenCallback","openAnimation_1","affectedPos","checkCollideTarget","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","arrowleft","positionString","offsetType","windowCollision","isTooltipOpen","tooltipHide","popupHide","unwireMouseEvents","tooltipHover","tooltipMouseOut","enteredElement","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","touchEnd","triggerList_1","getTriggerList","wireFocusEvents","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","multiKeyStore","key1","key2","subCache","indexCounter","getStylesCreator","stylesOrCreator","themingEnabled","stylesWithOverrides","noopTheme","getClasses","stylesOptions","cacheClasses","lastProp","lastJSS","baseClasses","newClasses","stylesCreator","sheetManager","staticSheet","dynamicStyles","dynamicSheet","useSynchronousEffect","currentKey","classNamePrefixOption","stylesOptions2","shouldUpdate","getAlertUtilityClass","_CloseIcon","alertClasses","AlertRoot","severity","getColor","getBackgroundColor","AlertIcon","AlertMessage","AlertAction","defaultIconMapping","SuccessOutlinedIcon","ReportProblemOutlinedIcon","ErrorOutlineIcon","InfoOutlinedIcon","Alert","closeText","iconMapping","getListSubheaderUtilityClass","ListSubheaderRoot","disableSticky","sticky","listStyle","ListSubheader","getAutocompleteUtilityClass","_ClearIcon","_ArrowDropDownIcon","autocompleteClasses","AutocompleteRoot","hasClearIcon","hasPopupIcon","inputFocused","inputRoot","AutocompleteEndAdornment","AutocompleteClearIndicator","AutocompletePopupIndicator","popupIndicator","popupIndicatorOpen","AutocompletePopper","popperDisablePortal","AutocompletePaper","AutocompleteLoading","loading","AutocompleteNoOptions","noOptions","AutocompleteListbox","listbox","AutocompleteGroupLabel","groupLabel","AutocompleteGroupUl","groupUl","Autocomplete","_componentsProps$clea","ChipProps","autoHighlight","autoSelect","blurOnSelect","clearOnBlur","freeSolo","clearOnEscape","disableClearable","disableCloseOnSelect","filterSelectedOptions","forcePopupIcon","getLimitTagsText","getOptionLabel","_option$label","handleHomeEndKeys","includeInputInList","limitTags","ListboxComponent","ListboxProps","loadingText","noOptionsText","openText","PaperComponent","popupIcon","renderGroupProp","renderGroup","renderOptionProp","renderOption","renderTags","selectOnFocus","useAutocomplete","getRootProps","getInputProps","getInputLabelProps","getPopupIndicatorProps","getClearProps","getTagProps","getListboxProps","getOptionProps","dirty","focusedTag","setAnchorEl","groupedOptions","getCustomizedTagProps","props2","renderListOption","optionProps","option2","getBackdropUtilityClass","BackdropUnstyled","BackdropRoot","getDialogActionsUtilityClass","DialogActionsRoot","disableSpacing","DialogActions","shapeInput","NotchedOutlineRoot","NotchedOutlineLegend","OutlinedInputRoot","notchedOutline","OutlinedInputInput","getFormHelperTextUtilityClasses","formHelperTextClasses","FormHelperTextRoot","contained","TimePickerBase","DAY","YEAR","FOCUS","LISTCLASS","wrapperAttributes","createdEl","timeCollections","TimeMaskPlaceholder","TimePicker","disableItemCollection","timeOptions","angularTag","openPopupEventArgs","createInputElement","setTimeAllowEdit","validateInterval","validateDisable","checkErrorState","inputEleValue","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","checkTimeFormat","checkInValue","isNavigate","isTextSelected","valueWithMinutes","updatedCssClassesValue","isNullOrEmpty","inputStyle","getCldrDateTimeFormat","cldrFormat","isInvalid","valueExp","valueExpression","setCurrentDate","getCultureTimeObject","ariaAttribute","enableElement","propertyList","generateList","listWrapper","addSelection","getPopupHeight","setPopupWidth","listTag","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","validateState","disableTimeIcon","selectInputText","setCursorToEnd","getMeridianText","meridian","getCursorSelection","getActiveElement","setScrollTo","findScrollTop","initialTime","scrollTime","getText","cldrTimeFormat","cldrDateFormat","getCultureDateObject","dateToNumeric","getExactDateTime","validateMinMax","compareFormatChange","updatePlaceHolder","popupHandler","curPos","cursorDetails","focusSelection","isSeparator","objToString","createMask","documentClickHandler","mobileTimePopupWrap","disposeServerPopup","checkValueChange","valueProcess","dateVal","strictOperation","inputEventHandler","clearHandler","inputEvent","timeValue","raiseClearedEvent","getTextFormat","strArray","validateValue","newval","findNextElement","textVal","timeVal","selectNextItem","validLiElement","elementValue","elementIndex","isCheck","getHoverItem","setActiveClass","timeParse","getProperty","popupAlignment","timePopupElement","formatValues","HOUR","MINUTE","SECOND","MILLISECOND","DateTimePicker","scrollInvoked","dateTimeOptions","blurHandler","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","checkValidState","isValidState","isDisable","timeIcon","renderTimeIcon","timeHandler","dateHandler","inputKeyAction","getCldrFormat","isDatePopupOpen","listCreation","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","openPopup","timeModal","timeKeyActionHandle","unWireTimeListEvents","setDimension","setTimeHover","removeTimeHover","setInputValue","nextElement","getFullDateTime","combineDateTime","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","tempStartValue","tempMin","tempEndValue","tempMax","dateTimeCloseEventCallback","maskedDateModule","getTimeActiveElement","status_1","findNextTimeElement","dateTimeVal","listCount","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue","adaptV4Theme","inputTheme","componentValue","typeInput","modeInput","paletteRest","finalMode","traverse","sxInput","sxObject","emptyBreakpoints","styleKey","maybeFn","objectsHaveSameKeys","WithStyles","nextClasses","ListItemIconRoot","alignItemsFlexStart","ListItemIcon","DividerRoot","flexItem","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","DividerWrapper","wrapperVertical","Divider","warnedOnce","mapEventPropToEvent","ClickAwayListener","disableReactTree","mouseEvent","touchEvent","createHandleSynthetic","handlerName","childrenPropsHandler","mappedTouchEvent","mappedMouseEvent","setMountNode","ThemeProvider","localTheme","outerTheme","mergeOuterLocalTheme","candidatesSelector","defaultGetTabbable","regularTabNodes","orderedTabNodes","nodeTabIndex","tabindexAttr","getTabIndex","getRadio","roving","isNonTabbableRadio","isNodeMatchingSelectorFocusable","documentOrder","defaultIsEnabled","Unstable_TrapFocus","getTabbable","ignoreNextEnforceFocus","sentinelStart","sentinelEnd","nodeToRestore","reactFocusEventTarget","activated","rootRef","lastKeydown","contain","hasFocus","tabbable","_lastKeydown$current","_lastKeydown$current2","isShiftTab","focusNext","focusPrevious","loopFocus","handleFocusSentinel","stripDiacritics","createFilterOptions","ignoreAccents","matchFrom","filteredOptions","defaultFilterOptions","getOptionDisabled","getOptionLabelProp","isOptionEqualToValue","inputValueProp","onHighlightChange","onInputChange","optionLabel","ignoreFocus","firstFocus","listboxRef","setFocusedTag","defaultHighlighted","highlightedIndexRef","setInputValueState","resetInputValue","newInputValue","valueChange","inputPristine","setInputPristine","inputValueIsSelectedValue","listboxAvailable","focusTag","tagToFocus","setHighlightedIndex","listboxNode","elementBottom","changeHighlightedIndex","validOptionIndex","getNextIndex","syncHighlightedIndex","valueItem","currentOption","optionItem","handleListboxRef","selectNewValue","reasonProp","handleFocusTag","validTagIndex","handleClear","defaultMuiPrevented","handleOptionMouseOver","handleOptionTouchStart","handleOptionClick","handleTagDelete","handlePopupIndicator","handleInputMouseDown","autoCapitalize","SPINICON","INTREGEXP","NumericTextBox","isDynamicChange","numericOptions","isPrevFocused","intRegExp","isCalled","angularTagName","formEle","inputName","cultureInfo","validateStep","updatePlaceholder","createWrapper","showSpinButton","spinBtnCreation","trimValue","roundNumber","elementPrevValue","setNumber","stepValue","getNumericValidClassList","numericClassName","numericStyle","spinDown","spinUp","wireSpinBtnEvents","isInteract","performAction","checkErrorClass","setElementValue","keyupEvent","setSpinButton","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveOnSpinner","unwireSpinBtnEvents","preventHandler","iOS","currentPos","prevPos","valArray","ignoreKeyCode","prevVal","cursorPosChanged","validateDecimalOnType","parseValue","correctRounding","floatExp","floatStep","stepCount","roundValue","updateCurrency","propVal","getNumberOfDecimals","modifyText","serverDecimalSeparator","EXPREGEXP","currentChar","fractionRule","rawEvent","focusEventArgs","formatValue_1","blurEventArgs","focusEvent","getElementData","mouseUpClick","floatLabelTypeUpdate","decrement","updateSpinButton","updateClearButton","isImgUploaded","isAllowedTypes","deletedImg","rteID","dialogRenderObj","onWindowResize","showImageQuickToolbar","onToolbarAction","deleteImg","insertImgLink","insertAltText","editAreaClickHandler","alignmentSelect","afterRender","imagePaste","iframeSettings","dragEnter","dragOver","imageClick","editorManager","undoStack","insertImageSettings","onCutHandler","contentElem","resizeBtnInit","imgEle","prevSelectedImgEle","preventDefaultResize","imgResizeDiv","imageResize","getPointY","quickToolObj","imageQTBar","resizeBtnStat","botLeft","botRight","resizeStartArgs","getDocument","imgResizePos","resizeImgDupPos","imgWid","imgHgt","borWid","devWid","setAspectRatio","expectedX","expectedY","resizeByPercent","percentageValue","pixToPerc","currentWidth","imgDupMouseMove","resizingArgs","getInsertImgMaxWidth","imgDupPos","fileManagerSettings","openImgLink","editImgLink","removeImgLink","selectParent","selectNode","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","break","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","absoluteUrl","baseURI","removingImgName","triggerPost","File","contenteditable","imgWrap","imgInner","imgCaption","imgSizeHeader","dialogContent","imgsizeInput","selectObj_1","insertSize","imgDialog","imgInsert","imglinkCancel","imgHeader","selectObj","dialogModel","insertImageUrl","cancelDialog","uploadObj","removing","isBlur","imgUpload","linkHeader","linkHeaderText","imageUrlPopup","inlineQTBar","getToolbarElement","imgUrl","placeUrl","inputUrl","spellcheck","uploadUrl","matchUrl","imgHeight","imgWidth","imgSizeWrap","widthVal","changedWidthValue","heightVal","changedHeightValue","widthNum","inputWidthValue","heightNum","inputHeightValue","uploadParentEle","deviceImgUpMsg","imgUpMsg","spanMsg","btnEle","autofocus","browserMsg","fileSelect","beforeUploadArgs","uploadEle","allowedTypes","saveFormat","beforeUpload","currentRequestHeader","customFormDatas","uploading","actionBeginArgs","effectAllowed","imgElement","isImgOrFileDrop","caretRangeFromPoint","rangeParent","rangeOffset","getDropRange","insertDragImage","startRange","setRange","startNode","startCharIndexCharacter","rangeRect","activePopupElement","imgFiles","imgType","insertNode","imgArgs_1","validFiles","imageTag","uploadMethod","dragEvent","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","selectedNode","RadioGroup","nameProp","joinChildren","StackRoot","spacingValues","ListItemButtonRoot","ListItemButton","listItemRef","DialogBackdrop","DialogRoot","DialogContainer","DialogPaper","paperFullWidth","paperFullScreen","paperScrollBody","defaultTransitionDuration","ariaLabelledbyProp","backdropClick","ariaLabelledby","dialogContextValue","titleId","DialogTitleRoot","DialogTitle","useMediaQuery","queryInput","supportMatchMedia","defaultMatches","noSsr","ssrMatchMedia","setMatch","queryList","updateMatch","actionsArray","GridComponent","immediateRender","gridID","excludingItems","preItems_1","localeName","ColumnChooser","responsiveFilter","responsiveSort","responsiveBack","createToolbar","addReactToolbarPortals","bindSearchEvents","refreshToolbarItems","updateSearchBox","isNormal","toolbarClickHandler","ID","renderResponsiveSearch","refreshResponsiveToolbarItems","isSearch","searchBoxObj","disableItems","hasData","getItemObject","toolbarItems_1","itemObject","gID","toolbarargs","tarElement","reRenderToolbar","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","ColumnDirective","ColumnsDirective","enableColorScheme","WebkitFontSmoothing","MozOsxFontSmoothing","WebkitTextSizeAdjust","colorScheme","CssBaseline","_theme$components$Mui","defaultStyles","themeOverrides","MuiCssBaseline","DatePickerComponent","DateTimePickerComponent","TextBoxComponent","AggregateColumnDirective","AggregateColumnsDirective","AggregateDirective","AggregatesDirective","PdfTrueTypeFont","createFontInternal","getUnicodeLineWidth","codeWidth","calculateStyle","iStyle","equalFont","isEmbed","isUnicodeFont","glyphIndices","resultGlyph","ContextMenu","ATTRIBUTES","RadioButton","RadioButton_1","radioGrp","getRadioGroup","angularValue","radioWrap","getLabel","getSelectedValue","updateHtmlAttribute","labelRippleHandler","formControlName","rippleLabel","Reorder","createReorderElement","chkDropPosition","srcElem","destElem","closestElement","targetParentContainerIndex","chkDropAllCols","isFound","findColParent","getColumnsModel","subCols","uId","destElemUid","destColumn","sourceUid_1","colMatchIndex_1","destUid_1","moveColumns","destElement","oldIdx","destIndex","reorderByColumn","preventRefresh","getColParent","srcIdx","toColumnUid","flatColumns","fTh","mTh","fHeaders","frTh","reorderSingleColumn","fColumn","toColumn","reorderMultipleColumns","fromFNames","moveTargetColumn","reorderSingleColumnByTarget","reorderMultipleColumnByTarget","fromCol","setDisplay","visibleCols","toCol","stopTimer","updateScrollPostion","updateArrowPosition","cliRect","cliRectBaseRight","updateFrozenScrollPosition","cliRectBaseLeft","scrollElem_1","scrollElem","mhdrCliRect","cliRectBase","dropEle","dropCol","fhdrWidth","mhdrRight","DetailRow","childRefs","refreshColSpan","destroyChildGrids","toogleExpandcollapse","lastrowIdx","isExpanded","nextRow","detailElement","detailRow","detailCell","promiseResolve","gridElem","rowElems","detailrowIdx","lastrowcell","getTDfromIndex","moduleObj","detailrows","Magnification","zoomFactor","previousZoomFactor","zoomPercentages","isNotPredefinedZoom","pinchStep","reRenderPageNumber","magnifyPageRerenderTimer","rerenderOnScrollTimer","rerenderInterval","touchCenterX","touchCenterY","pageRerenderCount","imageObjects","isTapToFitZoom","fitType","isPinchZoomed","isPagePinchZoomed","isRerenderCanvasCreated","isMagnified","isPagesZoomed","isPinchScrolled","isAutoZoom","isFormFieldPageZoomed","isWebkitMobile","isFitToPageMode","zoomLevel","zoomTo","zoomValue","isInitialLoading","onZoomChanged","zoomIn","lowerZoomLevel","zoomOut","higherZoomLevel","fitToWidth","calculateFitZoomFactor","fitToAuto","fitToPage","viewerContainer","currentPageNumber","viewerWidth","viewerHeight","highestWidth","highestHeight","pinchIn","temporaryZoomFactor","pinchOut","getZoomLevel","checkZoomFactor","closePopupMenu","isMinimumZoom","mobilePageNoContainer","responsivePages","magnifyPages","updateZoomButtons","fireZoomChange","updateZoomPercentage","zoomPercentage","navigationPane","createTooltipMobile","setTouchPoints","initiatePinchMove","pointX1","pointY1","pointX2","pointY2","zoomOverPages","clearRerenderTimer","documentLoaded","isInitialPageMode","getMagnifiedValue","textSelectionModule","maintainSelectionOnZoom","isDocumentLoaded","updatePageLocation","resizeCanvas","resizeTouchElements","annotModule","textMarkupAnnotationModule","updateCurrentResizerPosition","getPageHeight","renderedPagesList","pinchZoomStorage","rerenderMagnifiedPages","pageGap","clearIntervalTimer","clearRendering","oldCanvases","pageCanvas","isTextMarkupAnnotationModule","rerenderAnnotationsPinch","pushImageObjects","isInitialLoaded","pageViewScrollChanged","renderInSeparateThread","designNewCanvas","initiateRerender","clearTextSelection","textSearchModule","clearAllOccurrences","textLayer","clearTextLayers","calculateScrollValues","formFieldsModule","currentPageCanvas","currentPageBounds","previousPageTop","previousY","currentY","scaleCorrectionFactor","scrollX_1","rerenderOnScroll","pageDivs","tileRenderingSettings","enableTileRendering","restrictZoomRequest","textLayers","annotationLayers","pinchMoveScroll","isReRender","reRenderedCount","reRenderAfterPinch","currentPageIndex","lowerPageValue","higherPageValue","oldCanvas","rerenderAnnotations","oldCanvasCollection","newCanvas","renderPageCanvas","pageRerenderOnMouseWheel","renderCountIncrement","rerenderCountIncrement","drawInkAnnotation","addInputInZoom","isSelectionAvailable","isSelectionAvailableOnScroll","updateLeftPosition","resizeAnnotations","retrieveCurrentZoomFactor","noTileX","noTileY","getTileCount","tileSettings","storedData","getWindowSessionStorage","getPinchZoomPage","tileImgId","oldPageDiv","isReRenderRequired","tileX","tileY","tileData","getWindowSessionStorageTile","ELEMENT_NODE","dataScaleFactor","tilewidth","tileHeight","originalLeft","originalTop","aElement","lowerValue","higherValue","isTextSelection","getTextSearchStatus","resizeTextContentsOnZoom","applySelectionRangeOnScroll","applyElementStyles","adornerSvg","adonerLayer","diagramAdornerLayer","currentDifference","previousTouchDifference","pinchMoveEnd","fitPageScrollMouseWheel","downwardScrollFitPage","upwardScrollFitPage","magnifyBehaviorKeyDown","isCommandKey","updatePagesForFitPage","onDoubleTapMagnification","elmtPosition","addInuptElemet","Navigation","viewer","goToNextPage","updateScrollTop","goToPreviousPage","magnificationModule","goToFirstPage","goToLastPage","LinkAnnotation","renderHyperlinkContent","enableHyperlink","hyperlinks","hyperlinksBounds","hyperlinkBounds","linkAnnotation","linkPage","annotationY","annotationLocation","renderWebLink","renderDocumentLink","disableHyperlinkNavigationUnderObjects","eventTarget","hyperlinkObjects","isHyperlinkClicked","aTag","setHyperlinkProperties","hyperlinkText","hyperlinkOpenState","fireHyperlinkClick","onmouseover","triggerHyperlinkEvent","fireHyperlinkHover","destPageHeight","destLocation","modifyZindexForTextSelection","pageChildNodes","childElement","modifyZindexForHyperlink","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","PARENTITEM","LOAD","PROCESS","TEXTWRAP","DROPIN","DROPNEXT","FULLROW","CHECK","CHECKBOXWRAP","treeAriaAttr","treeRole","FieldsSettings","ActionSettings","NodeAnimationSettings","TreeView","isRefreshed","preventExpand","checkedElement","disableNode","validArr","validNodes","expandChildren","isFieldChange","changeDataSource","hasTemplate","isFirstRender","mouseDownStatus","TreeView_1","checkActionNodes","parentNodeCheck","dragStartAction","ctrlDown","ctrlUp","ctrlA","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","listBaseOption","beforeNodeCreate","fullRowNavigable","updateListProp","aniObj","treeList","isInitalExpand","setTouchClass","selectedNodes","checkedNodes","expandedNodes","setDataBinding","setDisabledMode","setExpandOnType","wireEditingEvents","setDragAndDrop","allowDragAndDrop","setFullRow","fullRowSelect","setTextWrap","nodeTemplateFn","nodeTemplate","iconModel","rippleIconFn","setMultiSelect","firstUl","isOffline","treeData","isNumberTypeId","setRootData","rootData","getDataType","groupedData","getGroupedData","rootItems","getChildNodes","isSorted","getSortedData","loadOnDemand","renderChildNodes","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","updateParentCheckState","resultData","resultId","childData","mapper_1","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","fieldId","childItems","updateChildCheckState","checkNodes","preElement","childCheckedElement","nodeId","nodeCheck","checkedParent","checkedChild","subChildItems","checkboxEle","touchClass","addCheck","frameMouseHandler","createFullRow","allowMultiSelection","addActionClass","textEle","dataId","renderNodeTemplate","nodeData","actionValue","iNodes","sNodes","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","updateWrap","hasPid","doExpandAction","ulEle","liList","calculateWrap","eUids","expandGivenNodes","eNode","expandAction","afterFinalized","expandCallback","eUid","doSelectionAction","sUids","sNode","selectGivenNodes","preventContextMenu","rippleIcons","setFocusElement","checkWrapper","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","expandNode","start_1","end_1","liEle_1","activeElement_1","animateHeight","expandedNode","addExpand","expandArgs","getExpandEvent","colArgs","nodeCollapseAction","collapsedNode","removeExpand","toRemove","parentLi","expandChild","eicon","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","nodeLevel","dataLevel","getChildMapper","isRoot","getChildGroup","objlen","cIcons","curLi","multiSelect","unselectNode","getSelectEvent","nodeSelectAction","removeSelectAll","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","liEles","icon_1","inpEle","oldText","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","isUp","getScrollParent","parentPos","txtWrap","isTowards","getNextNode","getPrevNode","nodeCheckingAction","allCheckNode","parentIndex","getChildItems","childStateChange","childIsCheck","newCheck","validateCheck","hierChildId","childId_1","toBeOpened","focusNextNode","getEndNode","fNode","endNode","preNode","hoveredNode","fromDS","pNode","nodeFields","reRenderNodes","editingHandler","oldInpEle","updateOldText","getEditEvent","wireInputEvents","editData","editFields","inputFocusOut","txtEle","crudOperation","appendNewText","isInput","updateText","getChildNodeObject","toBind","initializeDrag","destroyDrag","virtualEle","dragRoot","dragWrap","dragLi","isSameNode","cloneEle","DRAGITEM","nLen","cNode","getDragEvent","draggedNode","dragCancelAction","dragAction","removeVirtualEle","dropRoot","preventTargetExpand","dragParent","draggedParentNode","dropObj","dropAction","dropWrap","dropLi","isDescendant","templateTarget","appendIndicator","renderVirtualEle","dropIndicator","virEle","dragInstance","appendNode","dropAsChildNode","dropAsSiblingNode","dropUl","dragParentUl","dragParentLi","moveData","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","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","newId","currId","doGivenAction","toExpand","addGivenNodes","updateMapper","refNode","navigateUrl","validID","checkValidId","doEnableAction","strNodes","filterNestedChild","updatePersistProp","removeField","sleNodes","slelen","enodes","nodelen","cnodes","getMapperProp","touchEditObj","wireClickEvent","proxy_3","touchClickObj","wireExpandOnEvent","proxy_4","touchExpandObj","secondTap","firstTap","setCheckedNodes","uncheckAll","setIndeterminate","checkAll","setChildCheckState","isRefreshChild","updateChildPosition","currID","dynamicState","newNode","matchedArr","nodesID","deleteSuccess","editSucess","addSuccess","updatePreviousText","onLoaded","addNodes","disableNodes","enableNodes","ensureVisible","getAllCheckedNodes","getDisabledNodes","getNode","moveNodes","refreshNode","updatedChildValue","newNodeData","parentData","refreshData","newliEle","newTextEle","newIcon","fullEle","removeNodes","updateNode","ThumbnailView","thumbnailLimit","thumbnailThreshold","thumbnailTopMargin","isThumbnailClicked","thumbnailClick","getPageNumberFromID","setSelectionStyle","fireThumbnailClick","goToThumbnailPage","focusViewerContainer","thumbnailMouseOver","setMouseOverStyle","thumbnailMouseLeave","setMouseLeaveStyle","createThumbnailContainer","thumbnailView","sideBarContent","openThumbnailPane","createRequestForThumbnails","requestCreation","renderThumbnailImage","startPage","endPage","hashId","documentId","jsonDocumentId","thumbnailRequestHandler","serviceUrl","serverActionSettings","renderThumbnail","onControlError","fireAjaxRequestSuccess","isThumbnailViewOpen","isThumbnailOpen","sideBarTitle","bookmarkContent","setThumbnailSelectionIconTheme","updateViewerContainerOnExpand","isBookmarkOpen","openNotificationPopup","gotoThumbnailImage","shouldScroll","checkThumbnailScroll","thumbnailChild","thumbnailDiv","clientTop","setFocusStyle","visibleThumbs","getVisibleThumbs","numVisibleThumbs","views","visibleFirstPageID","visibleLastPageID","thumbPageNumber","pageId","thumbnail","setMouseFocusStyle","pageLink","thumbnailSelectionRing","thumbnailPageNumber","thumbnailImage","wireUpEvents","setMouseFocusToFirstPage","enableThumbnailButton","unwireUpEvents","thumbnailElement","sideBarContentContainer","resetThumbnailView","getVisibleElements","thumbnailViewChildren","viewHeight","viewBottom","viewWidth","viewRight","percentVisible","firstVisibleElementInd","binarySearchFirstItem","thumbnailViewChildrenElement","backtrackBeforeAllVisibleElements","lastEdge","getThumbnailElement","clientLeft","pageTop","printViewerContainer","showPrintLoadingIndicator","frameDoc","createPrintLoadingIndicator","createRequestForPrint","firePrintEnd","downloadFileName","createFormfieldsJsonData","printRequestHandler","validateForm","enableFormFieldsValidation","fireValidatedFailed","printImage","annotationSource_1","skipPrint","annotationCollections","documentAnnotationCollections","printCollection","isImportAction","textMarkupAnnotation","shapeAnnotation","measureShapeAnnotation","stampAnnotation","stampAnnotations","stickyNoteAnnotation","stickyNotesAnnotation","printTextMarkupAnnotations","isAnnotationCollectionRemoved","currentPageNumber_1","printCanvas","enablePrintRotation","context_1","pageImage_1","annotationImage_1","printWindowOpen","renderFieldsForPrint","heightRatio","targetField","getItemFromSessionStorage","formFieldsData","inputField","createFormFields","applyPosition","InsertSpaces","browserUserAgent","font_1","pageDetails","previousLeft","currentWidthPosition","currentHeightPosition","currentTop","IsSignatureField","formDesignerData","formDesignerFieldsData","FormField","signatureField","Key","htmlElement","radiobuttonItem","createFormDesignerFields","lineBound","parentHtmlElement","parentHtmlElementAttribute","HtmlElementAttribute","disableSignatureClickEvent","createSignatureDialog","createDropDownList","createListBox","isFormDesignerField","ConvertPointToPixel","fontHeight","fontfamily","Name","setStyleToTextDiv","printDocument","printHeight","printWidth","canvasUrl","printWindowContainer","printWaitingPopup","printImageContainer","printLabelContainer","TextSelection","selectionStartPage","isBackwardPropagatedSelection","contextMenuHeight","selectionRangeArray","selectionAnchorTouch","selectionFocusTouch","scrollMoveTimer","isMouseLeaveSelection","isTouchSelection","previousScrollDifference","topStoreLeft","topStoreRight","isTextSearched","isSelectionStartTriggered","onLeftTouchSelectElementTouchStart","initiateSelectionByTouch","onRightTouchSelectElementTouchStart","onLeftTouchSelectElementTouchEnd","terminateSelectionByTouch","onRightTouchSelectElementTouchEnd","onLeftTouchSelectElementTouchMove","rightElement","dropDivElementRight","isTouchedWithinViewerContainer","isTouchedWithinContainer","dropBounds","xTouch","yTouch","getNodeElement","isCloserMovement","isCloserTouchScroll","dropElementLeft","dropElementRight","selectTextByTouch","elementClientRect","dropDivElementLeft","pageTopValue","topClientValue","getClientValueTop","currentRangeLeft","isHeightNeeded","onRightTouchSelectElementTouchMove","leftElement","dropPosition","touchX","touchY","textSelectionOnMouseMove","isExtended","TEXT_NODE","getTextMarkupAnnotationMode","fireTextSelectionStart","rightBounds","rangeBounds","isEnableTextMarkupResizer","currentTextMarkupAddMode","leftDivElement","getRangeAt","updateLeftposition","getSelectionRange","textSelectionOnDrag","isforward","top_2","selectTextRegion","pageNumbers","bound","textDivs","rangebounds","top_3","currentLeft","totalLeft","textDiVLeft","isLeftBounds","checkLeftBounds","isTopBounds","checkTopBounds","isExists","textSelectionOnMouseLeave","viewerTop","scrollForwardOnSelection","scrollBackwardOnSelection","stichSelectionOnScroll","selectAWord","isStoreSelection","endPos","startParent","selectEntireLine","textIds","targetcentre","textId","contextMenuSettings","contextMenuAction","calculateContextMenuPosition","enableTextSelectionMode","isTextSelectionDisabled","clearDivSelection","linkAnnotationModule","lowerPageIndex","higherPageIndex","showHideDropletDiv","searchAfterSelection","removeTouchElements","viewerContainerLeft","dropElementHeight","leftCurrentPagePosition","rightCurrentPagePosition","textSelectionOnMouseup","fireTextSelectEnd","getIndexes","applySpanForSelection","selectEndPageIndex","selectedText","selectedBounds","rectangleBounds","currentBound","isBackward","fireTextSelectionEnd","isMaintainSelection","isStich","isBackWardSelection","anchorPageId","getNodeElementFromNode","focusPageId","lastChildNode","maintainSelectionOnScroll","getMagnified","applySelectionMouseScroll","applySelectionRange","getSelectionRangeFromArray","selectionObject","anchorOffsetDiv","focusOffsetDiv","startId","endId","anchorPageIndex","focusPageIndex","currentAnchorIndex","extendCurrentSelection","currentAnchorOffset","currentFocusOffset","selectionBounds","getSelectionBounds","selectionRectBounds","getSelectionRectangleBounds","anchorOffsetValue","getCorrectOffset","focusOffsetValue","pushSelectionRangeObject","createRangeObjectOnScroll","stichSelection","currentObjectIndex","nextPageObject","prevPageObject","firstObject","currentFocusElement","nextPageElement","lastElement","getTextLastLength","firstElement","textSelectionOnMouseWheel","extendSelectionStich","lastElement_1","maintainSelectionArray","selectionRangeObject","getSelectionRangeObject","selectionBound","startElement","endElement","newStartRange","createRangeForSelection","normalizeBounds","getPageIndex","anchorTextId","getTextIndex","focusTextId","newRange","getTextId","divId","currentPageElement","isMixedSizeDocument","currentTextElement","currentPageRect","getCurrentSelectionBounds","anchorPage","focusPage_1","arrayObject","indexInArray","isFocusChanged","lastPageDiv","checkIsNormalText","initiateTouchSelection","isShapeBasedAnnotationsEnabled","belowElements","elementsFromPoint","createTouchSelectElement","isForwardSelection","rangeObject","setTouchSelectionStartPosition","getTouchFocusElement","getTouchAnchorElement","isCurrentFocus","isCurrentAnchor","rangePosition","dropElementRect","viewerLeftPosition","topPositionValue","currentPageLeft","contextTop","toolbarHeight","selectedContent","annotationToolbarModule","textMarkupToolbarElement","drawTextMarkupAnnotations","top_4","spanBounds","getSpanBounds","spanWidth","spanRight","spanLeft","spanHeight","onTouchElementScroll","caretPositionFromPoint","offsetNode","viewerScrollTop","isScrollBar","isScrolledOnScrollBar","isForwardMovement","clientValue","copyText","selectionText","isShapeCopied","TextSearch","isTextSearch","searchCount","currentSearchIndex","searchPageIndex","isMatchCase","searchRequestHandler","textContents","searchMatches","searchCollection","searchedPages","isPrevSearch","tempElementStorage","isMessagePopupOpened","isTextRetrieved","isTextSearchEventTriggered","isSearchText","checkBoxOnChange","resetVariables","textSearch","searchKeypressHandler","enableNextButton","enablePrevButton","initiateTextSearch","updateSearchInputIcon","searchClickHandler","searchButtonClick","searchBtn","nextButtonOnClick","nextSearch","prevButtonOnClick","prevSearch","createTextSearchBox","searchElementsContainer","searchInputContainer","_dotnetInstance","prevSearchBtn","createSearchBoxButtons","nextSearchBtn","matchCaseContainer","matchCaseInput","mainContainer","matchCaseText_1","waitingPopup","setLoaderProperties","showSearchBox","showLoadingIndicator","isShow","textSearchBoxOnResize","secondaryToolbar","onTextSearchClose","initSearch","highlightOthers","initiateSearch","fireTextSearchStart","isExtractText","documentTextCollection","onMessageBoxOpen","highlightSearchedTexts","isSinglePageSearch","isCount","getStoredData","pageText","characterBounds","documentIndex","pageTextData","PageText","getSearchTextContent","characterBound","getPossibleMatches","createRequestForSearch","fireTextSearchComplete","pageString","queryLength","getSearchPage","scrollPoint","addDivForSearch","targetScrollElement","getScrollElement","scrollToSearchStr","navigation","divCount","addDivElement","isRTL","charBound","topDifference","isContinuation","widthDifference","createSearchTextDiv","idString","textDiv","calculateBounds","textSearchColorSettings","searchHighlightColor","fireTextSearchHighlight","searchColor","isClassAvailable","classString","updateMobileScrollerPosition","resizeSearchElements","searchDivs","outputdata","highlightOtherOccurrences","isSearched","searchTextDivs","applyTextSelection","resetTextSearch","viewPortHeight","tileCount","isTileRendering","xCoordinate","yCoordinate","viewPortWidth","getDocumentId","tilecount","tileXCount","tileYCount","renderPages","storeWinData","getPDFDocumentTexts","createRequestForGetPdfTexts","pageStartIndex","pageEndIndex","renderTexts","orderPdfTextCollections","fireTextExtractionCompleted","oldCollection","annotationCollectionList","createNotificationPopup","searchNext","searchPrevious","cancelTextSearch","ErrorOption","EMAIL","DATE_ISO","DIGITS","PHONE","CREDITCARD","FormValidator","validated","errorRules","allowSubmit","infoElement","selectQuery","localyMessage","defaultMessages","dateIso","creditcard","minLength","equalTo","localeFunc","afterLocalization","inputElements","createHTML5Rules","FormValidator_1","removeRules","rules_1","clearForm","getInputElement","validClass","elements_2","getErrorElement","hideMessage","defRules","acceptedTypes","allRule","defRules_1","defRule","annotationRule","ruleCon","ruleName","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","annotationMessage","getErrorMessage","isCheckable","submitHandler","hiddenType","validateHiddenType","vhPos","hPos","rules_2","errorRule","removeErrorRules","showMessage","createErrorElement","errorElement","optionalValidationStatus","refer","currentRule","checkValidator","ruleValue","errorOption","Message","errorContainer","containerId","customPlacement","checkRequired","inputType","uNum","Label","ButtonComponent","ViewDirective","ViewsDirective","Day","Week","WorkWeek","Month","dayNameFormat","monthEvent","monthDates","onScrollUIUpdate","onDataReady","dateSlots","getDayNameFormat","isCustomMonth","renderWeekNumberContent","contentArea","monthAgendaWrapper","renderAppointmentContainer","contentWrapTable","createWeekNumberElement","createHeaderCell","dateTemplate","getContentSlots","slotDatas","prepareSlots","renderDate","includeResource","colDates_2","colDate","resourcesTd","colDates_1","updateClassList","isOtherMonth","isSelectedDate","monthDate","tBody","trows","renderDateHeaderElement","cellHeaderTemplate","cellHeaderTemplateName","getCellHeaderTemplate","announcementText","getMonthStart","isCustomRange","monthStart","getMonthEnd","lastWeekOfMonth","getCurrentViewDates","selectedTime","weekFirstDate","monthEnd","updateCustomRange","isUpdateDateRange","monthNames","UploaderComponent","isYearOnlyView","isYearAndMonthViews","getFormatAndMaskByViews","useDatePickerDefaultizedProps","openTo","minDateProp","maxDateProp","_ClockIcon","_CalendarIcon","_PenIcon","PickersToolbarGrid","ClockIcon","CalendarIcon","penIconClassName","dateTitleContainer","PenIcon","DatePickerToolbarRoot","penIcon","DatePickerToolbarTitle","DatePickerToolbar","toolbarFormat","toolbarPlaceholder","dateText","prevFn","nextFn","createDelegatedEventHandler","onEvent","useViews","_views","_views2","onViewChange","openView","setOpenView","previousView","nextView","newView","openNext","handleChangeAndOpenNext","currentViewSelectionState","isSelectionFinishedOnCurrentView","globalSelectionState","clockCenter","CLOCK_WIDTH","getAngleValue","deg","ClockPointerRoot","toAnimateTransform","ClockPointerThumb","CLOCK_HOUR_WIDTH","hasSelected","ClockPointer","previousType","isInner","getAngleStyle","_ClockPin","_Typography","_Typography2","ClockRoot","ClockClock","ClockSquareMask","ClockPin","ClockAmButton","ampmInClock","ClockPmButton","getClockLabelText","isTimeDisabled","selectedId","isSelectedTimeDisabled","isPointerInner","handleValueChange","isFinish","newSelectedValue","angleStep","keyboardControlStep","ClockNumberRoot","ClockNumber","getHourNumbers","getClockNumberText","currentHours","hourNumbers","getMinutesNumbers","numberValue","PickersArrowSwitcherRoot","PickersArrowSwitcherSpacer","PickersArrowSwitcherButton","PickersArrowSwitcher","isLeftDisabled","isLeftHidden","isRightDisabled","isRightHidden","leftArrowButtonText","onLeftClick","onRightClick","rightArrowButtonText","leftArrowButtonProps","leftArrowButton","LeftArrowIcon","ArrowLeftIcon","rightArrowButtonProps","rightArrowButton","RightArrowIcon","ArrowRightIcon","LeftArrowButton","RightArrowButton","getClockPickerUtilityClass","ClockPickerArrowSwitcher","arrowSwitcher","defaultGetClockLabelText","defaultGetMinutesClockNumberText","defaultGetHoursClockNumberText","defaultGetSecondsClockNumberText","ClockPicker","getHoursClockNumberText","getMinutesClockNumberText","getSecondsClockNumberText","nextViewAvailable","previousViewAvailable","showViewSwitcher","dateOrMidnight","validateTimeValue","getRequestedTimePoint","isAfterComparingFn","hoursWithMeridiem","when","dateWithHours","dateWithMinutes","viewProps","handleHoursChange","valueWithMeridiem","minutesValue","handleMinutesChange","secondsValue","handleSecondsChange","PickersMonthRoot","PickersMonth","handleSelection","getMonthPickerUtilityClass","MonthPickerRoot","alignContent","MonthPicker","onMonthChange","shouldDisableMonth","isBeforeFirstEnabled","isAfterLastEnabled","onMonthSelect","monthNumber","monthText","useCalendarState","defaultCalendarMonth","disableSwitchToMonthOnDayFocus","reduceAnimations","reducerFn","slideDirection","newMonth","isMonthSwitchingAnimating","focusedDay","needMonthSwitch","createCalendarStateReducer","calendarState","handleChangeMonth","changeMonth","newDateRequested","onMonthSwitchingAnimationEnd","changeFocusedDay","newFocusedDate","PickersFadeTransitionGroupRoot","PickersFadeTransitionGroup","transKey","getPickersDayUtilityClass","pickersDayClasses","disableMargin","outsideCurrentMonth","showDaysOutsideCurrentMonth","disableHighlightToday","dayWithMargin","dayOutsideMonth","hiddenDaySpacingFiller","PickersDayRoot","PickersDayFiller","PickersDay","allowSameDateSelection","isAnimating","onDayFocus","onDaySelect","isToday","areDayPropsEqual","removeOneClass","CSSTransition","appliedClasses","_this$resolveArgument","resolveArguments","_this$resolveArgument2","_this$resolveArgument3","getClassNames","isStringClassNames","baseClassName","doneClassName","addOneClass","_addClass","_this$appliedClasses$","_span","PickersSlideTransitionRoot","slideTransition","slideEnterActive","slideExit","PickersSlideTransition","transitionClasses","enterActive","exitActive","PickersCalendarDayHeader","PickersCalendarWeekDayLabel","PickersCalendarLoadingContainer","PickersCalendarSlideTransition","SlideTransition","PickersCalendarWeekContainer","PickersCalendarWeek","PickersCalendar","onFocusedDayChange","renderDay","renderLoading","handleDaySelect","currentMonthNumber","selectedDates","selectedDateItem","transitionKey","slideNodeRef","pickersDayProps","PickersCalendarHeaderRoot","PickersCalendarHeaderLabel","PickersCalendarHeaderLabelItem","PickersCalendarHeaderSwitchViewButton","PickersCalendarHeaderSwitchView","getSwitchingViewAriaText","PickersCalendarHeader","getViewSwitchingButtonText","switchViewButtonProps","switchViewButton","isNextMonthDisabled","isPreviousMonthDisabled","nextIndexToOpen","FadeTransitionGroup","SwitchViewButton","SwitchViewIcon","getPickersYearUtilityClass","pickersYearClasses","PickersYearRoot","PickersYearButton","PickersYear","refHandle","yearButton","getYearPickerUtilityClass","YearPickerRoot","YearPicker","useThemProps","onYearChange","shouldDisableYear","selectedYearRef","focusedYear","setFocusedYear","handleYearSelection","submitDate","closestEnabledDate","focusYear","yearsInRow","yearNumber","PickerView","getCalendarPickerUtilityClass","CalendarPickerRoot","CalendarPickerViewTransitionContainer","viewTransitionContainer","defaultReduceAnimations","CalendarPicker","getTextFieldAriaText","setIsFocused","currentInputValue","previousInputValueRef","notTyping","valueChanged","getOrientation","useIsLandscape","customOrientation","setOrientation","MobileKeyboardInputView","PickerRoot","MobileKeyboardTextFieldProps","isDatePickerView","ToolbarComponent","toShowToolbar","handleDateChange","isSameDateOrTimeError","initDraftableDate","draftState","acceptDate","acceptedDate","needClosePicker","shouldCloseOnSelect","pickerDraft","DesktopDatePicker","AllDateInputProps","PickersModalDialogActions","clearable","cancelText","okText","todayText","MobileDatePicker","desktopModeMediaQuery","getWindow","isHTMLElement","isShadowRoot","ShadowRoot","includeScale","getNodeName","getWindowScrollBarX","isScrollParent","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getNodeScroll","getLayoutRect","assignedSlot","listScrollParents","_element$ownerDocumen","scrollParent","isBody","visualViewport","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","currentNode","getContainingBlock","basePlacements","variationPlacements","placements","modifierPhases","requires","requiresIfExists","depModifier","DEFAULT_OPTIONS","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","orderedModifiers","modifiersData","effectCleanupFns","setOptionsAction","cleanupModifierEffects","contextElement","orderModifiers","mergeByName","_ref3$options","cleanupFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","getBasePlacement","getVariation","getMainAxisFromPlacement","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","dpr","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","heightProp","widthProp","commonStyles","getOppositePlacement","getOppositeVariationPlacement","rectToClientRect","getClientRectFromMixedType","clippingParent","getViewportRect","getInnerBoundingClientRect","winScroll","getDocumentRect","getClippingRect","rootBoundary","mainClippingParents","clippingParents","canEscapeClipping","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperOffsets","popperClientRect","overflowOffsets","offsetData","within","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","createPopper","_options$scroll","_options$resize","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","initialStyles","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","maxOffset","arrowOffsetParent","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","centerToReference","axisProp","centerOffset","_options$element","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","defaultPopperOptions","PopperTooltip","initialPlacement","popperRefProp","tooltipRef","ownRef","handlePopperRef","handlePopperRefRef","rtlPlacement","flipPlacement","setPlacement","popperModifiers","PopperUnstyled","maybeReactUseId","reactId","useGlobalId","PickerViewRoot","ClockPickerRoot","deprecatedPropsWarning","getClockLabelTextProp","getHoursClockNumberTextProp","getMinutesClockNumberTextProp","getSecondsClockNumberTextProp","leftArrowButtonTextProp","rightArrowButtonTextProp","containsValidTime","isValidValue","dateWithNewHours","dateWithNewMinutes","dateWithNewSeconds","propDate","isMonthDisabled","PickersDayRaw","weeksContainerHeight","DayPicker","selectedDays","onSelectedDaysChange","validSelectedDays","selectedDay","getViewSwitchingButtonTextProp","isYearDisabled","dateToValidate","handleDateMonthChange","handleDateYearChange","onSelectedDayChange","baseDateValidationProps","minDateWithDisabled","maxDateWithDisabled","isTimePickerView","CalendarOrClockPicker","saveSelection","getAncestorNode","commonAncestorContainer","action_1","itemCollection","CONSTANT","isTableModule","tableModule","ensureInsideTableList","enterAction","selectType","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","setRangePoint","isvalid","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","nodeFinds","existNodes","isEditorArea","getRangePoint","getPreviousNode","saveMarker","startTextNode","endTextNode","setMarker","existNode","ensureSelfClosingTag","isTable","parNode","tdNode","lastNode","createTempNode","getImageTagInSelection","blockNodes","collectionNodes","ignoreTableTag","listNodes","Lists","EVENTS","applyListsHandler","spaceKeyAction","testList","olListRegex","elementStart","testCurrentList","olListStartRegex","currentContent","spaceList","preElemULStart","nextElemULStart","startElementOLTest","preElementOLTest","nextElementOLTest","enterList","startNodeParent","nearBlockNode","nodeCutter","GetSpliceNode","insertTag","backspaceList","parentList","commonAncestor","startEle","endEle","ignoreDefault","revertList","revertClean","nestedList","cleanNode","prevSibling","noPreviousElement","firstNodeOL","siblingListOL","siblingListLI","siblingListLIFirst","nestedElement","nestedElementLI","firstNodeLI","listsNodes","setSelectionBRConfig","allSelectedNode","currentFormatNodes","previousCurrentNode","previousNode","tempElem","postNode","applyLists","startElem","endElem","isRevert","removeEmptyListElements","checkLists","listImage","openTag","closeTag","newTag","replaceHTML","collectionString","listElem","nodesTemp","liParents","contentNodes","findUnSelected","rightIndent","indentElements","childElements","childLI","viewNode","nodeInnerHtml","emptyUl","emptyLi","InsertMethods","WrapBefore","textNode","AppendBefore","Wrap","unwrap","NodeCutter","SplitNode","setStartBefore","setEndAfter","extractContents","spliceEmptyNode","isImgElm","GetCursorStart","GetCursorRange","cursorRange","TrimLineBreak","GetCursorNode","applyFormats","endCon","pTag","brNode","startCon","preElem","endPreElem","deleteContent","removeCodeContent","lastEmpty","lastBeforeBr","paraFocus","isNotEndCursor","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","imageFocus","paraElem","isSingleNode","currentBlockNode","getImmediateBlockNode","containsBlockNode","removingComments","lastSelectionNode","allChildNodes","insertTempNode","isFirstTextNode","firstParaElm","nearestAnchor","immediateBlockNode","placeCursorEnd","cursorPos","blockNode","liNode","splitedElm","elm","findDetachEmptyElem","emptyElements","detachableElement","LinkCommand","linkCommand","createLink","closestAnchor","domSelection","createAchorNode","removeText","createLinkNode","txtArray","inlineNodes","anchorNodes","finalinlineNodes","j_1","j_2","linkNode","containsNode","Alignments","applyAlignment","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","imgElm_1","calculateStyleValue","capImgWrap","TableCommand","insertRow","insertColumn","deleteColumn","removeTable","tableHeader","tableVerticalAlign","cellMerge","HorizontalSplit","VerticalSplit","tableMove","tblBody","tdWid","removeEmptyNode","emptyLiChild","getSelectedCellMinMaxIndex","curTable","minI","maxI","minJ","maxJ","selectedCellIndex","getCorrespondingIndex","minMaxIndex","FindIndex","startRow","endRow","startColumn","endColumn","isBelow","cloneRow","allCells","getCorrespondingColumns","isHeaderSelect","curCell","curRow","allRows","currentTabElm","thTdElm","oldWidth","colTemplate","tBodyHeadEle","deleteIndex","selectedMinMaxIndex","minCol","maxCol","currentCellIndex","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","isStrikethrough","isSuperscript","isSubscript","isFontColor","isFontName","isFontSize","isBackgroundColor","inlineTags","backColor","SelectionCommands","applyFormat","isFormatted","preventRestore","isFontStyle","cursorNode","insertCursorNode","isSubSup","formatNode","insertFormat","removeFormat","applySelection","cursorNodes","cursorFormat","getCursorFormat","emptySpaceNode","brElem","getInsertNode","bgStyle","splitNode","startText","formatNodeStyles","formatNodeTagName","nodeTraverse","GetFormatNode","currentNodeElem","curParentElem","applyStyles","updateStyles","SelectionBasedExec","InsertHtmlExec","applyHtml","pastedElements","allPastedElements","imgElements","allImgElm","imgElem","ClearFormat","defaultTag","lastText","exactNodes","cloneSelectNodes","clearInlines","reSelection","cloneParentNodes","clearBlocks","selectionNodes","endIndexNode","spliceParent","removeParent","NONVALID_TAGS","NONVALID_PARENT_TAGS","IGNORE_PARENT_TAGS","currentInlineNode","removeInlineParent","ClearFormatExec","applyClear","UndoRedoManager","undoRedoSteps","undoRedoTimer","redo","currentContainer","changEle","removedContent","MsWordPaste","olData","ulData","ignorableNodes","removableElements","listContents","wordCleanup","wordPasteStyleConfig","allowedStylePropertiesArray","tempHTMLContent","rtfData","pattern4","imageConversion","addListClass","cleanUp","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","pic","fullImg","elmWithClass","allElements","findDetachElem","brElement","regExpStartElem","regExpEndElem","styleElement","styleClassObject_1","findStyleObject","removeUnwantedStyle","filterStyles","resultElem","fromClass","styleProperty","valueSplit","changedValue","elmWithStyles","elemStyleProperty","styleValues","styleClassObject","tempStyle","classNameCollection","stylesCollection","prevflagState","tempCleaner","stNode","currentListStyle","getListContent","listStyleType","getlistStyleType","currentClassName","listType","nestedLevel","listStyleTypeName","makeConversion","elemColl","temp1","listContent","currentListClass","prevList","pLevel","getNamedItem","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","HtmlToolbarStatus","toolbarStatus","prevToolbarStatus","onRefreshHandler","tbStatusString","markdown","rteContent","IframeContentRender","iFrameContent","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","isImageDelete","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","splitTextContent","resultSplitContent","pasteCleanupModule","splitText","urlText","urlTextRange","imageDialog","formatterClass","toolbarUpdate","HeaderRenderer","closeHeaderPopup","closestPop","hideHeaderPopup","headerPopup","prevNavEle","nextNavEle","updateAddIcon","updateActiveView","updateItems","getPopUpRelativeElement","setDayOfWeek","headerCalendar","setCalendarDate","setCalendarMinMaxDate","getCalendarView","setCalendarView","calendarView","viewIndex","updateDateRange","addEle","isItemInsidePopup","renderHeaderPopup","headerPopupEle","headerCalendarEle","isDisplayDate","hasSelectedDate","calendarChange","setCalendarTimezone","calendarDate","changeDate","calculateViewIndex","isSameTime","currentTime_1","toolbarPopUp","updateHeaderItems","classType","dateRangeEle","ScheduleTouch","touchObj","touchLeftDirection","touchRightDirection","timeStampStart","isScrollTriggered","nextPanel","getTranslateX","prevWidth","previousPanel","swipeDate","offsetDist","swapPanels","confirmSwipe","cancelSwipe","tapHoldEventPopup","nextPrevType","currentPanel","navArgs","translateX","m41","KeyboardInteraction","shiftDownArrow","shiftUpArrow","shiftRightArrow","shiftLeftArrow","altOne","altTwo","altThree","altFour","altFive","altSix","altSeven","altEight","altNine","ctrlShiftUpArrow","ctrlShiftDownArrow","ctrlShiftLeftArrow","ctrlShiftRightArrow","processDown","processUp","processLeft","processRight","processViewNavigation","processEnter","focusFirstCell","processTab","processDelete","processCtrlShiftNavigationArrows","processEscape","processFTwelve","onCellMouseDown","initialTarget","getClosestCell","onMouseSelection","onMoveUp","selectionEdges","boundaryValidation","yInBounds","xInBounds","isPreventAction","cellData","convertToEventData","showQuickPopup","quickInfoOnSelectionEnd","resourceIcon","inlineCrudActions","getDateFromElement","cellDetails","getCells","isInverseTable","isTimelineYear","maxColumn","inverseCells","focusCell","getWorkCellElements","targetCell","initialId_1","views_1","allowMultipleRow","removeInlineAppointmentElement","allowMultiRowSelection","isGroupYear","resourceSelectedCells","selectedCells_1","allowMultiCellSelection","allDayCells","getAllDayCells","resourceAllDayCells","allDayCells_1","addSelectedClass","selectAppointment","getAppointmentElements","nextAppEle","selectAppointmentElementFromWorkCell","appointmentElements_1","getUniqueAppointmentElements","filteredElements_1","selectedDate_1","focusElements","getAppointmentElementsByGuid","appointmentElements","getWorkCellFromAppointmentElement","viewCollections","cancelUpDownAction","isVerticalYear","isGroup","selectedEventElements","moreEventWrapper","quickPopupWrapper","getQuickPopupElement","getTableRows","curRowIndex","getVerticalUpDownCell","getHorizontalUpDownCell","getYearUpDownCell","workCell","dateAttr","processLeftRight","sectionRowIndex","isCancelLeftRightAction","targetDate","isMonthEnd","calculateNextPrevDate","getTimelineYearTargetCell","changeTargetCell","getHorizontalLeftRightCell","curColIndex","allDayRow_2","getVerticalLeftRightCell","initialId","nextPrevDate","getFocusableElements","processTabOnPopup","firstEle","lastEle","appSelector","appElements","focusAppointment","virtual","averageRowHeight","expandedResources","virtualScrolling","resCellSelector","processTabOnResourceCells","deleteClick","eventEle","onClosePopup","morePopup","tabElements","currentTabIndex","nextTabElement","resColWrap_1","InlineEdit","inlineEdit","moreWrapper","eventEdit","saveObj","generateEventData","getEventDaysCount","createVerticalViewInline","createMonthViewInline","createTimelineViewInline","inlineSubject","subEle","timeEle","subjectWrap","verticalEvent","allDayElements","saveObject","monthCellSelector","monthModule","timelineView","inlineElement","setDefaultValueToObject","setResourceValues","eventDetails","getEventDetails","inlineData","inlineAppointmentElement","inlineDetails","inlineAppointment","FieldValidator","renderFormValidator","errorPlacement","validationComplete","focusout","ignoreError","dlgContent","inputClient","destroyToolTip","QuickPopups","isMultipleEventSelect","fieldValidator","renderQuickPopup","renderMorePopup","renderQuickDialog","quickPopupOpen","quickPopupClose","moreEventPopup","morePopupOpen","morePopupClose","closeButton","renderButton","closeClick","navigationClick","dialogButtonClick","editFollowingEvents","followingSeriesButton","quickDialog","beforeQuickDialogClose","clickEvent","quickDialogClass","followingEventButton","applyFormValidation","validation","editDeleteOnly","editFollowingEventsOnly","editDeleteSeries","activeEvent","showQuickDialog","openRecurrenceValidationAlert","dialogCancel","enableRecurrenceValidation","openDeleteAlert","openValidationError","popupType","popupArgs","createMoreEventList","moreEventContentEle","moreEventWrapperEle","eventText","eventTitle","editAction","deleteAction","editIcon","editClick","beforeQuickPopupOpen","isCellBlocked","showQuickInfo","newEventClone","subjectElement_1","quickCellPopup","getPopupHeader","getPopupContent","getPopupFooter","moreButton","detailsClick","saveButton","saveClick","isSameEventClick","editButton","isQuickTemplate","quickInfoTemplates","templateType","eventTooltip","updateTapHoldEventPopup","quickEventPopup","deleteButton","headerType","headerArgs","headerTemp","getQuickInfoTemplatesHeader","getFormattedString","templateWrapper","contentTemplate","contentArgs","contentTemp","getQuickInfoTemplatesContent","resourceText","getResourceText","getRecurrenceSummary","getTimezone","footerType","footerData","footerArgs","footerTemp","getQuickInfoTemplatesFooter","resourceValue","resourceCollection_1","resourceData_1","lastResource_1","resNames_1","lastResourceData_1","resourceDetails","startDateDetails","endDateDetails","startTimeDetail","endTimeDetail","spanLength","moreEventElements","dialogEvent","subjectEle","updateMoreEventContent","moreElement","cancelBtn","deleteEvent","isIgnoreOccurrence","eventSave","titleContent","zoneDetails","recurrenceEditor","getRecurrenceEditorInstance","ruleSummary","getRuleSummary","getDataFromTarget","cellsData","popupCloseArgs","isEventPopup","destroyPopupButtons","translateY","applyEventColor","colorField","colorEle","popupData","isCellPopup","formvalidator","getObjectFromFormData","navigateEle","popupWrap","tar","popupName","buttonCollections_1","refreshQuickDialog","destroyQuickDialog","refreshQuickPopup","destroyQuickPopup","refreshMorePopup","destroyMorePopup","EventTooltip","getTargets","onBeforeRender","onBeforeClose","targets","headerTooltipTemplate","enableTooltip","resCollection","contentContainer","getHeaderTooltipTemplate","eventStart","eventEnd","tooltipSubject","tooltipLocation","startMonthDate","startMonthYearDate","endMonthYearDate","tooltipDetails","getEventTooltipTemplate","LABELTOP","LABELBOTTOM","createFloatLabel","overAllWrapper","searchWrapper","encodePlaceholder","updateFloatLabelState","HIDE_LIST","CHIP","MultiSelect","clearIconWidth","selectAllEventData","selectAllEventEle","scrollFocusStatus","keyDownStatus","enableRTL","enableGroupCheckBox","enableSelectionOrder","hideSelectedItem","closePopupOnSelect","updateHTMLAttribute","refreshPlaceHolder","updateReadonly","overAllClear","componentWrapper","updateOldPropCssClass","onPopupShown","focusAtFirstListItem","updateListItems","mainList","showDropDownIcon","isFirstClick","loadTemplate","mainListItems","findGroupStart","deselectHeader","refreshListItems","valueEle","addListFocus","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","removelastSelection","chipCollectionWrapper","removeValue","removeChipSelection","updateDelimeter","delimiterChar","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","targetInputElement","getForQuery","valuecheck","updateActionList","showSelectAll","mainData","mainListCollection","remoteCustomValue","checkForCustomValue","tempQuery","unwireListEvents","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","changeOnBlur","updateValueState","hideGroupItem","ariaValue","checkMaxSelection","element1","groupItemLength","searchActiveCount","maximumSelectionLength","openClick","openOnClick","isWordCharacter","expandTextbox","showOverAllClear","remoteFilterAction","dataUpdater","filterAction","backCommand","dataChecks","wrapperClick","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","removeChipFocus","refreshInputHight","floatLabelBlur","downIconWidth","setPlaceholderSize","newVal","initStatus","updateTempValue","getPagingCount","focusInHandler","showDelimWrapper","viewWrapper","floatLabelFocus","delimiterWrapper","hideDelimWrapper","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","arrowUp","arrowDown","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","moveBy","removeSelectedChip","selectListByKey","hideOverAllClear","selectAllItem","selectedElem","addChipSelection","moveByTop","updateCheck","chipClick","onChipRemove","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","removeVal","invokeCheckboxSelection","updateMainList","updateChipStatus","val_1","removeIndex","hideElement","removeChip","targetEle_1","clearAllCallback","element2","addValue","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","chipClose","multiCompiler","multiselectTemplate","chipContent","mouseIn","mouseOut","fieldProperty","listCurrentOptions","checkboxFilter","overAllHeight","selectAllHeight","checkboxFilterInput","onListMouseDown","selectAllItems","delim","listValue","updateWrapperText","addValidInputClass","textArr","removeListSelection","indexItem","noDataEle","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","temp_1","selectItems","mainlist","addListHover","ariaCheck","delimChar","groupValues","findGroupAttrtibutes","updateCheckBox","unChecked","groupHeader","checkBoxElement","CLOSEICON_CLASS","wrapperType","wrapperData","wrapperleng","overAllContainer","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","raminElement","remainCompildTemp","remainSize","checkClearIconWidth","getOverflowVal","updateRemainTemplate","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","textboxValueUpdate","beforeSelectArgs","preventSelectEvent","count_1","updatedataValueItems","updateHiddenElement","hiddenValue","wrapperText","isRemoveAll","onLoadSelect","updateVal","dropDownIcon","reInitializePoup","msProps","presentItemValue","addNonPresentItems","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","checkInitialValue","optionsElement","valueCol","textCol","optionsLen","checkAutoFocus","placeholderText","placeholderElement","INPUTWARAPPER","FORMLEFT","ENDONCOUNT","HIDEWRAPPER","PRIMARY","none","daily","weekly","monthly","yearly","valueData","neverClassList","weekClassList","monthClassList","yearClassList","dailyClassList","noEndClassList","endOnCountClassList","endOnDateClassList","RecurrenceEditor","never","fourth","repeatEvery","onDay","summaryTimes","summaryOn","summaryUntil","summaryRepeat","summaryDay","summaryWeek","summaryMonth","summaryYear","monthWeek","monthPosition","monthExpander","yearExpander","renderStatus","dayButtons","monthButtons","startState","endOn","showFormElement","updateForm","freshOnEndForm","updateEndOnForm","selectMonthDay","updateUntilDate","onMonthDay","applyCustomClass","renderComponent","repeatType","selectedType","getRecurrenceRule","setRecurrenceRule","triggerChangeEvent","resetDayButton","daySelection","rotateArray","rtlClass","untilDateObj","monthWeekDays","monthWeekPos","getDayPosition","renderDropdowns","getRepeatData","frequencies","resetFormValues","getEndData","getPopupWidth","renderDropDownList","dropDownData","onWeekDay","getMonthPosData","getDayData","getMonthData","setDefaultValue","formelement_1","recurreneElement_1","renderDatePickers","dayButtonRender","btns","btns_1","radioButtonRender","numericTextboxRender","recurrenceCount","positionCollection","monthposValue","nameSpaceString","weekday_1","fullDay","getSelectedDaysData","RULEBYDAY","getSelectedMonthData","RULEBYMONTHDAY","getIntervalData","RULEINTERVAL","getEndOnCount","RULECOUNT","getYearMonthRuleData","RULEBYMONTH","updateWeekButton","updateMonthUI","updateUI","getUntilData","RULEUNTIL","destroyComponents","resetFields","updateRuleUntilDate","untilDate","newUntilDate","getRecurrenceDates","RULEFREQ","RULEDAILY","RULEWEEKLY","RULEMONTHLY","RULEYEARLY","endon","EventWindow","eventWindowTime","renderEventWindow","getEventWindowContent","onBeforeOpen","eventDelete","preventEventSave","refreshRecurrenceEditor","createRecurrenceEditor","setRecurrenceEditor","editorTemplate","isEventData","cellClickAction","renderFormElements","onCellDetailsUpdate","onEventDetailsUpdate","setDialogContent","allowKeyboardInteraction","isEnterKey","getSlotDuration","deleteObj","callBackPromise","refreshDateTimePicker","startObj","eventCrudData","processCrudActions","onsubmit","getDefaultEventWindowContent","formElements_1","getEditorTemplate","parentDiv","createDivElement","titleLocationDiv","renderTextBox","editorTitles","startEndDateTimeDiv","renderDateTimePicker","onTimeChange","allDayTimezoneDiv","renderCheckBox","timezoneParentDiv","renderDropDown","repeatParentDiv","repeatDiv","repeatEditContainer","REPEAT_BUTTON_ICON_CLASS","loadRecurrenceEditor","resourceParentDiv","renderResourceDetails","renderRecurrenceEditor","updateMinMaxDateToEditor","dateTimeDiv","getFieldName","dateTimeInput","getFieldLabel","startEndElement_1","labelValue","resourceDiv","resourceInput","resourceTemplate","allowMultiple","onMultiselectResourceChange","onDropdownResourceChange","timezoneDiv","timezoneInput","onTimezoneChange","timezoneDataSource","filtering","byGroupID","getColumnName","resObject","datasource","resourceModel","groupId","filterRes","filterDatasource","resObj","resValue","startTimezoneObj","endTimezoneObj","checkBoxDiv","checkBoxInput","repeatStatus","textBoxDiv","textBoxInput","labelText","onAllDayChange","timezoneChangeStyle","onRepeatChange","renderRepeatDialog","repeatDialogObject","repeatSaveDialog","repeatCancelDialog","repeatOpenDialog","repeatRule","repeatStartDate","updateRepeatLabel","closeRepeatDialog","repeatTempRule","showDetails","disableButton","RecurrenceRule","getValidationRule","trimAllDay","formElements","getFormElements","keyNames","formElements_2","curElement","setValueToElement","setDefaultValueToElement","timezoneObj","isDropDowns","fieldSelector","classSelector","attrEle","allDayStatus","updateDateTime","timezoneValue","saveIcon","untilObj","resetFormFields","localTimezoneName","formElement_1","dataCollection","getEventDataFromEditor","processEventValidation","Repeat","alertType","isShowAlert","recurrenceValidation","getResourceData","isResourceEventExpand","allowGroupEdit","getEventIdFromForm","resourceSaveEvent","eveId_1","editOccurrenceValidation","formElement_2","getValueFromElement","alertMessage","recEditor","excludedEvents","seriesEvents","tempDiff","getRecurrenceIndex","recColl","recIndex","recurColl","recurColl_1","lastResourceData","eventList","addValues","lastResource","resCol","groupId_1","state_1","eventList_1","formElements_3","isIgnore","VirtualScroll","itemSize","bufferCount","renderedLength","isScrollHeightNull","getRenderedCount","setItemSize","setTranslateValue","resWrap","eventWrap","timeIndicator","renderVirtualTrackHeight","setTranslate","resourceWrap","setExpandedResources","startIndex_1","endIndex_1","renderVirtualTrack","lastResourceIndex","conTable","updateVirtualTrackHeight","resourceCount","lastRenderIndex","renderedResCount","setTabIndex","refreshEvents","firstTDIndex","upScroll","downScroll","updateContent","actionObj","navigationWrapper","prevSetCollection","getBufferCollection","nextSetResIndex","nextSetCollection","isResourceCell","resourceRows","contentRows","resColWrap","resCells","focusResCell","isDataRefresh","initializeLayout","dayModule","weekModule","workWeekModule","yearModule","agendaModule","monthAgendaModule","timelineViewsModule","timelineMonthModule","timelineYearModule","firstView","updateLabelText","enableCompactView","updateHeader","WorkHours","TimeScale","QuickInfoTemplates","HeaderRows","Crud","dataModule","editParams","crudData_1","offlineArgs","onlineArgs","isBlockEvent","addEvents","addArgs","crudArgs","processSave","processOccurrences","processFollowSeries","processEntireSeries","saveArgs","eventData_2","deleteEvents","deleteArgs","occurrenceData","isDeletedRecords","eventData_3","occurrenceArgs","occurrenceEvents","childEvent","parentException","exceptionDate","excludeDateCheck","followData","eventData_4","followArgs","followEvents","followData_1","processRecurrenceRule","seriesData","eventData_5","event_7","seriesArgs","fields_2","eventCollections","deletedEvents","originalParent","deleteData","eventData_6","fields_3","isDelete","parentEvent_1","isEdited","editedDate","eventData_7","editArgs","exceptionString","exceptionDateList","followEvent","newRecurrenceRule","ruleException","getUpdatedRecurrenceRule","updatedRule","splitRule_1","ruleKey","WorkCellInteraction","navigateView","sameView","viewOptions","isWorkCell_1","targetSelector","hoverTarget","hoverArgs","FieldOptions","Field","EventSettings","Resources","ResourceBase","leftPixel","renderResourceHeaderIndent","resColTd","resColDiv","headerIndentTemplate","ClassName","expandedField","slicedCollection","resColl","resDiv","generateTreeData","countCalculation","setRenderedResources","resRows","iconDiv","setMargin","classCollection","parentCollection","wholeCollection","eventElements_1","updateVirtualContent","rowCollection","workCellCollection","headerRowCollection","clickedRes","clonedCollection","trElem","resTable","resourceWrapper","renderResourceHeaderText","menuClick","popupOverlay","treeWrapper","resourceTree","treeViewObj","nodeClicked","resourceClick","treePopup","isTimeLine","treeCollection","resTreeColl","treeHandler","treeLevel","levelId","treeArgs","resourceName","resourceChild","tree","resourceTreeLevel","headerCollection","levelIcon","headerWrapper","headerCollection_1","treeNodes","selectResourceByIndex","triggerEvents","bindResourcesData","isSetModel","resourceObj","getResourceModel","refreshLayout","workDaysField","cssClassField","renderElements","setResourceCollection","requiredResources","colorIndex","requiredResources_1","resourceColorField","innerDates","resTreeGroup","lastColumnDates","prevResource","prevResourceData","prevOrder","resTree","resWorkDays","generateCustomHours","resCssClass","resourceLevelIndex","generateHeaderLevels","dateSlots_1","dateSlot","headerDates","headerLevels","currentLevelChilds_1","currentLevelChild","nextLevelChilds","nextLevelChilds_1","nextLevelChild","lastLevelResource","dateHeaderLevels","dateColSpan","datesColumn","headerDates_1","resGroup","_k","colorFieldIndex","resourceDates","groupEditIndex","groupEditIndex_1","length_4","addResource","addObj","removeResource","removeObj","resourceExpand","resourceScroll","offsetTarget","resToolBarEle","Schedule","allowMultiDrag","cssClass_1","cls_1","initializeDataModule","renderTableContainer","getActiveViewOptions","initializeResources","isLayoutOnly","initializeView","destroyHeaderModule","showHeaderBar","destroyPopups","initializePopups","getViewIndex","setViewOptions","isModuleLoad","selectedView","isOptions","fieldViewName","dayHeaderTemplateName","dayHeaderTemplate","monthHeaderTemplateName","monthHeaderTemplate","headerIndentTemplateName","scheduleOptions","firstMonthOfYear","monthsCount","internalTimeFormat","viewsData","setEditorTitles","initializeTemplates","cellHeaderTemplateFn","templateParser","dayHeaderTemplateFn","monthHeaderTemplateFn","cellTemplateFn","dateHeaderTemplateFn","majorSlotTemplateFn","minorSlotTemplateFn","appointmentTemplateFn","resourceHeaderTemplateFn","headerIndentTemplateFn","headerTooltipTemplateFn","eventTooltipTemplateFn","editorTemplateFn","quickInfoTemplatesHeaderFn","quickInfoTemplatesContentFn","quickInfoTemplatesFooterFn","setCldrTimeFormat","getDateTime","setCalendarMode","navigationArgs","animateLayout","getDefaultLocale","workWeek","agenda","weekAgenda","workWeekAgenda","monthAgenda","noEvents","emptyContainer","allDay","noTitle","deleteMultipleEvent","deleteSeries","editSeries","editEvent","addTitle","moreDetails","editContent","deleteMultipleContent","newEvent","recurrence","wrongPattern","seriesChangeAlert","sameDayAlert","occurenceAlert","editRecurrence","repeats","startEndError","invalidDateError","blockAlert","yes","timelineDay","timelineWeek","timelineWorkWeek","timelineMonth","timelineYear","editFollowingEvent","deleteTitle","editTitle","beginFrom","endAt","expandAllDaySection","collapseAllDaySection","searchTimezone","noRecords","onScheduleResize","isPreventScroll","isAllDayCell","dateInMS","getDayHeaderTemplate","getMonthHeaderTemplate","getHeaderIndentTemplate","eventClone","startEndTime","startEndDate","startDateText","endDateText","announcementString","scrollEdges","viewBoundaries","weekNumberDate","weekLastDate","weekMidDate","indentTemplate","isResource","isLayout","isDataManager","setRtlClass","propertyChangeAction","allDayRowScrollUpdate","onEventSettingsPropertyChanged","onGroupSettingsPropertyChanged","setWorkHours","getWorkHourCells","resetWorkHours","workHourCells","viewStartHour","viewEndHour","tempStartIndex","tempEndIndex","tds","tdCol","firstTd","lastTd","endDateFromColSpan","getResourceCollections","setResourceCollections","resourceCol","changeCurrentView","getCurrentViewIndex","getResourcesByIndex","expandResource","collapseResource","scrollToResource","groupName","exportToICalendar","iCalendarExportModule","initializeCalendarExport","importICalendar","fileContent","iCalendarImportModule","initializeCalendarImport","exportToExcel","excelExportOptions","initializeExcelExport","printOptions","getEvents","includeOccurrences","getBlockEvents","eventID","getCurrentViewEvents","isRemoteRefresh","refreshTemplates","isSlotAvailable","closeEditor","closeQuickInfoPopup","modules_1","ScheduleComponent","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","setParent","gridRowBackgroundImage","setBackgroundImage","ElementLayouter","layoutElement","layoutInternal","Layouter","getPaginateBounds","usePaginateBounds","paginateBounds","PdfLayoutFormat","baseFormat","boundsSet","layoutType","layoutPaginateBounds","PdfLayoutParams","layoutFormat","PdfLayoutResult","PdfLayoutElement","beginPageLayout","endPageLayout","onBeginPageLayout","onEndPageLayout","bEmbedFonts","newBound","TextLayouter","currentBounds","pageResult","TextPageLayoutResult","layoutOnPage","getLayoutResult","PdfTextLayoutResult","lastLineBounds","checkCorrectBounds","stringResult","textFinished","FitElement","PdfTextWebLink","getTextPageBounds","remainderText","lastLineTextBounds","PdfTextElement","hasPointOverload","isPdfTextElement","drawText","stringLayoutResult","calculateResultBounds","lineSize","maximumWidth","PdfAnnotation","textFont","pdfDictionary","internalColor","darkness","nativeRectangle","initialHeight","tempLoacation","PdfLinkAnnotation","PdfActionLinkAnnotation","pdfAction","getSetAction","PdfAction","PdfUriAction","uniformResourceIdentifier","PdfUriAnnotation","pdfUriAction","uriAction","uniformResourceLocator","uriAnnotation","recalculateBounds","defaultBorder","previousFontStyle","drawMultipleLineWithPoint","drawMultipleLineWithBounds","PdfGridLayouter","gridInitialWidth","gridSize","parentCellIndex","childheight","hasRowSpanSpan","isRearranged","pageBounds","listOfNavigatePages","columnRanges","breakRow","slr","isPaginate","gridLayoutFormat","currentGraphics","FitColumnsToPage","getRow","startLocation","hType","horizontalOverflowType","allowHorizontalOverflow","measureColumnsWidth","determineColumnDrawRanges","isRowHeightSet","cellWidths","getColumn","subWidths","layoutedPages","cellBounds","cellStartIndex","cellEndIndex","returnObject","raiseBeforePageLayout","currentRowIndex","drawHeader","getHeader","isCellMergeContinue","headerResult","drawRow","repeatRowIndex","OnePage","getNextPageformat","repeatRow","rowResult","splitChildRowIndex","isrowFinish","ParentCell","isGridSplit","tempResult","raisePageLayouted","allowRowBreakAcrossPages","cellPadding","rowBreakHeight","isRowBreaksNextPage","rowBreakHeightValue","i_2","noOfPageCount","repeatHeader","headerRepeat","tempResult1","i_3","checkIsFisished","i_4","PdfGrid","i_5","NestedGridLayoutResult","recalHeight","ReCalculateHeight","secion","pageGraphics","location_2","totalwidth","i_6","columnWidth","drawCellBorders","columnSpan","isPdfGrid","maximumCellBoundsWidth","largeNavigatePage","rowLayoutBoundsWidth","reArrangePages","FinishedDrawingCell","nextPage","pageindex","CheckIfDefaultFormat","measureTrailingSpaces","noClip","RaiseBeforeCellDraw","raiseBeginCellDraw","PdfGridBeginCellDrawEventArgs","onBeginCellDraw","raiseAfterCellDraw","cellstyle","raiseEndCellDraw","PdfGridEndCellDrawEventArgs","onEndCellDraw","repeatFlag","PdfGridLayoutResult","measureHeight","raiseBeginPageLayout","PdfGridBeginPageLayoutEventArgs","startRowIndex","PdfGridEndPageLayoutEventArgs","raiseEndPageLayout","RowLayoutResult","rowHeightWithSpan","rowSpanExists","maxSpan","currRowIndex","LayoutFormat","FitPage","drawRowWithBreak","repeatRowNumber","isFit","rowMergeComplete","Paginate","isFitToCell","location_4","cancelSpans","rowOverflowIndex","cellSpacing","layouter","isCustomWidth","calculateHeight","gridHeight","cellstyle1","rowBreakPageHeightCellIndex","PdfGridLayoutFormat","GridCellEventArgs","gridRowIndex","gridCellIndex","gridBounds","bSkip","cellStyle","PdfCancelEventArgs","BeginPageLayoutEventArgs","EndPageLayoutEventArgs","nextPdfPage","layoutedBounds","bIsFinished","PdfGridCell","tempval","fontSpilt","finsh","rowSpanRemainingHeight","hasRowSpan","hasColSpan","internalIsCellMergeContinue","internalIsRowMergeContinue","internalIsCellMergeStart","internalIsRowMergeStart","objectValue","isSingleGrid","colCount","columnSpanExists","isComplete","measureWidth","getTextFont","webLink","drawCellBackground","getBackgroundBrush","getBackgroundImage","adjustContentLayoutArea","returnBounds","cancelSubsequentSpans","adjustOuterLayoutArea","getTextPen","getTextBrush","strFormat","getStringFormat","innerLayoutArea","rowFontSplit","layoutRect","setSpan","checkSpan","childGridResult","imageBounds","borderOverlapStyle","Inside","Square","currentColIndex","compWidth","calculateWidth","internalWidth","PdfGridCellCollection","tempcell","PdfGridColumn","PdfGridColumnCollection","internalColumns","initialWidth","isPageWidth","getDefaultWidths","subFactor","PdfGridRow","gridRowOverflowIndex","rowWidth","isRowSpanRowHeightSet","isPageBreakRowSpanApplied","isRowMergeComplete","isHeaderRow","pdfGrid","bRowSpanExists","gridCells","rowStyle","gridRowBreakHeight","gridResult","bColumnSpanExists","cellIn","rowin","rowWid","PdfGridRowCollection","addRow","temprow","PdfGridHeaderCollection","hasColumnSpan","beginCellDraw","endCellDraw","bRepeatHeader","gridHeaders","gridStyle","ispageWidth","ischildGrid","parentCell","gridLocation","isRowMergeContinue","isCellMergeStart","isRowMergeStart","maximumRowSpan","cellcolSpan","cellrowSpan","cellmaxSpan","childGridColumnWidth","colCount_1","colCount_2","RowCount","ColCount","childGridColWidth","PdfPageTemplateElement","InitiateBounds","dockStyle","resetAlignment","alignmentStyle","setAlignment","isForeground","pdfTemplate","updateDocking","dock","canBeSet","TopLeft","MiddleLeft","BottomLeft","TopCenter","TopRight","MiddleRight","BottomRight","BottomCenter","MiddleCenter","getAlignmentBounds","getDockBounds","getSimpleAlignmentBounds","getTemplateAlignmentBounds","actualBounds","getSimpleDockBounds","getTemplateDockBounds","PdfNumbersConvertor","intArabic","numberStyle","Numeric","LowerLatin","arabicToLetter","LowerRoman","arabicToRoman","UpperLatin","UpperRoman","retval","retvalM","generateNumber","retvalCM","retvalD","retvalCD","retvalC","retvalXC","retvalL","retvalXL","retvalX","retvalIX","retvalV","retvalIV","retvalI","arabic","convertToLetter","appendChar","magnitude","numberstring","letterLimit","acsiiStartIndex","PdfTemplateValuePair","PdfMultipleValueField","drawLocation","PdfPageNumberField","internalNumberStyle","internalGetValue","PdfCompositeField","internalText","automaticField","PdfSingleValueField","painterGraphics","PdfPageCountField","PdfExport","customDataSource","isGrouping","headerOnPages","drawPosition","xPosition","yPosition","exportValueFormatter","isExporting","pdfPageSettings","exportWithData","processExport","blobPromise","hierarchyExportMode","headerPageNumbers","gridDrawPosition","allPromise_1","processSectionExportProperties","processGridExport","getPageSize","gridTheme","processExportProperties","headerThemeStyle","getHeaderThemeStyle","headerFont","headerBrush","processGridHeaders","setColumnProperties","captionThemeStyle","getSummaryCaptionThemeStyle","processGroupedRecords","processRecord","summaryModel","sRows","aggregateModule","prepareSummaryInfo","processAggregates","getFontFamily","getFontStyle","penBrushColor","borderCaption","getBorderStyle","getGridPdfFont","headerSize","headerStyle","fontFamily_1","captionFont","captionSize","captionStyle","fontFamily_2","recordFont","recordSize","recordStyle","fontFamily_3","dataSourceItems","cArgs","captionText","captionSummaryModel","eCols","rowNumber","applyTextAndSpan","pdfCell","getHorizontalAlignment","getVerticalAlignment","gridCell","evtArgs","hyperLink","setHyperLink","recuHeader","spanCnt","cidx","newSpanCnt","fromBottom","drawPageTemplate","includeHiddenColumn","fromTop","headerTemplate_1","processContentValidation","drawPageNumber","getBrushFromContent","textPenColor","penColor","setContentFormat","documentHeader","textBrushColor","brushColor","compositeField","getPageNumberStyle","pageNumberType","getPenFromContent","penSize","getDashStyle","isCaption","isGroupedFooter","isAggregate","sRows_1","leastCaptionSummaryIndex","aggIdx","getSummaryWithoutTemplate","getTemplateFunction","Sum","Average","Max","Min","TrueCount","FalseCount","setRecordThemeStyle","borderRecord","cellLength","cellValue","processCellStyle","gridRow_1","childGridCell","textLink","displayText","hAlign","vAlign","bigint","isMetaKey","ViewSource","onInitialEnd","updateSourceCode","getSourceCode","previewKeyDown","previewElement","wireBaseKeyDown","unWireBaseKeyDown","targetItem","getBaseToolbarObject","updateValueData","getTextAreaValue","disableToolbarItem","enableToolbarItem","invokeChangeEvent","editHTML","getViewPanel","executeGroup","ExecCommandCallBack","commandCallBack","AjaxSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","columnArray","DetailsViewSettings","NavigationPaneSettings","ToolbarSettings","UploadSettings","ImageSettings","FileManagerSettings","getImageUrl","folder","FileToolbarSettings","autoClose","TableSettings","QuickToolbarSettings","PasteCleanupSettings","FontFamily","FontSize","Format","FontColor","BackgroundColor","NumberFormatList","BulletFormatList","IFrameSettings","InlineMode","rte","isFrame","valueContainer","FullScreen","showFullScreen","hideQuickToolbars","scrollableParent","evenArgs","beginEventArgs","enableFloating","toggleParentOverflow","removeFixedTBarClass","hideFullScreen","addFixedTBarClass","EnterKeyAction","getRangeNode","isTableEnter","shiftKey_1","focusElem","currentFocusElem","shiftEnterKey","isFocusedFirst","splitFirstText","removeBRElement","isNearBlockLengthZero","newElem","createInsertElement","finalFocusElem","startParentElem","insertElm","currentParentLastChild","isLastNodeLength","focusBRElem","lineBreakBRElem","insertBRElement","outerBRElem","insertFocusContent","isEmptyBrInserted","brElm2","DialogRenderer","dlgObj","RichTextEditor","defaultResetValue","isResizeInitialized","isFocusOut","isRTE","showCharCount","updateEnable","onFocusHandler","onResizeHandler","clickPoints","setContainer","originalElement","rteOuterWrapper","executeCommand","commandName","htmlPurifier","htmlEditorModule","imageValue","linkValue","sourceCodeModule","RTERender","getXhtml","cleanList","currentStartContainer","currentEndContainer","currentStartOffset","isSameContainer","closestLI","currentLastElem","restrict","removeNodeArray","placeHolderWrapper","allowedKeys","sanitizeHtml","triggerEditArea","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","wireContextEvent","unWireContextEvent","srcList","getTextArea","editPanel","printArgs","printingArgs","fullScreenModule","muteToolbarUpdate","enableTBarItems","removeToolbarItem","removeTBarItems","enterKeyModule","styleSrc","scriptSrc","InjectSheet","scriptSheet","scriptEle","createScriptElement","styleEle","rel","compiledTemplate","updateResizeFlag","editEleMaxWidth","imgPadding","heightValue","rteHeightPercent","heightPercent","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","rteElement","trg","wireScrollElementsEvents","scrollParentElements","contextHandler","EJ2Touch","unWireScrollElementsEvents","closestElem","onSelection","setAutoHeight","iframeElement_1","arrayKey","RichTextEditorComponent","ToastUtility","TextLayer","textBoundsArray","closeNotification","notifyDialog","addTextLayer","renderTextContents","textBounds","canvasElement","setTextElementProperties","contextWidth","applyTextRotation","Rotation","resizeExcessDiv","enableTextSelection","resizeTextContents","textRotation","scaleString","renderObject","sessionStorage","getPreviousZoomFactor","textElements","textLayerPosition","textDivPosition","getTextSelectionStatus","getPinchZoomed","removeForeignObjects","convertToSpan","textString","initId","lastId","modifyTextCursor","textLayerList","isMessageBoxOpen","notificationElement","popupElement_1","CLS_HEADER","CLS_WRAP","CLS_TB_ITEMS","CLS_TB_POPUP","TabActionSettings","TabAnimationSettings","TabItem","Tab","isIconAlone","draggableItems","refreshActiveTabBorder","tbObj","expTemplateContent","isPopup","isSwipeed","itemIndexArray","templateEle","updatePopAnimationConfig","btnCls","tabId","renderContainer","headerPlacement","bdrLine","CLS_INDICATOR","scrCnt","scrCntClass","tbItem","tabID","serverItemsChanged","enableAnimation","loadOn","content_1","triggerAnimation","headerReady","hdrEle","getTabHeader","setActiveContent","getTrgContent","extIndex","hdrPlace","tabItems","addVerticalClass","hdrItems","tabItems_1","parseObject","updateOrientationAttribute","setCloseButton","showCloseButton","hdrItem","reRenderItems","txtWrapEle","tbCount","tItems","spliceArray","isReplace","tbId","addIndex","tHtml","txtEmpty","headerTextCompile","tCont","wrapAttrs","tItem","spliceItemIndex","removeActiveClass","tabHeader","checkPopupOverflow","tbPop","tbrItems","isOverflow","ripEle","actEleId","prevEle","prevCtnAnimation","triggerPrevAnimation","oldCnt","animateObj","prevActiveEle","newCnt","idNo","openEff","clsEff","setActiveBorder","trgParent","trgIndex","getEleIndex","selectTab","eleStr","templateCompile","compileElement","templateFUN","eleVal","findEle","tbPos","place","activeTab","changeToolbarOrientation","curActItem","headerPos","contentPos","heightAdjustMode","CLS_CONTENT","trgHdrEle","reorderActiveTab","bar_1","tbWidth","skipDataBind","trg_1","eleTrg","refreshItemVisibility","eventArg","prevItem","previousIndex","selectingID","isSwiped","refreshActiveBorder","tbPopObj","bindDraggable","hoverHandler","spaceKeyDown","tabKeyModule","removeTab","clstHead","actEle","nxtSib","scrBar","scrStart","scrEnd","eleStart","eleEnd","eleViewRange","closeButtonTitle","evalOnPropertyChangeItems","isRect","changedProp","hdr","cntItem","isHiddenEle","addTab","hideTab","enableTab","itemDragStart","dropItem","dragItem","dragArgs","draggedItem","droppedItem","scrollRightNavEle","scrollLeftNavEle","hscrollBar","scrollContentWidth","droppedIndex","itemDragStop","draggingItems","tabitemDragArgs","dragsIndex","popupContainer","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","Signature","outputString","drawOutputString","imageOutputString","signaturecollection","outputcollection","fontsign","signfontStyle","isSaveSignature","isInitialFiledSaveSignature","isSignatureFieldsSaveSignature","saveSignatureString","saveImageString","signatureImageString","maxSaveLimit","addStampImage","upoadedFiles","uploadedFile","enableCreateButton","createSignaturePanel","dialogDiv","signaturePanelMouseDown","signaturePanelMouseMove","signaturePanelMouseUp","clearSignatureCanvas","isToolbarSignClicked","appearanceTab","createSignatureCanvas","signaturePanelHeader","isInitialField","signatureDialog","tabObj","signatureWindow","drawSignatureWithTool","fireFocusOutFormField","closeSignaturePanel","addSignatureInPage","updateCanvasSize","checkboxItem","drawCheckbox","hideSignatureCheckbox","typeCheckbox","imageCheckbox","drawSavedSignature","image_1","enableClearbutton","handWrittenSignatureSettings","initialDialogSettings","hideSaveSignature","hideCheckboxParent","signatureDialogSettings","initialFieldSettings","signatureFieldSettings","saveSignatureCheckbox","saveSignatureImage","addSignature","annotationName","createGUID","currentSignatureAnnot","isSignatureAdded","signatureBounds","updateSignatureAspectRatio","signatureCount","signatureName","addSignatureCollection","hideSignaturePanel","imageAddSignature","typeAddSignature","checkSaveFiledSign","drawSignature","initialField","saveSign","signaturetype","zoomvalue","signtypevalue","updateSignatureTypeValue","signatureModule","fontElements","bindTypeSignatureClickEvent","fontElement","typeSignatureclicked","bindDrawSignatureClickEvent","previousField","saveCheckBoxContent","appearanceDiv","typeDiv","inputobj","fontDiv","renderSignatureText","uploadDiv","uploadCanvas","uploadSignatureImage","FontName","fontSignature","typeSignatureFonts","showHideSignatureTab","displayMode","handleSelectEvent","tabInstance","enableCreateSignatureButton","Draw","createSignatureFileElement","signImage","textBox","typeSignatureclick","imageString","minimumX","minimumY","maximumX","maximumY","collectionData","signatureType","newdifferenceX","newdifferenceY","differenceX","differenceY","signCollection","imageCount","getSaveLimit","RenderSavedSignature","isAddedSignClicked","signatureFontFamily","collectionAddedsign","signatureIndex","signatureId","setTabItemWidth","fontAppearance","canvasWidth","fontInnerDiv","findMousePosition","mouseDetection","oldX","oldY","drawMousePosition","createbtn","clearbtn","currentRect","drawSignatureInCanvas","convertToPath","movePath","linePath","isCanvasClear","drawObject","isClearDrawTab","isClearTypeTab","isClearImageTab","imageCanvas","signbutton","fontdiv","textbox","saveSignature","storeObject","isStorageExceed","annotationStorage","pageAnnotationObject","strokeColorString","getRgbCode","csData","checkDefaultFont","signTypeCanvas","canvasContext","nameToHash","stringArray","renderSignature","currentAnnotation","canvass","signatureAdded","fireSignatureAdd","storeSignatureData","renderExistingSignature","isImport","Bounds","PathData","IsSignature","AnnotationType","Opacity","StrokeColor","Thickness","SignatureName","annotationMenuObj","isSignatureEditable","clearAnnotationStorage","storeSignatureCollections","annotObject","getPageCollection","markupAnnotation","annotationStringified","modifySignatureCollection","annotationBase","isSignatureEdited","updateDocumentEditedProperty","currentAnnotObject","pageAnnotations","getAnnotations","updateSignatureCollection","manageAnnotations","collectionDetails","checkSignatureCollection","selectAnnotation","annotationId","uniqueKey","isExisting","signatureCollection","addInCollection","pageSignatures","shapeAnnotations","showSignatureDialog","setAnnotationMode","setInitialMode","updateSignatureCollections","copyContextMenu","contextMenuList","createContextMenu","contextMenuElement","contextMenuObj","contextMenuOnBeforeOpen","onMenuItemSelect","contextMenuOnCreated","currentAnnotSettings","isFreeTextContextMenu","checkContextMenuDeleteItem","isTouchDesignerMode","isClickWithinSelectionBounds","designerMode","onOpeningForShape","formDesignerToolbarModule","showHideDeleteIcon","designerModetarget","currentTextMarkupAnnotation","formDesigner","isCalibrateAnnotationModule","currentAnnotationMode","contextMenuOption","hideContextItems","enableCommentPanelItem","restrictContextMenu","hideMenuItems","contextMenuCollection","menuName","disableContextMenuItems","hideLocaleItem","processLocaleContent","getEnabledItemCount","contextMenuLocaleContent","enabledItemCount","enableCommentPanel","isProp","isSignature","OnItemSelected","selectedMenu","previousAction","CONTAINER","PROGRESS","CLOSEBTN","ToastPosition","ButtonModelProps","ToastAnimations","ToastAnimationSettings","Toast","toastCollection","isBlazorServer","progressObj","intervalId","toastTemplate","initRenderClass","toastObj","collectionObj","templateChanges","toastContainer","setPositioning","isToastModel","toastEle","setWidthHeight","personalizeToast","templateRendering","setProgress","setAria","appendToTarget","showToast","hideToast","clearContentTemplate","clearToastTemplate","fetchEle","interactionType","newestOnTop","destroyToast","prob","tempVar","tmpArray","clo","clearProgress","removeToastContainer","clearContainerPos","customPosition","toastBeforeClose","hideAnimate","toastClose","toastBeforeCloseArgs","progressEle","setIcon","setTitle","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","toastContainerElement","untilToastsModel","NavigationPane","thumbnailWidthMin","contentContainerScrollWidth","closeButtonLeft","isTooltipCreated","isThumbnail","annotationContextMenu","isCommentPanelShow","commentPanelWidthMin","isNavigationToolbarVisible","isBookmarkListOpen","isNavigationPaneResized","restrictUpdateZoomValue","loadImportAnnotation","fireImportStart","uploadedFileType","importFile","annotationData","importAnnotations","Json","Xfdf","fireImportFailed","openImportExportNotificationPopup","resizeIconMouseOver","resizePanelMouseDown","sideBarResizer","previousX","resizeViewerMouseLeave","commentPanelContainer","commentPanelMouseLeave","resizePanelMouseMove","getPopupNoteVisibleStatus","skipPreventDefault","outerContainerWidth","sideBarContentSplitter","sideBarTitleContainer","getViewerContainerLeft","getViewerContainerRight","closeDiv","thumbnailViewModule","updateZoomValue","bookmarkButton","bookmarkViewModule","setBookmarkContentHeight","updateCommentPanelContainer","sideToolbarOnClose","removeThumbnailSelectionIconTheme","removeBookmarkSelectionIconTheme","updateViewerContainerOnClose","sideToolbarOnClick","bookmarkPane","bookmarkButtonOnClick","openBookmarkcontentInitially","commentPanelMouseDown","commentPanelResizer","updateCommentPanelTextTop","initializeNavigationPane","createNavigationPane","createCommentPanelTitleContainer","commentsContentContainer","createFileElement","createXFdfFileElement","sideBarToolbar","sideBarToolbarSplitter","cssFloat","createCommentPanel","controlLeft","controlRight","createSidebarToolBar","createSidebarTitleCloseButton","createResizeIcon","sideToolbarOnMouseup","sideBarTitleOnMouseup","adjustPane","splitterElement","sideToolbarElement","sideToolbarContent","toolbarContainer","getSideToolbarHeight","createCommentPanelResizeIcon","commentPanelTitleContainer","commentpanelTilte","annotationButton","moreOptionButtonSpan","commentCloseIconDiv","closeCommentPanelContainer","commentCloseIcon","createAnnotationContextMenu","openAnnotationContextMenu","commentPanelResizeIcon","setCommentPanelResizeIconTop","annotationMenuElement","annotationMenuItemSelect","exportAnnotations","importAnnotationIconClick","importXFdfAnnotationIconClick","annotationInputElement","annotationXFdfInputElement","commentPanel","getViewerContainerScrollbarWidth","propertyToolbar","createNavigationPaneMobile","viewerMainContainer","searchTemplate","goBackToToolbar","enableSearchItems","Tool","initiateSearchBox","initiateBookmarks","setSearchInputWidth","mobileScrollerContainer","mobileTool","bookmarkContainer","renderBookmarkContentMobile","childNavigateCount","bookmarkList","isMobileAnnotEnabled","searchInputParent","getParentElementSearchBox","toastObject","tooltipChild","tooltipElement_1","createMobileTooltip","tooltipDiv","onTooltipClose","toolbarResize","thumbnailButton","thumbnailButtonSpan","onTooltipBeforeOpen","buttonSpan","enableBookmarkButton","setResizeIconTop","mainContainerWidth","sideToolbarWidth","enableThumbnail","sideBarContentContainerWidth","commentPanelContainerWidth","getViewerMainContainerWidth","resetThumbnailIcon","setBookmarkSelectionIconTheme","renderBookmarkcontent","disableBookmarkButton","bookmarkButtonInstance","thumbnailButtonInstance","CanvasRenderer","parseDashArray","rotateContext","setFontStyle","dashes","splittedDashes_1","renderPath","segs","xAxisRotation","currp","cpp","centp","ad","sy","labelAlign","startPointX","startPointY","endPointX","endPointY","getMeetOffset","getSliceOffset","alignOptions","srcWidth","srcHeight","destinationW","destinationH","resultWidth","xalign","yalign","sWidth","dWidth","dHeight","canvas1","srcRatio","destRatio","transform_1","getTransform","setTransform","parentSvg","fromPalette","ctx_1","pivotX_1","pivotY_1","imageObj","labelX","labelY","pointx","pointy","refreshDiagramElements","drawingObjects","SvgRenderer","diagramId","onlyRect","setAttributeSvg","setSvgStyle","updateSelectionRegion","gElement","createGElement","createSvgElement","drawCircle","enableSelector","classval","canApplyStyle","svgLabelAlign","wrapBound","pointX","pointY","shadowElement","renderAdornerLayer","commonStyle","cavas","pageBound","svgAdornerSvg","svgObj","createSvg","adornerSvgLayer","svgSelector","BlazorContextMenu","htmlCollection","BlazorUiAdaptor","totalPageElement","currentPageBoxElementContainer","currentPageBoxElement","firstPageElement","previousPageElement","lastPageElement","zommOutElement","zoomInElement","zoomDropDownElement","selectToolElement","handToolElement","commentElement","submitFormButton","printElement","downloadElement","highlightElement","underlineElement","strikeThroughElement","calibrateElement","stampElement","freeTextElement","signatureElement","inkElement","annotationFontSizeInputElement","annotationFontFamilyInputElement","annotationColorElement","annotationStrokeColorElement","annotationThicknessElement","annotationOpacityElement","annotationFontColorElement","annotationFontFamilyElement","annotationFontSizeElement","annotationTextAlignElement","annotationTextColorElement","annotationTextPropertiesElement","annotationDeleteElement","annotationCloseElement","annotationCommentPanelElement","mobileToolbarContainerElement","mobileSearchPreviousOccurenceElement","mobileSearchNextOccurenceElement","disableClass","editAnnotationButtonElement","findToolbarElements","updateTotalPage","updateCurrentPage","loadDocument","enableNavigation","enableMagnification","selectItem","SelectToolElement","enableStickyNotesAnnotation","enableTextSearch","isFormFieldDocument","enableAnnotation","enableAnnotationToolbar","enablePrint","enableDownload","enableTextMarkupAnnotation","enableStampAnnotations","enableFreeText","enableHandwrittenSignature","enableInkAnnotation","deselectItem","showAnnotationToolbar","isToolbarVisible","adjustViewer","deSelectItem","closeAnnotationToolbar","resetToolbar","EnableDeleteOption","pageChanged","updateUndoRedoButton","disableUndoRedoButton","enableTextMarkupAnnotationPropertiesTools","enableAnnotationPropertiesTool","isProperitiesChange","enableFreeTextAnnotationPropertiesTools","enableStampAnnotationPropertiesTools","isPropertiesChange","enableSignaturePropertiesTools","annotationAdd","annotationUnSelect","annotationSelect","annotationType","updateFontFamilyInIcon","updateFontSizeInIcon","fontValue","tapOnMobileDevice","isTapHidden","PdfViewerBase","mouseDownEvent","pageLeft","sessionLimit","pageStopValue","pageLimit","previousPage","isViewerMouseDown","isViewerMouseWheel","isLoadedFormFieldAdded","pointerCount","pointersForTouch","mouseLeft","mouseTop","touchClientX","touchClientY","previousTime","isTouchScrolled","isLongTouchPropagated","longTouchTimer","isViewerContainerDoubleClick","dblClickTimer","isPanMode","dragX","dragY","isScrollbarMouseDown","ispageMoved","isThumb","singleTapTimer","inputTapCount","annotationPageList","importPageList","isImportedAnnotation","isStampMouseDown","stampAdded","customStampCount","isDynamicStamp","customStampCollection","isAlreadyAdded","isAddAnnotation","annotationComments","isNewSignatureAdded","annotationRenderredList","formFieldStorage","isNewStamp","downloadCollections","isAnnotationAdded","annotationEvent","isAnnotationDrawn","tileRenderCount","tileRequestCount","isTileImageRendered","isDataExits","requestLists","tilerequestLists","isInkAdded","inkCount","isMousedOver","isFormFieldMousedOver","isPassword","isDrawnCompletely","isAddComment","nonFillableFields","isFocusField","focusField","clearSessionStorage","documentLiveCount","Request","setUnloadRequestHeaders","credentialsData","credentials","clearCache","formDesignerToolbarHeight","isAnnotationToolbarHidden","isFormDesignerToolbarHidded","formDesignerToolbar","updatePageHeight","annotationToolbarContainer","annotationToolbarHeight","onToolbarResize","viewerContainerOnMousedown","isClickedOnScrollBar","diagramMouseDown","accordionContainer","isEditableElement","updateCommentPanel","viewerContainerOnMouseup","scrollHoldTimer","isSignatureFieldReadOnly","diagramMouseUp","onAnnotationMouseUp","accordionExpand","expandItem","commentsDiv","firePageClick","isToolbarInkClicked","onTextMarkupAnnotationMouseUp","updateCanvas","viewerContainerOnMouseWheel","getRerenderCanvasCreated","zoomDifference","magnification","onWindowKeyDown","isFreeTextAnnotationModule","inputElementModule","isInFocus","addInkAnnotation","deSelectCommentAnnotation","updateStampItems","deselectAllItemsInBlazor","deselectAllItems","viewerContainerOnKeyDown","isMac","openFileDialogBox","textSearchButtonHandler","cut","DeleteKeyPressed","viewerContainerOnMousemove","isDropletClicked","textSelect","onTextMarkupAnnotationMouseMove","panOnMouseMove","currentStampAnnotation","stampModule","isStampAnnotSelected","diagramMouseLeave","diagramMouseMove","isNewStampAnnot","isStampMode","viewerContainerOnMouseLeave","viewerContainerOnMouseEnter","viewerContainerOnMouseOver","viewerContainerOnClick","getCurrentTextMarkupAnnotation","getMouseEventArgs","clickCount","isFreeTextAnnotation","editLabel","selectTextMarkupCurrentPage","comments","fireFormFieldDoubleClickEvent","createPropertiesWindow","viewerContainerOnDragStart","viewerContainerOnContextMenuClick","onWindowMouseUp","isLeftDropletClicked","isRightDropletClicked","isTextMarkupAnnotationMode","isNewFreeTextAnnotation","viewerElement","onWindowTouchEnd","viewerContainerOnTouchStart","touchPoints","preventTouchEvent","onTextMarkupAnnotationTouchEnd","handleTaps","handleTextBoxTaps","isDesignerMode","viewerContainerOnLongTouch","viewerContainerOnPointerDown","viewerContainerOnTouchMove","enablePinchZoom","getPagesPinchZoomed","viewerContainerOnPointerMove","viewerContainerOnTouchEnd","speed","renderStampAnnotation","viewerContainerOnPointerEnd","viewerContainerOnScroll","allowServerDataBind","enableServerDataBinding","scrollposX","scrollposY","containerValue","verticalScrollValue","getPageTop","renderElementsVirtualScroll","getPinchScrolled","showPageLoadingIndicator","updateNavigationButtons","mobileSpanContainer","mobilecurrentPageContainer","firePageChange","initiatePageViewScrollChanged","scrollSettings","delayPageRequestTimeOnScroll","updateCommentPanelScrollTop","initializeComponent","blazorUIAdaptor","toolbarDiv","createMobilePageNumberContainer","setMaximumHeight","applyViewerHeight","intializeToolbar","enableNavigationToolbar","mobilenumberContainer","mobiletotalPageContainer","createPrintPopup","createGoToPagePopup","createFileInputElement","documentPath","initializeCollection","mobileScrollContainerDown","mobileScrollContainerEnd","initiatePageRender","documentData","loadedData","isFileName","saveDocumentInfo","interactionMode","initiatePanning","checkDocumentData","setFileName","constructJsonObject","createAjaxRequest","initiateLoadDocument","loadSuccess","documentDetails","StatusText","requestSuccess","clearAnnotationSelection","relativePosition","updateHeight","updateViewerContainer","updateViewerContainerSize","goToPagePopup","loadRequestHandler","errorString","showNotificationDialog","showNotificationPopup","saveDocumentHashData","saveFormfieldsData","pageRender","pageData","pageSizes","restrictionList","RestrictionSummary","RestrictionEnabled","renderPasswordPopup","renderCorruptPopup","updateToolbarItems","createAnnotationSelectElement","restrictionSummary","EnableRestriction","DisableToolbarItems","enableFormFields","enableFormFieldButton","passwordDialogReset","passwordPopup","initPageDiv","previousZoomValue","isZoomMode","zoomMode","createRequestForRender","renderPageElement","uploadedDocumentName","enableAnnotationAddTools","promptElement_1","passwordInput_1","fireDocumentLoadFailed","promptElement","createPasswordPopup","createCorruptedPopup","corruptPopup","documentStringArray","unload","PdfRenderedFormFields","formfieldvalue","setItemInSessionStorage","FieldName","submitItem","updateWaitingPopup","isPageNumber","createWaitingPopup","printMainContainer","getPagesZoomed","createRequestForDownload","saveAsBlob","saveAsBlobRequest","constructJsonDownload","dowonloadRequestHandler","blobUrl","createBlobUrl","isTriggerEvent","importedAnnotation","formFieldIndex","zIndexTable","initiateTextSelectMode","readOnlyCollection","signatureFieldCollection","unloadDocument","virtualLoadRequestHandler","pageRequestHandler","importAnnotationRequestHandler","exportAnnotationRequestHandler","importFormFieldsRequestHandler","exportFormFieldsRequestHandler","windowSessionStorageClear","fireDocumentUnload","measureElement","unloadRequestHandler","myHeaders","moreOptionsButton","commentTextBox","commentContainer","commentSelect","scrollNodeX","scrollNodeY","appVersion","closeCorruptPopup","hideLoadingIndicator","goToPageElement","goToPageInput","pageNoContainer","GoToPageCancelClick","GoToPageApplyClick","closeGoToPagePopUp","EnableApplyButton","DisableApplyButton","differenceRatio","passwordInput","passwordCancel","applyPassword","passwordCancelClick","createCustomStampElement","applyLeftPosition","shapeLabelSettings","labelOpacity","isEnableDelete","hidenItems","disabledItems","shapeMenuItems","CopyItemSelected","TextMarkUpSelected","PropertiesItemSelected","CutItemSelected","pasteItemSelected","DeleteItemSelected","ScaleRatioSelected","CommentItemSelected","showCommentsPanel","createScaleRatioWindow","deleteFormField","deleteAnnotation","pasteSelectedText","cutSelectedText","copySelectedText","isSelectionMaintained","enableProperties","checkIsRtlText","getHorizontalValue","getVerticalValue","getHorizontalClientValue","getVerticalClientValue","currentText","inputFields","initiateTextSelection","isSelectionToolDisabled","updateInteractionTools","onDoubleTap","onSingleTap","onTextBoxDoubleTap","isFormfields","moreDropDown","getSelectTextMarkupCurrentPage","currentStampObj","updateDeleteItems","renderStamp","onAnnotationMouseDown","pageValues","differentPageSize","previousPageHeight","renderPageContainer","getPageWidth","renderPagesVirtually","lowerLimit","pageValue","initiateRenderPagesVirtually","isCompletePageSizeNotReceived","fireDocumentLoad","tileRenderPage","canvas_1","pageDiv_1","currentString","tileX_1","tileY_1","renderPDFInformations","currentImageWidth","currentImageTop","Elements","currentImageLeft","onPageRender","zoomFactor_1","tileX_2","tileY_2","renderTileCanvas","calculateImageWidth","renderPage","canvas_2","pageDiv_2","isAnnotationRendered","renderTextContent","renderFormFields","rerenderFormFields","freeTextAnnotation","signatureInkAnnotation","checkDocumentCollectionData","isStampAnnotationModule","stampData","renderStampAnnotations","renderAnnotations","renderStickyNotesAnnotations","selectCommentsAnnotation","renderFreeTextAnnotations","isInkAnnotationModule","renderExistingInkSignature","isAnnotationSelected","annotationPageIndex","selectAnnotationFromCodeBehind","signatureAnnotation","drawPageAnnotations","texts","orderPageDivElements","createRequestForBookmarks","initializeAcccordionContainer","isCommandPanelOpen","createRequestForComments","createAnnotationLayer","leftPosition","pageDiff","renderPreviousPagesInScroll","downloadDocument","padCharacter","downloadExportAnnotationJson","exportAnnotationFileName","fireFormExportSuccess","fireExportSuccess","downloadExportedXFdfAnnotation","exportFormFields","createRequestForExportFormfields","importFormFields","createRequestForImportingFormfields","fireFormExportStarted","pdfAnnotation","annotationJson","fireFormExportFailed","fireFormImportStarted","fireFormImportFailed","fireFormImportSuccess","removeExistingFormFields","fieldsData","downloadFormDesigner","downloadFormFieldsData","saveImportedAnnotations","textMarkupAnnotationCollection","saveTextMarkupAnnotations","isShapeAnnotationModule","saveShapeAnnotations","calibrateAnnotations","saveMeasureShapeAnnotations","stampAnnotationCollection","saveStampAnnotations","isCommentAnnotationModule","stickyAnnotationCollection","saveStickyAnnotations","importList","signatureData","freeTextAnnotationCollection","saveFreeTextAnnotations","inkSignatureData","saveInkSignature","checkFormFieldCollection","annotationID","isFormFieldAnnotation","fireDownloadStart","fireDownloadEnd","updateDocumentAnnotationCollections","tileValue","pageWidth_1","viewPortWidth_1","isPageRequestSent","pageRequestSent","zoomFactor_2","zoomFactor_3","currentPageWidth","storedTileData","isPinchZoomStorage","blobObj","manageSessionStorage","enableZoomOptimization","sessionSize","annotationList","storageLength","byteCharacters","byteArrays","byteNumbers","getRandomNumber","isNeedToSet","setScrollDownValue","boolValue","isToolbarHidden","isNewFreeTextAnnot","getAnnotationToolStatus","isAnnotationButtonsEnabled","isPopupNoteVisible","isFormDesignerModule","targetWrapper","actualObject","findToolToActivate","selectorBnds","paddedBounds","conn","elementAngle","centerPoint","matrix_1","ten","inflate","checkResizeHandles","checkForResizeHandles","isNodeShape","isInk","resizerLocation","checkSignatureFormField","fieldID","isFormFieldSign","firePageMouseover","getTool","setCursor","diagramMouseActionHelper","freeTextSettings","allowEditTextOnly","mouseMoveforce","initialEventArgs","cursorType","freeTextAnnotModule","setResizerCursorType","isCommentIconAdded","isNewAddedAnnot","viewerPositions","mousePositions","thicknes","fireFormFieldMouseoverEvent","fireAnnotationMouseover","fireFormFieldMouseLeaveEvent","fireAnnotationMouseLeave","resizerCursorType","inkAnnotationSettings","distanceSettings","perimeterSettings","areaSettings","radiusSettings","volumeSettings","lineSettings","arrowSettings","rectangleSettings","circleSettings","polygonSettings","onShapesMouseup","isSkipped","stampObj","customStampSettings","isStampAddMode","stampName","customStampName","customStampImageSource","enableCustomStamp","isAddToMenu","resetAnnotation","signObject","enableAutoFit","defautWidth","primaryToolbar","freeTextEditItem","signatureFieldAnnotation","fireFormFieldClickEvent","exportAnnotationsAsObject","updateExportItem","createRequestForExportAnnotations","clearFormFieldStorage","exportFormFieldsAsObject","importData","annotationDataFormat","isXfdf","createRequestForImportAnnotations","isBase64String","createAnnotationJsonData","fireExportStart","exportObject","fireExportFailed","reRenderAnnotations","fireImportSuccess","importedData","errorDetails","combineImportedData","importPageCollections","textMarkupObject","shapeObject","measureShapeObject","stampObject","stickyObject","freeTextObject","signatureObject","inkObject","isAdded","checkAnnotationCollections","checkAnnotationCommentsCollections","renderAnnotationComments","updateCollections","updateTextMarkupAnnotationCollections","updateShapeAnnotationCollections","updateMeasureAnnotationCollections","updateStampAnnotationCollections","updateStickyNotesAnnotationCollections","updateFreeTextAnnotationCollections","checkSignatureCollections","updateImportedAnnotationsInDocumentCollections","createAnnotationsCollection","updateAnnotationsInDocumentCollections","importedAnnotations","pageCollections","documetCollections","findImportedAnnotations","AnnotName","isNewlyAdded","selectAnnotationCollections","savePageAnnotations","saveImportedTextMarkupAnnotations","saveImportedShapeAnnotations","saveImportedMeasureAnnotations","saveImportedStampAnnotations","saveImportedStickyNotesAnnotations","saveImportedFreeTextAnnotations","signaturCollection","signaturInkCollection","excistingImportAnnotation","newlyImportAnnotation","checkImportedData","measureObject","inkAnnotationObjct","resut","existingCollection","newCollection","deleteAnnotations","accordionContent","accordionContentContainer","freeTextPageNumbers","stampPageNumber","inkAnnotationindex","addAnnotation","importAnnotation","documentCollections","isAnnotationObject","annotationCount","newAnnotation","ShapeAnnotationType","AnnotationAddMode","annotationAddMode","Author","AnnotationSelectorSettings","AnnotationSettings","PageNumber","ModifiedDate","Subject","Note","IsCommentLock","isCommentLock","Comments","updateComments","review","State","StateModel","stateModel","CustomData","AnnotType","IsMultiSelect","TextMarkupAnnotationType","textMarkupAnnotationType","TextMarkupContent","textMarkupContent","TextMarkupStartIndex","textMarkupStartIndex","TextMarkupEndIndex","textMarkupEndIndex","convertBounds","Icon","MarkupText","TextAlign","FillColor","Rotate","Font","RotateAngle","StampAnnotationType","stampAnnotationType","CreationDate","creationDate","apperarance","stampAnnotationPath","Apperarance","IsDynamic","stampFillcolor","IsPathData","BorderStyle","BorderDashArray","IsCloudShape","isCloudShape","CloudIntensity","cloudIntensity","RectangleDifference","rectangleDifference","LineHeadStart","LineHeadEnd","IsLocked","isLocked","EnableShapeLabel","LabelContent","LabelFillColor","LabelBorderColor","LabelBounds","labelBounds","LabelSettings","labelSettings","LeaderLength","LeaderLineExtenstion","leaderLineExtension","convertVertexPoints","VertexPoints","calibrate","Calibrate","conversionFactor","fractionalType","denominator","formatDenominator","targetUnitConversion","Caption","CaptionPosition","captionPosition","LeaderLineExtension","LeaderLineOffset","leaderLineOffset","ConvertPixelToPoint","IsLock","currentPageContainer","isDocumentEdited","getWindowDevicePixelRatio","getZoomRatio","FormFields","maintainTabIndex","maintanMinTabindex","isSignatureField","isKeyDownCheck","isSignatureRendered","maxTabIndex","minTabIndex","IsInitialField","Alignment","IsTransparent","boundArray","foreColor","borderRGB","fieldProperties","isMultiline","Multiline","getListValues","MaxLength","Visible","fieldType","getFormFieldType","IsRequired","addedElement1","addFormField","addSignaturePath","renderExistingAnnnot","createParentElement","font_2","applyCommonProperties","checkIsReadonly","applyTabIndex","checkIsRequiredField","applyDefaultColor","rotationAngle","getAngle","focusFormFields","blurFormFields","updateFormFields","changeFormFields","updateFormFieldsValue","updateSameFieldsValue","currentField","bookmark","goToBookmark","inParts","outParts","nextField","signatureFieldNavigate","nextSign","isNextSignField","signatureFields","getSignField","getSignatureIndex","currentSignatureIndex","isNextSign","isFirstNavigate","renderSignatureField","currentSignIndex","curSignIndex","curSignIndexId","signatureFieldData","PageIndex","findRenderPageList","signatureFieldId","getFormDesignerSignField","getFormFieldSignField","retreiveFormFieldsData","retriveFieldName","retriveCurrentValue","isCollection","updateFormFieldsCollection","IsReadonly","Selected","SelectedValue","updateFormFieldValues","updateDataInSession","GroupName","SelectedList","getSignatureBounds","LineBounds","fieldDatas","CheckboxIndex","childItemsText","m_1","lineBounds","webkitAppearance","fireButtonFieldClickEvent","targetBounds","parentElementBounds","isInitialFieldToolbarSelection","signatureFontSize","signString","getSignBounds","signatureFitMode","getDefaultBoundsforSign","updateSignatureDataInSession","signatureBound","updateFormFieldCollections","updateFormFieldPropertiesChanges","isDraw","signIcon","currentFields","istabindexed","currentTarget_1","calculateSignatureBounds","signatureCavasWidth","signatureCavasHeight","isSignatureStretched","isHeightStretched","leftDifference","fieldWidth","fieldHeight","fieldWidthRatio","fieldHeightRatio","canvasWidthRatio","canvasHeightRatio","ratioDifference","currentLeftDiff","currentTopDiff","signatureCanvas","signBounds","signaturePath","FormFieldsData","signField","childrens","selectedOptions","updateFormDesignerFieldInSessionStorage","inputdiv","signIconWidth","signIconHeght","hightDifference","printContainer","createTextBoxField","createRadioBoxField","createDropDownField","createListBoxField","createSignatureField","createButtonField","addAlignmentPropety","enableAutoComplete","BackColor","formFieldsReadOnly","makeformFieldsReadonly","TabIndex","BorderColor","BorderWidth","addBorderStylePropety","signIndicator","signatureFieldIndicatorWidth","annotBounds","fieldBounds","signData","ActualFieldName","getBoundsPosition","newBounds","updateSignatureBounds","signatureFieldElement","formFieldData","clearFormFields","isFirstRadio","TextList","ImageElement","imageSource","imageScale","imageAlign","stretch","DrawingRenderer","isSvgMode","htmlLayer","createParent","renderImageElement","renderPathElement","renderTextElement","renderRect","getBaseAttributes","contentWidth","contentHeight","Canvas","outerBounds","childX","childY","alignChildBasedOnParent","alignChildBasedOnaPoint","parentSize","DiagramHtmlElement","getNodeTemplate","Drawing","isDynamicStamps","svgRenderer","renderLabels","initObject","createNewZindexTable","notFound","pageTable","tabelLength","initLine","initNode","initContainer","initFormFields","initAnnotationObject","pathContent","basicElement","stampStrokeColor","textele_1","pathContent1","content1","pathContent11","setNodePosition","radiusTextEle","pathContent2","rectElements","signatureText","freeTextEle","srcDecorator","targetDecorator","anglePoints","getPageObjects","refreshCanvasDiagramLayer","fireFormFieldRemoveEvent","removeFieldsFromAnnotationCollections","diagramLayer","objectId","zoomRatio","clearHighlighter","getAdornerLayerSvg","highlighter","getSelectorElement","adornerLayer","adornerLayerSvg","diagramElement","clearSelectorLayer","selectionRect","selectorModel","selectorElement","renderResizeHandle","thumbsConstraints","fireFormFieldSelectEvent","isProgrammaticSelection","renderEndPointHandle","selectSignature","rotateObjects","includeParent","objects_1","getParentSvg","renderBorder","enableNode","isBorderTickness","isSwimlane","annotationSelector","selectionBorderColor","selectionBorderThickness","selectorLineDashArray","getBorderSelector","getSignBorder","borderColor_1","lineDash_1","borderColor_3","lineDash_3","borderColor_4","lineDash_4","borderColor_5","lineDash_5","stickyNotesSettings","borderColor_6","lineDash_6","borderColor_7","lineDash_7","borderColor_2","lineDash_2","renderCircularHandle","canMask","getResizerColors","getShapeSize","getShape","resizerSize","resizerShape","resizerBorderColor","resizerFillColor","renderRotateThumb","selectorConstraints","constraints","currentZoom","nodeConstraints","isPath","isFreeText","renderPivotLine","nodeWidth","nodeHeight","allowPermission","allowedInteraction","updateAnnotationAllowedInteractions","checkIsLockSettings","getAllowedInteractions","getResizerLocation","ResizeNorthWest","ResizeNorthEast","ResizeSouthWest","ResizeSouthEast","ResizeNorth","ResizeSouth","ResizeWest","ResizeEast","connectedSource","connectedTarget","isSegmentEditing","ConnectorSource","initSelectorWrapper","objArray","multipleSelection","preventUpdate","dragAnnotation","dragControlPoint","segmentNumber","updateEndPoint","updateConnector","i_7","i_8","setLineDistance","i_9","i_10","i_11","childNodeHeight","heightDiff","contString","childHeight","node1","scaleAnnotation","scaleObject","refObject","refWrapper","getShapePoint","nodeBounds","selectorBounds","heightDifference","RestrictStamp","getShapeBounds","shapeBounds","shapeCorners","shapeMiddleLeft","shapeTopCenter","shapeBottomCenter","shapeMiddleRight","shapeTopLeft","shapeTopRight","shapeBottomLeft","shapeBottomRight","cornerPoint","pivotPoint","transformMatrix","targetPortId","rotatedPoint1","rotatedPoint2","dragSourceEnd","pasteIndex","clipObject","copyObjects","selectedItems_1","deleteAnnotationById","sortByZIndex","getNewObject","newobjs","zoomfactor","copiedItems","objectTable","copiedItems_1","calculateCopyPosition","updateAnnotationCollection","addedAnnot","triggerAnnotationAddEvent","removedAnnotationCollection","nodeArray","sortID","PdfViewer","AjaxRequestSettings","CustomStamp","AnnotationToolbarSettings","FormDesignerToolbarSettings","SignatureFieldSettings","InitialFieldSettings","SignatureIndicatorSettings","SignatureDialogSettings","ServerActionSettings","StrikethroughSettings","UnderlineSettings","HighlightSettings","LineSettings","ArrowSettings","RectangleSettings","CircleSettings","ShapeLabelSettings","PolygonSettings","StampSettings","CustomStampSettings","DistanceSettings","PerimeterSettings","AreaSettings","RadiusSettings","VolumeSettings","InkAnnotationSettings","StickyNotesSettings","MeasurementSettings","FreeTextSettings","Corners","Edges","TextSearchColorSettings","HandWrittenSignatureSettings","DocumentTextCollectionSettings","TextDataSettings","RectangleBounds","TileRenderingSettings","ScrollSettings","TextFieldSettings","PasswordFieldSettings","CheckBoxFieldSettings","RadioButtonFieldSettings","DropdownFieldSettings","ListBoxFieldSettings","isTextSelectionStarted","drawing","navigationModule","setJsonData","annotCollection","enableCommentPanelTool","renderCustomerStamp","customStamp","customStamps","setMode","updateTextMarkupSettings","createCustomStampAnnotation","enableFormDesignerToolbar","enableBookmark","enableFormDesigner","focusFormField","fieldCollections","retrieveFormFields","isformDesignerModuleListBox","appearance","radioButtonOption","updateFormField","checkBoxOption","dropDownListOption","isXfdfFile","exportAnnotation","exportAnnotationsAsBase64String","JsonData","buttonFieldValue","buttonFieldName","isLeftClick","fireFormFieldAddEvent","fireFormFieldPropertiesChangeEvent","isValueChanged","isFontFamilyChanged","isFontSizeChanged","isFontStyleChanged","isColorChanged","isBackgroundColorChanged","isBorderColorChanged","isBorderWidthChanged","isAlignmentChanged","isReadOnlyChanged","isVisibilityChanged","isMaxLengthChanged","isRequiredChanged","isPrintChanged","isToolTipChanged","isNamechanged","isNameChanged","documentName","isPasswordRequired","errorStatusCode","previousPageNumber","hyperlink","hyperlinkElement","fireAnnotationAdd","tmStartIndex","tmEndIndex","multiPageCollection","annotationBound","multiplePageCollection","fireAnnotationRemove","annotationBounds","fireBeforeAddFreeTextAnnotation","fireCommentAdd","fireCommentEdit","fireCommentDelete","fireCommentSelect","fireCommentStatusChanged","statusChange","fireAnnotationPropertiesChange","isOpacityChanged","isTextChanged","isCommentsChanged","fireSignatureRemove","fireSignatureMove","fireSignaturePropertiesChange","isStrokeColorChanged","isThicknessChanged","fireSignatureResize","fireSignatureSelect","fireAnnotationSelect","fireAnnotationDoubleClick","fireAnnotationResize","fireAnnotationMoving","fireAnnotationMove","downloadData","firePrintStart","fireBookmarkClick","exportData","documentCollection","isMatchcase","clearCurrentAnnotationSelection","selectormodel","clearBulkChanges","annotationToolbarItems","formDesignerToolbarItems","renderComments","initialIndicatorSettings","enableMultiPageAnnotation","enableTextMarkupResizer","allowedInteractions","lineHeadStartStyle","lineHeadEndStyle","labelMaxWidth","dynamicStamps","Revised","Reviewed","Received","Confidential","Approved","NotApproved","signStamps","Witness","InitialHere","SignHere","Accepted","Rejected","standardBusinessStamps","Draft","Final","Completed","ForPublicRelease","NotForPublicRelease","ForComment","Void","PreliminaryResults","InformationOnly","resizeCursorType","defaultText","allowTextOnly","conversionUnit","displayUnit","scaleRatio","signatureItem","saveSignatureLimit","saveInitialLimit","skipDownload","Comment","Cut","Highlight","Paste","ScaleRatio","Strikethrough","PdfViewerComponent","TextMarkupAnnotation","isAddAnnotationProgramatically","currentAnnotationIndex","isNewAnnotation","selectedTextMarkup","triggerAddEvent","isSelectedAnnotation","dropletHeight","annotationClickPosition","annotationLeftMove","annotationRightMove","dropDivAnnotationLeft","dropDivAnnotationRight","updateDropletStyles","isEnableResizer","highlightSettings","underlineSettings","strikethroughSettings","updateAnnotationBounds","updateMultiAnnotBounds","retreieveSelection","annotpageNumbers","lowestNumber","highestNumber","annotNameCollection","rightDivElement","renderTextMarkupAnnotationsInPage","textMarkupAnnotations","isImportTextMarkup","renderTextMarkupAnnotations","findAnnotationMode","updateAnnotationAuthor","getAnnotationSettings","isPrint_1","IsPrint","getIsPrintValue","AllowedInteractions","getAnnotationComments","getSettings","getCustomData","AnnotNameCollection","AnnotpageNumbers","storeAnnotations","renderHighlightAnnotation","renderStrikeoutAnnotation","renderUnderlineAnnotation","isMaintainedSelector","maintainAnnotationSelection","isCleared","convertSelectionToTextMarkup","getDrawnBounds","updateTextMarkupAnnotationBounds","modifyCurrentAnnotation","isMultiAnnotation","drawTextMarkups","isMultiPageAnnotations","updateAnnotationNames","currentAnnots","drawAnnotationSelector","newcanvas","drawAnnotationSelectRect","selectMultiPageAnnotations","deletMultiPageAnnotation","deletedAnnotation","findPosition","removeDiv","updateAccordionContainer","updateImportAnnotationCollection","modifyMultiPageAnnotations","getDateAndTime","updateAnnotationModifiedDate","parentText","getIndexNumbers","multiPageCollectionList","annotNamesCollections","updateAnnotationContent","storeAnnotationCollections","getPageContext","highlightColor","underlineColor","strikethroughColor","highlightOpacity","underlineOpacity","strikethroughOpacity","getAddedAnnotation","actionCollection","createPropertyTools","retreiveTextIndex","msFillRule","getProperBounds","factorRatio","boundValues","shapeData","measureShapeData","stickyData","textMarkupannotations","storeTextMarkupObject","updateModifiedDate","getBoundsForSave","deleteTextMarkupAnnotation","hideMobileAnnotationToolbar","modifyColorProperty","modifyAnnotationProperty","modifyOpacityProperty","isOpacity","undoTextMarkupAction","addAnnotationComments","clearCurrentAnnotation","undoRedoPropertyChange","isUndoAction","tempColor","tempOpacity","redoTextMarkupAction","saveNoteContent","getAnnotationBounds","markupStringArray","textMarkupR","textMarkupG","textMarkupB","pageRect","rectangleArray","selectionStartOffset","selectionEndOffset","currentId","selectionRects","pageStartId","pageEndId","pageStartOffset","pageEndOffset","startElementNode","endElementNode","pageRange","pageRectBounds","pageRectangle","annotCanvas","oldAnnotCanvas","clearCurrentSelectedAnnotation","getCurrentMarkupAnnotation","canvasParentPosition","leftClickPosition","topClickPosition","commentPanelDiv","annotationItem","touchCanvas","hidePopupNote","showPopupNote","currentTextMarkupAnnotations","isAnnotationGot","compareCurrentAnnotations","firstAnnotBounds","firstXposition","firstYposition","secondAnnotBounds","secondXposition","secondYposition","isCurrentTextMarkup","currentEvent","endLeft","endTop","colorDropDownElementInBlazor","createMobileAnnotationToolbar","selectAnnotationDeleteItem","updateColorInIcon","colorDropDownElement","setCurrentColorInPicker","predefinedDate","commentsDivid","addComments","getTextMarkupData","annotationDivSelect","storedIndex","clearShapeMode","clearMeasureMode","textMarkUpSettings","getOffsetPoints","offsetPoints","updateAddAnnotationDetails","annotSelectorSettings","annotallowedInteractions","annotSettings","currentDateString","updateSettings","Location","IsEmpty","textmarkup","CreatedDate","ExistingCustomData","EnableMultiPageAnnotation","EnableTextMarkupResizer","ShapeAnnotation","isImportAcion","getStoredAnnotations","calculateLabelBoundsFromLoadedDocument","updateAnnotationSettings","vPoints","getShapeType","getArrowType","createAnnotationObject","isFormFieldShape","triggerAnnotationAdd","setAnnotationType","updateShapeProperties","modifiedDateLine","setShapeType","lineFillColor","lineStrokeColor","lineOpacity","lineThickness","lineDashArray","lineStartHead","lineEndHead","modifiedDateArrow","arrowOpacity","arrowStartHead","arrowEndHead","arrowFillColor","arrowStrokeColor","arrowThickness","arrowDashArray","modifiedDateRect","rectangleStrokeColor","rectangleFillColor","rectangleOpacity","rectangleThickness","modifiedDateCir","circleStrokeColor","circleFillColor","circleOpacity","circleThickness","modifiedDatePolygon","polygonStrokeColor","polygonFillColor","polygonOpacity","polygonThickness","getShapeAnnotType","modifyInCollection","labelTop","labelLeft","getArrowTypeForCollection","fillColorString","getVertexPoints","calculateLabelBounds","labelFillColorString","labelBorderColorString","fontColorString","annotationModel","labelBound","setting","getShapeData","isArrow","getVertexPointsXY","MeasureAnnotation","measureShapeCount","Ratio","getNumberFormatArray","Distance","Area","Angle","volume","Volume","TargetUnitConversion","Depth","getMeasureType","updateMeasureproperties","distanceStartHead","distanceEndHead","distanceFillColor","distanceStrokeColor","distanceOpacity","distanceThickness","distanceDashArray","perimeterFillColor","perimeterStrokeColor","perimeterOpacity","perimeterThickness","perimeterStartHead","perimeterEndHead","perimeterDashArray","modifiedDateArea","areaFillColor","areaStrokeColor","areaThickness","areaOpacity","modifiedDateRad","radiusFillColor","radiusStrokeColor","radiusOpacity","radiusThickness","modifiedDateVol","volumeFillColor","volumeStrokeColor","volumeOpacity","volumeThickness","measurementSettings","volumeDepth","scaleRatioString","createNumberFormat","getIndent","getMeasureData","numberFormatArray","Unit","FractionalType","ConversionFactor","Denominator","FormatDenominator","cFactor","getFactor","getStringifiedMeasure","createRatioUI","scaleRatioDialog","sourceTextBox","convertUnit","destTextBox","dispUnit","onOkClicked","onCancelClicked","depthUnit","sourceContainer","srcInputElement","srcUnitElement","convertUnitSelect","destinationContainer","destInputElement","destUnitElement","dispUnitSelect","depthLabelText","depthContainer","depthInputElement","depthTextBox","depthUnitElement","depthUnitSelect","unitElement","displayElement","updateMeasureValues","originalUnit","originalDisplayUnit","restoreUnit","dropdownObject","calibUnit","convertUnitItem","getAnnotationBaseModel","getCurrentObject","getCurrentValues","scaledValue","convertPointToUnits","getCurrentRatio","ratioString","inchValue","convertUnitToPoint","pdfAnnotationBase","measureAnnotationType","StampAnnotation","isStampAdded","Apperance","retrieveDynamicStampAnnotation","isExistingStamp","calculateImagePosition","stampShapes","retrievestampAnnotation","renderCustomImage","toLocaleTimeString","RotationAngle","pathdata","customStampWidth","customStampHeight","toLocaleDateString","existingAnnotation","author_1","annotationAddMode_1","isMaskedImage","IsMaskedImage","storeStampInSession","isStampSaved","isCommentsLock","isCustomStamp","CustomStampName","icontype","stampCollection","findImageData","findDynamicText","StampFillColor","apperance","stampType","stampText","dynamicStampItem","signStampItem","standardBusinessStampItem","stampAnnotationtype","imagedata","baseFontName","currentFontname","stickyNotes","StampAnnotationtype","CLS_ROOT","CLS_CTENT","AccordionActionSettings","AccordionAnimationSettings","AccordionItem","Accordion","isDestroy","restoreContent","initializeHeaderTemplate","initializeItemTemplate","initExpand","expandedIndices","expandMode","initItemExpand","acrdItem_1","itemTemplateFn","getItemTemplate","innerEles","toggleIconGenerate","tglIcon","hdrColIcon","innerDataSourceItem","renderInnerItem","acrdnCtnItem","acrdnItem","acrdnHdr","acrdnCtn","getIndexByItem","contentRendering","ariaAttrUpdate","afterContentRender","acrdActive","cntclkCheck","inlineEleAcrdn","nestContCheck","acrdcontainer","acrdnchild","acrdAniEle","acrdAniEle_1","sameContentCheck","sameHeader","acrdnCtn_1","expandState","eleMoveFocus","clstItem","headerEleGenerate","ctnEle","angularnativeCondiCheck","fetchElement","hdrIcnEle","hdrIcon","elementRef","nativeElement","parseddata","temString","itemcnt","ctn","trgtItemEle","expandedItemsPush","expandProgress","expandAnimation","icn","lastActiveItemId","getItemElements","expandedItemsPop","collapseProgress","collapseAnimation","trgtItEl","trgtHeight","itemAttribUpdate","itemLen","innerItemEle","expandedItemRefresh","enableItem","eleHeader","itemExpand","expandedItem","ctnElePos","acrdn","activeContent","regularExpressions","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","labelElement","sIndex_1","eIndex_1","oldValue_1","maskKeyPress","preValue_1","sIndex_2","undoCollec","removeMaskInputValues","addedValues","preEleVal","collec","mobileRemoveFunction","autoFillMaskInputValues","oldEventVal","isDeleted","initStartIndex","initEndIndex","curMask","deleteEndIndex","multipleDel","preValue","prompt_1","isIosInvalid","removeMaskError","isSpace","preventUnsupportedValues","mobileSwipeCheck","mobileValidation","eventOldVal","allowText","prevSupport","isEqualVal","customValArr","applySupportedValues","addMaskErrorClass","changeToLowerUpperCase","sIdx","chkSupport","curVal","caseCount","MaskedTextBox","maskOptions","resetMaskedTextBox","setMaskPlaceholder","getValidClassList","maskClassName","maskStyle","setVal","dynamicPlaceholder","elementWidth","strippedValue_1","strippedVal","getMaskedValue","ROOT_TIP","ELEMENTS","OPEN","PopupSettings","modulesList","localeConstant","getCompValue","InPlaceEditor","isExtModule","submitBtn","isClearTarget","btnElements","divComponents","clearComponents","dateType","inputDataEle","dropDownEle","onScrollResizeHandler","scrollResizeHandler","popupSettings","afterOpen","afterOpenEvent","checkIsTemplate","updateAdaptor","appendValueElement","textOption","renderInitialValue","enableEditor","enableEditMode","valueWrap","getInitFieldMapValue","mText","mVal","getInitQuery","updateInitValue","isEditorOpen","renderEditor","beginEditArgs","cancelFocus","tipOptions","editableOn","inlineWrapper","checkRemoteData","renderAndOpen","afterOpenHandler","tipObj","actionOnBlur","wireDocEvent","showDropDownPopup","componentObj","containerEle","loader","ctrlGroupEle","loadSpinner","appendTemplate","componentRoot","appendButtons","removeSpinner","submitOnEnter","wireEditorKeyDownEvent","renderButtons","wireBtnEvents","btnWrap","createButtons","classProp","updateModelValue","dataAdaptor","spinObj","getEditElement","emptyText","extendModelValue","updateOldValue","getDropDownsValue","getSendValue","getRenderValue","removeEditor","isBlazorDestroy","unWireDocEvent","popMouseDown","popClickHandler","titleConstant","destroyButtons","formValidate","unWireEditorKeyDownEvent","submitPrevent","btnKeyDownHandler","cancelBtnClick","sendValue","updateArrow","triggerSuccess","trgEle","isInit","cancelHandler","checkValidation","fromSubmit","isValidate","validationLength_1","validateArgs","toggleErrorClass","afterValidation","triggerEndEdit","closeBeginBy","endEditArgs","wireEditEvent","valueKeyDownHandler","docClickHandler","doubleTapHandler","enterKeyDownHandler","unWireEditEvent","rteModule","sliderModule","tipTarget","relateRoot","relateTipRoot","relateElements","relateRTEElements","compPrevValue","editModeChanged","StickyNotesAnnotation","commentsCount","commentsreplyCount","commentContextMenu","isAccordionContainer","isCreateContextMenu","isCommentsSelected","isPageCommentsRendered","isCommentsRendered","stickyAnnotations","pageAnnotationName","setImageSource","drawStickyNotes","commentsRequestHandler","isInitialRender","annotationDetails","startPageIndex","endPageIndex","renderAnnotationCollections","excistingAnnotation","updateInkCollections","createPageAccordion","createCommentControlPanel","newCommentsDiv","commentPanelText","accordionPageContainer","alignAccordionContainer","accordionDiv","annotationSubType","commentsContainer","accessKey","isCommentsAdded","commentsAnnotationSelect","commentDiv","createTitleContainer","editObj_1","actionSuccess","createCommentDiv","checkIslockProperty","statusContainer","statusDiv","statusSpan","updateStatusContainer","isNewcommentAdded","commentsDivClickEvent","commentDivMouseOver","commentDivMouseLeave","openEditorElement","commentDivFocus","updateScrollPosition","commentHeight","updateCommentsScrollTop","commentsHeight","titleContainer","newCommentDiv","commentObj","modifyTextProperty","saveCommentDiv","annotationAuthor","commentValue","replyTextBox","replyCommentDiv","getAuthorName","createReplyDivTitleContainer","commentDivOnSelect","saveObj_1","modifyProperty","commentsDivDoubleClickEvent","modifyCommentsProperty","undoRedoAction","isCommentAction","replyDiv","createCommentsContainer","isCopy","annotType","addStickyNotesAnnotations","editObj","titleElement","commentsDivElement","subType","getAnnotationType","commentTitleContainer","commentTypeSpan","updateCommentIcon","commentsTitle","setExistingAnnotationModifiedDate","setModifiedDate","moreOptionsButtonSpan","createCommentContextMenu","openTextEditor","moreOptionsClick","replyTitleContainer","replyTitle","moreButtonSpan","commentSpan","commentMenuElement","commentMenuObj","contextMenuBeforeOpen","commentMenuItemSelect","contextActiveDiv","contextDiv","commentShow","modifyCommentDeleteProperty","acceptedStatusDiv","modifyStatusProperty","completedStatusDiv","statusOptionSpan","cancelStatusDiv","cancelStatusElement","cancelStatusSpan","rejectedStatusDiv","rejectedStatusElement","rejectedStatusSpan","isMoreOptionClick","checkAnnotationSettings","findAnnotationObject","commentEvent","isCommentsSelect","isSetAnnotationType","commentsElement","activeSiblingElement","drawIcons","commentsButton","commentsIcon","currentTextBox","selectAnnotationObj","updateCommentsContainerWidth","typeString","storeCommentObject","annotationCommentObject","getAnnotationTop","scroll_1","scroll_2","isMeasure","isTextAdded","modifyDynamicTextValue","updateUndoRedoCollections","isComment","annotId","clonedObj","replyElement","clonedAnnotation","commentsParentElement","positionValue","updateOpacityValue","undoAction","isAction","undoAnnotation","commentsMainDiv","clonedAnnotationObject","redoCommentsElement","activeDiv","redoAction","poppedItem","deleteStickyNotesAnnotations","undoCommentsElement","isCut","findAnnotationType","updateAnnotation","updateModifiedTime","modifiedTime","isBounds","isUndoRedoAction","accordionPages","AnnotationFlags","Blue","SubType","commonDiv","InkAnnotation","drawInk","addInk","calculateInkSize","getInkBounds","manageInkAnnotations","isinkAnnotationAdded","calculateInkPosition","rectDiff","rectDifference","selectorSettings","storeInkSignatureData","modifySignatureInkCollection","ink","FreeTextAnnotation","inputBoxCount","isFreeTextValueChange","isMaximumWidthReached","previousText","updateTextProperties","inputBoxElement","defaultHeight","wordBreak","onFocusOutInputBox","onKeyDownInputBox","onMouseUpInputBox","isFreeTextAdded","paddingValues","getPaddingValues","leftPadding","topPadding","annotationBoundsX","annotationBoundsY","getRotationValue","rotationWidth","previousFontSize","isNewAdded","getBoundsBasedOnRotation","inputEleHeight","inputEleWidth","inputEleLeft","inputEleTop","isValidFreeText","selectedAnnotation","widthDiff","triggerAnnotationPropChange","inuptEleObj","updateFreeTextAnnotationSize","isSize","autoFitFreeText","previousHeight","highestTextNode","textboxValue","textNodeData","highestTextNodeData","textwidth","characterLength","applyFreetextStyles","annotationBoundsWidth","annotationBoundsHeight","freeText","AnnotationIntent","Border","HorizontalRadius","VerticalRadius","CalloutLines","Flatten","FlattenPopups","FreeTextAnnotationType","InnerColor","Layer","LineEndingStyle","Page","PageTags","ReviewHistory","TextMarkupColor","labelMaxLength","Annotation","annotationSelected","redoCollection","selectAnnotationId","overlappedAnnotations","triggerAnnotationUnselectEvent","clearAnnotationMode","annotation_1","modifyInCollections","selectedAnnot","updateSignatureValue","updateFormFieldCollection","formFieldObj","formFieldsIndex","updateToolbar","checkFormDesignCollection","formFieldId","checkAnnotationCollection","currentPageAnnotations","documentcollections","documentPageCollections","getAnnotationsFromAnnotationCollections","getAnnotationLeft","getTextMarkupAnnotations","pageList","getPageNumberFromAnnotationCollections","getAnnotationIndex","pageAnnotationBases","popupNote","createNote","actionString","modifiedProperty","actionObject","isAnnotationUpdate","duplicate","mobileAnnotationToolbar","createAnnotationToolbarForMobile","drawFormField","updateCollectionForLineProperty","undoRedoMultiline","updateFormFieldValueChange","annotationObj","sType","renderMultilineText","renderTextbox","formFieldModel","getFormField","getFormFiledIndex","updateValuePropertyChange","updateIsSelectedPropertyChange","checkboxDivElement","updateIsCheckedPropertyChange","updateTextboxFormDesignerProperties","updateCheckboxFormDesignerProperties","updateRadioButtonDesignerProperties","updateDropdownFormDesignerProperties","updateListBoxFormDesignerProperties","updateSignatureTextboxProperties","isAnnotationDelete","updateUndoRedoButtons","popupNoteAuthor","popupNoteContent","mainContainerPosition","popupNoteClientRect","topPosition","createTextMarkupPopup","authorPopupElement","modifiedDateElement","noteContentElement","saveClosePopupMenu","onPopupElementMoveStart","onPopupElementMove","onPopupElementMoveEnd","isPopupMenuMoved","popupElementClientRect","currentAnnotPageNumber","clientPosition","showAnnotationPopup","getProperDate","canvasPosition","modifyOpacity","redoClonedObject","opacityValue","modifyFontColor","modifyFontFamily","updateFontFamilyRenderSize","modifyFontSize","modifyTextAlignment","modifyTextProperties","fontInfo","modifyThickness","thicknessValue","modifyStrokeColor","modifyFillColor","lineStartElement","getArrowString","lineEndElement","lineStyleElement","createAppearanceTab","propertiesDialog","destroyPropertiesWindow","startArrowDropDown","endArrowDropDown","thicknessBox","fillColorPicker","refreshColorPicker","strokeColorPicker","fillDropDown","strokeDropDown","opacitySlider","updateOpacityIndicator","lineStyleDropDown","createDropDownContent","selectedLineStyle","selectedLineDashArray","leaderLengthBox","updatePropertiesWindowInBlazor","thicknessElement","fillColorElement","strokeColorElement","leaderLengthElement","onStrokeColorChange","onFillColorChange","colorPick","lineStyleContainer","lineHeadStartElement","onStartArrowHeadStyleSelect","lineHeadEndElement","borderStyleContainer","onEndArrowHeadStyleSelect","dropDownTarget","createStyleList","colorStyleContainer","createColorPicker","createDropDownButton","onFillDropDownBeforeOpen","onStrokeDropDownBeforeOpen","opacityContainer","opacityElement","lineLengthElement","solidLi","createListForStyle","setThickness","dottedLi","dashedLi","isNoColor","colorPicker","enableOpacity","noColor","dropDownButton","colorElement","isLabelNeeded","opacityIndicator","startArrow","endArrow","getArrowTypeFromDropDown","isLineHeadStartStyleChanged","isLineHeadEndStyleChanged","isBorderDashArrayChanged","arrowType","enableBasedOnType","updateAnnnotationPropertyItems","inkAnnotationSelected","enableAnnotationPropertiesTools","triggerAnnotationResize","clearTextMarkupMode","isFieldReadOnly","isAnnotationToolbarVisible","isFormDesignerToolbarVisible","showFormDesignerToolbar","formDesignerItem","getAnnotationWithId","commentsAnnotations","parentAnnotation","annotationCanvas","clearAnnotationCanvas","isImportAnnotations","pageAnnotation","points1","points2","points3","isColor","isStroke","isThickness","isLineStart","isLineEnd","isDashArray","isFreeTextChanged","isDblClick","updateFreeTextFontStyle","overlappedCollection","getOverlappedAnnotations","enableMultiLineOverlap","orderTextMarkupBounds","clickedPosition","overlappedObject","addFreeTextProperties","editSignature","deletComment","addReplyComments","replyComment","commentType","editComments","commentId","editComment","editAnnotation","isTextMarkupUpdate","allowedInteractionsCount","Move","PropertyChange","nextComment","annotationPropertyChange","calculateAnnotationBounds","isSourceDecoraterShapesChanged","isTargetDecoraterShapesChanged","setFreeTextFontStyle","updateAnnotationComments","updateCollection","noteContent","updateMeasurementSettings","newAnnot","modifyAnnotationProperties","vertexPoint","isSettings","getPageShapeAnnotations","findOverlappedAnnotations","inkAnnotObject","inkAnnotations","shapeAnnotObject","measureAnnotationObject","measureAnnotations","stampAnnotationObject","freeTextAnnotationObject","freeTextAnnotations","stickyNotesAnnotationObject","stickyNotesAnnotations","textMarkupAnnotationObject","calculateOverlappedAnnotationBounds","selectBounds","checkOverlappedCollections","boundsCount","annotationBoundsCollection","importCollection","setAnnotationModifiedDate","retrieveAnnotationCollection","annotationInteraction","menuObj","findCurrentAnnotation","checkAllowedInteractionSettings","checkLockSettings","locked","islock","isRestrict","annotationAllowedInteraction","cValue","convertRgbToNumberArray","convertToHsvString","convertToRgbString","bigInt","exportAnnotationsAsStream","dataFormat","InlineEditRender","addNew","mTbody","frTbody","isVirtualFrozen","frTbody_1","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","tArgs","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","edFail","validationArgs","editIdx","addIdx","addedRowIndex","isDlg","dlgWrapper","dlgForm","getCurrentEditedData","mhdrFrm","mCntFrm","mvblEle","frHdrFrm","frCntFrm","eleLength","destroyElements","destroyWidgets","editHandler","edSucc","editSuccess","editFailure","updateCurrentViewData","stopEditStatus","blazorTemplate","closeForm","originalRow","cloneFrozen","frozen","needRefresh","closeEditArgs","inlineAddHandler","dataLen","tmpRecord","editElements","BatchEdit","originalCell","cloneCell","editNext","preventSaveCell","onBeforeCellFocused","batchCancelFunction","setCellIdx","isAddRow","validateFormObj","frzRightCols","editCellFromIndex","batchChanges","isInsert","removeBatchElementChanges","refreshRowIdx","isInstertedRemoved","removeHideAndSelection","tdElements","bulkDelete","bulkAddRow","batchSave","removeSelectedData","beforeBatchSaveArgs","removeRowObjectFromUID","rowClone","deleteRowUid","beforeBatchDeleteArgs","uniqueid","out_j_1","dataObjects","getIndexFromData","defaultData","getDefaultData","beforeBatchAddArgs","removeFrozenTbody","renderFrozenAddRow","btmIdx","getBottomIndex","findNextEditableCell","isValOnly","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","TemplateEditCell","updateEditObj","createAlertDlg","createConfirmDlg","updateColTypeObj","editCellType","alertDObj","refreshToolbar","showDeleteConfirmDialog","endEditing","form1","form2","mFormObj","form3","frFormObj","getCurrentEditCellData","getValueFromType","dlgWidget","dlgOk","dlgCancel","alertClick","btnOptions","executeAction","destroyEditComponents","col_1","isDestroyVirtualForm","formObjects","virtualFormObj","preventObj","mForm","createFormObj","valErrorPlacement","getElemTable","isFHdr","resetElemPosition","tdRight","elemRight","customForm","gcontent","validationForBottomRowPos","isFHdrLastRow","isBatchModeLastRow","viewPortRowCount","fHeraderRows","rowsHeight","AddEditors","editors","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","highlightSearch","ignoreRegex","findTextNode","revertHighlightSearch","AutoComplete","searchList","suggestionCount","queryElements","postBackAction","fieldsSettings","itemCreated_1","showPopupButton","atcProps","StringFilterUI","serLocator","actObj","getAutoCompleteOptions","foreignColumnQuery","localizeText","acFocus","acComplete","acOpen","filteredValue","filterOptr","actuiObj","enableCaseSensitivity","getOptrInstance","mapObj","NumberFilterUI","numericTxtObj","numberuiObj","BooleanFilterUI","dropInstance","drpuiObj","DateFilterUI","dpOpen","fltrSettings","inputElem","datePickerObj","FilterMenuRenderer","fltrObj","isDialogOpen","isMenuCheck","colTypes","flMuiObj","menuFilterBase","clearBtnClick","filterBtnClick","renderDlgContent","mainDiv","dlgDiv","renderFilterUI","writeMethod","renderFlValueUI","menuOperator","valueDiv","instanceofFilterUI","compElement","dlgContentEle","flValue","targ","flOptrValue","fltrValue","eControl","flIcon","renderCheckBoxMenu","CheckBoxFilter","isresetFocus","checkBoxBase","actionPrevent","ExcelFilterBase","getCMenuDS","unwireExEvents","destroyCMenu","removeDialog","createMenu","isCheckIcon","eleOptions","hdrele","colIsSort","isAsc","isDesc","ascName","descName","createMenuElem","ensureTextFilter","isSubMenu","wireExEvents","clickExHandler","isCMenuOpen","cmenu","submenu","menuOptions","selectHandler","preventClose","contextRect","getContextBounds","getCMenuYPosition","isFilterBack","targetBorder","filterLength","renderDialogue","overlayClick","createdDialog","rowResponsiveDlg","removeObjects","renderCustomFilter","dlgFields","fieldSet","checkBoxValue","fOperator","sValue","sOperator","firstOperator","firstValue","secondOperator","secondValue","isFirst","fieldElement","xlfloptr","menuText","dropDownValueChange","removeHandlersFromComponent","renderRadioButton","radioDiv","frstpredicate","secndpredicate","renderMatchCase","andRadio","orRadio","isFilteredCol","fltrPredicates","columnObj","getExcelFilterData","valueInput","renderAutoComplete","renderNumericTextBox","renderDateTime","predIndex","matchCaseDiv","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","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","onTimerTick","immediateModeDelay","templateRead","validateFilterValue","skipInput","getOperator","singleOp","multipleOp","numOptr","stringOperator","numberOperator","dateOperator","datetimeOperator","booleanOperator","datepickerEle","hasDialog","hasDialogClosed","filterIconElement","refreshFilterIcon","addFilteredClass","renderCheckboxOnFilterMenu","ColumnMenu","defaultItems","setLocaleKey","hiddenItems","GROUP","UNGROUP","ASCENDING","DESCENDING","FILTER","POP","WRAP","CHOOSER","getColumnMenuHandlers","columnMenuHandlerDown","columnMenu","unwireFilterEvents","columnMenuHandlerClick","getHeaderCell","openColumnMenu","openColumnMenuByField","enableAfterRenderMenu","isFilterItemAdded","filterPosition","columnMenuItemClick","columnMenuBeforeOpen","columnMenuOnOpen","columnMenuOnClose","beforeItemRender","beforeMenuItemRender","columnMenuBeforeClose","wireFilterEvents","appendFilter","isChooserItem","getKeyFromId","colChooser","targetColumn","dItem","getDefaultItems","ensureDisabledStatus","getFilter","isFilterPopupOpen","defultItems_1","getDefaultItem","createChooserItems","getLocaleText","filterPopup","getFilterPop","gridPos","liPos","Worksheets","Worksheet","isSummaryRowBelow","showGridLines","HyperLink","Grouping","FreezePane","MergeCell","MergeCells","mergeCell","mCell","isIntersecting","intersectingCell","CellStyle","numFmtId","strikeThrough","Borders","isGlobalStyle","sz","strike","CellXfs","CellStyleXfs","CellStyles","xfId","NumFmt","formatCode","mLine","mColor","lineStyle","Rows","Cells","CRC32TABLE","ZipArchive","initCrc32Table","ZipArchiveItem","addDirectory","directoryName","zipArchive","skipFileSave","zipData","dirLength","getCompressedData","constructZippedObject","writeZippedContent","crc32Value","compressedData","compressedSize","uncompressedDataSize","compressionType","calculateCrc32Value","readAsArrayBuffer","crc32Table","compressor","subArray","zipParts","extFileAttr","writeHeader","localHeader","centralDir","writeCentralDirectory","zipHeader","getModifiedTime","getModifiedDate","localDirLen","cenDirLen","getArrayBuffer","writeFooter","externalFileAttribute","centralLength","localLength","modTime","modiDate","CsvHelper","csvStr","worksheets","parseWorksheet","parseRows","parseRow","parseCell","parseCellValue","dwlLink","BlobHelper","getBlob","AutoFilters","Workbook","saveType","currencyString","sharedStringCount","unitsProportions","hyperlinkStyle","mSaveType","mArchive","sharedString","mFonts","mBorders","mStyles","printTitles","cellStyles","mNumFmt","mFills","mCellXfs","mCellStyleXfs","drawingCount","parserCellStyle","cellStylesIn","tFormat","parserWorksheets","builtInProperties","BuiltInProperties","parserBuiltInProperties","csvHelper","jsonBuiltInProperties","company","createdDate","jsonSheet","mergedCellsStyle","mHyperLinks","parserColumns","parserRows","parserFreezePanes","printTitle","parserPrintTitle","pageSetup","images","parserImages","autoFilters","parseFilters","hyperLinks","mergeOptions","applyProperties","sourceJson","destJson","getCellName","strColumnName","iCurrentDigit","titleRowName","titleColName","printTitleName","fromRow","toRow","fromColumn","freezePanes","leftCell","columnsLength","rowsLength","parserRow","insertMergedCellsStyle","rowToInsert","createCell","insertIndex","styleIndex","cellToInsert","refName","parseGrouping","parseCells","outlineLevel","cellsLength","spanMin","spanMax","cellId","jsonCell","getCellValueType","rId","formula","parseCellType","processMergeCells","spans","GetColors","processColor","colorVal","rgbColors","processCellValue","processedVal","startindex","processString","subSplit","subSplit_1","applyGlobalStyle","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","switchNumberFormat","numFmt","cellStyleXfs","cellXfs","returnFormat","processNumFormatId","compareStyle","isNewFont","toCompareStyle","isNewBorder","bStyle","isAllBorder","toCompareBorder","allBorderStyle","baseStyle","toOADate","sstvalue","imagesLength","parserImage","horizontalFlip","verticalFlip","blobSaveType","proxyUrl","xlsxMatch","csvMatch","saveWorkbook","saveWorksheets","saveSharedString","saveStyles","saveApp","saveCore","saveContentType","saveTopLevelRelation","saveWorkbookRelation","workbookTemp","sheetName","printTitle_1","addToArchive","saveWorksheet","sheetBlob","sheetString","saveSheetView","colString","pixelsToColumnWidth","rowString","pixelsToRowHeight","hLink","saveDrawings","saveSheetRelations","drawings","sheetDrawingString","imgId","updatelastRowOffset","updatelastColumnOffSet","lastRowOffset","lastColOffset","convertBase64toImage","saveDrawingRelations","iCurHeight","iCurRow","iCurOffset","iRowHeight","iSpaceInCell","rowHiddenHeight","iCurWidth","iCurCol","iColWidth","ColumnWidthToPixels","colHiddenWidth","byteStr","drawingRelation","dDigitWidth","fileWidth","relStr","paneString","sstStart","updateCellXfsStyleXfs","styleTemp","saveNumberFormats","saveFonts","saveFills","saveBorders","saveCellStyleXfs","saveCellXfs","saveCellStyles","compareFontResult","fontId","fillId","borderId","numFmtStyle_1","fillsStyle","bordersStyle","cellStyleString","cellXfsStyle","cellStyleXf","saveAlignment","cellXf","alignString","appString","coreString","wbRelation","contentTypeString","sheetsOverride","xmlString","archiveItem","updatedMergedCellStyles","sCell","eCell","dateToTicks","timeToTicks","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","rec","byGroup","groupSummaryRows","customIndex","getAggreateValue","aggregateStyle","gridCellStyle","JSON1","JSON2","attrname","spannedCells","parseStyles","getRecordThemeStyle","excelHeaderCellArgs","updateThemeStyle","themestyle","noRows","updatedCellIndex","footerRows","spannedCells_1","useDateTimePickerDefaultizedProps","_themeProps$ampm","_themeProps$minDateTi","_themeProps$maxDateTi","_themeProps$minDateTi2","_themeProps$maxDateTi2","minDateTime","maxDateTime","dateTimePickerValueManager","DateTimePickerTabsRoot","Tabs","DateTimePickerTabs","dateRangeIcon","dateTimePickerToolbarClasses","DateTimePickerToolbarRoot","DateTimePickerToolbarDateContainer","dateContainer","DateTimePickerToolbarTimeContainer","timeContainer","DateTimePickerToolbarSeparator","DateTimePickerToolbar","hideTabs","showTabs","validateDateTime","timeValidationProps","dateValidationResult","isSameDateTimeError","useDateTimeValidation","DesktopDateTimePicker","MobileDateTimePicker","RadioButtonIconRoot","RadioButtonIconBackground","RadioButtonUncheckedIcon","RadioButtonIconDot","RadioButtonCheckedIcon","RadioButtonIcon","getRadioUtilityClass","radioClasses","RadioRoot","Radio","_defaultIcon$props$fo","_defaultCheckedIcon$p","onChangeProp","radioGroup","cachedType","detectScrollType","getNormalizedScrollLeft","easeInOutSin","getTabScrollButtonUtilityClass","tabScrollButtonClasses","TabScrollButtonRoot","TabScrollButton","TabsRoot","scrollButtons","scrollButtonsHideMobile","TabsScroller","scroller","hideScrollbar","scrollableX","scrollableY","FlexContainer","flexContainer","flexContainerVertical","centered","TabsIndicator","indicatorColor","TabsScrollbarSize","scrollbarHeight","setMeasurements","prevHeight","defaultIndicatorStyle","ariaLabelledBy","childrenProp","allowScrollButtonsMobile","ScrollButtonComponent","selectionFollowsFocus","TabIndicatorProps","TabScrollButtonProps","visibleScrollbar","scrollStart","setMounted","indicatorStyle","setIndicatorStyle","displayScroll","setDisplayScroll","scrollerStyle","setScrollerStyle","valueToIndex","tabsRef","tabListRef","getTabsMeta","tabsMeta","tabMeta","tabsNode","scrollLeftNormalized","updateIndicatorState","startIndicator","correction","newIndicatorStyle","dStart","dSize","moveTabsScroll","getScrollSize","containerSize","totalSize","handleStartScrollClick","handleEndScrollClick","handleScrollbarSizeChange","scrollSelectedIntoView","nextScrollStart","updateScrollButtonState","showStartScroll","showEndScroll","handleTabsScroll","updateIndicator","updateScrollButtons","conditionalElements","scrollbarSizeListener","scrollButtonsActive","showScrollButtons","scrollButtonStart","scrollButtonEnd","getConditionalElements","previousItemKey","nextItemKey","useTimePickerDefaultizedProps","timePickerValueManager","lastValidValue","getTimePickerToolbarUtilityClass","timePickerToolbarClasses","TimePickerToolbarRoot","TimePickerToolbarSeparator","TimePickerToolbarHourMinuteLabel","hourMinuteLabel","TimePickerToolbarAmPmSelection","ampmSelection","ampmLabel","TimePickerToolbar","showAmPmControl","DesktopTimePicker","MobileTimePicker","NumericContainer","pagerElement","renderNumericContainer","refreshNumericLinks","updateTotalPages","updateLinksHtml","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","NP","previousPageNo","currentPageSet","customText","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","firstPage","firstPageDisabled","prevPageDisabled","lastPageDisabled","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","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","newPageNo","oldPageNo","enableQueryString","updateQueryString","getPagerTemplate","updatedUrl","getUpdatedURL","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","convertValue","dropDownListObject","beforeValueChange","pageSizeValue","ExternalMessage","externalMessage","pagerDestroy","gridExtend","dropDownChanged","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainer","numericContainerDiv","isForceCancel","appendToElement","inboundChange","getSliderUtilityClass","sliderUnstyledClasses","SliderValueLabelUnstyled","valueLabelOpen","valueLabelCircle","valueLabelLabel","useValueLabelClasses","asc","findClosest","trackFinger","touchId","valueToPercent","roundValueToStep","matissaDecimalPart","getDecimalPrecision","setValueIndex","focusThumb","sliderRef","cachedSupportsTouchActionNone","axisProps","leap","doesSupportTouchActionNone","Forward","SliderUnstyled","ariaValuetext","disableSwap","getAriaLabel","getAriaValueText","marks","marksProp","onChangeCommitted","valueLabelDisplay","valueLabelFormat","setOpen","moveCount","valueDerived","thumbIndex","handleHiddenInputChange","marksValues","marksIndex","valueAsNumber","markValues","currentMarkIndex","getFingerNewValue","finger","values2","percentToValue","stopListening","trackOffset","trackLeap","trackStyle","Rail","railProps","rail","Track","trackProps","Thumb","thumbProps","thumb","ValueLabel","valueLabelProps","valueLabel","Mark","markProps","MarkLabel","markLabelProps","markLabel","marked","markActive","markLabelActive","ValueLabelComponent","sliderClasses","SliderRoot","trackInverted","trackFalse","SliderRail","SliderTrack","SliderThumb","SliderValueLabel","SliderMark","SliderMarkLabel","shouldSpreadOwnerState","_componentsProps$thum","_componentsProps$trac","_componentsProps$valu","_themeProps$views","datePickerValueManager","datePickerToolbarClasses","getListItemUtilityClass","listItemClasses","getListItemSecondaryActionClassesUtilityClass","ListItemSecondaryActionRoot","ListItemSecondaryAction","ListItemRoot","disablePadding","hasSecondaryAction","secondaryAction","ListItemContainer","ListItem","ContainerComponent","ContainerProps","ContainerClassName","componentProps","InnerThemeProvider","StyledEngineThemeContext","MuiThemeProvider","dateTimeDelimiter","timeZoneDelimiter","dateRegex","timeRegex","timezoneRegex","splitDateString","dateStrings","parseYear","additionalDigits","captures","restDateString","century","isWeekDate","parseDateUnit","_year","validateWeekDate","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","validateDayOfYearDate","parseTime","parseTimeUnit","parseTimezone","timezoneString","_hours","validateTimezone","parseISO","isoString","parseYearResult","representation","dateDelimiter","timeDelimiter","absoluteOffset","hourOffset","minuteOffset","formatISO","TreeItemContent","displayIcon","expansionIcon","isExpandable","toggleExpansion","expandable","handleExpansion","preventSelection","useTreeItem","getTreeItemUtilityClass","treeItemClasses","TreeItemRoot","StyledTreeItemContent","TreeItemGroup","Collapse","TreeItem","collapseIcon","ContentComponent","ContentProps","expandIcon","contextIcons","mapFirstChar","unMapFirstChar","registerNode","unregisterNode","treeId","ariaSelected","treeitemElement","setTreeitemElement","contentRef","defaultCollapseIcon","defaultExpandIcon","defaultParentIcon","defaultEndIcon","idAttribute","unfocusable","InterSectionObserver","movableEle","fromWheel","touchMove","movableContainerRect","onEnterCallback","virtualScrollHandler","movableContainer","debounced100","debounced50","axes","sentinel","setPageHeight","VirtualRowModelGenerator","cOffsets","movableCache","frozenRightCache","rowCache","rowModelGenerator","loadNext","loadSelf","nextInfo","getBlockIndexes","loadedBlocks","includePrevPage","checkAndResetCache","isBlockAvailable","isMovableBlockAvailable","isFrozenRightBlockAvailable","getStartIndex","median","getGroupVirtualRecordsByIndex","setBlockForManualRefresh","updateGroupRow","blk","getColumnIndexes","calWidth","iOffset","offsetVal","addFrozenIndex","refreshColOffsets","currentFirst","iterateGroup","oRow","getGroupedTotalBlocks","VirtualContentRenderer","preStartIndex","preventEvent","tmpOffsets","VirtualElementHandler","offsetKeys","rndrCount","requestTypes","isNormaledit","emptyRowData","vfColIndex","isSelectionScroll","validationCheck","eventListener","renderWrapper","renderPlaceHolder","debounceEvent","getBlockHeight","adjustTable","blockIndex","colsIndex","recordslength","firstRecords","virtualRows","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","adjustMovableTable","setMovableWrapperWidth","setWrapperWidth","setVirtualHeight","restoreAdd","ensureSelectedRowPosition","validationScrollLeft","initialRowTop","gridTop","validationCol","isRowInView","editedRowIndex","getVirtualEditedData","editForms","startAdd","maxPage","resetScrollPosition","virtualHeightTemp","virtualHeight","setMovableVirtualHeight","cHeight","isOnenter","endTranslate","totalBlocks","isWheel","isLastBlockRow","remainHeight","visibleRowCount","refreshMaxPage","virtualCellFocus","editActionBegin","addActionBegin","refreshCache","resetIsedit","editCancel","refreshCells","scrollValues","allowScroll","editRequestTypes","virtualRenderer","refreshVirtualElement","addForm","createEmptyRowdata","getRowCollection","getMovableVirtualRowByIndex","getFrozenRightVirtualRowByIndex","isRowObject","fcntColGrp","mcntColGrp","VirtualHeaderRenderer","movableWrapper","setFrozenTable","fhdrColGrp","mhdrColGrp","tablewidth","renderFrozenWrapper","renderFrozenPlaceHolder","renderMovableWrapper","renderMovablePlaceHolder","movablePlaceholder","xValue","yValue","setFreezeWrapperWidth","ensurePageSize","virtualEditFormValidation","errorDomRect","forms","contentLeft","existingErrors","setEditedDataToValidationForm","isRenderer","VMENU","tempItems","updateMenuItems","createMenuItems","pIdField","AnnotationToolbar","toolbarBorderHeight","isHighlightEnabled","isUnderlineEnabled","isStrikethroughEnabled","isHighlightBtnVisible","isCommentBtnVisible","isUnderlineBtnVisible","isStrikethroughBtnVisible","isColorToolVisible","isOpacityToolVisible","isDeleteAnnotationToolVisible","isCurrentAnnotationOpacitySet","isStampBtnVisible","isShapeBtnVisible","isSignatureBtnVisible","isInkBtnVisible","isFontFamilyToolVisible","isFontSizeToolVisible","isFontAlignToolVisible","isFontColorToolVisible","isFontStylesToolVisible","isCommentPanelBtnVisible","isFreeTextBtnVisible","isCalibrateBtnVisible","isStrokeColorToolVisible","isThicknessToolVisible","stampMenu","stampParentID","openSignaturePopup","isSavedSignatureClicked","saveSignatureCount","saveInitialCount","isToolbarCreated","uploadedFileUrl","onShapeToolbarClicked","resetFreeTextAnnot","onShapeDrawSelection","strokeDropDownElement","handleShapeTool","initializeAnnotationToolbar","createToolbarItems","onToolbarClicked","createDropDowns","afterToolbarCreation","createStampContainer","createSignContainer","applyAnnotationToolbarSettings","createMobileToolbarItems","deleteItem","adjustMobileViewer","FreeTextForMobile","hideExistingTool","freetextToolbarElement","colorTemplate","strokeTemplate","thicknessTemplate","opacityTemplate","fontFamilyTemplate","fontSizeTemplate","textColorTemplate","alignmentTemplate","textPropertiesTemplate","mobileColorpicker","showFreeTextPropertiesTool","shapeToolbarElement","createPropertyToolbarForMobile","commentIcon","showPropertyTool","existingTool","applyProperiesToolSettings","fontFamilyElement","fontColorElement","updateTextAlignInIcon","stampToolMobileForMobile","stampToolbarElement","createStampToolbarItemsForMobile","showStampPropertiesTool","shapeToolMobile","createShapeToolbarItemsForMobile","afterShapeToolbarCreationForMobile","showShapeTool","calibrateToolMobile","calibrateToolbarElement","createCalibrateToolbarItemsForMobile","onCalibrateToolbarClicked","afterCalibrateToolbarCreationForMobile","textMarkupForMobile","showTextMarkupPropertiesTool","showColorEditTool","showStrokeColorEditTool","showThicknessEditTool","showOpacityEditTool","signatureInkForMobile","signatureInkToolbarElement","aign","shapePropertiesTool","showInkPropertiesTool","showFontFamilyAnnotationTool","showFontSizeAnnotationTool","showFontColorAnnotationTool","showFontAlignAnnotationTool","showFontStylesAnnotationTool","showCommentPanelTool","showAnnotationDeleteTool","hideToolbar","stampTemplate","signTemplate","afterMobileToolbarCreation","applyMobileAnnotationToolbarSettings","isPrimaryTool","updateViewerHeight","getElementHeight","resetViewerHeight","shapesTemplate","calibrateTemplate","handWrittenSignatureItem","saveOptions","openSignature","collectionKey","signatureID","signatureContainer","signatureSpan","signatureImage","hoverSignatureImage","leaveSignatureImage","signatureDeleteSpan","addInitialSpan","clickSignature","hoverInitialBtn","isSignatureIteam","clickInitial","drpDownBtn","updateSignatureCount","addedSignature","deleteSignature","renderAddedSignature","deleteSavedSign","hoverSignatureDelete","leaveSignatureDelete","currentFieldID","showSignaturepanel","elementName","dynamicStamps_1","stampItem","signStamps_1","standardsBusinessStamps_1","currentElements","stampElements","menuItems","checkStampAnnotations","stampImage","shapeToolbar","createShapeOptions","shapeDropDown","calibrateToolbar","calibrateDropDown","colorPalette","onColorPickerChange","colorDropDown","colorDropDownBeforeOpen","colorDropDownOpen","onColorPickerCancelClick","onStrokePickerChange","strokeDropDownBeforeOpen","strokeDropDownOpen","onStrokePickerCancelClick","thicknessContainer","createThicknessSlider","thicknessDropDown","thicknessDropDownBeforeOpen","thicknessSlider","thicknessChange","thicknessDropDownOpen","opacityDropDownElement","createSlider","opacityDropDown","opacityDropDownBeforeOpen","opacityChange","opacityDropDownOpen","createDropDownListForFamily","onFontFamilyChange","fontSizeElement","createDropDownListForSize","fontColorPalette","onFontColorChange","textAlignElement","alignmentToolbar","textAlignDropDown","textAlignDropDownBeforeOpen","textPropElement","propertiesToolbar","textPropertiesDropDown","createPropDropDownButton","textPropertiesDropDownBeforeOpen","calculateToolbarPosition","setColorInPicker","setCurrentStrokeColorInPicker","updateInkannotationItems","fontColorElementInBlazor","onFontSizeChange","dropDownOptions","onClickTextAlignment","onClickTextProperties","updateTextPropertySelection","currentAnnotations","updateThicknessIndicator","thicknessChangeInBlazor","ShapeThickness","annotationModule_1","isShape","isAlign","isTextProp","textAlignmentToolbarItems","afterAlignmentToolbarCreation","textPropertiesToolbarItems","afterPropertiesToolbarCreation","createShapeToolbarItems","afterShapeToolbarCreation","createCalibrateToolbarItems","afterCalibrateToolbarCreation","alignLeftElement","addClassToolbarItem","alignRightElement","alignCenterElement","alignJustifyElement","boldElement","italicElement","fontStyleStrikethroughItem","fontStyleUnderlineItem","fontSelectElement","lineElement","rectangleElement","circleElement","polygonElement","calibrateDistance","calibratePerimeter","calibrateArea","calibrateRadius","calibrateVolume","highlightItem","underlineItem","strikethroughItem","shapesItem","calibrateItem","commentItem","inkAnnotationItem","existingInput","strokeDropDownElementInBlazor","leftAlign","centerAlign","justifyAlign","thicknessIndicator","outerContainer","sliderElement","closeItem","handleHighlight","handleUnderline","handleStrikethrough","handleFreeTextEditor","InkAnnotationElement","deselectInkAnnotation","FreeTextElement","updateFontFamily","updateFontFamilyIcon","toolBarInitialStatus","enablePropertiesTool","showHighlightTool","showUnderlineTool","showStrikethroughTool","showShapeAnnotationTool","showCalibrateAnnotationTool","showStampAnnotationTool","showSignatureTool","showFreeTextAnnotationTool","showInkAnnotationTool","showSeparator","showStickyNoteToolInMobile","showInkTool","showSeparatorInMobile","applyHideToToolbar","toolbar_1","propertyToolbarElement","isAdjust","getNavigationToolbarHeight","updateContentContainerHeight","sideBarClientRect","HighlightElement","UnderlineElement","StrikethroughElement","PanElement","deleteIconCicked","checkAnnotationPropertiesChange","isPropertiesChanges","isButtonsEnabled","enableTextMarkupAddTools","getColorHexValue","colorpick","isAnnotationToolbarOpen","destroyComponent","componentElement","destroyDependentComponent","afterAnnotationToolbarCreationInBlazor","addClassToToolbarInBlazor","handleHighlightInBlazor","handleUnderlineInBlazor","handleStrikethroughInBlazor","AnnotationSliderOpened","DropDownOpened","colorElementBounds","sidebarElement","sideBarElementWidth","FormDesignerToolbar","isTextboxBtnVisible","isPasswordBtnVisible","isCheckboxBtnVisible","isRadiobuttonBtnVisible","isDropdownBtnVisible","isListboxBtnVisible","isDeleteBtnVisible","initializeFormDesignerToolbar","applyFormDesignerToolbarSettings","formDesignerToolbarContainer","setFormFieldMode","textboxItem","passwordItem","radioButtonItem","dropdownItem","listboxItem","showTextboxTool","showPasswordTool","showCheckboxTool","showRadioButtonTool","showDropdownTool","showListboxTool","showDrawSignatureTool","showDeleteTool","isPageNavigationToolDisabled","isMagnificationToolDisabled","isScrollingToolDisabled","isOpenBtnVisible","isNavigationToolVisible","isMagnificationToolVisible","isSelectionBtnVisible","isScrollingBtnVisible","isDownloadBtnVisible","isPrintBtnVisible","isSearchBtnVisible","isTextSearchBoxDisplayed","isUndoRedoBtnsVisible","isAnnotationEditBtnVisible","isFormDesignerEditBtnVisible","isSubmitbtnvisible","onToolbarKeydown","zoomDropdownItem","tooltipData","tooltipId","handleToolbarBtnClick","textSearchItem","navigateToPage","enteredValue","textBoxFocusOut","currentPageBox","totalPageItem","initialEnableItems","bindOpenIconEvent","CommentElement","applyToolbarSettings","openElement","InitializeMobileToolbarInBlazor","showNavigationToolbar","navigationToolbar","navigationToolbarSplitter","showToolbarItem","showOpenOption","showPageNavigationTool","showMagnificationTool","showSelectionTool","showScrollingTool","showDownloadOption","showPrintOption","showSearchOption","showUndoRedoTool","showAnnotationEditTool","showFormDesignerEditTool","showCommentOption","showSubmitForm","enableOpenOption","enablePageNavigationTool","enableMagnificationTool","enableSelectionTool","enableScrollingTool","enableDownloadOption","enablePrintOption","enableSearchOption","enableUndoRedoTool","enableAnnotationEditTool","enableFormDesignerEditTool","enableCommentsTool","openDocumentItem","firstPageItem","previousPageItem","nextPageItem","lastPageItem","zoomInItem","zoomOutItem","zoomDropDown","textSelectItem","panItem","downloadItem","printItem","undoItem","redoItem","updateInteractionItems","moreOptionItem","enableCollectionAvailableInBlazor","enableCollectionAvailable","disableUndoRedoButtons","fileInputElement","controlWidth","createZoomDropdown","createNumericTextBox","createToolbarItemsForMobile","afterToolbarCreationInMobile","applyToolbarSettingsForMobile","currentPageInputTemplate","createCurrentPageInputTemplate","totalPageTemplate","createTotalPageTemplate","zoomDropDownTemplateString","createZoomDropdownElement","submitButton","itemsContainer","addPropertiesToolItemContainer","createToolbarItem","openZoomDropdown","createMoreOption","dropdownButtonPosition","bookmarks","toolbarOnMouseup","zoomPercentSelect","onZoomDropDownInput","onZoomDropDownInputClick","handleOpenIconClick","getStampMode","initiateAnnotationMode","initiateFormDesignerMode","toolbarData","fullscreen","fullscreenElement","zoomDropDownChange","zoomText","currentPercent","blazorZoomDropDown","searchInputElement","DisableInteractionTools","isTextSelect","toolbarSettingsItems","stampBeforeOpen","ParentItem","stampBeforeClose","stampSelect","Box","defaultClassName","BoxRoot","_extendSxProp","getAvatarUtilityClass","AvatarRoot","colorDefault","AvatarImg","objectFit","AvatarFallback","Person","Avatar","imgProps","srcSet","referrerPolicy","setLoaded","srcset","useLoaded","hasImg","hasImgNotFailing","getAccordionUtilityClass","accordionClasses","AccordionRoot","overflowAnchor","borderBottomLeftRadius","borderBottomRightRadius","defaultExpanded","expandedProp","setExpandedState","containerPropProp","fakeTransform","transformValues","getTranslateValue","defaultEasing","Slide","easingProp","childrenRef","handleRefIntermediary","getDrawerUtilityClass","docked","DrawerRoot","DrawerDockedRoot","DrawerPaper","oppositeDirection","Drawer","anchorProp","ModalProps","BackdropPropsProp","SlideProps","anchorInvariant","getAnchor","slidingDrawer","SignatureBase","isSignatureEmpty","backgroundLoaded","clearArray","parameter","dotnetRef","setBlazorParameter","setHTMLProperties","signatureValue","updateSnapCollection","maxStrokeWidth","minStrokeWidth","saveWithBackground","loadPersistedSignature","pointColl","beginStroke","updateStrokeWithThrottle","updateStroke","endDraw","snapColl","incStep","observableSaveArgs","restoreImg","createPoint","addPoint","storedArgs","controlPoint1","controlPoint2","isLastPointTooClose","distanceTo","calculateCurveControlPoints","startDraw","pointVelocityCalc","lastVelocity","curveDraw","lastWidth","canDrawCurve","strokeDraw","u1","u2","u3","widthValue","bezierLength","bezierLengthCalc","drawSteps","arcDraw","pointSize","dx1","dy1","dx2","dy2","m1","cm","pointx1","pointy1","pointx2","pointy2","pointx3","pointy3","bezierPointCalc","startpoint","cp1","cp2","endpoint","isRead","enableOrDisable","reDraw","getImageData","putImageData","canvasNew","canvasContextNew","globalCompositeOperation","saveBackground","setBackgroundColor","canvasEle","lastImage","undoImg_1","redoImg_1","canUndo","canRedo","bitmapImage","createImageBitmap","tempCanvas","savebg","imageObj_1","toSVG","toJPEG","dataURL","resetSnap","restoreObj","svgDataUrl","getSignature","propertyChanged","SignatureComponent","FooterRenderer","gridModule","modelGenerator","fDiv","mDiv","frDiv","frozenRightContent","tFoot","frTable","frCol","renderSummaryContent","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","ToolbarRenderer","onPopupOverlay","removePopupContainer","toolbarBeforeCreate","toolbarClicked","dropDownSelected","popupModal","dropDownClose","beforeCreate","inlineEle","currentDropdown","setIsModel","paletteSelection","dropDownArgs","colorbox","initialBackgroundColor","colorpickerValue","setColorPickerContentWidth","pickerRefresh","onmousedown","onkeydown","popupInst","colorPickerContent","beforeTileRender","colorPickerArgs","beforeModeSwitch","toolbarPanel","ToolbarAction","renderSelection","tableQTBar","isToolbar","isTransformChild","toolbarBindEvent","keyBoardModule","toolBarKeyDown","createToolbarElement","tbWrapper","getToolbarMode","tbMode","Scrollable","checkToolbarResponsive","tBarMode","MultiRow","checkIsTransformChild","transformElements","toggleFloatClass","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","BaseQuickToolbar","isDOMElement","popupRenderer","dropDownButtons","colorPickerObj","appendPopupContent","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","qTBar","initializeQuickToolbars","selectionChangeHandler","keyUpQT","renderQuickToolbars","textQTBar","LinkToolbar","TextToolbar","renderInlineQuickToolbar","InlineToolbar","deBounce","deBouncer","inlineQTBarMouseDownHandler","onSelectionChange","wireInlineQTBarEvents","unWireInlineQTBarEvents","getDialogContentUtilityClass","DialogContentRoot","getDialogContentTextUtilityClass","DialogContentTextRoot","DialogContentText","getListUtilityClass","ListRoot","subheader","getLinkUtilityClass","linkClasses","LinkRoot","textDecorationColor","TypographyClasses","handlerRef","getCollapseUtilityClass","CollapseRoot","collapsedSize","CollapseWrapper","CollapseWrapperInner","wrapperInner","collapsedSizeProp","wrapperRef","autoTransitionDuration","getWrapperSize","wrapperSize","duration2","getAccordionSummaryUtilityClass","accordionSummaryClasses","AccordionSummaryRoot","AccordionSummaryContent","AccordionSummaryExpandIconWrapper","expandIconWrapper","AccordionSummary","getAccordionDetailsUtilityClass","AccordionDetailsRoot","AccordionDetails","getCircularProgressUtilityClass","circularRotateKeyframe","circularDashKeyframe","CircularProgressRoot","CircularProgressSVG","CircularProgressCircle","disableShrink","circleDisableShrink","CircularProgress","circleStyle","rootStyle","SIZE","StyledComponent","FinalComponent","getSwitchUtilityClass","switchClasses","SwitchRoot","switchBase","SwitchSwitchBase","SwitchTrack","SwitchThumb","getInputAdornmentUtilityClass","inputAdornmentClasses","InputAdornmentRoot","disablePointerEvents","positionStart","getCardUtilityClass","CardRoot","Card","raised","getCardContentUtilityClass","CardContentRoot","CardContent","getTabUtilityClass","tabClasses","TabRoot","labelIcon","getTableContainerUtilityClass","TableContainerRoot","TableContainer","getAppBarUtilityClass","AppBarRoot","backgroundColorDefault","enableColorOnDark","AppBar","getListItemAvatarUtilityClass","ListItemAvatarRoot","ListItemAvatar","getFabUtilityClass","fabClasses","FabRoot","Fab","getTreeViewUtilityClass","TreeViewRoot","findNextFirstChar","firstChars","noopSelection","defaultDefaultExpanded","defaultDefaultSelected","disableSelection","onNodeFocus","onNodeSelect","onNodeToggle","selectedProp","treeRef","focusedNodeId","setFocusedNodeId","nodeMap","firstCharMap","setSelectedState","getChildrenIds","getNavigableChildrenIds","childrenIds","siblings","getLastNode","getFirstNode","getNodesInRange","nodeA","nodeB","nodeAId","nodeBId","aFamily","bFamily","aAncestor","bAncestor","aAncestorIsCommon","bAncestorIsCommon","continueA","continueB","ancestorFamily","aSide","bSide","findOrderInTremauxTree","newExpanded","lastSelectedNode","lastSelectionWasRange","currentRangeSelection","handleRangeArrowSelect","handleRangeSelect","newSelected","handleMultipleSelect","handleSingleSelect","newMap","oldFocusedNodeId","firstChar","handleNextArrow","handlePreviousArrow","activeDescendant","ctrlPressed","selectNextNode","selectPreviousNode","focusPreviousNode","rangeSelectToFirst","focusFirstNode","rangeSelectToLast","focusLastNode","expandAllSiblings","selectAllNodes","lowercaseChar","firstCharIds","shouldBeSkipped","focusByFirstCharacter","firstSelected","Panel","DashboardLayout","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","createPanelElement","idValue","isRenderComplete","checkMediaQuery","initGridLines","updateDragArea","setPanelPosition","setHeightAndWidth","updateRowHeight","panelElements","panelElement","getInlinePanels","setMinMaxValues","maxColumnValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","enableDraggingContent","sortedPanel","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","cellSize","cellAspectRatio","recheck","createSubElement","sanitizedValue","appendElement","templateElements","compilerFn","compilerFn_1","cellElement","panelModel","panelId","panelContent","disablePanel","headerTemplateElement","panelBody","contentHeightValue","minSizeX","minSizeY","maxSizeX","maxSizeY","panelProp","resizeEvents","downResizeHandler","touchDownResizeHandler","refreshListener","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","downTarget","shadowEle","elementX","elementY","elementHeight","getCellInstance","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","handleArray","handleClass","resizingPanel","currentX","oldSizeX","oldSizeY","dY","dX","getMaxHeight","getMinWidth","getMaxWidth","getResizeRowColumn","upTarget","allowFloating","moveItemsUpwards","checkForChanges","pixelsToColumns","pixelsToRows","collisions","getPanelBase","allowPushing","isCeil","curColWidth","sortItem","moveItemUpwards","availableRow","availableColumn","oldRow","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","updatedPanel","updatedRows","updatedHeight","getRowColumn","setHeightWidth","setXYDimensions","dashBoardCell","checkMinMaxValues","rightWardsSpaceChecking","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","occupiedItems","leftWardsSpaceChecking","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","topCheck","spacedRowValue","isXSpacingAvailable","isSpaceAvailable","subSpacingColumns","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","updatedCollision","exclusions","sortCollisionItems","collisionItems","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","swapAvailability","available","eleModel","collideModel","excludeEle","checkForSwapping","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","collisionY","collisionCol","collisionX","overlapElementModel","eleRow_1","excludeElements","collisionPanel","overlapElementRow1","rowVal","colValue_1","collisionModels1","resizerElements","ensureDrag","dragPanels","draggableHandle","setResizingClass","resizableHandles","addClassValue","getRowColumnDragValues","elementTop","elementLeft","changedPanels","addedPanels","removedPanels","abortArray","dragobj","onDraggingStart","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","updateRowsHeight","eleRowValue","startCol","endCol","dragCol","excludeItems","cellSizeOne","cellSizeZero","currentCellInstance","addPanel","updatePanel","cssClass_2","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","resizePanel","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","mergePanels","sortedPanels","_loop_6","localPanel","pan","DashboardLayoutComponent","FreezeRowModelGenerator","notifyArgs","isFrozenRowsRender","InfiniteScroll","infiniteCurrentViewData","infiniteFrozenCache","isDownScroll","isUpScroll","enableContinuousScroll","isInitialCollapse","prevScrollTop","isInitialMovableRender","virtualInfiniteData","isLastPage","isFocusScroll","isGroupCollapse","infiniteCellFocus","appendInfiniteRows","removeInfiniteCacheRows","ensureIntialCollapse","getVirtualInfiniteData","resetInfiniteEdit","infiniteEditSuccess","refreshInfiniteCache","infiniteAddActionBegin","selectNewRow","setGroupCollapsePageQuery","deleteComplate","groupCaptionAction","makeGroupCollapseRequest","parentCapUid","childCount","additionalCnt","initialBlocks","contetRect","tableReact","getCaptionChildCount","scrollArg","make","isCache","isMiddlePage","setInitialCache","refreshScrollOffset","ensureRowAvailability","createRow","isFrozenRows","swapCurrentViewData","resetInfiniteCurrentViewData","resetContentModuleCache","getEditedRowObject","editedrow","updateCurrentViewRecords","previousVirtualData","restoreInfiniteEdit","restoreInfiniteAdd","getVirtualInfiniteEditedData","intialPageQuery","editPageQuery","scrollToLastFocusedCell","lastFocusInfo","focusRows","setLastCellFocusInfo","totalRowsCount","rowRect","gridForm","frozenEdit","frozenFrag","movableFrag","captionRows","removeCaptionRows","addRowCount","removeTopRows","removeBottomRows","calculateScrollTop","captionRowHeight","captionCount","currentViewRowCount","maxIndx","frozeCols","lastRowIndex","isDataModified","createFrozenCache","isCurrentViewData","setInitialGroupCache","YearEvent","eventWrappers_1","yearViewEvents","removeCellHeight","timelineResourceEvents","timelineYearViewEvents","getMonths","months_1","cellHeader","wrapperCollection","eventWrapper","isSpannedCollection","wrapper_1","rowTd","dayStart","dayEnd","dayEvents","updateSpannedEvents","overlapIndex","availedHeight","moreIndicatorCount","MoreIndicator","moreIndex","renderMoreIndicator","renderEvent","isLeftRightResize","renderResourceEvent","eventDatas","createEventElement","locationEle","startTimeEle","endTimeEle","dateStart","dateEnd","appStart","appEnd","timeCondition","Year","yearEventModule","viewTypeClass","calendarTable","calendarTBody","getRowColumnCount","cTr","cTd","calendarWrapper","renderCalendarHeader","renderCalendarContent","getMonthName","getMonthDates","currentWeek","weekDates","tr_1","weekDates_1","createTableColGroup","monthDaysCount","months_2","activeDate","moreEventArgs","scrollTopSelector","scrollTopElement","onScrollUiUpdate","leftPanelSelector","isYScroll","contentScroll","AgendaBase","createAgendaContentElement","aTd","appWrapper","createAppointment","appSubjectWrap","strDate","allDayStr","displayStr","processAgendaEvents","spanned","wireEventActions","eventElement_1","dateHeaderElement_1","dayNavigationClick","calculateResourceTableElement","agendaDate","agendaLastDate","lastLevelInfo","tempLastLevelInfo","agendaCollection","hideEmptyAgendaDays","resDataCollection","resDayCollection","topResources","tempGroupedData","totalRowSpan","createResourceTableRow","renderEmptyContent","tContent","tContentCollection","rowSpanCollection","createDateHeaderElement","eTr","createTableRowElement","eTd","dTd","Agenda","agendaDates","virtualScrollTop","eventLoad","renderInitialContent","refreshEvent","refreshDate","emptyTBody","contentChild","emptyTBody_1","appointmentFiltering","updateHeaderText","nTr","agendaScrolling","filterDate","topElement","getElementFromScrollerPosition","getPreviousNextDate","scrollToValue","getStartDateFromEndDate","onAgendaScrollUiUpdate","TAGNAME","SplitButton","createPrimaryButton","createSecondaryButton","secondaryBtnObj","btnModel","primaryBtnObj","btnElem","dropDownBtnModel","primaryBtnClickHandler","btnKeyBoardHandler","altdownarrow","CTRLSWITCH","HIDEHEX","HIDERGBA","HIDEVALUE","HSVAREA","MODESWITCH","NOCOLOR","OPACITY","PREVIEW","SHOWVALUE","SELECT","TILE","presets","Apply","ModeSwitcher","createWidget","createSplitBtn","slicedValue","initialInputValue","tileRipple","ctrlBtnRipple","firstPaletteFocus","createPicker","getDragHandler","isRgb","createCtrlBtn","toggleDisabled","refreshPopupPos","splitBtn","getPopupEle","getPopupInst","bindCallBackEvent","observeOpenArgs","onPopupClose","destroyOtherComp","paletteGroup","appendPalette","setNoColor","tile","roundedColor","presetName","addTileSelection","noColorEle","insertPos","hsvContainer","dragHandler","setHsvContainerBg","setHandlerPosition","createDragTooltip","getHsvContainer","hsvArea","sliderPreviewWrapper","createPreview","sliderWrapper","hueSlider","hueChange","createOpacitySlider","opacityBgTrack","updateOpacitySliderBg","opacityEle","convertToOtherFormat","pValue","updateOpacityInput","updatePreview","opacityTextBoxInst","previewContainer","isPicker","createNumericInput","numericInput","appendValueSwitchBtn","hexInput","appendOpacityValue","valueSwitchBtn","formatSwitchHandler","btnWrapper","controlBtnWrapper","appendModeSwitchBtn","getTooltipInst","setTooltipOffset","updateHsv","removeTileSelection","pickerKeyDown","handlerDown","addCtrlSwitchEvent","previewHandler","paletteClickHandler","paletteKeyDown","ctrlSwitchBtn","handlerDragPosition","observedcloseArgs","setHsv","handlerMove","handlerEnd","switchToPalette","ctrlBtnClick","noColorTile","switchToPicker","grpEle","tiles","prevSelectedEle","tilePosition","keySelectionChanges","newEle","emptyCount","inputValueChange","tooltipInst","changeModeSwitcherProp","ctrlSwitchWrapper","changeShowBtnProps","ctrlBtnWrapper","changeValueProp","setInputEleProps","changeDisabledProp","changeCssClassProps","changeRtlProps","changePaletteProps","changeOpacityProps","effectsConfig","effectsRTLConfig","listIcon","listItemText","groupListItem","headerTemplateText","checkboxWrapper","checklist","checkboxRight","checkboxLeft","listviewCheckbox","itemCheckList","virtualElementContainer","ListView","previousSelectedItems","enabledItems","setHTMLAttribute","virtualizationModule","reRenderUiVirtualization","reRender","curDSLevel","headerTitle","setCheckbox","curViewDS","getSubDS","resetCurrentList","isWindow","showBack","showHeader","innerHeaderEle","hedBackButton","headerTemplateEle","LISTVIEW_HEADERTEMPLATE_ID","fPos_1","overflow_1","curUL","initialization","animateOptions","currentLiElements","isNestedList","LISTVIEW_TEMPLATE_ID","LISTVIEW_GROUPTEMPLATE_ID","frameElement_1","checkInternally","checkBoxPosition","virtualCheckBox","checkItem","toggleCheckBase","HTMLLIElement","getLiFromObjOrElement","setSelectedItemData","uncheckItem","checkAllItems","toggleAllCheckBase","uncheckAllItems","checkIcon","checkedItem","refreshItemHeight","setCheckboxLI","selectEventData","setSelectLI","setHoverLI","leaveHandler","homeKeyHandler","onArrowKeyDown","arrowKeyHandler","firstItemBounds","groupItemBounds","siblingTop","siblingHeight","uiFirstIndex","onUIScrolled","listItemHeight","topHeight","headerBounds","spaceKeyHandler","swipeActionHandler","focusedLI_1","hoverLI","renderSubList","lastLi","levelKeys","localData","levelKeys_1","curDSJSON","findItemFromDS","curDS","getElementUID","resultJSON","setViewDataSource","isInAnimation","renderRemoteLists","listViewComponent","triggerActionFailure","setLocalData","renderIntoDom","liElements","exceptionEvent","UpdateCurrentUL","isNgTemplate","createUIItem","uiVirtualization","classAr","pID","toUL","fromUL","selectMultipleItems","getParentId","getSelectedItems","isCompleted","liTextCollection","liDataCollection","dataParent","findItem","setItemState","disableItem","showItem","showHideItem","addItemInternally","targetUL","addItemIntoDom","addItemInNestedList","targetItemData","itemQueue","targetItemId","targetChildDS","isAlreadyRenderedUL","targetLi","targetDS","targetRefreshedElement","addListItem","curItemDS","listDataSource","removeItemFromList","groupLi","validateNestedView","foundData","findParent","li_1","liID","removeMultipleItems","BookmarkView","bookmarkClick","bookid","Id","navigateToBookmark","FileName","nodeClick","treeObj","bookmarkPanelBeforeOpen","enableBookmarkStyles","bookmarkStyles","bookmarkRequestHandler","bookMark","Bookmarks","Bookmarkstyles","bookmarksDestination","bookMarkDestination","BookmarksDestination","bookmarkCollection","isBookmarkViewDiv","isBookmarkPanelOpen","isblazor","bookmarkView","bookmarkIconView","bookmarkIcon","bookmarkTitle","nodeSelected","drawNode","getBookmarks","destPage"],"mappings":"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BG,EA7KqB,GAmL5B6C,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,QClWX,SAAWjD,GACP,IAAIkD,EAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC7G,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,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B,UAAW,QAAS3pB,SAAU,0BAChC,CAAE2pB,UAAW,OAAQ3pB,SAAU,qCAE/B4pB,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,GACN3rB,WAAY4rB,MAIxBG,EAAmBI,SAAW,SAAUt6C,GACpC,IAAIu6C,EAAO/2C,KAAK22C,iBAEhB,OADa32C,KAAKg3C,eAAeD,EAAMv6C,IAG3Ck6C,EAAmBM,eAAiB,SAAUD,EAAMv6C,GAChDwD,KAAKu2C,YAAcQ,EAAKH,UAAUjsB,WAClC3qB,KAAKs2C,WAAaS,EAAKH,UAAUC,KACjC72C,KAAKi3C,YAAcz2C,SAASW,cAAc,OAC1CnB,KAAKi3C,YAAY70C,UAAY5F,EAC7BwD,KAAKk3C,gBACLl3C,KAAKm3C,iBACLn3C,KAAKo3C,iBACL,IAAIC,EAAer3C,KAAKi3C,YAAY70C,UAEpC,OADApC,KAAKs3C,gBACED,GAEXX,EAAmBY,cAAgB,WAG/B,IADA,IAAIC,EAAQv3C,KAAKi3C,YAAYO,SACpBtvC,EAAI,EAAGA,EAAIqvC,EAAM16C,OAAQqL,IAE9B,IADA,IAAIsuC,EAAYe,EAAMrvC,GAAGyiB,WAChB/tB,EAAI,EAAGA,EAAI45C,EAAU35C,OAAQD,IAClCoD,KAAKi3C,YAAYO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N,KAAM,WACN,SAAY,WACZ,WAAc,aACd,SAAY,YAEhBvnC,EAASqkC,WAAa,CAClB,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,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,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CACR,QAAW,QACX,MAAS,CACR,gDACA,qTACA,4FACA,sQACA,iDACA,4DACA,mDACA,8wBACA,sjBACA,kxBACA,8fACA,yFACA,uQACA,qRACA,kEACA,4EACA,gEACA,4PACA,uPACA,8XACA,u4BACA,g5BACA,yDACA,mVACA,2YACA,wYACA,sYACA,yXACA,4YACA,sYACA,2YACA,yXACA,4YACA,4YACA,iZACA,sYACA,qEACA,6yBACA,kGACA,0nBACA,sYACA,4HACA,sNACA,8WACA,yFACA,gPACA,wEACA,q6BACA,gyBACA,kjBACA,wTACA,kFACA,mEACA,kDACA,u5CACA,8lBACA,8GACA,qDACA,iiBACA,0QACA,qZACA,smBACA,g8BACA,w3BACA,u6BACA,gPACA,uFACA,u6BACA,04BACA,8mBACA,2QACA,82BACA,quBACA,0vCACA,utBACA,6GACA,oEACA,iFACA,s2CACA,+6BACA,8JACA,k7BACA,4oBACA,4tBACA,inBACA,wgBACA,koBACA,qqBACA,6uBACA,ywBACA,oLACA,q4BACA,4kCACA,65BACA,iEACA,0IACA,6mCACA,yRACA,qJACA,kOACA,6EACA,giBACA,+mBACA,k3BACA,kkBACA,2gBACA,6oBACA,gpBACA,uuCACA,8jBACA,mlBACA,63CACA,q5BACA,m5CACA,4zBACA,y4BACA,+QACA,y6BACA,y6BACA,46BACA,gkBACA,iyBACA,0GACA,2GACA,giBACA,uOACA,4NACA,qEACA,6tBACA,+zBACA,6uBACA,8QACA,oYACA,wuBACA,+NACA,g+BACA,kKACA,+iBACA,+uBACA,63BACA,67CACA,yNACA,kGACA,+kBACA,+1BACA,qoCACA,0mBACA,2mCACA,u3BACA,qwBACA,wFACA,wFACA,kEACA,qkBACA,6DACA,48BACA,2gBACA,8CACA,6CACA,ibACA,8CACA,61BACA,gDACA,sWACA,yuBACA,4aACA,mVACA,0VACA,+MACA,kVACA,qXACA,iEACA,qbACA,kDACA,ubACA,81BACA,wWACA,mEACA,sFACA,2bACA,sXACA,4MACA,8GACA,4GACA,o7BACA,6EACA,gDACA,0MACA,kyBACA,o5BACA,g6BACA,sIACA,sdACA,wWACA,ubACA,ouBACA,wHACA,mFACA,s5BACA,8CACA,6aACA,uJACA,iDACA,yEACA,0cACA,2bACA,6HACA,8KACA,keACA,6bACA,kGACA,6FACA,iyBACA,gbACA,qcACA,obACA,qVACA,6IACA,0FACA,kVACA,mVACA,0EACA,icACA,qMACA,oPACA,6bACA,2RACA,0MACA,2VACA,yqBACA,oEACA,kFACA,gcACA,+WACA,8cACA,2bACA,ubACA,+cACA,2ZACA,g0CACA,+xBACA,mvBACA,gFACA,wtBACA,20CACA,scACA,sCACA,4bACA,k2BACA,k2BACA,4IACA,s2BACA,02BACA,6FACA,sJACA,u5BACA,4tBACA,gKACA,q2BACA,qJACA,4zBACA,41BACA,u4BACA,suBACA,62CACA,iBACA,u4BACA,sBACA,wBACA,uCACA,yBACA,iCACA,yBACA,yBACA,wBACA,wBACA,wBACA,wBACA,wBACA,mCACA,wBACA,gCACA,uBACA,wBACA,wBACA,wBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,oBACA,wmCACA,mqBACA,ibACA,02BACA,o6CACA,+tBACA,g3BACA,i3BACA,8mCACA,o1BACA,25BACA,+tBACA,u5BACA,izBACA,usCACA,yuBACA,0iBACA,qxBACA,maACA,k1CACA,4oCACA,q/BACA,6/BACA,qeACA,yoCACA,2jBACA,+nCACA,+zBACA,s/BACA,8ZACA,uaACA,ihBACA,kxBACA,iuBACA,iyBACA,m0BACA,+bACA,uwBACA,q1BACA,4xBACA,ibACA,ogCACA,8xBACA,iBACA,oEACA,gCACA,8CACA,iDACA,gDACA,oFACA,oDACA,mGACA,4zBACA,iBACA,u4BACA,yyBACA,waACA,2EACA,iEACA,oLACA,0DACA,8CACA,kZACA,gFACA,kDACA,yDACA,oKACA,iGACA,gEACA,qGACA,+FACA,mDACA,qDACA,0FACA,6DACA,8TACA,gGACA,+CACA,iFACA,mMACA,kDACA,2GACA,u4BACA,quBAED,MAAS,CACR,+BACA,+BACA,gCACA,8BACA,iCACA,6BACA,mCACA,oCACA,iCACA,oCACA,qBACA,oCACA,qCACA,6BACA,kCACA,6BACA,+BACA,iCACA,6BACA,6BACA,6BACA,iCACA,gCACA,iCACA,gCACA,8BACA,8BACA,kCACA,8BACA,oCACA,+BACA,+BACA,sCACA,iCACA,gCACA,kCACA,qCACA,+BACA,gCACA,uBACA,4BACA,2BACA,8BACA,sDACA,+DACA,gDACA,4CACA,4CACA,wCACA,4CACA,yCACA,6BACA,gCACA,qCACA,wCACA,kCACA,wBACA,6BACA,8BACA,mCACA,kDACA,0CACA,qCACA,+BACA,kCACA,sBACA,uCACA,yCACA,0BACA,iDACA,iCACA,qCACA,6BACA,kCACA,qCACA,8BACA,mCACA,gCACA,6BACA,yCACA,wCACA,yCACA,wCACA,2CACA,wCACA,2CACA,8CACA,yCACA,yCACA,0CACA,2CACA,wCACA,uCACA,qCACA,wCACA,iCACA,qCACA,gCACA,uCACA,mCACA,uCACA,mCACA,mCACA,iCACA,mCACA,kCACA,kCACA,+BACA,+BACA,8BACA,wBACA,yBACA,+BACA,0BACA,+BACA,wBACA,+BACA,6BACA,mCACA,8BACA,wBACA,mCACA,8BACA,0BACA,2BACA,wBACA,0BACA,iBACA,+BACA,+BACA,4BACA,oBACA,kBACA,mBACA,2BACA,mBACA,mCACA,2BACA,iCACA,6BACA,mCACA,qCACA,0CACA,6CACA,mCACA,sCACA,oCACA,yCACA,iCACA,iCACA,sCACA,iCACA,oBACA,sBACA,qBACA,0BACA,gBACA,kBACA,kBACA,iBACA,sBACA,kBACA,wBACA,mBACA,cACA,cACA,oBACA,eACA,mCACA,mCACA,kCACA,gCACA,gCACA,kCACA,qBACA,mCACA,gCACA,yBACA,yBACA,+BACA,gCACA,mCACA,8BACA,mBACA,wBACA,qBACA,kCACA,iCACA,kCACA,gCACA,6BACA,uBACA,gCACA,6BACA,6BACA,sCACA,yCACA,sBACA,0BACA,6BACA,4BACA,oCACA,8BACA,oCACA,6BACA,8BACA,mCACA,kCACA,6BACA,0BACA,iCACA,kCACA,4BACA,kCACA,8BACA,iCAED,UAAa,CACZ,oBACA,gBACA,gBACA,2CACA,4CACA,mBACA,kBACA,gCACA,gNACA,wUACA,uBACA,mBACA,qPACA,mCACA,sCACA,eACA,qCACA,sBACA,gBACA,qBACA,uCACA,kBACA,6BACA,oCACA,oCACA,iDACA,sBACA,iBACA,oBACA,wCACA,mRACA,oBACA,kBACA,mCACA,kBACA,oBACA,+fACA,kBACA,kEACA,gCACA,qCACA,mBACA,oBACA,uBACA,0DACA,gCACA,+BACA,oBACA,wBACA,oBACA,yBACA,qBACA,sBACA,iCACA,mBACA,iDACA,oCACA,uBACA,4CACA,2BACA,oBACA,yCACA,oBACA,kBACA,qBACA,kCACA,gDACA,uCACA,qBACA,kBACA,sBACA,kDACA,oBACA,kBACA,oCACA,mBACA,2CACA,kBACA,qBACA,mCACA,kBACA,sBACA,6EACA,kCACA,mCACA,8CACA,gCACA,mBACA,4BACA,uBACA,kBACA,mBACA,oBACA,oBACA,yBACA,mCACA,4BACA,qBACA,6DACA,mBACA,oBACA,sCACA,kBACA,mBACA,kBACA,iBACA,wBACA,iBACA,iCACA,qBACA,gBACA,gBACA,oBACA,kBACA,kCACA,yDACA,kCACA,4CACA,oBACA,gBACA,6BACA,mCACA,2FACA,iCACA,iBACA,4CACA,gCACA,kBACA,qBACA,uCACA,oBACA,uBACA,iBACA,oBACA,uBACA,mBACA,qBACA,sCACA,2CACA,wCACA,sCACA,mCACA,kCACA,iBACA,gDACA,gBACA,iCACA,wBACA,sCACA,8CACA,kBACA,sBACA,qBACA,mCACA,wMACA,oCACA,mBACA,qBACA,oBACA,gCACA,qBACA,kBACA,qBACA,sBACA,iBACA,oBACA,mBACA,kBACA,sCACA,4BACA,oBACA,kBACA,sDACA,+CACA,iB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AK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAM/E7B,EAA8BsD,gBAAkB,CAC5C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,EACzE,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,EACxE,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EACzE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,KAMTtD,EAA8B8C,oBAAsB,CAChD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAM,EAC1E,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,EACzE,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EACzE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,KAMT9C,EAA8BkD,sBAAwB,CAClD,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,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,EACxE,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EACvE,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EACzE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,KAMTlD,EAA8B0C,2BAA6B,CACvD,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,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,EACzE,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,EACzE,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EACzE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,KAMT1C,EAA8B0D,YAAc,CACxC,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,IAAM,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAMxC1D,EAA8B8D,kBAAoB,CAC9C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,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,I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ACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,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,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,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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yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,OAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,OAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,OAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,OAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,OAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAE7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAM,MAC7CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,MAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,MAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,MAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,MAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,MAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,MAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,MAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,KAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnqhB,SAAS,MAAO,OAC9CiD,KAAKknhB,yBAAyBnq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AW,CACP5B,YAAS,OACVmrtB,EAAenivB,UAAW,mBAAe,GAC5C44B,EAAW,CACP5B,YAAS,KACVmrtB,EAAenivB,UAAW,sBAAkB,GAC/C44B,EAAW,CACP5B,aAAS,IACVmrtB,EAAenivB,UAAW,sBAAkB,GAC/C44B,EAAW,CACP5B,aAAS,IACVmrtB,EAAenivB,UAAW,gBAAY,GACzC44B,EAAW,CACP5B,aAAS,IACVmrtB,EAAenivB,UAAW,eAAW,GACxC44B,EAAW,CACP5B,aAAS,IACVmrtB,EAAenivB,UAAW,uBAAmB,GAChD44B,EAAW,CACP5B,aAAS,IACVmrtB,EAAenivB,UAAW,yBAAqB,GAClD44B,EAAW,CACP5B,YAAS,OACVmrtB,EAAenivB,UAAW,cAAU,GACvC44B,EAAW,CACP5B,YAAS,OACVmrtB,EAAenivB,UAAW,gBAAY,GACzC44B,EAAW,CACP5B,YAAS,OACVmrtB,EAAenivB,UAAW,gBAAY,GACzC44B,EAAW,CACP5B,YAAS,OACVmrtB,EAAenivB,UAAW,oBAAgB,GAC7C44B,EAAW,CACP5B,aAAS,IACVmrtB,EAAenivB,UAAW,kBAAc,GAC3C44B,EAAW,CACP5B,aAAS,IACVmrtB,EAAenivB,UAAW,6BAAyB,GACtD44B,EAAW,CACP5B,YAAS,UACVmrtB,EAAenivB,UAAW,sBAAkB,GAC/C44B,EAAW,CACPv1B,eACD8+uB,EAAenivB,UAAW,eAAW,GACxC44B,EAAW,CACPv1B,eACD8+uB,EAAenivB,UAAW,iBAAa,GAC1C44B,EAAW,CACPv1B,eACD8+uB,EAAenivB,UAAW,cAAU,GACvC44B,EAAW,CACPv1B,eACD8+uB,EAAenivB,UAAW,aAAS,GACtC44B,EAAW,CACPv1B,eACD8+uB,EAAenivB,UAAW,YAAQ,GACrCmivB,EAAiBvptB,EAAW,CACxBjB,KACDwqtB,GA7wC6B,CA+wClC1htB,M,6BCl0CF,kIAaIi4jB,EAAuB,WACvB,SAASA,EAAMr0lB,EAAQ88D,GACnBr9D,KAAK2ivB,eAAgB,EACrB3ivB,KAAK4ivB,gBAAiB,EACtB5ivB,KAAK04B,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Y181B,UAAW,oBAAgB,GAC1C44B,EAAW,CACP5B,eACD0l0B,EAAY181B,UAAW,cAAU,GACpC44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,2BAAuB,GACjD44B,EAAW,CACP5B,YAAS,OACV0l0B,EAAY181B,UAAW,gBAAY,GACtC44B,EAAW,CACP5B,YAAS,SACV0l0B,EAAY181B,UAAW,aAAS,GACnC44B,EAAW,CACP5B,YAAS,UACV0l0B,EAAY181B,UAAW,mBAAe,GACzC44B,EAAW,CACP5B,YAAS,SACV0l0B,EAAY181B,UAAW,kBAAc,GACxC44B,EAAW,CACP5B,YAAS,OACV0l0B,EAAY181B,UAAW,mBAAe,GACzC44B,EAAW,CACP5B,YAAS,OACV0l0B,EAAY181B,UAAW,4BAAwB,GAClD44B,EAAW,CACP5B,YAAS,KACV0l0B,EAAY181B,UAAW,sBAAkB,GAC5C44B,EAAW,CACP5B,YAAS,OACV0l0B,EAAY181B,UAAW,qBAAiB,GAC3C44B,EAAW,CACP5B,YAAS,OACV0l0B,EAAY181B,UAAW,sBAAkB,GAC5C44B,EAAW,CACP5B,YAAS,OACV0l0B,EAAY181B,UAAW,sBAAkB,GAC5C44B,EAAW,CACP5B,YAAS,OACV0l0B,EAAY181B,UAAW,oBAAgB,GAC1C44B,EAAW,CACP5B,YAAS,OACV0l0B,EAAY181B,UAAW,sBAAkB,GAC5C44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,oBAAgB,GAC1C44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,wBAAoB,GAC9C44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,uBAAmB,GAC7C44B,EAAW,CACP5B,YAAS,MACV0l0B,EAAY181B,UAAW,8BAA0B,GACpD44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,gBAAY,GACtC44B,EAAW,CACP5B,YAAS,OACV0l0B,EAAY181B,UAAW,YAAQ,GAClC44B,EAAW,CACP5B,YAAS,OACV0l0B,EAAY181B,UAAW,aAAS,GACnC44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,wBAAoB,GAC9C44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,0BAAsB,GAChD44B,EAAW,CACP5B,YAAS,YACV0l0B,EAAY181B,UAAW,YAAQ,GAClC44B,EAAW,CACP5B,YAAS,MACV0l0B,EAAY181B,UAAW,qBAAiB,GAC3C44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,kBAAc,GACxC44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,wBAAoB,GAC9C44B,EAAW,CACP5B,YAAS,UACV0l0B,EAAY181B,UAAW,sBAAkB,GAC5C44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,qBAAiB,GAC3C44B,EAAW,CACP5B,YAAS,eACV0l0B,EAAY181B,UAAW,qBAAiB,GAC3C44B,EAAW,CACP5B,YAAS,iBACV0l0B,EAAY181B,UAAW,uBAAmB,GAC7C44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,4BAAwB,GAClD44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,mBAAe,GACzC44B,EAAW,CACP5B,aAAS,IACV0l0B,EAAY181B,UAAW,oBAAgB,GAC1C44B,EAAW,CACPv1B,eACDq51B,EAAY181B,UAAW,cAAU,GACpC44B,EAAW,CACPv1B,eACDq51B,EAAY181B,UAAW,gBAAY,GACtC44B,EAAW,CACPv1B,eACDq51B,EAAY181B,UAAW,eAAW,GACrC44B,EAAW,CACPv1B,eACDq51B,EAAY181B,UAAW,uBAAmB,GAC7C44B,EAAW,CACPv1B,eACDq51B,EAAY181B,UAAW,mBAAe,GACzC44B,EAAW,CACPv1B,eACDq51B,EAAY181B,UAAW,kBAAc,GACxC44B,EAAW,CACPv1B,eACDq51B,EAAY181B,UAAW,YAAQ,GAClC44B,EAAW,CACPv1B,eACDq51B,EAAY181B,UAAW,aAAS,GACnC44B,EAAW,CACPv1B,eACDq51B,EAAY181B,UAAW,YAAQ,GAClC44B,EAAW,CACPv1B,eACDq51B,EAAY181B,UAAW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S,IACVg11B,EAAShs3B,UAAW,gCAA4B,GACnD44B,GAAW,CACP5B,aAAS,IACVg11B,EAAShs3B,UAAW,wBAAoB,GAC3C44B,GAAW,CACP5B,eACDg11B,EAAShs3B,UAAW,0BAAsB,GAC7C44B,GAAW,CACP5B,eACDg11B,EAAShs3B,UAAW,0BAAsB,GAC7C44B,GAAW,CACP5B,eACDg11B,EAAShs3B,UAAW,yBAAqB,GAC5C44B,GAAW,CACP5B,eACDg11B,EAAShs3B,UAAW,2BAAuB,GAC9C44B,GAAW,CACP5B,eACDg11B,EAAShs3B,UAAW,oBAAgB,GACvC44B,GAAW,CACP5B,aAAS,IACVg11B,EAAShs3B,UAAW,gBAAY,GACnC44B,GAAW,CACP5B,aAAS,IACVg11B,EAAShs3B,UAAW,qBAAiB,GACxC44B,GAAW,CACP5B,aAAS,IACVg11B,EAAShs3B,UAAW,mBAAe,GACtC44B,GAAW,CACP5B,aAAS,IACVg11B,EAAShs3B,UAAW,+BAA2B,GAClD44B,GAAW,CACP5B,aAAS,IACVg11B,EAAShs3B,UAAW,8BAA0B,GACjD44B,GAAW,CACP5B,aAAS,IACVg11B,EAAShs3B,UAAW,+BAA2B,GAClD44B,GAAW,CACP5B,aAAS,IACVg11B,EAAShs3B,UAAW,sBAAkB,GACzC44B,GAAW,CACP5B,aAAS,IACVg11B,EAAShs3B,UAAW,qBAAiB,GACxC44B,GAAW,CACP5B,aAAS,IACVg11B,EAAShs3B,UAAW,sBAAkB,GACzC44B,GAAW,CACP5B,YAAS,IACVg11B,EAAShs3B,UAAW,wBAAoB,GAC3C44B,GAAW,CACP5B,eACDg11B,EAAShs3B,UAAW,sBAAkB,GACzC44B,GAAW,CACPxB,YAAQ,GAAIop1B,KACbwL,EAAShs3B,UAAW,0BAAsB,GAC7C44B,GAAW,CACP5B,YAAS,IACVg11B,EAAShs3B,UAAW,uBAAmB,GAC1C44B,GAAW,CACP5B,aAAS,IACVg11B,EAAShs3B,UAAW,2BAAuB,GAC9C44B,GAAW,CACP5B,aAAS,IACVg11B,EAAShs3B,UAAW,kCAA8B,GACrD44B,GAAW,CACP5B,eACDg11B,EAAShs3B,UAAW,gBAAY,GACnC44B,GAAW,CACPxB,YAAQ,GAAI2t1B,KACbiH,EAAShs3B,UAAW,qBAAiB,GACxC44B,GAAW,CACP5B,YAAS2tc,OACVqnZ,EAAShs3B,UAAW,0BAAsB,GAC7C44B,GAAW,CACP5B,eACDg11B,EAAShs3B,UAAW,8BAA0B,GACjD44B,GAAW,CACP5B,eACDg11B,EAAShs3B,UAAW,4BAAwB,GAC/C44B,GAAW,CACPxB,YAAQ,GAAIy+Y,KACbm2c,EAAShs3B,UAAW,aAAS,GAChC44B,GAAW,CACPtB,YAAW,GAAI0t1B,KAChBgH,EAAShs3B,UAAW,iBAAa,GACpC44B,GAAW,CACPtB,YAAW,GAAImp1B,KAChBuL,EAAShs3B,UAAW,kBAAc,GACrC44B,GAAW,CACP5B,eACDg11B,EAAShs3B,UAAW,gBAAY,GACnC44B,GAAW,CACP5B,eACDg11B,EAAShs3B,UAAW,qBAAiB,GACxC44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAAW,eAAW,GAClC44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAAW,iBAAa,GACpC44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAAW,iBAAa,GACpC44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAAW,uBAAmB,GAC1C44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAAW,uBAAmB,GAC1C44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAAW,aAAS,GAChC44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAAW,cAAU,GACjC44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAAW,mBAAe,GACtC44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAAW,sBAAkB,GACzC44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAAW,qBAAiB,GACxC44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAAW,kBAAc,GACrC44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAAW,kBAAc,GACrC44B,GAAW,CACPv1B,eACD2o3B,EAAShs3B,UAA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B,KACxBl06B,KAAKm06B,iBAAmB,KACxBn06B,KAAKo06B,qBAAuB,KAC5Bp06B,KAAK0pR,aAAe,KACpB1pR,KAAKq06B,iBAAmB,KACxBr06B,KAAKs06B,aAAe,KACpBt06B,KAAKu06B,gBAAkB,KACvBv06B,KAAKw06B,iBAAmB,KACxBx06B,KAAKy06B,WAAa,KAClBz06B,KAAK006B,+BAAiC,KACtC106B,KAAK206B,iCAAmC,KACxC306B,KAAK406B,uBAAyB,KAC9B506B,KAAK606B,6BAA+B,KACpC706B,KAAK806B,2BAA6B,KAClC906B,KAAK+06B,yBAA2B,KAChC/06B,KAAKg16B,2BAA6B,KAClCh16B,KAAKi16B,4BAA8B,KACnCj16B,KAAKk16B,0BAA4B,KACjCl16B,KAAKm16B,2BAA6B,KAClCn16B,KAAKo16B,2BAA6B,KAClCp16B,KAAKq16B,gCAAkC,KACvCr16B,KAAKs16B,wBAA0B,KAC/Bt16B,KAAKu16B,uBAAyB,KAC9Bv16B,KAAKw16B,8BAAgC,KACrCx16B,KAAKy16B,8BAAgC,KACrCz16B,KAAK016B,qCAAuC,KAC5C116B,KAAK216B,iCAAmC,KACxC316B,KAAKmzH,SAAW,YAChBnzH,KAAK416B,aAAe,aACpB516B,KAAK616B,4BAA8B,KACnC716B,KAAKmrI,UAAYi+F,EACjBppO,KAAKorI,cAAgBA,EACrBprI,KAAK816B,sBA2wBT,OAzwBA5C,EAAgBh36B,UAAU456B,oBAAsB,WAC5C916B,KAAKmz6B,iBAAmBnz6B,KAAKorI,cAAcvoI,WAAW,cAAc20C,SAAS,GAC7Ex3C,KAAKoz6B,+BAAiCpz6B,KAAKorI,cAAcvoI,WAAW,qBACpE7C,KAAKqz6B,sBAAwBrz6B,KAAKorI,cAAcvoI,WAAW,qBAAqB20C,SAAS,GAAGA,SAAS,GACrGx3C,KAAKsz6B,iBAAmBtz6B,KAAKorI,cAAcvoI,WAAW,cACtD7C,KAAKuz6B,oBAAsBvz6B,KAAKorI,cAAcvoI,WAAW,iBACzD7C,KAAKy7xB,gBAAkBz7xB,KAAKorI,cAAcvoI,WAAW,aACrD7C,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ACrB1z6B,KAAK0z6B,cAAcnp5B,WAAavqB,KAAK416B,cAEpC516B,KAAK61U,UAAU71U,KAAKyz6B,kBACrBzz6B,KAAKyz6B,eAAelp5B,WAAavqB,KAAK416B,cAErC516B,KAAK61U,UAAU71U,KAAK2z6B,uBACrB3z6B,KAAK2z6B,oBAAoBpp5B,WAAavqB,KAAK416B,cAE1C516B,KAAK61U,UAAU71U,KAAK4z6B,qBACrB5z6B,KAAK4z6B,kBAAkBrp5B,WAAavqB,KAAK416B,cAExC516B,KAAK61U,UAAU71U,KAAK6z6B,mBACrB7z6B,KAAK6z6B,gBAAgBtp5B,WAAavqB,KAAK416B,cAEtC516B,KAAK61U,UAAU71U,KAAK4rI,eACrB5rI,KAAK4rI,YAAYrhH,WAAavqB,KAAK416B,cAElC516B,KAAK61U,UAAU71U,KAAK+wI,eACrB/wI,KAAK+wI,YAAYxmH,WAAavqB,KAAK416B,cAElC516B,KAAK61U,UAAU71U,KAAK8z6B,kBACrB9z6B,KAAK8z6B,eAAevp5B,WAAavqB,KAAK416B,cAErC516B,KAAK61U,UAAU71U,KAAKy3pB,iBACrBz3pB,KAAKy3pB,cAAcltoB,WAAavqB,KAAK416B,cAEpC516B,KAAK61U,UAAU71U,KAAK+z6B,oBACrB/z6B,KAAK+z6B,iBAAiBxp5B,WAAavqB,KAAK416B,cAEvC516B,KAAK61U,UAAU71U,KAAK61I,qBACrB71I,KAAK61I,kBAAkBtrH,WAAavqB,KAAK416B,cAExC516B,KAAK61U,UAAU71U,KAAKg06B,gBACrBh06B,KAAKg06B,aAAazp5B,WAAavqB,KAAK416B,cAEnC516B,KAAK61U,UAAU71U,KAAKi06B,mBACrBj06B,KAAKi06B,gBAAgB1p5B,WAAavqB,KAAK416B,eAG3C516B,KAAKmrI,UAAUuryB,0BACV126B,KAAK61U,UAAU71U,KAAKk06B,oBACrBl06B,KAAKk06B,iBAAiB3p5B,WAAavqB,KAAK416B,cAEvC516B,KAAK61U,UAAU71U,KAAKm06B,oBACrBn06B,KAAKm06B,iBAAiB5p5B,WAAavqB,KAAK416B,cAEvC516B,KAAK61U,UAAU71U,KAAKo06B,wBACrBp06B,KAAKo06B,qBAAqB7p5B,WAAavqB,KAAK416B,cAE3C516B,KAAK61U,UAAU71U,KAAK0pR,gBACrB1pR,KAAK0pR,aAAan/P,WAAavqB,KAAK416B,cAEnC516B,KAAK61U,UAAU71U,KAAKq06B,oBACrBr06B,KAAKq06B,iBAAiB9p5B,WAAavqB,KAAK416B,cAEvC516B,KAAK61U,UAAU71U,KAAKs06B,gBACrBt06B,KAAKs06B,aAAa/p5B,WAAavqB,KAAK416B,cAEnC516B,KAAK61U,UAAU71U,KAAKu06B,mBACrBv06B,KAAKu06B,gBAAgBhq5B,WAAavqB,KAAK416B,cAEtC516B,KAAK61U,UAAU71U,KAAKw06B,oBACrBx06B,KAAKw06B,iBAAiBjq5B,WAAavqB,KAAK416B,cAEvC516B,KAAK61U,UAAU71U,KAAKy06B,cACrBz06B,KAAKy06B,WAAWlq5B,WAAavqB,KAAK416B,cAEjC516B,KAAK61U,UAAU71U,KAAKi16B,+BACrBj16B,KAAKi16B,4BAA4B1q5B,WAAavqB,KAAK416B,cAElD516B,KAAK61U,UAAU71U,KAAKk16B,6BACrBl16B,KAAKk16B,0BAA0B3q5B,WAAavqB,KAAK416B,cAEhD516B,KAAK61U,UAAU71U,KAAKo16B,8BACrBp16B,KAAKo16B,2BAA2B7q5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKm16B,8BACrBn16B,KAAKm16B,2BAA2B5q5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKq16B,mCACrBr16B,KAAKq16B,gCAAgC9q5B,WAAavqB,KAAK416B,cAEtD516B,KAAK61U,UAAU71U,KAAK406B,0BACrB506B,KAAK406B,uBAAuBrq5B,WAAavqB,KAAK416B,cAE7C516B,KAAK61U,UAAU71U,KAAK606B,gCACrB706B,KAAK606B,6BAA6Btq5B,WAAavqB,KAAK416B,cAEnD516B,KAAK61U,UAAU71U,KAAK806B,8BACrB9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EjD516B,KAAK61U,UAAU71U,KAAKi16B,+BACrBj16B,KAAKi16B,4BAA4B1q5B,WAAavqB,KAAK416B,cAElD516B,KAAK61U,UAAU71U,KAAKk16B,6BACrBl16B,KAAKk16B,0BAA0B3q5B,WAAavqB,KAAK416B,cAEhD516B,KAAK61U,UAAU71U,KAAKm16B,8BACrBn16B,KAAKm16B,2BAA2B5q5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKq16B,mCACrBr16B,KAAKq16B,gCAAgC9q5B,WAAavqB,KAAK416B,cAEtD516B,KAAK61U,UAAU71U,KAAK606B,gCACrB706B,KAAK606B,6BAA6Btq5B,WAAavqB,KAAK416B,cAEnD516B,KAAK61U,UAAU71U,KAAK806B,8BACrB906B,KAAK806B,2BAA2Bvq5B,WAAavqB,KAAK416B,eAQ1D1C,EAAgBh36B,UAAU476B,+BAAiC,SAAUpkzB,EAAUqkzB,GACvEA,IACIrkzB,GACA1zH,KAAK406B,uBAAuB7p5B,UAAUtB,OAAOzpB,KAAKmzH,UAClDnzH,KAAK606B,6BAA6B9p5B,UAAUtB,OAAOzpB,KAAKmzH,UACxDnzH,KAAK806B,2BAA2B/p5B,UAAUtB,OAAOzpB,KAAKmzH,UACtDnzH,KAAK+06B,yBAAyBhq5B,UAAUtB,OAAOzpB,KAAKmzH,UAChDnzH,KAAKmrI,UAAU4H,mBACf/yI,KAAKg16B,2BAA2Bjq5B,UAAUtB,OAAOzpB,KAAKmzH,UACtDnzH,KAAKi16B,4BAA4Blq5B,UAAUtB,OAAOzpB,KAAKmzH,UACvDnzH,KAAKk16B,0BAA0Bnq5B,UAAUtB,OAAOzpB,KAAKmzH,WAEpDnzH,KAAK61U,UAAU71U,KAAKm16B,8BACrBn16B,KAAKm16B,2BAA2B5q5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKq16B,mCACrBr16B,KAAKq16B,gCAAgC9q5B,WAAavqB,KAAK416B,gBAItD516B,KAAK61U,UAAU71U,KAAK406B,0BACrB506B,KAAK406B,uBAAuBrq5B,WAAavqB,KAAK416B,cAE7C516B,KAAK61U,UAAU71U,KAAK606B,gCACrB706B,KAAK606B,6BAA6Btq5B,WAAavqB,KAAK416B,cAEnD516B,KAAK61U,UAAU71U,KAAK806B,8BACrB906B,KAAK806B,2BAA2Bvq5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAK+06B,4BACrB/06B,KAAK+06B,yBAAyBxq5B,WAAavqB,KAAK416B,cAE/C516B,KAAK61U,UAAU71U,KAAKs16B,2BACrBt16B,KAAKs16B,wBAAwB/q5B,WAAavqB,KAAK416B,iBAU/D1C,EAAgBh36B,UAAU876B,wCAA0C,SAAUtkzB,EAAUqkzB,GAChFA,GAAuBrkzB,IACvB1zH,KAAK406B,uBAAuB7p5B,UAAUtB,OAAOzpB,KAAKmzH,UAClDnzH,KAAK606B,6BAA6B9p5B,UAAUtB,OAAOzpB,KAAKmzH,UACxDnzH,KAAK806B,2BAA2B/p5B,UAAUtB,OAAOzpB,KAAKmzH,UACtDnzH,KAAK+06B,yBAAyBhq5B,UAAUtB,OAAOzpB,KAAKmzH,UACpDnzH,KAAKg16B,2BAA2Bjq5B,UAAUtB,OAAOzpB,KAAKmzH,UACtDnzH,KAAKi16B,4BAA4Blq5B,UAAUtB,OAAOzpB,KAAKmzH,UACvDnzH,KAAKk16B,0BAA0Bnq5B,UAAUtB,OAAOzpB,KAAKmzH,UACrDnzH,KAAKm16B,2BAA2Bpq5B,UAAUtB,OAAOzpB,KAAKmzH,UACtDnzH,KAAKq16B,gCAAgCtq5B,UAAUtB,OAAOzpB,KAAKmzH,UAC3DnzH,KAAKs16B,wBAAwBvq5B,UAAUtB,OAAOzpB,KAAKmzH,UACnDnzH,KAAKw16B,8BAA8Bzq5B,UAAUtB,OAAOzpB,KAAKmzH,YAQjE+/yB,EAAgBh36B,UAAU+76B,qCAAuC,SAAUvkzB,EAAUwkzB,GAC7ExkzB,GACA1zH,KAAK+06B,yBAAyBhq5B,UAAUtB,OAAOzpB,KAAKmzH,UACpDnzH,KAAKs16B,wBAAwBvq5B,UAAUtB,OAAOzpB,KAAKmzH,UACnDnzH,KAAKw16B,8BAA8Bzq5B,UAAUtB,OAAOzpB,KAAKmzH,YAGpDnzH,KAAK61U,UAAU71U,KAAK+06B,4BACrB/06B,KAAK+06B,yBAAyBxq5B,WAAavqB,KAAK416B,cAE/C516B,KAAK61U,UAAU71U,KAAKs16B,2BACrBt16B,KAAKs16B,wBAAwB/q5B,WAAavqB,KAAK416B,cAE9C516B,KAAK61U,UAAU71U,KAAKw16B,iCACrBx16B,KAAKw16B,8BAA8Bjr5B,WAAavqB,KAAK416B,eAGxD516B,KAAK61U,UAAU71U,KAAK406B,0BACrB506B,KAAK406B,uBAAuBrq5B,WAAavqB,KAAK416B,cAE7C516B,KAAK61U,UAAU71U,KAAK606B,gCACrB706B,KAAK606B,6BAA6Btq5B,WAAavqB,KAAK416B,cAEnD516B,KAAK61U,UAAU71U,KAAK806B,8BACrB906B,KAAK806B,2BAA2Bvq5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAK+06B,4BACrB/06B,KAAK+06B,yBAAyBxq5B,WAAavqB,KAAK416B,cAE/C516B,KAAK61U,UAAU71U,KAAKg16B,8BACrBh16B,KAAKg16B,2BAA2Bzq5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKi16B,+BACrBj16B,KAAKi16B,4BAA4B1q5B,WAAavqB,KAAK416B,cAElD516B,KAAK61U,UAAU71U,KAAKk16B,6BACrBl16B,KAAKk16B,0BAA0B3q5B,WAAavqB,KAAK416B,cAEhD516B,KAAK61U,UAAU71U,KAAKm16B,8BACrBn16B,KAAKm16B,2BAA2B5q5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKq16B,mCACrBr16B,KAAKq16B,gCAAgC9q5B,WAAavqB,KAAK416B,eAQ/D1C,EAAgBh36B,UAAUi86B,+BAAiC,SAAUzkzB,EAAUqkzB,GACvErkzB,GACA1zH,KAAK606B,6BAA6B9p5B,UAAUtB,OAAOzpB,KAAKmzH,UACxDnzH,KAAK806B,2BAA2B/p5B,UAAUtB,OAAOzpB,KAAKmzH,UACtDnzH,KAAK+06B,yBAAyBhq5B,UAAUtB,OAAOzpB,KAAKmzH,UACpDnzH,KAAKs16B,wBAAwBvq5B,UAAUtB,OAAOzpB,KAAKmzH,UACnDnzH,KAAKw16B,8BAA8Bzq5B,UAAUtB,OAAOzpB,KAAKmzH,YAGpDnzH,KAAK61U,UAAU71U,KAAK606B,gCACrB706B,KAAK606B,6BAA6Btq5B,WAAavqB,KAAK416B,cAEnD516B,KAAK61U,UAAU71U,KAAK806B,8BACrB906B,KAAK806B,2BAA2Bvq5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAK+06B,4BACrB/06B,KAAK+06B,yBAAyBxq5B,WAAavqB,KAAK416B,cAE/C516B,KAAK61U,UAAU71U,KAAKs16B,2BACrBt16B,KAAKs16B,wBAAwB/q5B,WAAavqB,KAAK416B,cAE9C516B,KAAK61U,UAAU71U,KAAKw16B,iCACrBx16B,KAAKw16B,8BAA8Bjr5B,WAAavqB,KAAK416B,eAGxD516B,KAAK61U,UAAU71U,KAAK406B,0BACrB506B,KAAK406B,uBAAuBrq5B,WAAavqB,KAAK416B,cAE7C516B,KAAK61U,UAAU71U,KAAKg16B,8BACrBh16B,KAAKg16B,2BAA2Bzq5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKi16B,+BACrBj16B,KAAKi16B,4BAA4B1q5B,WAAavqB,KAAK416B,cAElD516B,KAAK61U,UAAU71U,KAAKk16B,6BACrBl16B,KAAKk16B,0BAA0B3q5B,WAAavqB,KAAK416B,cAEhD516B,KAAK61U,UAAU71U,KAAKm16B,8BACrBn16B,KAAKm16B,2BAA2B5q5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKq16B,mCACrBr16B,KAAKq16B,gCAAgC9q5B,WAAavqB,KAAK416B,eAM/D1C,EAAgBh36B,UAAUk86B,cAAgB,WACjCp46B,KAAK61U,UAAU71U,KAAK406B,0BACrB506B,KAAK406B,uBAAuBrq5B,WAAavqB,KAAK416B,cAE7C516B,KAAK61U,UAAU71U,KAAK606B,gCACrB706B,KAAK606B,6BAA6Btq5B,WAAavqB,KAAK416B,cAEnD516B,KAAK61U,UAAU71U,KAAK806B,8BACrB906B,KAAK806B,2BAA2Bvq5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAK+06B,4BACrB/06B,KAAK+06B,yBAAyBxq5B,WAAavqB,KAAK416B,cAE/C516B,KAAK61U,UAAU71U,KAAKg16B,8BACrBh16B,KAAKg16B,2BAA2Bzq5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKi16B,+BACrBj16B,KAAKi16B,4BAA4B1q5B,WAAavqB,KAAK416B,cAElD516B,KAAK61U,UAAU71U,KAAKk16B,6BACrBl16B,KAAKk16B,0BAA0B3q5B,WAAavqB,KAAK416B,cAEhD516B,KAAK61U,UAAU71U,KAAKm16B,8BACrBn16B,KAAKm16B,2BAA2B5q5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKq16B,mCACrBr16B,KAAKq16B,gCAAgC9q5B,WAAavqB,KAAK416B,eAM/D1C,EAAgBh36B,UAAUm86B,mBAAqB,WACtCr46B,KAAK61U,UAAU71U,KAAK406B,0BACrB506B,KAAK406B,uBAAuBrq5B,WAAavqB,KAAK416B,cAE7C516B,KAAK61U,UAAU71U,KAAK606B,gCACrB706B,KAAK606B,6BAA6Btq5B,WAAavqB,KAAK416B,cAEnD516B,KAAK61U,UAAU71U,KAAK806B,8BACrB906B,KAAK806B,2BAA2Bvq5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAK+06B,4BACrB/06B,KAAK+06B,yBAAyBxq5B,WAAavqB,KAAK416B,cAE/C516B,KAAK61U,UAAU71U,KAAKg16B,8BACrBh16B,KAAKg16B,2BAA2Bzq5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKi16B,+BACrBj16B,KAAKi16B,4BAA4B1q5B,WAAavqB,KAAK416B,cAElD516B,KAAK61U,UAAU71U,KAAKk16B,6BACrBl16B,KAAKk16B,0BAA0B3q5B,WAAavqB,KAAK416B,cAEhD516B,KAAK61U,UAAU71U,KAAKm16B,8BACrBn16B,KAAKm16B,2BAA2B5q5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKq16B,mCACrBr16B,KAAKq16B,gCAAgC9q5B,WAAavqB,KAAK416B,cAEtD516B,KAAK61U,UAAU71U,KAAKs16B,2BACrBt16B,KAAKs16B,wBAAwB/q5B,WAAavqB,KAAK416B,eAOvD1C,EAAgBh36B,UAAUo86B,iBAAmB,SAAUC,GAC5B,aAAnBA,IACAv46B,KAAK406B,uBAAuB7p5B,UAAUtB,OAAOzpB,KAAKmzH,UAClDnzH,KAAK606B,6BAA6B9p5B,UAAUtB,OAAOzpB,KAAKmzH,UACxDnzH,KAAK806B,2BAA2B/p5B,UAAUtB,OAAOzpB,KAAKmzH,UACtDnzH,KAAK+06B,yBAAyBhq5B,UAAUtB,OAAOzpB,KAAKmzH,UACpDnzH,KAAKg16B,2BAA2Bjq5B,UAAUtB,OAAOzpB,KAAKmzH,UACtDnzH,KAAKi16B,4BAA4Blq5B,UAAUtB,OAAOzpB,KAAKmzH,UACvDnzH,KAAKk16B,0BAA0Bnq5B,UAAUtB,OAAOzpB,KAAKmzH,UACrDnzH,KAAKm16B,2BAA2Bpq5B,UAAUtB,OAAOzpB,KAAKmzH,UACtDnzH,KAAKq16B,gCAAgCtq5B,UAAUtB,OAAOzpB,KAAKmzH,WAExC,UAAnBolzB,GAAiD,YAAnBA,IAC9Bv46B,KAAK406B,uBAAuB7p5B,UAAUtB,OAAOzpB,KAAKmzH,UAClDnzH,KAAK606B,6BAA6B9p5B,UAAUtB,OAAOzpB,KAAKmzH,UACxDnzH,KAAK806B,2BAA2B/p5B,UAAUtB,OAAOzpB,KAAKmzH,UACtDnzH,KAAK+06B,yBAAyBhq5B,UAAUtB,OAAOzpB,KAAKmzH,UAC/CnzH,KAAK61U,UAAU71U,KAAKg16B,8BACrBh16B,KAAKg16B,2BAA2Bzq5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKi16B,+BACrBj16B,KAAKi16B,4BAA4B1q5B,WAAavqB,KAAK416B,cAElD516B,KAAK61U,UAAU71U,KAAKk16B,6BACrBl16B,KAAKk16B,0BAA0B3q5B,WAAavqB,KAAK416B,cAEhD516B,KAAK61U,UAAU71U,KAAKm16B,8BACrBn16B,KAAKm16B,2BAA2B5q5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKq16B,mCACrBr16B,KAAKq16B,gCAAgC9q5B,WAAavqB,KAAK416B,eAGxC,eAAnB2C,IACAv46B,KAAK406B,uBAAuB7p5B,UAAUtB,OAAOzpB,KAAKmzH,UAC7CnzH,KAAK61U,UAAU71U,KAAK606B,gCACrB706B,KAAK606B,6BAA6Btq5B,WAAavqB,KAAK416B,cAEnD516B,KAAK61U,UAAU71U,KAAK806B,8BACrB906B,KAAK806B,2BAA2Bvq5B,WAAavqB,KAAK416B,cAEtD516B,KAAK+06B,yBAAyBhq5B,UAAUtB,OAAOzpB,KAAKmzH,UAC/CnzH,KAAK61U,UAAU71U,KAAKg16B,8BACrBh16B,KAAKg16B,2BAA2Bzq5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKi16B,+BACrBj16B,KAAKi16B,4BAA4B1q5B,WAAavqB,KAAK416B,cAElD516B,KAAK61U,UAAU71U,KAAKk16B,6BACrBl16B,KAAKk16B,0BAA0B3q5B,WAAavqB,KAAK416B,cAEhD516B,KAAK61U,UAAU71U,KAAKm16B,8BACrBn16B,KAAKm16B,2BAA2B5q5B,WAAavqB,KAAK416B,cAEjD516B,KAAK61U,UAAU71U,KAAKq16B,mCACrBr16B,KAAKq16B,gCAAgC9q5B,WAAavqB,KAAK416B,eAG/D516B,KAAKs16B,wBAAwBvq5B,UAAUtB,OAAOzpB,KAAKmzH,UACnDnzH,KAAKw16B,8BAA8Bzq5B,UAAUtB,OAAOzpB,KAAKmzH,WAM7D+/yB,EAAgBh36B,UAAUs86B,uBAAyB,SAAU7v0B,GACzD3oG,KAAK206B,iCAAiCn46B,MAAQmsG,GAMlDuq0B,EAAgBh36B,UAAUu86B,qBAAuB,SAAUxv0B,GACvD,IAAIyv0B,EAAYzv0B,EAASh8F,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AmB,GAC/C44B,GAAW,CACP5B,YAAS,KACVy78B,EAAczy+B,UAAW,gBAAY,GACxC44B,GAAW,CACP5B,YAAS,KACVy78B,EAAczy+B,UAAW,kBAAc,GAC1C44B,GAAW,CACP5B,YAAS,UACVy78B,EAAczy+B,UAAW,iBAAa,GACzC44B,GAAW,CACP5B,YAAS,KACVy78B,EAAczy+B,UAAW,WAAO,GACnC44B,GAAW,CACP5B,YAAS,UACVy78B,EAAczy+B,UAAW,YAAQ,GACpC44B,GAAW,CACP5B,YAAS,eACVy78B,EAAczy+B,UAAW,eAAW,GACvC44B,GAAW,CACP5B,YAAS,SACVy78B,EAAczy+B,UAAW,YAAQ,GACpC44B,GAAW,CACP5B,YAAS,UACVy78B,EAAczy+B,UAAW,kBAAc,GAC1C44B,GAAW,CACP5B,YAAS,UACVy78B,EAAczy+B,UAAW,kBAAc,GAC1C44B,GAAW,CACP5B,YAAS,WACVy78B,EAAczy+B,UAAW,oBAAgB,GAC5C44B,GAAW,CACP5B,aAAS,IACVy78B,EAAczy+B,UAAW,yBAAqB,GACjD44B,GAAW,CACP5B,aAAS,IACVy78B,EAAczy+B,UAAW,gBAAY,GACxC44B,GAAW,CACP5B,aAAS,IACVy78B,EAAczy+B,UAAW,mBAAe,GAC3C44B,GAAW,CACP5B,aAAS,IACVy78B,EAAczy+B,UAAW,sBAAkB,GAC9C44B,GAAW,CACP5B,aAAS,IACVy78B,EAAczy+B,UAAW,qBAAiB,GAC7C44B,GAAW,CACPxB,YAAQ,GAAIi78B,KACbI,EAAczy+B,UAAW,qBAAiB,GAC7C44B,GAAW,CACP5B,YAAS,OACVy78B,EAAczy+B,UAAW,aAAS,GACrC44B,GAAW,CACP5B,YAAS,CAAE+zE,QAAS,yBACrB0n4B,EAAczy+B,UAAW,kBAAc,GAC1C44B,GAAW,CACP5B,YAAS,CAAE+zE,QAAS,2BACrB0n4B,EAAczy+B,UAAW,oBAAgB,GAC5C44B,GAAW,CACP5B,YAAS,OACVy78B,EAAczy+B,UAAW,uBAAmB,GAC/C44B,GAAW,CACPv1B,eACDov+B,EAAczy+B,UAAW,eAAW,GACvC44B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E7E5xwB,IAAQa,WAAYlnB,KAAKmrI,UAAU4E,oBAChCr0I,GACAsE,KAAKw87B,eAAellB,aAAat36B,KAAKmrI,UAAUshB,QAAQ4pxB,mBACxDr26B,KAAKw87B,eAAepmB,WAAWp26B,KAAKmrI,UAAUshB,QAAQ435B,YACtDrkjC,KAAKw87B,eAAellB,aAAat36B,KAAKkkjC,kBACtClkjC,KAAKw87B,eAAellB,aAAat36B,KAAKmkjC,kBACtCnkjC,KAAKw87B,eAAellB,aAAat36B,KAAKokjC,sBACtCpkjC,KAAKw87B,eAAellB,aAAat36B,KAAKyijC,iBACtCzijC,KAAKw87B,eAAellB,aAAat36B,KAAKuijC,wBAGtCvijC,KAAKw87B,eAAellB,aAAat36B,KAAKmhjC,eACtCnhjC,KAAKw87B,eAAellB,aAAat36B,KAAKohjC,eACtCphjC,KAAKw87B,eAAellB,aAAat36B,KAAKqhjC,mBACtCrhjC,KAAKw87B,eAAellB,aAAat36B,KAAKy87B,kBACtCz87B,KAAKw87B,eAAellB,aAAat36B,KAAKyhjC,qBAG9CzhjC,KAAKu0iC,qBACLv0iC,KAAKov/B,sBACLpv/B,KAAKq19B,iBACLr19B,KAAKs19B,mBACLt19B,KAAKmrI,UAAUqB,KAAO,GACjBnmH,IAAQa,WAAYlnB,KAAKmrI,UAAU4E,oBACpC/vI,KAAK636B,2CAA0C,GAC/C736B,KAAKg46B,yCAAwC,GAC7Ch46B,KAAK409B,kBAAkB509B,KAAK609B,qBAAsB,WAClD709B,KAAK409B,kBAAkB509B,KAAKy0iC,sBAAuB,WACnDz0iC,KAAK409B,kBAAkB509B,KAAK22iC,iBAAkB,WAC9C32iC,KAAK209B,4BAA2B,IAEhC309B,KAAKmrI,UAAUsC,mBACfztI,KAAKmrI,UAAUsC,iBAAiB8B,yBAAyB2ozB,oBAAqB,IAGtFi6G,EAAkBj2iC,UAAUiz7B,uBAAyB,WAC7Cnv7B,KAAKmrI,UAAU24wB,qBACf9j5B,KAAKorI,cAAcw/yB,yBACdvk6B,IAAQa,UACTlnB,KAAKmrI,UAAUshB,QAAQ0iyB,w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","file":"static/js/2.0a6ab7b0.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 *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\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 *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\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 *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\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 *\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 * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\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 *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[key];\n}\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\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 *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {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 *\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 * @param {boolean} deep ?\n * @returns {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 // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 *\n * @param {Object} value - To check the object is null or undefined\n * @returns {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 *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {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 *\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 * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\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/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\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 *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\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 *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {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 *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {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 // eslint-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 *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {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 *\n * @returns {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 *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\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 *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\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 *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\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 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 *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\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 *\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 *\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 // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\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 /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\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 // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\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 *\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 // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\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 * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\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 *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\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 // eslint-disable-next-line\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};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 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,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 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,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 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,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 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,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 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,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 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,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 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,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 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,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 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,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\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 /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\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 *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {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 switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\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 // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\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 // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\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 * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\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 *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\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 *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\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} cldr - Specifies the global cldr data collection.\n * @returns {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 /* eslint-disable @typescript-eslint/no-explicit-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 *\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 *\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 // eslint-disable-next-line\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 *\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 *\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 /* eslint-disable @typescript-eslint/no-explicit-any */\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 *\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 *\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 *\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 *\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 standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\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 *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\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 // eslint-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 // eslint-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 // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\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 // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 *\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 *\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 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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 *\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 *\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 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 // eslint-disable-next-line\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 *\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","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar parseRegex = /^([^0-9]*)(([0-9,]*[0-9]+)(\\.[0-9]+)?)([Ee][+-]?[0-9]+)?([^0-9]*)$/;\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {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 // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\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 *\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 * To attach handler for given property in current context.\n *\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 * @returns {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 *\n * @param {string} property - 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 * @returns {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 *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - 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 * @returns {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 // eslint-disable-next-line\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 * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\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 *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\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 *\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 *\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 *\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 *\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 *\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 *\n * @param {Date} 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 *\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 *\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 *\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 *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\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 *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\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 *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\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 *\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 *\n * @param {Object[]} data 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 *\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 *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\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 *\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 * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\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#\\ ]*)(\\.[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 *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\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 *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\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 *\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 /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\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 /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\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 *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\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 // eslint-disable-next-line\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 *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\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 *\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 IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\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 *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\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 // eslint-disable-next-line\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 *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\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 var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = spaceGrouping ? integerPart.replace(/,/g, '') : integerPart.replace(/,/g, '').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 // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\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 // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\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 *\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 *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\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 // eslint-disable-next-line\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 /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\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 *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\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 /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\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 IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\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 IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\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 IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\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] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\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 * @param {Date} date ?\n * @returns {number} ?\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 *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\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 *\n * Send the request to server.\n *\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 *\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 *\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 // eslint-disable-next-line\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 *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\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 ? 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 *\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 *\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 *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\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 *\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 if (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\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 * @param {string} uA ?\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 *\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 * @returns {boolean} ?\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 * @returns {boolean} ?\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 * @returns {boolean} ?\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 * @returns {boolean} ?\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 * @returns {boolean} ?\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 * @returns {boolean} ?\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 * @returns {boolean} ?\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 * @returns {boolean} ?\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 * @returns {boolean} ?\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 * @returns {boolean} ?\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 * @returns {string} ?\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 * @returns {string} ?\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 * @returns {string} ?\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 * @returns {string} ?\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 * ```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 *\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} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {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 *\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 * @returns {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 *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\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 *\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 * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\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 * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\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 *\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 * @returns {any} .\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 *\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 * @returns {any} .\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 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}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\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 *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\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 *\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 * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\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 return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\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 * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\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 return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\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 parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\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 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 *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\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 *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\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 *\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 * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\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 * @returns {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 *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-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/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\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 *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\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 *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} 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 // eslint-disable-next-line\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 *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\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 * Calls for child element data bind\n *\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 * @returns {void} ?\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 /* 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 /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {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 *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {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 *\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 * @returns {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 * @returns {void} ?\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 * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\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 *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\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 *\n * @param {HTMLElement} element ?\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 *\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 * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\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 *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\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 *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\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 *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[curKey] !== newValue) {\n // eslint-disable-next-line\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 *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\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}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[curKey], 'isComplexArray', { value: true });\n }\n return this.properties[curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\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}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\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}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\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}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\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 // eslint-disable-next-line\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}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\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// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\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 *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\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 *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\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 *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\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 *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\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 *\n * @returns {PropertyDecorator} ?\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 * @param {Function} classConstructor ?\n * @returns {void} ?\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 */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\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 // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\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 *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\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 // eslint-disable-next-line\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 *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\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 *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {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 *\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 *\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 *\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 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 *\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 * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\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 *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\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}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\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 *\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 *\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 *\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 *\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 *\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 * Inject required modules in component library\n *\n * @returns {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 *\n * @returns {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 *\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 *\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 *\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';\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 *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\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 * @param {Object} options ?\n * @param {string} selector ?\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 *\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 * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\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 * @returns {void} ?\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 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 * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n // eslint-disable-next-line\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 *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\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 * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\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 * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\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 *\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 * @returns {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 *\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 * @returns {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 *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {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 *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\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 *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\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() +\n 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.appendReactElement = function (element, container) {\n //No Code\n };\n ;\n //tslint:disable-next-line\n Component.prototype.renderReactTemplates = function () {\n //No Code\n };\n // eslint-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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 *\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 // eslint-disable-next-line\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 *\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 * @returns {void} ?\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 * @returns {void} ?\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 *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {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 * @returns {void} ?\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 *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\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 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 // eslint-disable-next-line\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.eleTop = 0;\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[axis]] > element[client[axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[i]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10),\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\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 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 }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\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 /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\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 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 __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", 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 // eslint-disable-next-line\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 *\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 * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\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 *\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 ?\n * @param {KeyboardEventsModel} oldProp ?\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 {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\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 * @private\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} ?\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 * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\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 *\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 *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\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 *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {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 *\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 /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\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 /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\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 /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\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 /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\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 /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\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 _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 // eslint-disable-next-line\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 *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\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 *\n * @returns {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 *\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 *\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 /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 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 * 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 *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\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 *\n * @param {string} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\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)) && (str.match('svg') === null)){\\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)) && (str.match('svg') === null)) {\\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 var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\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, \n // eslint-disable-next-line\n 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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\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}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\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// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\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// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\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.]+ 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 // eslint-disable-next-line\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","/**\n * CSS Constants\n */\n/** @private */\nexport var ROOT = 'e-schedule';\n/** @private */\nexport var RTL = 'e-rtl';\n/** @private */\nexport var DEVICE_CLASS = 'e-device';\n/** @private */\nexport var MULTI_DRAG = 'e-multi-drag';\n/** @private */\nexport var ICON = 'e-icons';\n/** @private */\nexport var ENABLE_CLASS = 'e-enable';\n/** @private */\nexport var DISABLE_CLASS = 'e-disable';\n/** @private */\nexport var TABLE_CONTAINER_CLASS = 'e-table-container';\n/** @private */\nexport var SCHEDULE_TABLE_CLASS = 'e-schedule-table';\n/** @private */\nexport var ALLDAY_CELLS_CLASS = 'e-all-day-cells';\n/** @private */\nexport var HEADER_POPUP_CLASS = 'e-header-popup';\n/** @private */\nexport var HEADER_CALENDAR_CLASS = 'e-header-calendar';\n/** @private */\nexport var ALLDAY_ROW_CLASS = 'e-all-day-row';\n/** @private */\nexport var CONTENT_TABLE_CLASS = 'e-content-table';\n/** @private */\nexport var WORK_CELLS_CLASS = 'e-work-cells';\n/** @private */\nexport var WORK_HOURS_CLASS = 'e-work-hours';\n/** @private */\nexport var POPUP_OPEN = 'e-popup-open';\n/** @private */\nexport var POPUP_CLOSE = 'e-popup-close';\n/** @private */\nexport var DATE_HEADER_WRAP_CLASS = 'e-date-header-wrap';\n/** @private */\nexport var DATE_HEADER_CONTAINER_CLASS = 'e-date-header-container';\n/** @private */\nexport var HEADER_CELLS_CLASS = 'e-header-cells';\n/** @private */\nexport var HEADER_WEEK_CELLS_CLASS = 'e-header-week-cell';\n/** @private */\nexport var HEADER_MONTH_CELLS_CLASS = 'e-header-month-cell';\n/** @private */\nexport var HEADER_YEAR_CELLS_CLASS = 'e-header-year-cell';\n/** @private */\nexport var WORKDAY_CLASS = 'e-work-days';\n/** @private */\nexport var OTHERMONTH_CLASS = 'e-other-month';\n/** @private */\nexport var CURRENT_DAY_CLASS = 'e-current-day';\n/** @private */\nexport var CURRENTDATE_CLASS = 'e-current-date';\n/** @private */\nexport var CURRENT_PANEL_CLASS = 'e-current-panel';\n/** @private */\nexport var PREVIOUS_PANEL_CLASS = 'e-previous-panel';\n/** @private */\nexport var NEXT_PANEL_CLASS = 'e-next-panel';\n/** @private */\nexport var PREVIOUS_DATE_CLASS = 'e-prev';\n/** @private */\nexport var NEXT_DATE_CLASS = 'e-next';\n/** @private */\nexport var TRANSLATE_CLASS = 'e-translate';\n/** @private */\nexport var LEFT_INDENT_CLASS = 'e-left-indent';\n/** @private */\nexport var LEFT_INDENT_WRAP_CLASS = 'e-left-indent-wrap';\n/** @private */\nexport var EVENT_TABLE_CLASS = 'e-event-table';\n/** @private */\nexport var RESOURCE_LEFT_TD_CLASS = 'e-resource-left-td';\n/** @private */\nexport var RESOURCE_GROUP_CELLS_CLASS = 'e-resource-group-cells';\n/** @private */\nexport var RESOURCE_TEXT_CLASS = 'e-resource-text';\n/** @private */\nexport var RESOURCE_COLUMN_WRAP_CLASS = 'e-resource-column-wrap';\n/** @private */\nexport var RESOURCE_COLUMN_TABLE_CLASS = 'e-resource-column-table';\n/** @private */\nexport var RESOURCE_CHILD_CLASS = 'e-child-node';\n/** @private */\nexport var RESOURCE_PARENT_CLASS = 'e-parent-node';\n/** @private */\nexport var RESOURCE_EXPAND_CLASS = 'e-resource-expand';\n/** @private */\nexport var RESOURCE_COLLAPSE_CLASS = 'e-resource-collapse';\n/** @private */\nexport var RESOURCE_TREE_ICON_CLASS = 'e-resource-tree-icon';\n/** @private */\nexport var RESOURCE_CELLS_CLASS = 'e-resource-cells';\n/** @private */\nexport var TIME_CELLS_WRAP_CLASS = 'e-time-cells-wrap';\n/** @private */\nexport var TIME_CELLS_CLASS = 'e-time-cells';\n/** @private */\nexport var TIME_SLOT_CLASS = 'e-time-slots';\n/** @private */\nexport var ALTERNATE_CELLS_CLASS = 'e-alternate-cells';\n/** @private */\nexport var CURRENT_TIME_CLASS = 'e-current-time';\n/** @private */\nexport var CURRENT_TIMELINE_CLASS = 'e-current-timeline';\n/** @private */\nexport var PREVIOUS_TIMELINE_CLASS = 'e-previous-timeline';\n/** @private */\nexport var HIDE_CHILDS_CLASS = 'e-hide-childs';\n/** @private */\nexport var SCROLL_CONTAINER_CLASS = 'e-scroll-container';\n/** @private */\nexport var WRAPPER_CLASS = 'e-wrapper';\n/** @private */\nexport var TIMELINE_WRAPPER_CLASS = 'e-timeline-wrapper';\n/** @private */\nexport var APPOINTMENT_WRAPPER_CLASS = 'e-appointment-wrapper';\n/** @private */\nexport var DAY_WRAPPER_CLASS = 'e-day-wrapper';\n/** @private */\nexport var TOOLBAR_CONTAINER = 'e-schedule-toolbar-container';\n/** @private */\nexport var RESOURCE_TOOLBAR_CONTAINER = 'e-schedule-resource-toolbar-container';\n/** @private */\nexport var HEADER_TOOLBAR = 'e-schedule-toolbar';\n/** @private */\nexport var RESOURCE_HEADER_TOOLBAR = 'e-schedule-resource-toolbar';\n/** @private */\nexport var SELECTED_CELL_CLASS = 'e-selected-cell';\n/** @private */\nexport var WEEK_NUMBER_WRAPPER_CLASS = 'e-week-number-wrapper';\n/** @private */\nexport var WEEK_NUMBER_CLASS = 'e-week-number';\n/** @private */\nexport var APPOINTMENT_WRAP_CLASS = 'e-appointment-wrap';\n/** @private */\nexport var WRAPPER_CONTAINER_CLASS = 'e-wrapper-container';\n/** @private */\nexport var APPOINTMENT_CONTAINER_CLASS = 'e-appointment-container';\n/** @private */\nexport var APPOINTMENT_CLASS = 'e-appointment';\n/** @private */\nexport var BLOCK_APPOINTMENT_CLASS = 'e-block-appointment';\n/** @private */\nexport var BLOCK_INDICATOR_CLASS = 'e-block-indicator';\n/** @private */\nexport var APPOINTMENT_BORDER = 'e-appointment-border';\n/** @private */\nexport var APPOINTMENT_DETAILS = 'e-appointment-details';\n/** @private */\nexport var SUBJECT_WRAP = 'e-subject-wrap';\n/** @private */\nexport var RESOURCE_NAME = 'e-resource-name';\n/** @private */\nexport var APPOINTMENT_TIME = 'e-time';\n/** @private */\nexport var TABLE_WRAP_CLASS = 'e-table-wrap';\n/** @private */\nexport var OUTER_TABLE_CLASS = 'e-outer-table';\n/** @private */\nexport var CONTENT_WRAP_CLASS = 'e-content-wrap';\n/** @private */\nexport var VIRTUAL_TRACK_CLASS = 'e-virtual-track';\n/** @private */\nexport var AGENDA_CELLS_CLASS = 'e-agenda-cells';\n/** @private */\nexport var AGENDA_CURRENT_DAY_CLASS = 'e-current-day';\n/** @private */\nexport var AGENDA_SELECTED_CELL = 'e-active-appointment-agenda';\n/** @private */\nexport var MONTH_HEADER_CLASS = 'e-month-header';\n/** @private */\nexport var AGENDA_HEADER_CLASS = 'e-day-date-header';\n/** @private */\nexport var AGENDA_RESOURCE_CLASS = 'e-resource-column';\n/** @private */\nexport var AGENDA_DATE_CLASS = 'e-date-column';\n/** @private */\nexport var NAVIGATE_CLASS = 'e-navigate';\n/** @private */\nexport var DATE_HEADER_CLASS = 'e-date-header';\n/** @private */\nexport var AGENDA_DAY_BORDER_CLASS = 'e-day-border';\n/** @private */\nexport var DATE_BORDER_CLASS = 'e-date-border';\n/** @private */\nexport var AGENDA_DAY_PADDING_CLASS = 'e-day-padding';\n/** @private */\nexport var DATE_TIME_CLASS = 'e-date-time';\n/** @private */\nexport var DATE_TIME_WRAPPER_CLASS = 'e-date-time-wrapper';\n/** @private */\nexport var AGENDA_EMPTY_EVENT_CLASS = 'e-empty-event';\n/** @private */\nexport var AGENDA_NO_EVENT_CLASS = 'e-no-event';\n/** @private */\nexport var APPOINTMENT_INDICATOR_CLASS = 'e-appointment-indicator';\n/** @private */\nexport var EVENT_INDICATOR_CLASS = 'e-indicator';\n/** @private */\nexport var EVENT_ICON_UP_CLASS = 'e-up-icon';\n/** @private */\nexport var EVENT_ICON_DOWN_CLASS = 'e-down-icon';\n/** @private */\nexport var EVENT_ICON_LEFT_CLASS = 'e-left-icon';\n/** @private */\nexport var EVENT_ICON_RIGHT_CLASS = 'e-right-icon';\n/** @private */\nexport var EVENT_ACTION_CLASS = 'e-event-action';\n/** @private */\nexport var NEW_EVENT_CLASS = 'e-new-event';\n/** @private */\nexport var CLONE_ELEMENT_CLASS = 'e-schedule-event-clone';\n/** @private */\nexport var MONTH_CLONE_ELEMENT_CLASS = 'e-month-event';\n/** @private */\nexport var CLONE_TIME_INDICATOR_CLASS = 'e-clone-time-indicator';\n/** @private */\nexport var DRAG_CLONE_CLASS = 'e-drag-clone';\n/** @private */\nexport var EVENT_RESIZE_CLASS = 'e-event-resize';\n/** @private */\nexport var RESIZE_CLONE_CLASS = 'e-resize-clone';\n/** @private */\nexport var LEFT_RESIZE_HANDLER = 'e-left-handler';\n/** @private */\nexport var RIGHT_RESIZE_HANDLER = 'e-right-handler';\n/** @private */\nexport var TOP_RESIZE_HANDLER = 'e-top-handler';\n/** @private */\nexport var BOTTOM_RESIZE_HANDLER = 'e-bottom-handler';\n/** @private */\nexport var EVENT_RECURRENCE_ICON_CLASS = 'e-recurrence-icon';\n/** @private */\nexport var EVENT_RECURRENCE_EDIT_ICON_CLASS = 'e-recurrence-edit-icon';\n/** @private */\nexport var HEADER_ROW_CLASS = 'e-header-row';\n/** @private */\nexport var ALLDAY_APPOINTMENT_WRAPPER_CLASS = 'e-all-day-appointment-wrapper';\n/** @private */\nexport var ALLDAY_APPOINTMENT_CLASS = 'e-all-day-appointment';\n/** @private */\nexport var EVENT_COUNT_CLASS = 'e-appointment-hide';\n/** @private */\nexport var ROW_COUNT_WRAPPER_CLASS = 'e-row-count-wrapper';\n/** @private */\nexport var ALLDAY_APPOINTMENT_SECTION_CLASS = 'e-all-day-appointment-section';\n/** @private */\nexport var APPOINTMENT_ROW_EXPAND_CLASS = 'e-appointment-expand';\n/** @private */\nexport var APPOINTMENT_ROW_COLLAPSE_CLASS = 'e-appointment-collapse';\n/** @private */\nexport var MORE_INDICATOR_CLASS = 'e-more-indicator';\n/** @private */\nexport var CELL_POPUP_CLASS = 'e-cell-popup';\n/** @private */\nexport var EVENT_POPUP_CLASS = 'e-event-popup';\n/** @private */\nexport var MULTIPLE_EVENT_POPUP_CLASS = 'e-multiple-event-popup';\n/** @private */\nexport var POPUP_HEADER_CLASS = 'e-popup-header';\n/** @private */\nexport var POPUP_HEADER_ICON_WRAPPER = 'e-header-icon-wrapper';\n/** @private */\nexport var POPUP_CONTENT_CLASS = 'e-popup-content';\n/** @private */\nexport var POPUP_FOOTER_CLASS = 'e-popup-footer';\n/** @private */\nexport var DATE_TIME_DETAILS_CLASS = 'e-date-time-details';\n/** @private */\nexport var RECURRENCE_SUMMARY_CLASS = 'e-recurrence-summary';\n/** @private */\nexport var QUICK_POPUP_EVENT_DETAILS_CLASS = 'e-event-details';\n/** @private */\nexport var EVENT_CREATE_CLASS = 'e-event-create';\n/** @private */\nexport var EDIT_EVENT_CLASS = 'e-event-edit';\n/** @private */\nexport var DELETE_EVENT_CLASS = 'e-event-delete';\n/** @private */\nexport var TEXT_ELLIPSIS = 'e-text-ellipsis';\n/** @private */\nexport var MORE_POPUP_WRAPPER_CLASS = 'e-more-popup-wrapper';\n/** @private */\nexport var MORE_EVENT_POPUP_CLASS = 'e-more-event-popup';\n/** @private */\nexport var MORE_EVENT_HEADER_CLASS = 'e-more-event-header';\n/** @private */\nexport var MORE_EVENT_DATE_HEADER_CLASS = 'e-more-event-date-header';\n/** @private */\nexport var MORE_EVENT_HEADER_DAY_CLASS = 'e-header-day';\n/** @private */\nexport var MORE_EVENT_HEADER_DATE_CLASS = 'e-header-date';\n/** @private */\nexport var MORE_EVENT_CLOSE_CLASS = 'e-more-event-close';\n/** @private */\nexport var MORE_EVENT_CONTENT_CLASS = 'e-more-event-content';\n/** @private */\nexport var MORE_EVENT_WRAPPER_CLASS = 'e-more-appointment-wrapper';\n/** @private */\nexport var QUICK_DIALOG_CLASS = 'e-quick-dialog';\n/** @private */\nexport var QUICK_DIALOG_OCCURRENCE_CLASS = 'e-quick-dialog-occurrence-event';\n/** @private */\nexport var QUICK_DIALOG_SERIES_CLASS = 'e-quick-dialog-series-event';\n/** @private */\nexport var QUICK_DIALOG_FOLLOWING_EVENTS_CLASS = 'e-quick-dialog-following-events';\n/** @private */\nexport var FOLLOWING_EVENTS_DIALOG = 'e-following-events-dialog';\n/** @private */\nexport var QUICK_DIALOG_DELETE_CLASS = 'e-quick-dialog-delete';\n/** @private */\nexport var QUICK_DIALOG_CANCEL_CLASS = 'e-quick-dialog-cancel';\n/** @private */\nexport var QUICK_DIALOG_ALERT_OK = 'e-quick-alertok';\n/** @private */\nexport var QUICK_DIALOG_ALERT_CANCEL = 'e-quick-alertcancel';\n/** @private */\nexport var QUICK_DIALOG_ALERT_FOLLOWING = 'e-quick-alertfollowing';\n/** @private */\nexport var QUICK_DIALOG_ALERT_BTN_CLASS = 'e-quick-dialog-alert-btn';\n/** @private */\nexport var EVENT_WINDOW_DIALOG_CLASS = 'e-schedule-dialog';\n/** @private */\nexport var FORM_CONTAINER_CLASS = 'e-form-container';\n/** @private */\nexport var FORM_CLASS = 'e-schedule-form';\n/** @private */\nexport var EVENT_WINDOW_ALLDAY_TZ_DIV_CLASS = 'e-all-day-time-zone-row';\n/** @private */\nexport var EVENT_WINDOW_ALL_DAY_CLASS = 'e-all-day';\n/** @private */\nexport var TIME_ZONE_CLASS = 'e-time-zone';\n/** @private */\nexport var TIME_ZONE_ICON_CLASS = 'e-time-zone-icon';\n/** @private */\nexport var TIME_ZONE_DETAILS_CLASS = 'e-time-zone-details';\n/** @private */\nexport var EVENT_WINDOW_REPEAT_DIV_CLASS = 'e-repeat-parent-row';\n/** @private */\nexport var EVENT_WINDOW_REPEAT_CLASS = 'e-repeat';\n/** @private */\nexport var EVENT_WINDOW_TITLE_LOCATION_DIV_CLASS = 'e-title-location-row';\n/** @private */\nexport var SUBJECT_CLASS = 'e-subject';\n/** @private */\nexport var LOCATION_CLASS = 'e-location';\n/** @private */\nexport var LOCATION_ICON_CLASS = 'e-location-icon';\n/** @private */\nexport var LOCATION_DETAILS_CLASS = 'e-location-details';\n/** @private */\nexport var EVENT_WINDOW_START_END_DIV_CLASS = 'e-start-end-row';\n/** @private */\nexport var EVENT_WINDOW_START_CLASS = 'e-start';\n/** @private */\nexport var EVENT_WINDOW_END_CLASS = 'e-end';\n/** @private */\nexport var EVENT_WINDOW_RESOURCES_DIV_CLASS = 'e-resources-row';\n/** @private */\nexport var DESCRIPTION_CLASS = 'e-description';\n/** @private */\nexport var DESCRIPTION_ICON_CLASS = 'e-description-icon';\n/** @private */\nexport var DESCRIPTION_DETAILS_CLASS = 'e-description-details';\n/** @private */\nexport var EVENT_WINDOW_TIME_ZONE_DIV_CLASS = 'e-time-zone-row';\n/** @private */\nexport var EVENT_WINDOW_START_TZ_CLASS = 'e-start-time-zone';\n/** @private */\nexport var EVENT_WINDOW_END_TZ_CLASS = 'e-end-time-zone';\n/** @private */\nexport var EVENT_WINDOW_BACK_ICON_CLASS = 'e-back-icon';\n/** @private */\nexport var EVENT_WINDOW_SAVE_ICON_CLASS = 'e-save-icon';\n/** @private */\nexport var EVENT_WINDOW_CANCEL_BUTTON_CLASS = 'e-event-cancel';\n/** @private */\nexport var EVENT_WINDOW_SAVE_BUTTON_CLASS = 'e-event-save';\n/** @private */\nexport var EVENT_WINDOW_DIALOG_PARENT_CLASS = 'e-dialog-parent';\n/** @private */\nexport var EVENT_WINDOW_TITLE_TEXT_CLASS = 'e-title-text';\n/** @private */\nexport var EVENT_WINDOW_ICON_DISABLE_CLASS = 'e-icon-disable';\n/** @private */\nexport var EDIT_CLASS = 'e-edit';\n/** @private */\nexport var EDIT_ICON_CLASS = 'e-edit-icon';\n/** @private */\nexport var DELETE_CLASS = 'e-delete';\n/** @private */\nexport var DELETE_ICON_CLASS = 'e-delete-icon';\n/** @private */\nexport var CLOSE_CLASS = 'e-close';\n/** @private */\nexport var CLOSE_ICON_CLASS = 'e-close-icon';\n/** @private */\nexport var ERROR_VALIDATION_CLASS = 'e-schedule-error';\n/** @private */\nexport var EVENT_TOOLTIP_ROOT_CLASS = 'e-schedule-event-tooltip';\n/** @private */\nexport var ALLDAY_ROW_ANIMATE_CLASS = 'e-animate';\n/** @private */\nexport var TIMESCALE_DISABLE = 'e-timescale-disable';\n/** @private */\nexport var DISABLE_DATE = 'e-disable-date';\n/** @private */\nexport var HIDDEN_CLASS = 'e-hidden';\n/** @private */\nexport var DISABLE_DATES = 'e-disable-dates';\n/** @private */\nexport var POPUP_WRAPPER_CLASS = 'e-quick-popup-wrapper';\n/** @private */\nexport var POPUP_TABLE_CLASS = 'e-popup-table';\n/** @private */\nexport var RESOURCE_MENU = 'e-resource-menu';\n/** @private */\nexport var RESOURCE_MENU_ICON = 'e-icon-menu';\n/** @private */\nexport var RESOURCE_LEVEL_TITLE = 'e-resource-level-title';\n/** @private */\nexport var RESOURCE_TREE = 'e-resource-tree';\n/** @private */\nexport var RESOURCE_TREE_POPUP_OVERLAY = 'e-resource-tree-popup-overlay';\n/** @private */\nexport var RESOURCE_TREE_POPUP = 'e-resource-tree-popup';\n/** @private */\nexport var RESOURCE_CLASS = 'e-resource';\n/** @private */\nexport var RESOURCE_ICON_CLASS = 'e-resource-icon';\n/** @private */\nexport var RESOURCE_DETAILS_CLASS = 'e-resource-details';\n/** @private */\nexport var DATE_TIME_ICON_CLASS = 'e-date-time-icon';\n/** @private */\nexport var VIRTUAL_SCROLL_CLASS = 'e-virtual-scroll';\n/** @private */\nexport var ICON_DISABLE_CLASS = 'e-icon-disable';\n/** @private */\nexport var AUTO_HEIGHT = 'e-auto-height';\n/** @private */\nexport var IGNORE_WHITESPACE = 'e-ignore-whitespace';\n/** @private */\nexport var EVENT_TEMPLATE = 'e-template';\n/** @private */\nexport var READ_ONLY = 'e-read-only';\n/** @private */\nexport var MONTH_HEADER_WRAPPER = 'e-month-header-wrapper';\n/** @private */\nexport var INLINE_SUBJECT_CLASS = 'e-inline-subject';\n/** @private */\nexport var INLINE_APPOINTMENT_CLASS = 'e-inline-appointment';\n/** @hidden */\nexport var SCROLL_HIDDEN = 'e-scroll-hidden';\n/** @private */\nexport var ALLDAY_APPOINTMENT_SCROLL = 'e-all-day-scroll';\n/** @private */\nexport var ALLDAY_APPOINTMENT_AUTO = 'e-all-day-auto';\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var 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/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\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}","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 * 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","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 else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[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 (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n 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","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}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Schedule common utilities\n */\nexport var WEEK_LENGTH = 7;\nexport var DEFAULT_WEEKS = 6;\nexport var MS_PER_DAY = 86400000;\nexport var MS_PER_MINUTE = 60000;\n/**\n * Method to get height from element\n *\n * @param {Element} container Accepts the DOM element\n * @param {string} elementClass Accepts the element class\n * @returns {number} Returns the height of the element\n */\nexport function getElementHeightFromClass(container, elementClass) {\n var height = 0;\n var el = createElement('div', { className: elementClass }).cloneNode();\n el.style.visibility = 'hidden';\n el.style.position = 'absolute';\n container.appendChild(el);\n height = el.getBoundingClientRect().height;\n remove(el);\n return height;\n}\n/**\n * Method to get translateY value\n *\n * @param {HTMLElement | Element} element Accepts the DOM element\n * @returns {number} Returns the translateY value of given element\n */\nexport function getTranslateY(element) {\n var style = getComputedStyle(element);\n return window.WebKitCSSMatrix ?\n new WebKitCSSMatrix(style.webkitTransform).m42 : 0;\n}\n/**\n * Method to get week first date\n *\n * @param {Date} date Accepts the date object\n * @param {number} firstDayOfWeek Accepts the first day of week number\n * @returns {Date} Returns the date object\n */\nexport function getWeekFirstDate(date, firstDayOfWeek) {\n var date1 = new Date(date.getTime());\n firstDayOfWeek = (firstDayOfWeek - date1.getDay() + 7 * (-1)) % 7;\n return new Date(date1.setDate(date1.getDate() + firstDayOfWeek));\n}\n/**\n * Method to get week last date\n *\n * @param {Date} date Accepts the date object\n * @param {number} firstDayOfWeek Accepts the first day of week number\n * @returns {Date} Returns the date object\n */\nexport function getWeekLastDate(date, firstDayOfWeek) {\n var weekFirst = getWeekFirstDate(date, firstDayOfWeek);\n var weekLast = new Date(weekFirst.getFullYear(), weekFirst.getMonth(), weekFirst.getDate() + 6);\n return new Date(weekLast.getTime());\n}\n/**\n * Method to get first date of month\n *\n * @param {Date} date Accepts the date object\n * @returns {Date} Returns the date object\n */\nexport function firstDateOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n/**\n * Method to get last date of month\n *\n * @param {Date} date Accepts the date object\n * @returns {Date} Returns the date object\n */\nexport function lastDateOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\n/**\n * Method to get week number\n *\n * @param {Date} date Accepts the date object\n * @returns {number} Returns the week number\n */\nexport function getWeekNumber(date) {\n var date1 = new Date(date.getFullYear(), 0, 1).valueOf();\n var currentDate = new Date(date.getFullYear(), date.getMonth(), date.getDate()).valueOf();\n var dayOfYear = ((currentDate - date1 + MS_PER_DAY) / MS_PER_DAY);\n return Math.ceil(dayOfYear / 7);\n}\n/**\n * Method to get week middle date\n *\n * @param {Date} weekFirst Accepts the week first date object\n * @param {Date} weekLast Accepts the week last date object\n * @returns {Date} Returns the date object\n */\nexport function getWeekMiddleDate(weekFirst, weekLast) {\n return new Date(weekLast.valueOf() - ((weekLast.valueOf() - weekFirst.valueOf()) / 2));\n}\n/**\n * Method to set time to date object\n *\n * @param {Date} date Accepts the date object\n * @param {number} time Accepts the milliseconds\n * @returns {Date} Returns the date object\n */\nexport function setTime(date, time) {\n var tzOffsetBefore = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffsetBefore;\n date.setTime(d.getTime() + tzOffsetDiff * MS_PER_MINUTE);\n return date;\n}\n/**\n * Method the reset hours in date object\n *\n * @param {Date} date Accepts the date object\n * @returns {Date} Returns the date object\n */\nexport function resetTime(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n/**\n * Method to get milliseconds from date object\n *\n * @param {Date} date Accepts the date object\n * @returns {number} Returns the milliseconds from date object\n */\nexport function getDateInMs(date) {\n var localOffset = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0).getTimezoneOffset();\n var dateOffset = date.getTimezoneOffset();\n var timezoneOffset = dateOffset - localOffset;\n return ((date.getTime() - new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0).getTime())\n - (timezoneOffset * 60 * 1000));\n}\n/**\n * Method to get date count between two dates\n *\n * @param {Date} startDate Accepts the date object\n * @param {Date} endDate Accepts the date object\n * @returns {number} Returns the date count\n */\nexport function getDateCount(startDate, endDate) {\n return Math.ceil((endDate.getTime() - startDate.getTime()) / MS_PER_DAY);\n}\n/**\n * Method to add no of days in date object\n *\n * @param {Date} date Accepts the date object\n * @param {number} noOfDays Accepts the number of days count\n * @returns {Date} Returns the date object\n */\nexport function addDays(date, noOfDays) {\n date = new Date('' + date);\n return new Date(date.setDate(date.getDate() + noOfDays));\n}\n/**\n * Method to add no of months in date object\n *\n * @param {Date} date Accepts the date object\n * @param {number} noOfMonths Accepts the number of month count\n * @returns {Date} Returns the date object\n */\nexport function addMonths(date, noOfMonths) {\n date = new Date('' + date);\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + noOfMonths);\n date.setDate(Math.min(day, getMaxDays(date)));\n return date;\n}\n/**\n * Method to add no of years in date object\n *\n * @param {Date} date Accepts the date object\n * @param {number} noOfYears Accepts the number of month count\n * @returns {Date} Returns the date object\n */\nexport function addYears(date, noOfYears) {\n date = new Date('' + date);\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + noOfYears);\n date.setDate(Math.min(day, getMaxDays(date)));\n return date;\n}\n/**\n * Method to get start and end hours\n *\n * @param {Date} date Accepts the date object\n * @param {Date} startHour Accepts the start hour date object\n * @param {Date} endHour Accepts the end hour date object\n * @returns {Object} Returns the start and end hour date objects\n */\nexport function getStartEndHours(date, startHour, endHour) {\n var date1 = new Date(date.getTime());\n date1.setHours(startHour.getHours());\n date1.setMinutes(startHour.getMinutes());\n date1.setSeconds(startHour.getSeconds());\n var date2 = new Date(date.getTime());\n if (endHour.getHours() === 0) {\n date2 = addDays(date2, 1);\n }\n else {\n date2.setHours(endHour.getHours());\n date2.setMinutes(endHour.getMinutes());\n date2.setSeconds(endHour.getSeconds());\n }\n return { startHour: date1, endHour: date2 };\n}\n/**\n * Method to get month last date\n *\n * @param {Date} date Accepts the date object\n * @returns {number} Returns the month last date\n */\nexport function getMaxDays(date) {\n return lastDateOfMonth(date).getDate();\n}\n/**\n * Method to get days count between two dates\n *\n * @param {Date} startDate Accepts the date object\n * @param {Date} endDate Accepts the date object\n * @returns {number} Returns the days count\n */\nexport function getDaysCount(startDate, endDate) {\n var strTime = resetTime(new Date(startDate));\n var endTime = resetTime(new Date(endDate));\n return Math.round((endTime.getTime() - strTime.getTime()) / MS_PER_DAY);\n}\n/**\n * Method to get date object from date string\n *\n * @param {string} date Accepts the date string\n * @returns {Date} Returns the date object\n */\nexport function getDateFromString(date) {\n return date.indexOf('Date') !== -1 ? new Date(parseInt(date.match(/\\d+/g).toString(), 10)) :\n date.indexOf('T') !== -1 ? new Date(date) : new Date(date.replace(/-/g, '/'));\n}\n/** @private */\nvar scrollWidth = null;\n/**\n * Method to get scrollbar width\n *\n * @returns {number} Returns the scrollbar width\n * @private\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = 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 var ratio = (devicePixelRatio) ? (devicePixelRatio.toFixed(2) === '1.10' || devicePixelRatio <= 1) ?\n Math.ceil(devicePixelRatio % 1) : Math.floor(devicePixelRatio % 1) : 0;\n value = (divNode.offsetWidth - divNode.clientWidth - ratio) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/**\n * Method to find the index from data collection\n *\n * @param {Object} data Accepts the data as object\n * @param {string} field Accepts the field name\n * @param {string} value Accepts the value name\n * @param {Object} event Accepts the data as object\n * @param {Object[]} resourceCollection Accepts the data collections\n * @returns {number} Returns the index number\n */\n// eslint-disable-next-line max-len\nexport function findIndexInData(data, field, value, event, resourceCollection) {\n for (var i = 0, length_1 = data.length; i < length_1; i++) {\n if (data[i][field] === value) {\n if (event) {\n var field_1 = resourceCollection.slice(-2)[0].field;\n var res = (event[field_1] instanceof Array ? event[field_1] : [event[field_1]]);\n var resData = res.join(',');\n if (resData.includes(data[i][resourceCollection.slice(-1)[0].groupIDField])) {\n return i;\n }\n }\n else {\n return i;\n }\n }\n }\n return -1;\n}\n/**\n * Method to get element outer height\n *\n * @param {HTMLElement} element Accepts the DOM element\n * @returns {number} Returns the outer height of the given element\n */\nexport function getOuterHeight(element) {\n var style = getComputedStyle(element);\n return element.offsetHeight + (parseInt(style.marginTop, 10) || 0) + (parseInt(style.marginBottom, 10) || 0);\n}\n/**\n * Method to remove child elements\n *\n * @param {HTMLElement | Element} element Accepts the DOM element\n * @returns {void}\n */\nexport function removeChildren(element) {\n var elementChildren = [].slice.call(element.children);\n for (var _i = 0, elementChildren_1 = elementChildren; _i < elementChildren_1.length; _i++) {\n var elementChild = elementChildren_1[_i];\n if (!elementChild.classList.contains('blazor-template')) {\n element.removeChild(elementChild);\n }\n }\n}\n/**\n * Method to check DST is present or not in date object\n *\n * @param {Date} date Accepts the date object\n * @returns {boolean} Returns the boolean value for either DST is present or not\n */\nexport function isDaylightSavingTime(date) {\n var jan = new Date(date.getFullYear(), 0, 1);\n var jul = new Date(date.getFullYear(), 6, 1);\n return date.getTimezoneOffset() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());\n}\n/**\n * Method to get UTC time value from date\n *\n * @param {Date} date Accepts the date\n * @returns {number} Returns the UTC time value\n */\nexport function getUniversalTime(date) {\n var year = date.getFullYear();\n var month = date.getMonth();\n var day = date.getDate();\n var hours = date.getHours();\n var minutes = date.getMinutes();\n var seconds = date.getSeconds();\n var milliseconds = date.getMilliseconds();\n return Date.UTC(year, month, day, hours, minutes, seconds, milliseconds);\n}\n/**\n * Method to check the device\n *\n * @returns {boolean} Returns the boolean value for either device is present or not.\n */\nexport function isMobile() {\n return window.navigator.userAgent.toLowerCase().indexOf('mobi') > -1;\n}\n/**\n * Method to check the IPad device\n *\n * @returns {boolean} Returns the boolean value for either IPad device is present or not.\n */\nexport function isIPadDevice() {\n return window.navigator.userAgent.toLowerCase().indexOf('ipad') > -1;\n}\n/**\n * Method to capitalize the first word in string\n *\n * @param {string} inputString Accepts the string value\n * @param {string} type Accepts the string type\n * @returns {string} Returns the output string\n */\nexport function capitalizeFirstWord(inputString, type) {\n if (type === 'multiple') {\n inputString = inputString.split(' ').map(function (e) { return e.charAt(0).toLocaleUpperCase() + e.substring(1); }).join(' ');\n }\n else if (type === 'single') {\n if (inputString[0] >= '0' && inputString[0] <= '9') {\n var array = inputString.match(/[a-zA-Z]/);\n inputString = isNullOrUndefined(array) ? inputString :\n inputString.slice(0, array.index) + inputString[array.index].toLocaleUpperCase() + inputString.slice(array.index + 1);\n }\n inputString = inputString[0].toLocaleUpperCase() + inputString.slice(1);\n }\n return inputString;\n}\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 enterHandler = 'enterHandler';\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","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 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}","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}","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 * 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","/**\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 _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"variant\"];\nimport { unstable_capitalize as capitalize } from '@mui/utils';\n\nfunction isEmpty(string) {\n return string.length === 0;\n}\n/**\n * Generates string classKey based on the properties provided. It starts with the\n * variant if defined, and then it appends all other properties in alphabetical order.\n * @param {object} props - the properties for which the classKey should be created.\n */\n\n\nexport default function propsToClassKey(props) {\n const {\n variant\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n let classKey = variant || '';\n Object.keys(other).sort().forEach(key => {\n if (key === 'color') {\n classKey += isEmpty(classKey) ? props[key] : capitalize(props[key]);\n } else {\n classKey += `${isEmpty(classKey) ? key : capitalize(key)}${capitalize(props[key].toString())}`;\n }\n });\n return classKey;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"],\n _excluded2 = [\"theme\"],\n _excluded3 = [\"theme\"];\nimport styledEngineStyled from '@mui/styled-engine';\nimport { getDisplayName } from '@mui/utils';\nimport createTheme from './createTheme';\nimport styleFunctionSx from './styleFunctionSx';\nimport propsToClassKey from './propsToClassKey';\n\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\nconst getStyleOverrides = (name, theme) => {\n if (theme.components && theme.components[name] && theme.components[name].styleOverrides) {\n return theme.components[name].styleOverrides;\n }\n\n return null;\n};\n\nconst getVariantStyles = (name, theme) => {\n let variants = [];\n\n if (theme && theme.components && theme.components[name] && theme.components[name].variants) {\n variants = theme.components[name].variants;\n }\n\n const variantsStyles = {};\n variants.forEach(definition => {\n const key = propsToClassKey(definition.props);\n variantsStyles[key] = definition.style;\n });\n return variantsStyles;\n};\n\nconst variantsResolver = (props, styles, theme, name) => {\n var _theme$components, _theme$components$nam;\n\n const {\n ownerState = {}\n } = props;\n const variantsStyles = [];\n const themeVariants = theme == null ? void 0 : (_theme$components = theme.components) == null ? void 0 : (_theme$components$nam = _theme$components[name]) == null ? void 0 : _theme$components$nam.variants;\n\n if (themeVariants) {\n themeVariants.forEach(themeVariant => {\n let isMatch = true;\n Object.keys(themeVariant.props).forEach(key => {\n if (ownerState[key] !== themeVariant.props[key] && props[key] !== themeVariant.props[key]) {\n isMatch = false;\n }\n });\n\n if (isMatch) {\n variantsStyles.push(styles[propsToClassKey(themeVariant.props)]);\n }\n });\n }\n\n return variantsStyles;\n};\n\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport const systemDefaultTheme = createTheme();\n\nconst lowercaseFirstLetter = string => {\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\n\nexport default function createStyled(input = {}) {\n const {\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n return (tag, inputOptions = {}) => {\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n overridesResolver\n } = inputOptions,\n options = _objectWithoutPropertiesLoose(inputOptions, _excluded); // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n\n\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver : componentSlot && componentSlot !== 'Root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n\n let shouldForwardPropOption = shouldForwardProp;\n\n if (componentSlot === 'Root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n }\n\n const defaultStyledResolver = styledEngineStyled(tag, _extends({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n\n const muiStyledResolver = (styleArg, ...expressions) => {\n const expressionsWithDefaultTheme = expressions ? expressions.map(stylesArg => {\n // On the server emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n // eslint-disable-next-line no-underscore-dangle\n return typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg ? _ref => {\n let {\n theme: themeInput\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded2);\n\n return stylesArg(_extends({\n theme: isEmpty(themeInput) ? defaultTheme : themeInput\n }, other));\n } : stylesArg;\n }) : [];\n let transformedStyleArg = styleArg;\n\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = isEmpty(props.theme) ? defaultTheme : props.theme;\n const styleOverrides = getStyleOverrides(componentName, theme);\n\n if (styleOverrides) {\n return overridesResolver(props, styleOverrides);\n }\n\n return null;\n });\n }\n\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = isEmpty(props.theme) ? defaultTheme : props.theme;\n return variantsResolver(props, getVariantStyles(componentName, theme), theme, componentName);\n });\n }\n\n if (!skipSx) {\n expressionsWithDefaultTheme.push(props => {\n const theme = isEmpty(props.theme) ? defaultTheme : props.theme;\n return styleFunctionSx(_extends({}, props, {\n theme\n }));\n });\n }\n\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill(''); // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n } else if (typeof styleArg === 'function') {\n // If the type is function, we need to define the default theme.\n transformedStyleArg = _ref2 => {\n let {\n theme: themeInput\n } = _ref2,\n other = _objectWithoutPropertiesLoose(_ref2, _excluded3);\n\n return styleArg(_extends({\n theme: isEmpty(themeInput) ? defaultTheme : themeInput\n }, other));\n };\n }\n\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n\n if (componentName) {\n displayName = `${componentName}${componentSlot || ''}`;\n }\n\n if (displayName === undefined) {\n displayName = `Styled(${getDisplayName(tag)})`;\n }\n\n Component.displayName = displayName;\n }\n\n return Component;\n };\n\n return muiStyledResolver;\n };\n}","import { createStyled, shouldForwardProp } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport const rootShouldForwardProp = prop => shouldForwardProp(prop) && prop !== 'classes';\nexport const slotShouldForwardProp = shouldForwardProp;\nconst styled = createStyled({\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","import PropTypes from 'prop-types';\nexport var subscriptionShape = PropTypes.shape({\n trySubscribe: PropTypes.func.isRequired,\n tryUnsubscribe: PropTypes.func.isRequired,\n notifyNestedSubs: PropTypes.func.isRequired,\n isSubscribed: PropTypes.func.isRequired\n});\nexport var storeShape = PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== \"undefined\";\nvar didWarnAboutReceivingStore = false;\n\nfunction warnAboutReceivingStore() {\n if (didWarnAboutReceivingStore) {\n return;\n }\n\n didWarnAboutReceivingStore = true;\n warning(' does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reduxjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider(storeKey) {\n var _Provider$childContex;\n\n if (storeKey === void 0) {\n storeKey = 'store';\n }\n\n var subscriptionKey = storeKey + \"Subscription\";\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n };\n\n function Provider(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this[storeKey] = props.store;\n return _this;\n }\n\n _proto.render = function render() {\n return Children.only(this.props.children);\n };\n\n return Provider;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Use UNSAFE_ event name where supported\n var eventName = prefixUnsafeLifecycleMethods ? 'UNSAFE_componentWillReceiveProps' : 'componentWillReceiveProps';\n\n Provider.prototype[eventName] = function (nextProps) {\n if (this[storeKey] !== nextProps.store) {\n warnAboutReceivingStore();\n }\n };\n }\n\n Provider.propTypes = {\n store: storeShape.isRequired,\n children: PropTypes.element.isRequired\n };\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n return Provider;\n}\nexport default createProvider();","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}","// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub, onStateChange) {\n this.store = store;\n this.parentSub = parentSub;\n this.onStateChange = onStateChange;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { Component, createElement } from 'react';\nimport { isValidElementType } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== \"undefined\";\nvar hotReloadingVersion = 0;\nvar dummyState = {};\n\nfunction noop() {}\n\nfunction makeSelectorStateful(sourceSelector, store) {\n // wrap the selector in an object that tracks its results between runs.\n var selector = {\n run: function runComponentSelector(props) {\n try {\n var nextProps = sourceSelector(store.getState(), props);\n\n if (nextProps !== selector.props || selector.error) {\n selector.shouldComponentUpdate = true;\n selector.props = nextProps;\n selector.error = null;\n }\n } catch (error) {\n selector.shouldComponentUpdate = true;\n selector.error = error;\n }\n }\n };\n return selector;\n}\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n var _contextTypes, _childContextTypes;\n\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\"]);\n\n var subscriptionKey = storeKey + 'Subscription';\n var version = hotReloadingVersion++;\n var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n return function wrapWithConnect(WrappedComponent) {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n withRef: withRef,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent // TODO Actually fix our use of componentWillReceiveProps\n\n /* eslint-disable react/no-deprecated */\n\n });\n\n var Connect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Connect, _Component);\n\n function Connect(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.version = version;\n _this.state = {};\n _this.renderCount = 0;\n _this.store = props[storeKey] || context[storeKey];\n _this.propsMode = Boolean(props[storeKey]);\n _this.setWrappedInstance = _this.setWrappedInstance.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n invariant(_this.store, \"Could not find \\\"\" + storeKey + \"\\\" in either the context or props of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + (\"or explicitly pass \\\"\" + storeKey + \"\\\" as a prop to \\\"\" + displayName + \"\\\".\"));\n\n _this.initSelector();\n\n _this.initSubscription();\n\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref3;\n\n // If this component received store from props, its subscription should be transparent\n // to any descendants receiving store+subscription from context; it passes along\n // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n // Connect to control ordering of notifications to flow top-down.\n var subscription = this.propsMode ? null : this.subscription;\n return _ref3 = {}, _ref3[subscriptionKey] = subscription || this.context[subscriptionKey], _ref3;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!shouldHandleStateChanges) return; // componentWillMount fires during server side rendering, but componentDidMount and\n // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n // To handle the case where a child component may have triggered a state change by\n // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n // re-render.\n\n this.subscription.trySubscribe();\n this.selector.run(this.props);\n if (this.selector.shouldComponentUpdate) this.forceUpdate();\n }; // Note: this is renamed below to the UNSAFE_ version in React >=16.3.0\n\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n this.selector.run(nextProps);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n return this.selector.shouldComponentUpdate;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.subscription) this.subscription.tryUnsubscribe();\n this.subscription = null;\n this.notifyNestedSubs = noop;\n this.store = null;\n this.selector.run = noop;\n this.selector.shouldComponentUpdate = false;\n };\n\n _proto.getWrappedInstance = function getWrappedInstance() {\n invariant(withRef, \"To access the wrapped instance, you need to specify \" + (\"{ withRef: true } in the options argument of the \" + methodName + \"() call.\"));\n return this.wrappedInstance;\n };\n\n _proto.setWrappedInstance = function setWrappedInstance(ref) {\n this.wrappedInstance = ref;\n };\n\n _proto.initSelector = function initSelector() {\n var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n this.selector = makeSelectorStateful(sourceSelector, this.store);\n this.selector.run(this.props);\n };\n\n _proto.initSubscription = function initSubscription() {\n if (!shouldHandleStateChanges) return; // parentSub's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this)); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `this.subscription` will then be null. An\n // extra null check every change can be avoided by copying the method onto `this` and then\n // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n // listeners logic is changed to not call listeners that have been unsubscribed in the\n // middle of the notification loop.\n\n this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n };\n\n _proto.onStateChange = function onStateChange() {\n this.selector.run(this.props);\n\n if (!this.selector.shouldComponentUpdate) {\n this.notifyNestedSubs();\n } else {\n this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n this.setState(dummyState);\n }\n };\n\n _proto.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n // needs to notify nested subs. Once called, it unimplements itself until further state\n // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n // a boolean check every time avoids an extra method call most of the time, resulting\n // in some perf boost.\n this.componentDidUpdate = undefined;\n this.notifyNestedSubs();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.subscription) && this.subscription.isSubscribed();\n };\n\n _proto.addExtraProps = function addExtraProps(props) {\n if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; // make a shallow copy so that fields added don't leak to the original selector.\n // this is especially important for 'ref' since that's a reference back to the component\n // instance. a singleton memoized selector would then be holding a reference to the\n // instance, preventing the instance from being garbage collected, and that would be bad\n\n var withExtras = _extends({}, props);\n\n if (withRef) withExtras.ref = this.setWrappedInstance;\n if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n return withExtras;\n };\n\n _proto.render = function render() {\n var selector = this.selector;\n selector.shouldComponentUpdate = false;\n\n if (selector.error) {\n throw selector.error;\n } else {\n return createElement(WrappedComponent, this.addExtraProps(selector.props));\n }\n };\n\n return Connect;\n }(Component);\n\n if (prefixUnsafeLifecycleMethods) {\n // Use UNSAFE_ event name where supported\n Connect.prototype.UNSAFE_componentWillReceiveProps = Connect.prototype.componentWillReceiveProps;\n delete Connect.prototype.componentWillReceiveProps;\n }\n /* eslint-enable react/no-deprecated */\n\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n Connect.childContextTypes = childContextTypes;\n Connect.contextTypes = contextTypes;\n Connect.propTypes = contextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n // Use UNSAFE_ event name where supported\n var eventName = prefixUnsafeLifecycleMethods ? 'UNSAFE_componentWillUpdate' : 'componentWillUpdate';\n\n Connect.prototype[eventName] = function componentWillUpdate() {\n var _this2 = this;\n\n // We are hot reloading!\n if (this.version !== version) {\n this.version = version;\n this.initSelector(); // If any connected descendants don't hot reload (and resubscribe in the process), their\n // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n // listeners, this does mean that the old versions of connected descendants will still be\n // notified of state changes; however, their onStateChange function is a no-op so this\n // isn't a huge deal.\n\n var oldListeners = [];\n\n if (this.subscription) {\n oldListeners = this.subscription.listeners.get();\n this.subscription.tryUnsubscribe();\n }\n\n this.initSubscription();\n\n if (shouldHandleStateChanges) {\n this.subscription.trySubscribe();\n oldListeners.forEach(function (listener) {\n return _this2.subscription.listeners.subscribe(listener);\n });\n }\n }\n };\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n// \n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n// \n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n// \n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","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 _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}","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 _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}","export default function createStyles(styles) {\n return styles;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { SheetsRegistry } from 'jss';\nimport StylesProvider from '../StylesProvider';\nimport createGenerateClassName from '../createGenerateClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default class ServerStyleSheets {\n constructor(options = {}) {\n this.options = options;\n }\n\n collect(children) {\n // This is needed in order to deduplicate the injection of CSS in the page.\n const sheetsManager = new Map(); // This is needed in order to inject the critical CSS.\n\n this.sheetsRegistry = new SheetsRegistry(); // A new class name generator\n\n const generateClassName = createGenerateClassName();\n return /*#__PURE__*/_jsx(StylesProvider, _extends({\n sheetsManager: sheetsManager,\n serverGenerateClassName: generateClassName,\n sheetsRegistry: this.sheetsRegistry\n }, this.options, {\n children: children\n }));\n }\n\n toString() {\n return this.sheetsRegistry ? this.sheetsRegistry.toString() : '';\n }\n\n getStyleElement(props) {\n return /*#__PURE__*/React.createElement('style', _extends({\n id: 'jss-server-side',\n key: 'jss-server-side',\n dangerouslySetInnerHTML: {\n __html: this.toString()\n }\n }, props));\n }\n\n}","import useTheme from '../useTheme';\nimport propsToClassKey from '../propsToClassKey';\n\nconst useThemeVariants = (props, name) => {\n const {\n classes = {}\n } = props;\n const theme = useTheme();\n let variantsClasses = '';\n\n if (theme && theme.components && theme.components[name] && theme.components[name].variants) {\n const themeVariants = theme.components[name].variants;\n themeVariants.forEach(themeVariant => {\n let isMatch = true;\n Object.keys(themeVariant.props).forEach(key => {\n if (props[key] !== themeVariant.props[key]) {\n isMatch = false;\n }\n });\n\n if (isMatch) {\n variantsClasses = `${variantsClasses}${classes[propsToClassKey(themeVariant.props)]} `;\n }\n });\n }\n\n return variantsClasses;\n};\n\nexport default useThemeVariants;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { getDisplayName } from '@mui/utils';\nimport useTheme from '../useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function withThemeCreator(options = {}) {\n const {\n defaultTheme\n } = options;\n\n const withTheme = Component => {\n if (process.env.NODE_ENV !== 'production') {\n if (Component === undefined) {\n throw new Error(['You are calling withTheme(Component) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n }\n\n const WithTheme = /*#__PURE__*/React.forwardRef(function WithTheme(props, ref) {\n const theme = useTheme() || defaultTheme;\n return /*#__PURE__*/_jsx(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n\n if (process.env.NODE_ENV !== 'production') {\n WithTheme.displayName = `WithTheme(${getDisplayName(Component)})`;\n }\n\n hoistNonReactStatics(WithTheme, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Exposed for test purposes.\n WithTheme.Naked = Component;\n }\n\n return WithTheme;\n };\n\n return withTheme;\n} // Provide the theme object as a prop to the input component.\n// It's an alternative API to useTheme().\n// We encourage the usage of useTheme() where possible.\n\nconst withTheme = withThemeCreator();\nexport default withTheme;","module.exports = require(\"regenerator-runtime\");\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}","/**\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","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","/**\n * Constants\n */\n/** @private */\nexport var cellClick = 'cellClick';\n/** @private */\nexport var cellDoubleClick = 'cellDoubleClick';\n/** @private */\nexport var moreEventsClick = 'moreEventsClick';\n/** @private */\nexport var select = 'select';\n/** @private */\nexport var hover = 'hover';\n/** @private */\nexport var actionBegin = 'actionBegin';\n/** @private */\nexport var actionComplete = 'actionComplete';\n/** @private */\nexport var actionFailure = 'actionFailure';\n/** @private */\nexport var navigating = 'navigating';\n/** @private */\nexport var renderCell = 'renderCell';\n/** @private */\nexport var eventClick = 'eventClick';\n/** @private */\nexport var eventRendered = 'eventRendered';\n/** @private */\nexport var dataBinding = 'dataBinding';\n/** @private */\nexport var dataBound = 'dataBound';\n/** @private */\nexport var popupOpen = 'popupOpen';\n/** @private */\nexport var popupClose = 'popupClose';\n/** @private */\nexport var dragStart = 'dragStart';\n/** @private */\nexport var drag = 'drag';\n/** @private */\nexport var dragStop = 'dragStop';\n/** @private */\nexport var resizeStart = 'resizeStart';\n/** @private */\nexport var resizing = 'resizing';\n/** @private */\nexport var resizeStop = 'resizeStop';\n/** @private */\nexport var inlineClick = 'inlineClick';\n/**\n * Specifies schedule internal events\n */\n/** @private */\nexport var initialLoad = 'initial-load';\n/** @private */\nexport var initialEnd = 'initial-end';\n/** @private */\nexport var print = 'print';\n/** @private */\nexport var dataReady = 'data-ready';\n/** @private */\nexport var eventsLoaded = 'events-loaded';\n/** @private */\nexport var contentReady = 'content-ready';\n/** @private */\nexport var scroll = 'scroll';\n/** @private */\nexport var virtualScroll = 'virtual-scroll';\n/** @private */\nexport var scrollUiUpdate = 'scroll-ui-update';\n/** @private */\nexport var uiUpdate = 'ui-update';\n/** @private */\nexport var documentClick = 'document-click';\n/** @private */\nexport var cellMouseDown = 'cell-mouse-down';\n","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t}\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtypeObject,\n\tArchtypeArray,\n\tArchtypeMap,\n\tArchtypeSet,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\treturn !proto || proto === Object.prototype\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === ArchtypeObject) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): 0 | 1 | 2 | 3 {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? ArchtypeArray\n\t\t: isMap(thing)\n\t\t? ArchtypeMap\n\t\t: isSet(thing)\n\t\t? ArchtypeSet\n\t\t: ArchtypeObject\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === ArchtypeMap\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === ArchtypeMap ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === ArchtypeMap) thing.set(propOrOldValue, value)\n\telse if (t === ArchtypeSet) {\n\t\tthing.delete(propOrOldValue)\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\nexport function freeze(obj: any, deep: boolean): void {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tSetState,\n\tImmerScope,\n\tProxyObjectState,\n\tProxyArrayState,\n\tES5ObjectState,\n\tES5ArrayState,\n\tMapState,\n\tDRAFT_STATE\n} from \"../internal\"\n\nexport type Objectish = AnyObject | AnyArray | AnyMap | AnySet\nexport type ObjectishNoSet = AnyObject | AnyArray | AnyMap\n\nexport type AnyObject = {[key: string]: any}\nexport type AnyArray = Array\nexport type AnySet = Set\nexport type AnyMap = Map\n\nexport const ArchtypeObject = 0\nexport const ArchtypeArray = 1\nexport const ArchtypeMap = 2\nexport const ArchtypeSet = 3\n\nexport const ProxyTypeProxyObject = 0\nexport const ProxyTypeProxyArray = 1\nexport const ProxyTypeES5Object = 4\nexport const ProxyTypeES5Array = 5\nexport const ProxyTypeMap = 2\nexport const ProxyTypeSet = 3\n\nexport interface ImmerBaseState {\n\tparent_?: ImmerState\n\tscope_: ImmerScope\n\tmodified_: boolean\n\tfinalized_: boolean\n\tisManual_: boolean\n}\n\nexport type ImmerState =\n\t| ProxyObjectState\n\t| ProxyArrayState\n\t| ES5ObjectState\n\t| ES5ArrayState\n\t| MapState\n\t| SetState\n\n// The _internal_ type used for drafts (not to be confused with Draft, which is public facing)\nexport type Drafted = {\n\t[DRAFT_STATE]: T\n} & Base\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyTypeES5Array,\n\tProxyTypeES5Object,\n\tProxyTypeMap,\n\tProxyTypeSet,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\trootState: ImmerState,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: typeof ProxyTypeES5Object\n\tdraft_: Drafted\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: typeof ProxyTypeES5Array\n\tdraft_: Drafted\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: typeof ProxyTypeMap\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: typeof ProxyTypeSet\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyTypeProxyObject,\n\tProxyTypeProxyArray,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyTypeProxyObject ||\n\t\tstate.type_ === ProxyTypeProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyTypeES5Object,\n\tProxyTypeES5Array,\n\tProxyTypeSet,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE],\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumarable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyTypeES5Object || state.type_ === ProxyTypeES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// Although the original test case doesn't seem valid anyway, so if this in the way we can turn the next line\n\t\t// back to each(result, ....)\n\t\teach(\n\t\t\tstate.type_ === ProxyTypeSet ? new Set(result) : result,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyTypeSet && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\tif (scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyTypeProxyObject,\n\tProxyTypeProxyArray\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: typeof ProxyTypeProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: typeof ProxyTypeProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyTypeProxyArray : (ProxyTypeProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existig to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyTypeProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\treturn objectTraps.deleteProperty!.call(this, state[0], prop)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tisMinified,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = __DEV__ ? true /* istanbul ignore next */ : !isMinified\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t\tthis.produce = this.produce.bind(this)\n\t\tthis.produceWithPatches = this.produceWithPatches.bind(this)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce(base: any, recipe?: any, patchListener?: any) {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === NOTHING) return undefined\n\t\t\tif (result === undefined) result = base\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches(arg1: any, arg2?: any, arg3?: any): any {\n\t\tif (typeof arg1 === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => arg1(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst nextState = this.produce(arg1, arg2, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\t\treturn [nextState, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is disabled in production.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches(base: Objectish, patches: Patch[]) {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches.slice(i + 1))\n\t\t)\n\t}\n}\n\nexport function createProxy(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtypeMap,\n\tArchtypeSet,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === ArchtypeSet ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase ArchtypeMap:\n\t\t\treturn new Map(value)\n\t\tcase ArchtypeSet:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is disabled in production.\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft(value: T): Draft {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/* istanbul ignore next */\nfunction mini() {}\nexport const isMinified = mini.name !== \"mini\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","import { unstable_capitalize as capitalize } from '@mui/utils';\nexport default capitalize;","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : 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 return _extends.apply(this, arguments);\n}","import { useThemeProps as systemUseThemeProps } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme\n });\n}","import getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n props,\n name,\n defaultTheme\n}) {\n const theme = useTheme(defaultTheme);\n const mergedProps = getThemeProps({\n theme,\n name,\n props\n });\n return mergedProps;\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 if (isNullOrUndefined(actual)) {\n actual = undefined;\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","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\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","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\n\nvar _utils = require(\"@mui/material/utils\");","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 * Enum for comment status of the annotation\n */\nexport var CommentStatus;\n(function (CommentStatus) {\n CommentStatus[CommentStatus[\"None\"] = 1] = \"None\";\n CommentStatus[CommentStatus[\"Accepted\"] = 2] = \"Accepted\";\n CommentStatus[CommentStatus[\"Canceled\"] = 3] = \"Canceled\";\n CommentStatus[CommentStatus[\"Completed\"] = 4] = \"Completed\";\n CommentStatus[CommentStatus[\"Rejected\"] = 5] = \"Rejected\";\n})(CommentStatus || (CommentStatus = {}));\n/**\n * Enum for font styles\n */\nexport var FontStyle;\n(function (FontStyle) {\n FontStyle[FontStyle[\"None\"] = 0] = \"None\";\n FontStyle[FontStyle[\"Bold\"] = 1] = \"Bold\";\n FontStyle[FontStyle[\"Italic\"] = 2] = \"Italic\";\n FontStyle[FontStyle[\"Underline\"] = 4] = \"Underline\";\n FontStyle[FontStyle[\"Strikethrough\"] = 8] = \"Strikethrough\";\n})(FontStyle || (FontStyle = {}));\n/**\n * enum for context menu items\n */\nexport var ContextMenuItem;\n(function (ContextMenuItem) {\n ContextMenuItem[ContextMenuItem[\"Copy\"] = 0] = \"Copy\";\n ContextMenuItem[ContextMenuItem[\"Highlight\"] = 1] = \"Highlight\";\n ContextMenuItem[ContextMenuItem[\"Cut\"] = 2] = \"Cut\";\n ContextMenuItem[ContextMenuItem[\"Underline\"] = 4] = \"Underline\";\n ContextMenuItem[ContextMenuItem[\"Paste\"] = 8] = \"Paste\";\n ContextMenuItem[ContextMenuItem[\"Delete\"] = 16] = \"Delete\";\n ContextMenuItem[ContextMenuItem[\"ScaleRatio\"] = 32] = \"ScaleRatio\";\n ContextMenuItem[ContextMenuItem[\"Strikethrough\"] = 64] = \"Strikethrough\";\n ContextMenuItem[ContextMenuItem[\"Properties\"] = 128] = \"Properties\";\n ContextMenuItem[ContextMenuItem[\"Comment\"] = 256] = \"Comment\";\n})(ContextMenuItem || (ContextMenuItem = {}));\n/**\n * Enum for signature type\n */\nexport var SignatureType;\n(function (SignatureType) {\n SignatureType[\"Draw\"] = \"Draw\";\n SignatureType[\"Type\"] = \"Type\";\n SignatureType[\"Image\"] = \"Image\";\n})(SignatureType || (SignatureType = {}));\n/**\n * Enum for annotation resizer location\n */\nexport var AnnotationResizerLocation;\n(function (AnnotationResizerLocation) {\n AnnotationResizerLocation[AnnotationResizerLocation[\"Corners\"] = 1] = \"Corners\";\n AnnotationResizerLocation[AnnotationResizerLocation[\"Edges\"] = 2] = \"Edges\";\n})(AnnotationResizerLocation || (AnnotationResizerLocation = {}));\nexport var DisplayMode;\n(function (DisplayMode) {\n /** Draw - Display only the draw option in the signature dialog. */\n DisplayMode[DisplayMode[\"Draw\"] = 1] = \"Draw\";\n /** Text - Display only the type option in the signature dialog. */\n DisplayMode[DisplayMode[\"Text\"] = 2] = \"Text\";\n /** Upload - Display only the upload option in the signature dialog. */\n DisplayMode[DisplayMode[\"Upload\"] = 4] = \"Upload\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Enum for cursor type\n */\nexport var CursorType;\n(function (CursorType) {\n CursorType[\"auto\"] = \"auto\";\n CursorType[\"crossHair\"] = \"crosshair\";\n // eslint-disable-next-line\n CursorType[\"e_resize\"] = \"e-resize\";\n // eslint-disable-next-line\n CursorType[\"ew_resize\"] = \"ew-resize\";\n CursorType[\"grab\"] = \"grab\";\n CursorType[\"grabbing\"] = \"grabbing\";\n CursorType[\"move\"] = \"move\";\n // eslint-disable-next-line\n CursorType[\"n_resize\"] = \"n-resize\";\n // eslint-disable-next-line\n CursorType[\"ne_resize\"] = \"ne-resize\";\n // eslint-disable-next-line\n CursorType[\"ns_resize\"] = \"ns-resize\";\n // eslint-disable-next-line\n CursorType[\"nw_resize\"] = \"nw-resize\";\n CursorType[\"pointer\"] = \"pointer\";\n // eslint-disable-next-line\n CursorType[\"s_resize\"] = \"s-resize\";\n // eslint-disable-next-line\n CursorType[\"se_resize\"] = \"se-resize\";\n // eslint-disable-next-line\n CursorType[\"sw_resize\"] = \"sw-resize\";\n CursorType[\"text\"] = \"text\";\n // eslint-disable-next-line\n CursorType[\"w_resize\"] = \"w-resize\";\n})(CursorType || (CursorType = {}));\n/**\n * Enum type for Dynamic Stamp Items\n */\nexport var DynamicStampItem;\n(function (DynamicStampItem) {\n DynamicStampItem[\"Revised\"] = \"Revised\";\n DynamicStampItem[\"Reviewed\"] = \"Reviewed\";\n DynamicStampItem[\"Received\"] = \"Received\";\n DynamicStampItem[\"Approved\"] = \"Approved\";\n DynamicStampItem[\"Confidential\"] = \"Confidential\";\n DynamicStampItem[\"NotApproved\"] = \"NotApproved\";\n})(DynamicStampItem || (DynamicStampItem = {}));\n/**\n * Enum type for Sign Stamp Items\n */\nexport var SignStampItem;\n(function (SignStampItem) {\n SignStampItem[\"Witness\"] = \"Witness\";\n SignStampItem[\"InitialHere\"] = \"InitialHere\";\n SignStampItem[\"SignHere\"] = \"SignHere\";\n SignStampItem[\"Accepted\"] = \"Accepted\";\n SignStampItem[\"Rejected\"] = \"Rejected\";\n})(SignStampItem || (SignStampItem = {}));\n/**\n * Enum type for Standard Business Stamp Items\n */\nexport var StandardBusinessStampItem;\n(function (StandardBusinessStampItem) {\n StandardBusinessStampItem[\"Approved\"] = \"Approved\";\n StandardBusinessStampItem[\"NotApproved\"] = \"NotApproved\";\n StandardBusinessStampItem[\"Draft\"] = \"Draft\";\n StandardBusinessStampItem[\"Final\"] = \"Final\";\n StandardBusinessStampItem[\"Completed\"] = \"Completed\";\n StandardBusinessStampItem[\"Confidential\"] = \"Confidential\";\n StandardBusinessStampItem[\"ForPublicRelease\"] = \"ForPublicRelease\";\n StandardBusinessStampItem[\"NotForPublicRelease\"] = \"NotForPublicRelease\";\n StandardBusinessStampItem[\"ForComment\"] = \"ForComment\";\n StandardBusinessStampItem[\"Void\"] = \"Void\";\n StandardBusinessStampItem[\"PreliminaryResults\"] = \"PreliminaryResults\";\n StandardBusinessStampItem[\"InformationOnly\"] = \"InformationOnly\";\n})(StandardBusinessStampItem || (StandardBusinessStampItem = {}));\n/**\n * Enum type for allowed interactions for locked annotations\n */\nexport var AllowedInteraction;\n(function (AllowedInteraction) {\n AllowedInteraction[\"Select\"] = \"Select\";\n AllowedInteraction[\"Move\"] = \"Move\";\n AllowedInteraction[\"Resize\"] = \"Resize\";\n AllowedInteraction[\"Delete\"] = \"Delete\";\n AllowedInteraction[\"None\"] = \"None\";\n AllowedInteraction[\"PropertyChange\"] = \"PropertyChange\";\n})(AllowedInteraction || (AllowedInteraction = {}));\n/**\n * Enum type for export annotation file types\n */\nexport var AnnotationDataFormat;\n(function (AnnotationDataFormat) {\n AnnotationDataFormat[\"Json\"] = \"Json\";\n AnnotationDataFormat[\"Xfdf\"] = \"Xfdf\";\n})(AnnotationDataFormat || (AnnotationDataFormat = {}));\n","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","module.exports = require('./lib/axios');","/**\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), rteObj) : updateTextNode(value, rteObj);\n rteObj.setProperties({ value: val }, true);\n }\n else {\n if (rteObj.enterKey === 'DIV') {\n val = rteObj.enableHtmlEncode ? '<div><br/></div>' : '

';\n }\n else if (rteObj.enterKey === 'BR') {\n val = rteObj.enableHtmlEncode ? '<br/>' : '
';\n }\n else {\n val = rteObj.enableHtmlEncode ? '<p><br/></p>' : '


';\n }\n }\n return val;\n}\n/**\n * @param {string} value - specifies the value\n * @param {IRichTextEditor} rteObj - specifies the rich text editor instance.\n * @returns {string} - returns the string\n * @hidden\n */\nexport function updateTextNode(value, rteObj) {\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 insertElem = void 0;\n while (tempNode.firstChild) {\n if (rteObj.enterKey !== 'BR' && ((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 if (rteObj.enterKey === 'DIV') {\n insertElem = createElement('div');\n }\n else {\n insertElem = createElement('p');\n }\n resultElm.appendChild(insertElem);\n insertElem.appendChild(tempNode.firstChild);\n }\n else {\n previousParent.appendChild(tempNode.firstChild);\n }\n previousParent = insertElem;\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 {IRichTextEditor} rteObj - specifies the rte object\n * @returns {string} - returns the value based on enter configuration.\n * @hidden\n */\nexport function getDefaultValue(rteObj) {\n var currentVal;\n if (rteObj.enterKey === 'DIV') {\n currentVal = rteObj.enableHtmlEncode ? '<div><br/></div>' : '

';\n }\n else if (rteObj.enterKey === 'BR') {\n currentVal = rteObj.enableHtmlEncode ? '<br/>' : '
';\n }\n else {\n currentVal = rteObj.enableHtmlEncode ? '<p><br/></p>' : '


';\n }\n return currentVal;\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>'\n || value === '

' || value === '<div><br></div>'\n || value === '
' || value === '<br>'\n || 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 `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","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 * 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","// ES6 Map\nvar map\ntry {\n map = Map\n} catch (_) { }\nvar set\n\n// ES6 Set\ntry {\n set = Set\n} catch (_) { }\n\nfunction baseClone (src, circulars, clones) {\n // Null/undefined/functions/etc\n if (!src || typeof src !== 'object' || typeof src === 'function') {\n return src\n }\n\n // DOM Node\n if (src.nodeType && 'cloneNode' in src) {\n return src.cloneNode(true)\n }\n\n // Date\n if (src instanceof Date) {\n return new Date(src.getTime())\n }\n\n // RegExp\n if (src instanceof RegExp) {\n return new RegExp(src)\n }\n\n // Arrays\n if (Array.isArray(src)) {\n return src.map(clone)\n }\n\n // ES6 Maps\n if (map && src instanceof map) {\n return new Map(Array.from(src.entries()))\n }\n\n // ES6 Sets\n if (set && src instanceof set) {\n return new Set(Array.from(src.values()))\n }\n\n // Object\n if (src instanceof Object) {\n circulars.push(src)\n var obj = Object.create(src)\n clones.push(obj)\n for (var key in src) {\n var idx = circulars.findIndex(function (i) {\n return i === src[key]\n })\n obj[key] = idx > -1 ? clones[idx] : baseClone(src[key], circulars, clones)\n }\n return obj\n }\n\n // ???\n return src\n}\n\nexport default function clone (src) {\n return baseClone(src, [], [])\n}\n","const toString = Object.prototype.toString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\n\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\n\nfunction printSimpleValue(val, quoteStrings = false) {\n if (val == null || val === true || val === false) return '' + val;\n const typeOf = typeof val;\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return quoteStrings ? `\"${val}\"` : val;\n if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']';\n if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n const tag = toString.call(val).slice(8, -1);\n if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val);\n if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']';\n if (tag === 'RegExp') return regExpToString.call(val);\n return null;\n}\n\nexport default function printValue(value, quoteStrings) {\n let result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n return JSON.stringify(value, function (key, value) {\n let result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n }, 2);\n}","import printValue from './util/printValue';\nexport let mixed = {\n default: '${path} is invalid',\n required: '${path} is a required field',\n oneOf: '${path} must be one of the following values: ${values}',\n notOneOf: '${path} must not be one of the following values: ${values}',\n notType: ({\n path,\n type,\n value,\n originalValue\n }) => {\n let isCast = originalValue != null && originalValue !== value;\n let msg = `${path} must be a \\`${type}\\` type, ` + `but the final value was: \\`${printValue(value, true)}\\`` + (isCast ? ` (cast from the value \\`${printValue(originalValue, true)}\\`).` : '.');\n\n if (value === null) {\n msg += `\\n If \"null\" is intended as an empty value be sure to mark the schema as \\`.nullable()\\``;\n }\n\n return msg;\n },\n defined: '${path} must be defined'\n};\nexport let string = {\n length: '${path} must be exactly ${length} characters',\n min: '${path} must be at least ${min} characters',\n max: '${path} must be at most ${max} characters',\n matches: '${path} must match the following: \"${regex}\"',\n email: '${path} must be a valid email',\n url: '${path} must be a valid URL',\n uuid: '${path} must be a valid UUID',\n trim: '${path} must be a trimmed string',\n lowercase: '${path} must be a lowercase string',\n uppercase: '${path} must be a upper case string'\n};\nexport let number = {\n min: '${path} must be greater than or equal to ${min}',\n max: '${path} must be less than or equal to ${max}',\n lessThan: '${path} must be less than ${less}',\n moreThan: '${path} must be greater than ${more}',\n positive: '${path} must be a positive number',\n negative: '${path} must be a negative number',\n integer: '${path} must be an integer'\n};\nexport let date = {\n min: '${path} field must be later than ${min}',\n max: '${path} field must be at earlier than ${max}'\n};\nexport let boolean = {\n isValue: '${path} field must be ${value}'\n};\nexport let object = {\n noUnknown: '${path} field has unspecified keys: ${unknown}'\n};\nexport let array = {\n min: '${path} field must have at least ${min} items',\n max: '${path} field must have less than or equal to ${max} items',\n length: '${path} must be have ${length} items'\n};\nexport default Object.assign(Object.create(null), {\n mixed,\n string,\n number,\n date,\n object,\n array,\n boolean\n});","export default (obj => obj && obj.__isYupSchema__);","import has from 'lodash/has';\nimport isSchema from './util/isSchema';\n\nclass Condition {\n constructor(refs, options) {\n this.refs = refs;\n this.refs = refs;\n\n if (typeof options === 'function') {\n this.fn = options;\n return;\n }\n\n if (!has(options, 'is')) throw new TypeError('`is:` is required for `when()` conditions');\n if (!options.then && !options.otherwise) throw new TypeError('either `then:` or `otherwise:` is required for `when()` conditions');\n let {\n is,\n then,\n otherwise\n } = options;\n let check = typeof is === 'function' ? is : (...values) => values.every(value => value === is);\n\n this.fn = function (...args) {\n let options = args.pop();\n let schema = args.pop();\n let branch = check(...args) ? then : otherwise;\n if (!branch) return undefined;\n if (typeof branch === 'function') return branch(schema);\n return schema.concat(branch.resolve(options));\n };\n }\n\n resolve(base, options) {\n let values = this.refs.map(ref => ref.getValue(options == null ? void 0 : options.value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context));\n let schema = this.fn.apply(base, values.concat(base, options));\n if (schema === undefined || schema === base) return base;\n if (!isSchema(schema)) throw new TypeError('conditions must return a schema object');\n return schema.resolve(options);\n }\n\n}\n\nexport default Condition;","import setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeFunction from \"./isNativeFunction\";\nimport construct from \"./construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","export default function toArray(value) {\n return value == null ? [] : [].concat(value);\n}","function _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\nimport printValue from './util/printValue';\nimport toArray from './util/toArray';\nlet strReg = /\\$\\{\\s*(\\w+)\\s*\\}/g;\nexport default class ValidationError extends Error {\n static formatError(message, params) {\n const path = params.label || params.path || 'this';\n if (path !== params.path) params = _extends({}, params, {\n path\n });\n if (typeof message === 'string') return message.replace(strReg, (_, key) => printValue(params[key]));\n if (typeof message === 'function') return message(params);\n return message;\n }\n\n static isError(err) {\n return err && err.name === 'ValidationError';\n }\n\n constructor(errorOrErrors, value, field, type) {\n super();\n this.name = 'ValidationError';\n this.value = value;\n this.path = field;\n this.type = type;\n this.errors = [];\n this.inner = [];\n toArray(errorOrErrors).forEach(err => {\n if (ValidationError.isError(err)) {\n this.errors.push(...err.errors);\n this.inner = this.inner.concat(err.inner.length ? err.inner : err);\n } else {\n this.errors.push(err);\n }\n });\n this.message = this.errors.length > 1 ? `${this.errors.length} errors occurred` : this.errors[0];\n if (Error.captureStackTrace) Error.captureStackTrace(this, ValidationError);\n }\n\n}","import ValidationError from '../ValidationError';\n\nconst once = cb => {\n let fired = false;\n return (...args) => {\n if (fired) return;\n fired = true;\n cb(...args);\n };\n};\n\nexport default function runTests(options, cb) {\n let {\n endEarly,\n tests,\n args,\n value,\n errors,\n sort,\n path\n } = options;\n let callback = once(cb);\n let count = tests.length;\n const nestedErrors = [];\n errors = errors ? errors : [];\n if (!count) return errors.length ? callback(new ValidationError(errors, value, path)) : callback(null, value);\n\n for (let i = 0; i < tests.length; i++) {\n const test = tests[i];\n test(args, function finishTestRun(err) {\n if (err) {\n // always return early for non validation errors\n if (!ValidationError.isError(err)) {\n return callback(err, value);\n }\n\n if (endEarly) {\n err.value = value;\n return callback(err, value);\n }\n\n nestedErrors.push(err);\n }\n\n if (--count <= 0) {\n if (nestedErrors.length) {\n if (sort) nestedErrors.sort(sort); //show parent errors after the nested ones: name.first, name\n\n if (errors.length) nestedErrors.push(...errors);\n errors = nestedErrors;\n }\n\n if (errors.length) {\n callback(new ValidationError(errors, value, path), value);\n return;\n }\n\n callback(null, value);\n }\n });\n }\n}","import { getter } from 'property-expr';\nconst prefixes = {\n context: '$',\n value: '.'\n};\nexport function create(key, options) {\n return new Reference(key, options);\n}\nexport default class Reference {\n constructor(key, options = {}) {\n if (typeof key !== 'string') throw new TypeError('ref must be a string, got: ' + key);\n this.key = key.trim();\n if (key === '') throw new TypeError('ref must be a non-empty string');\n this.isContext = this.key[0] === prefixes.context;\n this.isValue = this.key[0] === prefixes.value;\n this.isSibling = !this.isContext && !this.isValue;\n let prefix = this.isContext ? prefixes.context : this.isValue ? prefixes.value : '';\n this.path = this.key.slice(prefix.length);\n this.getter = this.path && getter(this.path, true);\n this.map = options.map;\n }\n\n getValue(value, parent, context) {\n let result = this.isContext ? context : this.isValue ? value : parent;\n if (this.getter) result = this.getter(result || {});\n if (this.map) result = this.map(result);\n return result;\n }\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {Object=} options.context\n * @param {Object=} options.parent\n */\n\n\n cast(value, options) {\n return this.getValue(value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context);\n }\n\n resolve() {\n return this;\n }\n\n describe() {\n return {\n type: 'ref',\n key: this.key\n };\n }\n\n toString() {\n return `Ref(${this.key})`;\n }\n\n static isRef(value) {\n return value && value.__isYupRef;\n }\n\n} // @ts-ignore\n\nReference.prototype.__isYupRef = true;","function _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 _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\nimport mapValues from 'lodash/mapValues';\nimport ValidationError from '../ValidationError';\nimport Ref from '../Reference';\nexport default function createValidation(config) {\n function validate(_ref, cb) {\n let {\n value,\n path = '',\n label,\n options,\n originalValue,\n sync\n } = _ref,\n rest = _objectWithoutPropertiesLoose(_ref, [\"value\", \"path\", \"label\", \"options\", \"originalValue\", \"sync\"]);\n\n const {\n name,\n test,\n params,\n message\n } = config;\n let {\n parent,\n context\n } = options;\n\n function resolve(item) {\n return Ref.isRef(item) ? item.getValue(value, parent, context) : item;\n }\n\n function createError(overrides = {}) {\n const nextParams = mapValues(_extends({\n value,\n originalValue,\n label,\n path: overrides.path || path\n }, params, overrides.params), resolve);\n const error = new ValidationError(ValidationError.formatError(overrides.message || message, nextParams), value, nextParams.path, overrides.type || name);\n error.params = nextParams;\n return error;\n }\n\n let ctx = _extends({\n path,\n parent,\n type: name,\n createError,\n resolve,\n options,\n originalValue\n }, rest);\n\n if (!sync) {\n try {\n Promise.resolve(test.call(ctx, value, ctx)).then(validOrError => {\n if (ValidationError.isError(validOrError)) cb(validOrError);else if (!validOrError) cb(createError());else cb(null, validOrError);\n });\n } catch (err) {\n cb(err);\n }\n\n return;\n }\n\n let result;\n\n try {\n var _ref2;\n\n result = test.call(ctx, value, ctx);\n\n if (typeof ((_ref2 = result) == null ? void 0 : _ref2.then) === 'function') {\n throw new Error(`Validation test of type: \"${ctx.type}\" returned a Promise during a synchronous validate. ` + `This test will finish after the validate call has returned`);\n }\n } catch (err) {\n cb(err);\n return;\n }\n\n if (ValidationError.isError(result)) cb(result);else if (!result) cb(createError());else cb(null, result);\n }\n\n validate.OPTIONS = config;\n return validate;\n}","import { forEach } from 'property-expr';\n\nlet trim = part => part.substr(0, part.length - 1).substr(1);\n\nexport function getIn(schema, path, value, context = value) {\n let parent, lastPart, lastPartDebug; // root path: ''\n\n if (!path) return {\n parent,\n parentPath: path,\n schema\n };\n forEach(path, (_part, isBracket, isArray) => {\n let part = isBracket ? trim(_part) : _part;\n schema = schema.resolve({\n context,\n parent,\n value\n });\n\n if (schema.innerType) {\n let idx = isArray ? parseInt(part, 10) : 0;\n\n if (value && idx >= value.length) {\n throw new Error(`Yup.reach cannot resolve an array item at index: ${_part}, in the path: ${path}. ` + `because there is no value at that index. `);\n }\n\n parent = value;\n value = value && value[idx];\n schema = schema.innerType;\n } // sometimes the array index part of a path doesn't exist: \"nested.arr.child\"\n // in these cases the current part is the next schema and should be processed\n // in this iteration. For cases where the index signature is included this\n // check will fail and we'll handle the `child` part on the next iteration like normal\n\n\n if (!isArray) {\n if (!schema.fields || !schema.fields[part]) throw new Error(`The schema does not contain the path: ${path}. ` + `(failed at: ${lastPartDebug} which is a type: \"${schema._type}\")`);\n parent = value;\n value = value && value[part];\n schema = schema.fields[part];\n }\n\n lastPart = part;\n lastPartDebug = isBracket ? '[' + _part + ']' : '.' + _part;\n });\n return {\n schema,\n parent,\n parentPath: lastPart\n };\n}\n\nconst reach = (obj, path, value, context) => getIn(obj, path, value, context).schema;\n\nexport default reach;","import Reference from '../Reference';\nexport default class ReferenceSet {\n constructor() {\n this.list = new Set();\n this.refs = new Map();\n }\n\n get size() {\n return this.list.size + this.refs.size;\n }\n\n describe() {\n const description = [];\n\n for (const item of this.list) description.push(item);\n\n for (const [, ref] of this.refs) description.push(ref.describe());\n\n return description;\n }\n\n toArray() {\n return Array.from(this.list).concat(Array.from(this.refs.values()));\n }\n\n add(value) {\n Reference.isRef(value) ? this.refs.set(value.key, value) : this.list.add(value);\n }\n\n delete(value) {\n Reference.isRef(value) ? this.refs.delete(value.key) : this.list.delete(value);\n }\n\n has(value, resolve) {\n if (this.list.has(value)) return true;\n let item,\n values = this.refs.values();\n\n while (item = values.next(), !item.done) if (resolve(item.value) === value) return true;\n\n return false;\n }\n\n clone() {\n const next = new ReferenceSet();\n next.list = new Set(this.list);\n next.refs = new Map(this.refs);\n return next;\n }\n\n merge(newItems, removeItems) {\n const next = this.clone();\n newItems.list.forEach(value => next.add(value));\n newItems.refs.forEach(value => next.add(value));\n removeItems.list.forEach(value => next.delete(value));\n removeItems.refs.forEach(value => next.delete(value));\n return next;\n }\n\n}","function _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\n// @ts-ignore\nimport cloneDeep from 'nanoclone';\nimport { mixed as locale } from './locale';\nimport Condition from './Condition';\nimport runTests from './util/runTests';\nimport createValidation from './util/createValidation';\nimport printValue from './util/printValue';\nimport Ref from './Reference';\nimport { getIn } from './util/reach';\nimport toArray from './util/toArray';\nimport ValidationError from './ValidationError';\nimport ReferenceSet from './util/ReferenceSet';\nexport default class BaseSchema {\n constructor(options) {\n this.deps = [];\n this.conditions = [];\n this._whitelist = new ReferenceSet();\n this._blacklist = new ReferenceSet();\n this.exclusiveTests = Object.create(null);\n this.tests = [];\n this.transforms = [];\n this.withMutation(() => {\n this.typeError(locale.notType);\n });\n this.type = (options == null ? void 0 : options.type) || 'mixed';\n this.spec = _extends({\n strip: false,\n strict: false,\n abortEarly: true,\n recursive: true,\n nullable: false,\n presence: 'optional'\n }, options == null ? void 0 : options.spec);\n } // TODO: remove\n\n\n get _type() {\n return this.type;\n }\n\n _typeCheck(_value) {\n return true;\n }\n\n clone(spec) {\n if (this._mutate) {\n if (spec) Object.assign(this.spec, spec);\n return this;\n } // if the nested value is a schema we can skip cloning, since\n // they are already immutable\n\n\n const next = Object.create(Object.getPrototypeOf(this)); // @ts-expect-error this is readonly\n\n next.type = this.type;\n next._typeError = this._typeError;\n next._whitelistError = this._whitelistError;\n next._blacklistError = this._blacklistError;\n next._whitelist = this._whitelist.clone();\n next._blacklist = this._blacklist.clone();\n next.exclusiveTests = _extends({}, this.exclusiveTests); // @ts-expect-error this is readonly\n\n next.deps = [...this.deps];\n next.conditions = [...this.conditions];\n next.tests = [...this.tests];\n next.transforms = [...this.transforms];\n next.spec = cloneDeep(_extends({}, this.spec, spec));\n return next;\n }\n\n label(label) {\n var next = this.clone();\n next.spec.label = label;\n return next;\n }\n\n meta(...args) {\n if (args.length === 0) return this.spec.meta;\n let next = this.clone();\n next.spec.meta = Object.assign(next.spec.meta || {}, args[0]);\n return next;\n } // withContext(): BaseSchema<\n // TCast,\n // TContext,\n // TOutput\n // > {\n // return this as any;\n // }\n\n\n withMutation(fn) {\n let before = this._mutate;\n this._mutate = true;\n let result = fn(this);\n this._mutate = before;\n return result;\n }\n\n concat(schema) {\n if (!schema || schema === this) return this;\n if (schema.type !== this.type && this.type !== 'mixed') throw new TypeError(`You cannot \\`concat()\\` schema's of different types: ${this.type} and ${schema.type}`);\n let base = this;\n let combined = schema.clone();\n\n const mergedSpec = _extends({}, base.spec, combined.spec); // if (combined.spec.nullable === UNSET)\n // mergedSpec.nullable = base.spec.nullable;\n // if (combined.spec.presence === UNSET)\n // mergedSpec.presence = base.spec.presence;\n\n\n combined.spec = mergedSpec;\n combined._typeError || (combined._typeError = base._typeError);\n combined._whitelistError || (combined._whitelistError = base._whitelistError);\n combined._blacklistError || (combined._blacklistError = base._blacklistError); // manually merge the blacklist/whitelist (the other `schema` takes\n // precedence in case of conflicts)\n\n combined._whitelist = base._whitelist.merge(schema._whitelist, schema._blacklist);\n combined._blacklist = base._blacklist.merge(schema._blacklist, schema._whitelist); // start with the current tests\n\n combined.tests = base.tests;\n combined.exclusiveTests = base.exclusiveTests; // manually add the new tests to ensure\n // the deduping logic is consistent\n\n combined.withMutation(next => {\n schema.tests.forEach(fn => {\n next.test(fn.OPTIONS);\n });\n });\n return combined;\n }\n\n isType(v) {\n if (this.spec.nullable && v === null) return true;\n return this._typeCheck(v);\n }\n\n resolve(options) {\n let schema = this;\n\n if (schema.conditions.length) {\n let conditions = schema.conditions;\n schema = schema.clone();\n schema.conditions = [];\n schema = conditions.reduce((schema, condition) => condition.resolve(schema, options), schema);\n schema = schema.resolve(options);\n }\n\n return schema;\n }\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {*=} options.parent\n * @param {*=} options.context\n */\n\n\n cast(value, options = {}) {\n let resolvedSchema = this.resolve(_extends({\n value\n }, options));\n\n let result = resolvedSchema._cast(value, options);\n\n if (value !== undefined && options.assert !== false && resolvedSchema.isType(result) !== true) {\n let formattedValue = printValue(value);\n let formattedResult = printValue(result);\n throw new TypeError(`The value of ${options.path || 'field'} could not be cast to a value ` + `that satisfies the schema type: \"${resolvedSchema._type}\". \\n\\n` + `attempted value: ${formattedValue} \\n` + (formattedResult !== formattedValue ? `result of cast: ${formattedResult}` : ''));\n }\n\n return result;\n }\n\n _cast(rawValue, _options) {\n let value = rawValue === undefined ? rawValue : this.transforms.reduce((value, fn) => fn.call(this, value, rawValue, this), rawValue);\n\n if (value === undefined) {\n value = this.getDefault();\n }\n\n return value;\n }\n\n _validate(_value, options = {}, cb) {\n let {\n sync,\n path,\n from = [],\n originalValue = _value,\n strict = this.spec.strict,\n abortEarly = this.spec.abortEarly\n } = options;\n let value = _value;\n\n if (!strict) {\n // this._validating = true;\n value = this._cast(value, _extends({\n assert: false\n }, options)); // this._validating = false;\n } // value is cast, we can check if it meets type requirements\n\n\n let args = {\n value,\n path,\n options,\n originalValue,\n schema: this,\n label: this.spec.label,\n sync,\n from\n };\n let initialTests = [];\n if (this._typeError) initialTests.push(this._typeError);\n if (this._whitelistError) initialTests.push(this._whitelistError);\n if (this._blacklistError) initialTests.push(this._blacklistError);\n runTests({\n args,\n value,\n path,\n sync,\n tests: initialTests,\n endEarly: abortEarly\n }, err => {\n if (err) return void cb(err, value);\n runTests({\n tests: this.tests,\n args,\n path,\n sync,\n value,\n endEarly: abortEarly\n }, cb);\n });\n }\n\n validate(value, options, maybeCb) {\n let schema = this.resolve(_extends({}, options, {\n value\n })); // callback case is for nested validations\n\n return typeof maybeCb === 'function' ? schema._validate(value, options, maybeCb) : new Promise((resolve, reject) => schema._validate(value, options, (err, value) => {\n if (err) reject(err);else resolve(value);\n }));\n }\n\n validateSync(value, options) {\n let schema = this.resolve(_extends({}, options, {\n value\n }));\n let result;\n\n schema._validate(value, _extends({}, options, {\n sync: true\n }), (err, value) => {\n if (err) throw err;\n result = value;\n });\n\n return result;\n }\n\n isValid(value, options) {\n return this.validate(value, options).then(() => true, err => {\n if (ValidationError.isError(err)) return false;\n throw err;\n });\n }\n\n isValidSync(value, options) {\n try {\n this.validateSync(value, options);\n return true;\n } catch (err) {\n if (ValidationError.isError(err)) return false;\n throw err;\n }\n }\n\n _getDefault() {\n let defaultValue = this.spec.default;\n\n if (defaultValue == null) {\n return defaultValue;\n }\n\n return typeof defaultValue === 'function' ? defaultValue.call(this) : cloneDeep(defaultValue);\n }\n\n getDefault(options) {\n let schema = this.resolve(options || {});\n return schema._getDefault();\n }\n\n default(def) {\n if (arguments.length === 0) {\n return this._getDefault();\n }\n\n let next = this.clone({\n default: def\n });\n return next;\n }\n\n strict(isStrict = true) {\n var next = this.clone();\n next.spec.strict = isStrict;\n return next;\n }\n\n _isPresent(value) {\n return value != null;\n }\n\n defined(message = locale.defined) {\n return this.test({\n message,\n name: 'defined',\n exclusive: true,\n\n test(value) {\n return value !== undefined;\n }\n\n });\n }\n\n required(message = locale.required) {\n return this.clone({\n presence: 'required'\n }).withMutation(s => s.test({\n message,\n name: 'required',\n exclusive: true,\n\n test(value) {\n return this.schema._isPresent(value);\n }\n\n }));\n }\n\n notRequired() {\n var next = this.clone({\n presence: 'optional'\n });\n next.tests = next.tests.filter(test => test.OPTIONS.name !== 'required');\n return next;\n }\n\n nullable(isNullable = true) {\n var next = this.clone({\n nullable: isNullable !== false\n });\n return next;\n }\n\n transform(fn) {\n var next = this.clone();\n next.transforms.push(fn);\n return next;\n }\n /**\n * Adds a test function to the schema's queue of tests.\n * tests can be exclusive or non-exclusive.\n *\n * - exclusive tests, will replace any existing tests of the same name.\n * - non-exclusive: can be stacked\n *\n * If a non-exclusive test is added to a schema with an exclusive test of the same name\n * the exclusive test is removed and further tests of the same name will be stacked.\n *\n * If an exclusive test is added to a schema with non-exclusive tests of the same name\n * the previous tests are removed and further tests of the same name will replace each other.\n */\n\n\n test(...args) {\n let opts;\n\n if (args.length === 1) {\n if (typeof args[0] === 'function') {\n opts = {\n test: args[0]\n };\n } else {\n opts = args[0];\n }\n } else if (args.length === 2) {\n opts = {\n name: args[0],\n test: args[1]\n };\n } else {\n opts = {\n name: args[0],\n message: args[1],\n test: args[2]\n };\n }\n\n if (opts.message === undefined) opts.message = locale.default;\n if (typeof opts.test !== 'function') throw new TypeError('`test` is a required parameters');\n let next = this.clone();\n let validate = createValidation(opts);\n let isExclusive = opts.exclusive || opts.name && next.exclusiveTests[opts.name] === true;\n\n if (opts.exclusive) {\n if (!opts.name) throw new TypeError('Exclusive tests must provide a unique `name` identifying the test');\n }\n\n if (opts.name) next.exclusiveTests[opts.name] = !!opts.exclusive;\n next.tests = next.tests.filter(fn => {\n if (fn.OPTIONS.name === opts.name) {\n if (isExclusive) return false;\n if (fn.OPTIONS.test === validate.OPTIONS.test) return false;\n }\n\n return true;\n });\n next.tests.push(validate);\n return next;\n }\n\n when(keys, options) {\n if (!Array.isArray(keys) && typeof keys !== 'string') {\n options = keys;\n keys = '.';\n }\n\n let next = this.clone();\n let deps = toArray(keys).map(key => new Ref(key));\n deps.forEach(dep => {\n // @ts-ignore\n if (dep.isSibling) next.deps.push(dep.key);\n });\n next.conditions.push(new Condition(deps, options));\n return next;\n }\n\n typeError(message) {\n var next = this.clone();\n next._typeError = createValidation({\n message,\n name: 'typeError',\n\n test(value) {\n if (value !== undefined && !this.schema.isType(value)) return this.createError({\n params: {\n type: this.schema._type\n }\n });\n return true;\n }\n\n });\n return next;\n }\n\n oneOf(enums, message = locale.oneOf) {\n var next = this.clone();\n enums.forEach(val => {\n next._whitelist.add(val);\n\n next._blacklist.delete(val);\n });\n next._whitelistError = createValidation({\n message,\n name: 'oneOf',\n\n test(value) {\n if (value === undefined) return true;\n let valids = this.schema._whitelist;\n return valids.has(value, this.resolve) ? true : this.createError({\n params: {\n values: valids.toArray().join(', ')\n }\n });\n }\n\n });\n return next;\n }\n\n notOneOf(enums, message = locale.notOneOf) {\n var next = this.clone();\n enums.forEach(val => {\n next._blacklist.add(val);\n\n next._whitelist.delete(val);\n });\n next._blacklistError = createValidation({\n message,\n name: 'notOneOf',\n\n test(value) {\n let invalids = this.schema._blacklist;\n if (invalids.has(value, this.resolve)) return this.createError({\n params: {\n values: invalids.toArray().join(', ')\n }\n });\n return true;\n }\n\n });\n return next;\n }\n\n strip(strip = true) {\n let next = this.clone();\n next.spec.strip = strip;\n return next;\n }\n\n describe() {\n const next = this.clone();\n const {\n label,\n meta\n } = next.spec;\n const description = {\n meta,\n label,\n type: next.type,\n oneOf: next._whitelist.describe(),\n notOneOf: next._blacklist.describe(),\n tests: next.tests.map(fn => ({\n name: fn.OPTIONS.name,\n params: fn.OPTIONS.params\n })).filter((n, idx, list) => list.findIndex(c => c.name === n.name) === idx)\n };\n return description;\n }\n\n}\n// @ts-expect-error\nBaseSchema.prototype.__isYupSchema__ = true;\n\nfor (const method of ['validate', 'validateSync']) BaseSchema.prototype[`${method}At`] = function (path, value, options = {}) {\n const {\n parent,\n parentPath,\n schema\n } = getIn(this, path, value, options.context);\n return schema[method](parent && parent[parentPath], _extends({}, options, {\n parent,\n path\n }));\n};\n\nfor (const alias of ['equals', 'is']) BaseSchema.prototype[alias] = BaseSchema.prototype.oneOf;\n\nfor (const alias of ['not', 'nope']) BaseSchema.prototype[alias] = BaseSchema.prototype.notOneOf;\n\nBaseSchema.prototype.optional = BaseSchema.prototype.notRequired;","import BaseSchema from './schema';\nconst Mixed = BaseSchema;\nexport default Mixed;\nexport function create() {\n return new Mixed();\n} // XXX: this is using the Base schema so that `addMethod(mixed)` works as a base class\n\ncreate.prototype = Mixed.prototype;","export default (value => value == null);","import BaseSchema from './schema';\nimport { boolean as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nexport function create() {\n return new BooleanSchema();\n}\nexport default class BooleanSchema extends BaseSchema {\n constructor() {\n super({\n type: 'boolean'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n if (!this.isType(value)) {\n if (/^(true|1)$/i.test(String(value))) return true;\n if (/^(false|0)$/i.test(String(value))) return false;\n }\n\n return value;\n });\n });\n }\n\n _typeCheck(v) {\n if (v instanceof Boolean) v = v.valueOf();\n return typeof v === 'boolean';\n }\n\n isTrue(message = locale.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'true'\n },\n\n test(value) {\n return isAbsent(value) || value === true;\n }\n\n });\n }\n\n isFalse(message = locale.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'false'\n },\n\n test(value) {\n return isAbsent(value) || value === false;\n }\n\n });\n }\n\n}\ncreate.prototype = BooleanSchema.prototype;","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}","import { string as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport BaseSchema from './schema'; // eslint-disable-next-line\n\nlet rEmail = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-next-line\n\nlet rUrl = /^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i; // eslint-disable-next-line\n\nlet rUUID = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\n\nlet isTrimmed = value => isAbsent(value) || value === value.trim();\n\nlet objStringTag = {}.toString();\nexport function create() {\n return new StringSchema();\n}\nexport default class StringSchema extends BaseSchema {\n constructor() {\n super({\n type: 'string'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n if (this.isType(value)) return value;\n if (Array.isArray(value)) return value;\n const strValue = value != null && value.toString ? value.toString() : value;\n if (strValue === objStringTag) return value;\n return strValue;\n });\n });\n }\n\n _typeCheck(value) {\n if (value instanceof String) value = value.valueOf();\n return typeof value === 'string';\n }\n\n _isPresent(value) {\n return super._isPresent(value) && !!value.length;\n }\n\n length(length, message = locale.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n\n test(value) {\n return isAbsent(value) || value.length === this.resolve(length);\n }\n\n });\n }\n\n min(min, message = locale.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n test(value) {\n return isAbsent(value) || value.length >= this.resolve(min);\n }\n\n });\n }\n\n max(max, message = locale.max) {\n return this.test({\n name: 'max',\n exclusive: true,\n message,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value.length <= this.resolve(max);\n }\n\n });\n }\n\n matches(regex, options) {\n let excludeEmptyString = false;\n let message;\n let name;\n\n if (options) {\n if (typeof options === 'object') {\n ({\n excludeEmptyString = false,\n message,\n name\n } = options);\n } else {\n message = options;\n }\n }\n\n return this.test({\n name: name || 'matches',\n message: message || locale.matches,\n params: {\n regex\n },\n test: value => isAbsent(value) || value === '' && excludeEmptyString || value.search(regex) !== -1\n });\n }\n\n email(message = locale.email) {\n return this.matches(rEmail, {\n name: 'email',\n message,\n excludeEmptyString: true\n });\n }\n\n url(message = locale.url) {\n return this.matches(rUrl, {\n name: 'url',\n message,\n excludeEmptyString: true\n });\n }\n\n uuid(message = locale.uuid) {\n return this.matches(rUUID, {\n name: 'uuid',\n message,\n excludeEmptyString: false\n });\n } //-- transforms --\n\n\n ensure() {\n return this.default('').transform(val => val === null ? '' : val);\n }\n\n trim(message = locale.trim) {\n return this.transform(val => val != null ? val.trim() : val).test({\n message,\n name: 'trim',\n test: isTrimmed\n });\n }\n\n lowercase(message = locale.lowercase) {\n return this.transform(value => !isAbsent(value) ? value.toLowerCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n test: value => isAbsent(value) || value === value.toLowerCase()\n });\n }\n\n uppercase(message = locale.uppercase) {\n return this.transform(value => !isAbsent(value) ? value.toUpperCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n test: value => isAbsent(value) || value === value.toUpperCase()\n });\n }\n\n}\ncreate.prototype = StringSchema.prototype; //\n// String Interfaces\n//","import { number as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport BaseSchema from './schema';\n\nlet isNaN = value => value != +value;\n\nexport function create() {\n return new NumberSchema();\n}\nexport default class NumberSchema extends BaseSchema {\n constructor() {\n super({\n type: 'number'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n let parsed = value;\n\n if (typeof parsed === 'string') {\n parsed = parsed.replace(/\\s/g, '');\n if (parsed === '') return NaN; // don't use parseFloat to avoid positives on alpha-numeric strings\n\n parsed = +parsed;\n }\n\n if (this.isType(parsed)) return parsed;\n return parseFloat(parsed);\n });\n });\n }\n\n _typeCheck(value) {\n if (value instanceof Number) value = value.valueOf();\n return typeof value === 'number' && !isNaN(value);\n }\n\n min(min, message = locale.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n test(value) {\n return isAbsent(value) || value >= this.resolve(min);\n }\n\n });\n }\n\n max(max, message = locale.max) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value <= this.resolve(max);\n }\n\n });\n }\n\n lessThan(less, message = locale.lessThan) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n less\n },\n\n test(value) {\n return isAbsent(value) || value < this.resolve(less);\n }\n\n });\n }\n\n moreThan(more, message = locale.moreThan) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n more\n },\n\n test(value) {\n return isAbsent(value) || value > this.resolve(more);\n }\n\n });\n }\n\n positive(msg = locale.positive) {\n return this.moreThan(0, msg);\n }\n\n negative(msg = locale.negative) {\n return this.lessThan(0, msg);\n }\n\n integer(message = locale.integer) {\n return this.test({\n name: 'integer',\n message,\n test: val => isAbsent(val) || Number.isInteger(val)\n });\n }\n\n truncate() {\n return this.transform(value => !isAbsent(value) ? value | 0 : value);\n }\n\n round(method) {\n var _method;\n\n var avail = ['ceil', 'floor', 'round', 'trunc'];\n method = ((_method = method) == null ? void 0 : _method.toLowerCase()) || 'round'; // this exists for symemtry with the new Math.trunc\n\n if (method === 'trunc') return this.truncate();\n if (avail.indexOf(method.toLowerCase()) === -1) throw new TypeError('Only valid options for round() are: ' + avail.join(', '));\n return this.transform(value => !isAbsent(value) ? Math[method](value) : value);\n }\n\n}\ncreate.prototype = NumberSchema.prototype; //\n// Number Interfaces\n//","/* eslint-disable */\n\n/**\n *\n * Date.parse with progressive enhancement for ISO 8601 \n * NON-CONFORMANT EDITION.\n * © 2011 Colin Snover \n * Released under MIT license.\n */\n// 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm\nvar isoReg = /^(\\d{4}|[+\\-]\\d{6})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:[ T]?(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\nexport default function parseIsoDate(date) {\n var numericKeys = [1, 4, 5, 6, 7, 10, 11],\n minutesOffset = 0,\n timestamp,\n struct;\n\n if (struct = isoReg.exec(date)) {\n // avoid NaN timestamps caused by “undefined” values being passed to Date.UTC\n for (var i = 0, k; k = numericKeys[i]; ++i) struct[k] = +struct[k] || 0; // allow undefined days and months\n\n\n struct[2] = (+struct[2] || 1) - 1;\n struct[3] = +struct[3] || 1; // allow arbitrary sub-second precision beyond milliseconds\n\n struct[7] = struct[7] ? String(struct[7]).substr(0, 3) : 0; // timestamps without timezone identifiers should be considered local time\n\n if ((struct[8] === undefined || struct[8] === '') && (struct[9] === undefined || struct[9] === '')) timestamp = +new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);else {\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\n minutesOffset = struct[10] * 60 + struct[11];\n if (struct[9] === '+') minutesOffset = 0 - minutesOffset;\n }\n\n timestamp = Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]);\n }\n } else timestamp = Date.parse ? Date.parse(date) : NaN;\n\n return timestamp;\n}","// @ts-ignore\nimport isoParse from './util/isodate';\nimport { date as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport Ref from './Reference';\nimport BaseSchema from './schema';\nlet invalidDate = new Date('');\n\nlet isDate = obj => Object.prototype.toString.call(obj) === '[object Date]';\n\nexport function create() {\n return new DateSchema();\n}\nexport default class DateSchema extends BaseSchema {\n constructor() {\n super({\n type: 'date'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n if (this.isType(value)) return value;\n value = isoParse(value); // 0 is a valid timestamp equivalent to 1970-01-01T00:00:00Z(unix epoch) or before.\n\n return !isNaN(value) ? new Date(value) : invalidDate;\n });\n });\n }\n\n _typeCheck(v) {\n return isDate(v) && !isNaN(v.getTime());\n }\n\n prepareParam(ref, name) {\n let param;\n\n if (!Ref.isRef(ref)) {\n let cast = this.cast(ref);\n if (!this._typeCheck(cast)) throw new TypeError(`\\`${name}\\` must be a Date or a value that can be \\`cast()\\` to a Date`);\n param = cast;\n } else {\n param = ref;\n }\n\n return param;\n }\n\n min(min, message = locale.min) {\n let limit = this.prepareParam(min, 'min');\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n test(value) {\n return isAbsent(value) || value >= this.resolve(limit);\n }\n\n });\n }\n\n max(max, message = locale.max) {\n var limit = this.prepareParam(max, 'max');\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value <= this.resolve(limit);\n }\n\n });\n }\n\n}\nDateSchema.INVALID_DATE = invalidDate;\ncreate.prototype = DateSchema.prototype;\ncreate.INVALID_DATE = invalidDate;","import has from 'lodash/has'; // @ts-expect-error\n\nimport toposort from 'toposort';\nimport { split } from 'property-expr';\nimport Ref from '../Reference';\nimport isSchema from './isSchema';\nexport default function sortFields(fields, excludes = []) {\n let edges = [];\n let nodes = [];\n\n function addNode(depPath, key) {\n var node = split(depPath)[0];\n if (!~nodes.indexOf(node)) nodes.push(node);\n if (!~excludes.indexOf(`${key}-${node}`)) edges.push([key, node]);\n }\n\n for (const key in fields) if (has(fields, key)) {\n let value = fields[key];\n if (!~nodes.indexOf(key)) nodes.push(key);\n if (Ref.isRef(value) && value.isSibling) addNode(value.path, key);else if (isSchema(value) && 'deps' in value) value.deps.forEach(path => addNode(path, key));\n }\n\n return toposort.array(nodes, edges).reverse();\n}","function findIndex(arr, err) {\n let idx = Infinity;\n arr.some((key, ii) => {\n var _err$path;\n\n if (((_err$path = err.path) == null ? void 0 : _err$path.indexOf(key)) !== -1) {\n idx = ii;\n return true;\n }\n });\n return idx;\n}\n\nexport default function sortByKeyOrder(keys) {\n return (a, b) => {\n return findIndex(keys, a) - findIndex(keys, b);\n };\n}","function _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\nimport has from 'lodash/has';\nimport snakeCase from 'lodash/snakeCase';\nimport camelCase from 'lodash/camelCase';\nimport mapKeys from 'lodash/mapKeys';\nimport mapValues from 'lodash/mapValues';\nimport { getter } from 'property-expr';\nimport { object as locale } from './locale';\nimport sortFields from './util/sortFields';\nimport sortByKeyOrder from './util/sortByKeyOrder';\nimport runTests from './util/runTests';\nimport ValidationError from './ValidationError';\nimport BaseSchema from './schema';\n\nlet isObject = obj => Object.prototype.toString.call(obj) === '[object Object]';\n\nfunction unknown(ctx, value) {\n let known = Object.keys(ctx.fields);\n return Object.keys(value).filter(key => known.indexOf(key) === -1);\n}\n\nconst defaultSort = sortByKeyOrder([]);\nexport default class ObjectSchema extends BaseSchema {\n constructor(spec) {\n super({\n type: 'object'\n });\n this.fields = Object.create(null);\n this._sortErrors = defaultSort;\n this._nodes = [];\n this._excludedEdges = [];\n this.withMutation(() => {\n this.transform(function coerce(value) {\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value);\n } catch (err) {\n value = null;\n }\n }\n\n if (this.isType(value)) return value;\n return null;\n });\n\n if (spec) {\n this.shape(spec);\n }\n });\n }\n\n _typeCheck(value) {\n return isObject(value) || typeof value === 'function';\n }\n\n _cast(_value, options = {}) {\n var _options$stripUnknown;\n\n let value = super._cast(_value, options); //should ignore nulls here\n\n\n if (value === undefined) return this.getDefault();\n if (!this._typeCheck(value)) return value;\n let fields = this.fields;\n let strip = (_options$stripUnknown = options.stripUnknown) != null ? _options$stripUnknown : this.spec.noUnknown;\n\n let props = this._nodes.concat(Object.keys(value).filter(v => this._nodes.indexOf(v) === -1));\n\n let intermediateValue = {}; // is filled during the transform below\n\n let innerOptions = _extends({}, options, {\n parent: intermediateValue,\n __validating: options.__validating || false\n });\n\n let isChanged = false;\n\n for (const prop of props) {\n let field = fields[prop];\n let exists = has(value, prop);\n\n if (field) {\n let fieldValue;\n let inputValue = value[prop]; // safe to mutate since this is fired in sequence\n\n innerOptions.path = (options.path ? `${options.path}.` : '') + prop; // innerOptions.value = value[prop];\n\n field = field.resolve({\n value: inputValue,\n context: options.context,\n parent: intermediateValue\n });\n let fieldSpec = 'spec' in field ? field.spec : undefined;\n let strict = fieldSpec == null ? void 0 : fieldSpec.strict;\n\n if (fieldSpec == null ? void 0 : fieldSpec.strip) {\n isChanged = isChanged || prop in value;\n continue;\n }\n\n fieldValue = !options.__validating || !strict ? // TODO: use _cast, this is double resolving\n field.cast(value[prop], innerOptions) : value[prop];\n\n if (fieldValue !== undefined) {\n intermediateValue[prop] = fieldValue;\n }\n } else if (exists && !strip) {\n intermediateValue[prop] = value[prop];\n }\n\n if (intermediateValue[prop] !== value[prop]) {\n isChanged = true;\n }\n }\n\n return isChanged ? intermediateValue : value;\n }\n\n _validate(_value, opts = {}, callback) {\n let errors = [];\n let {\n sync,\n from = [],\n originalValue = _value,\n abortEarly = this.spec.abortEarly,\n recursive = this.spec.recursive\n } = opts;\n from = [{\n schema: this,\n value: originalValue\n }, ...from]; // this flag is needed for handling `strict` correctly in the context of\n // validation vs just casting. e.g strict() on a field is only used when validating\n\n opts.__validating = true;\n opts.originalValue = originalValue;\n opts.from = from;\n\n super._validate(_value, opts, (err, value) => {\n if (err) {\n if (!ValidationError.isError(err) || abortEarly) {\n return void callback(err, value);\n }\n\n errors.push(err);\n }\n\n if (!recursive || !isObject(value)) {\n callback(errors[0] || null, value);\n return;\n }\n\n originalValue = originalValue || value;\n\n let tests = this._nodes.map(key => (_, cb) => {\n let path = key.indexOf('.') === -1 ? (opts.path ? `${opts.path}.` : '') + key : `${opts.path || ''}[\"${key}\"]`;\n let field = this.fields[key];\n\n if (field && 'validate' in field) {\n field.validate(value[key], _extends({}, opts, {\n // @ts-ignore\n path,\n from,\n // inner fields are always strict:\n // 1. this isn't strict so the casting will also have cast inner values\n // 2. this is strict in which case the nested values weren't cast either\n strict: true,\n parent: value,\n originalValue: originalValue[key]\n }), cb);\n return;\n }\n\n cb(null);\n });\n\n runTests({\n sync,\n tests,\n value,\n errors,\n endEarly: abortEarly,\n sort: this._sortErrors,\n path: opts.path\n }, callback);\n });\n }\n\n clone(spec) {\n const next = super.clone(spec);\n next.fields = _extends({}, this.fields);\n next._nodes = this._nodes;\n next._excludedEdges = this._excludedEdges;\n next._sortErrors = this._sortErrors;\n return next;\n }\n\n concat(schema) {\n let next = super.concat(schema);\n let nextFields = next.fields;\n\n for (let [field, schemaOrRef] of Object.entries(this.fields)) {\n const target = nextFields[field];\n\n if (target === undefined) {\n nextFields[field] = schemaOrRef;\n } else if (target instanceof BaseSchema && schemaOrRef instanceof BaseSchema) {\n nextFields[field] = schemaOrRef.concat(target);\n }\n }\n\n return next.withMutation(() => next.shape(nextFields));\n }\n\n getDefaultFromShape() {\n let dft = {};\n\n this._nodes.forEach(key => {\n const field = this.fields[key];\n dft[key] = 'default' in field ? field.getDefault() : undefined;\n });\n\n return dft;\n }\n\n _getDefault() {\n if ('default' in this.spec) {\n return super._getDefault();\n } // if there is no default set invent one\n\n\n if (!this._nodes.length) {\n return undefined;\n }\n\n return this.getDefaultFromShape();\n }\n\n shape(additions, excludes = []) {\n let next = this.clone();\n let fields = Object.assign(next.fields, additions);\n next.fields = fields;\n next._sortErrors = sortByKeyOrder(Object.keys(fields));\n\n if (excludes.length) {\n if (!Array.isArray(excludes[0])) excludes = [excludes];\n let keys = excludes.map(([first, second]) => `${first}-${second}`);\n next._excludedEdges = next._excludedEdges.concat(keys);\n }\n\n next._nodes = sortFields(fields, next._excludedEdges);\n return next;\n }\n\n pick(keys) {\n const picked = {};\n\n for (const key of keys) {\n if (this.fields[key]) picked[key] = this.fields[key];\n }\n\n return this.clone().withMutation(next => {\n next.fields = {};\n return next.shape(picked);\n });\n }\n\n omit(keys) {\n const next = this.clone();\n const fields = next.fields;\n next.fields = {};\n\n for (const key of keys) {\n delete fields[key];\n }\n\n return next.withMutation(() => next.shape(fields));\n }\n\n from(from, to, alias) {\n let fromGetter = getter(from, true);\n return this.transform(obj => {\n if (obj == null) return obj;\n let newObj = obj;\n\n if (has(obj, from)) {\n newObj = _extends({}, obj);\n if (!alias) delete newObj[from];\n newObj[to] = fromGetter(obj);\n }\n\n return newObj;\n });\n }\n\n noUnknown(noAllow = true, message = locale.noUnknown) {\n if (typeof noAllow === 'string') {\n message = noAllow;\n noAllow = true;\n }\n\n let next = this.test({\n name: 'noUnknown',\n exclusive: true,\n message: message,\n\n test(value) {\n if (value == null) return true;\n const unknownKeys = unknown(this.schema, value);\n return !noAllow || unknownKeys.length === 0 || this.createError({\n params: {\n unknown: unknownKeys.join(', ')\n }\n });\n }\n\n });\n next.spec.noUnknown = noAllow;\n return next;\n }\n\n unknown(allow = true, message = locale.noUnknown) {\n return this.noUnknown(!allow, message);\n }\n\n transformKeys(fn) {\n return this.transform(obj => obj && mapKeys(obj, (_, key) => fn(key)));\n }\n\n camelCase() {\n return this.transformKeys(camelCase);\n }\n\n snakeCase() {\n return this.transformKeys(snakeCase);\n }\n\n constantCase() {\n return this.transformKeys(key => snakeCase(key).toUpperCase());\n }\n\n describe() {\n let base = super.describe();\n base.fields = mapValues(this.fields, value => value.describe());\n return base;\n }\n\n}\nexport function create(spec) {\n return new ObjectSchema(spec);\n}\ncreate.prototype = ObjectSchema.prototype;","function _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\nimport isAbsent from './util/isAbsent';\nimport isSchema from './util/isSchema';\nimport printValue from './util/printValue';\nimport { array as locale } from './locale';\nimport runTests from './util/runTests';\nimport ValidationError from './ValidationError';\nimport BaseSchema from './schema';\nexport function create(type) {\n return new ArraySchema(type);\n}\nexport default class ArraySchema extends BaseSchema {\n constructor(type) {\n super({\n type: 'array'\n }); // `undefined` specifically means uninitialized, as opposed to\n // \"no subtype\"\n\n this.innerType = type;\n this.withMutation(() => {\n this.transform(function (values) {\n if (typeof values === 'string') try {\n values = JSON.parse(values);\n } catch (err) {\n values = null;\n }\n return this.isType(values) ? values : null;\n });\n });\n }\n\n _typeCheck(v) {\n return Array.isArray(v);\n }\n\n get _subType() {\n return this.innerType;\n }\n\n _cast(_value, _opts) {\n const value = super._cast(_value, _opts); //should ignore nulls here\n\n\n if (!this._typeCheck(value) || !this.innerType) return value;\n let isChanged = false;\n const castArray = value.map((v, idx) => {\n const castElement = this.innerType.cast(v, _extends({}, _opts, {\n path: `${_opts.path || ''}[${idx}]`\n }));\n\n if (castElement !== v) {\n isChanged = true;\n }\n\n return castElement;\n });\n return isChanged ? castArray : value;\n }\n\n _validate(_value, options = {}, callback) {\n var _options$abortEarly, _options$recursive;\n\n let errors = [];\n let sync = options.sync;\n let path = options.path;\n let innerType = this.innerType;\n let endEarly = (_options$abortEarly = options.abortEarly) != null ? _options$abortEarly : this.spec.abortEarly;\n let recursive = (_options$recursive = options.recursive) != null ? _options$recursive : this.spec.recursive;\n let originalValue = options.originalValue != null ? options.originalValue : _value;\n\n super._validate(_value, options, (err, value) => {\n if (err) {\n if (!ValidationError.isError(err) || endEarly) {\n return void callback(err, value);\n }\n\n errors.push(err);\n }\n\n if (!recursive || !innerType || !this._typeCheck(value)) {\n callback(errors[0] || null, value);\n return;\n }\n\n originalValue = originalValue || value; // #950 Ensure that sparse array empty slots are validated\n\n let tests = new Array(value.length);\n\n for (let idx = 0; idx < value.length; idx++) {\n let item = value[idx];\n let path = `${options.path || ''}[${idx}]`; // object._validate note for isStrict explanation\n\n let innerOptions = _extends({}, options, {\n path,\n strict: true,\n parent: value,\n index: idx,\n originalValue: originalValue[idx]\n });\n\n tests[idx] = (_, cb) => innerType.validate(item, innerOptions, cb);\n }\n\n runTests({\n sync,\n path,\n value,\n errors,\n endEarly,\n tests\n }, callback);\n });\n }\n\n clone(spec) {\n const next = super.clone(spec);\n next.innerType = this.innerType;\n return next;\n }\n\n concat(schema) {\n let next = super.concat(schema);\n next.innerType = this.innerType;\n if (schema.innerType) next.innerType = next.innerType ? // @ts-expect-error Lazy doesn't have concat()\n next.innerType.concat(schema.innerType) : schema.innerType;\n return next;\n }\n\n of(schema) {\n // FIXME: this should return a new instance of array without the default to be\n let next = this.clone();\n if (!isSchema(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema not: ' + printValue(schema)); // FIXME(ts):\n\n next.innerType = schema;\n return next;\n }\n\n length(length, message = locale.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n\n test(value) {\n return isAbsent(value) || value.length === this.resolve(length);\n }\n\n });\n }\n\n min(min, message) {\n message = message || locale.min;\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n // FIXME(ts): Array\n test(value) {\n return isAbsent(value) || value.length >= this.resolve(min);\n }\n\n });\n }\n\n max(max, message) {\n message = message || locale.max;\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value.length <= this.resolve(max);\n }\n\n });\n }\n\n ensure() {\n return this.default(() => []).transform((val, original) => {\n // We don't want to return `null` for nullable schema\n if (this._typeCheck(val)) return val;\n return original == null ? [] : [].concat(original);\n });\n }\n\n compact(rejector) {\n let reject = !rejector ? v => !!v : (v, i, a) => !rejector(v, i, a);\n return this.transform(values => values != null ? values.filter(reject) : values);\n }\n\n describe() {\n let base = super.describe();\n if (this.innerType) base.innerType = this.innerType.describe();\n return base;\n }\n\n nullable(isNullable = true) {\n return super.nullable(isNullable);\n }\n\n defined() {\n return super.defined();\n }\n\n required(msg) {\n return super.required(msg);\n }\n\n}\ncreate.prototype = ArraySchema.prototype; //\n// Interfaces\n//","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { 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';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\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 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 }\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 (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 if (this.isDynamicDataChange) {\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 /**\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 setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\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.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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\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 };\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 //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\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 //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\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 }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\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 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 itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : 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 }\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 */\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","import { Point, rotateMatrix, identityMatrix, transformPointByMatrix } from '@syncfusion/ej2-drawings';\nimport { getValue } from '@syncfusion/ej2-base';\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the shape annotation object.\n * @hidden\n * @returns {void}\n */\nexport function isLineShapes(obj) {\n if (obj.shapeAnnotationType === 'Line' || obj.shapeAnnotationType === 'LineWidthArrowHead'\n || obj.shapeAnnotationType === 'Distance' || obj.shapeAnnotationType === 'Polygon') {\n return true;\n }\n return false;\n}\n/**\n * @param {PdfAnnotationBaseModel | PdfFormFieldBaseModel} obj - Specified the annotation or form fields object.\n * @param {DrawingElement} element - Specified the annotation drawing element.\n * @returns {void}\n * @hidden\n */\nexport function setElementStype(obj, element) {\n if (obj && element) {\n if (obj.formFieldAnnotationType) {\n if (obj.id.indexOf('diagram_helper') !== -1) {\n element.style.fill = 'transparent';\n element.style.strokeWidth = 1;\n element.style.strokeDashArray = obj.borderDashArray;\n }\n else {\n element.style.fill = 'transparent';\n element.style.strokeWidth = 0;\n }\n }\n else {\n var fillColor = (obj.fillColor === '#ffffff00' ? 'transparent' : obj.fillColor);\n element.style.fill = fillColor ? fillColor : 'white';\n // eslint-disable-next-line max-len\n element.style.strokeColor = obj.strokeColor ? obj.strokeColor : obj.borderColor;\n // eslint-disable-next-line max-len\n element.style.color = obj.strokeColor ? obj.strokeColor : obj.borderColor;\n element.style.strokeWidth = obj.thickness;\n if (obj.shapeAnnotationType === 'Image' || obj.shapeAnnotationType === 'SignatureText' || obj.shapeAnnotationType === 'SignatureImage') {\n element.style.strokeWidth = 0;\n }\n element.style.strokeDashArray = obj.borderDashArray;\n element.style.opacity = obj.opacity;\n }\n }\n}\n/**\n * @param {PointModel[]} points - Specified the annotation points value.\n * @hidden\n * @returns {number} - Returns the points length.\n */\nexport function findPointsLength(points) {\n var length = 0;\n for (var i = 0; i < points.length - 1; i++) {\n length += Point.findLength(points[i], points[i + 1]);\n }\n return length;\n}\n/**\n * @param {PointModel[]} points - Specified the annotation points value.\n * @hidden\n * @returns {number} - Returns the points length.\n */\nexport function findPerimeterLength(points) {\n var length = Point.getLengthFromListOfPoints(points);\n return length;\n}\n/**\n * @private\n * @param {DrawingElement} element - Specified the drawing element.\n * @param {Transforms} transform - Specified the transform value.\n * @returns {BaseAttributes} - Returns the base attributes value.\n */\nexport function getBaseShapeAttributes(element, transform) {\n var baseShapeAttributes = {\n width: element.actualSize.width, height: element.actualSize.height,\n x: element.offsetX - element.actualSize.width * element.pivot.x + 0.5,\n y: element.offsetY - element.actualSize.height * element.pivot.y + 0.5,\n angle: element.rotateAngle + element.parentTransform, fill: element.style.fill, stroke: element.style.strokeColor,\n pivotX: element.pivot.x, pivotY: element.pivot.y, strokeWidth: 1,\n opacity: element.style.opacity, dashArray: element.style.strokeDashArray || '',\n visible: element.visible, id: element.id\n };\n if (transform) {\n baseShapeAttributes.x += transform.tx;\n baseShapeAttributes.y += transform.ty;\n }\n return baseShapeAttributes;\n}\n/**\n * Get function\n *\n * @private\n * @param {Function | string} value - Type of the function.\n * @returns {Function} - Returns the function.\n */\nexport function getFunction(value) {\n if (value !== undefined) {\n if (typeof value === 'string') {\n value = getValue(value, window);\n }\n }\n return value;\n}\n/**\n * @private\n * @param {any} obj - Specified the annotation object.\n * @param {Function | string} additionalProp - Specified the annotation additional properties.\n * @param {string} key - Specified the annotation key value.\n * @returns {Object} - Returns the cloned object.\n */\n// eslint-disable-next-line\nexport function cloneObject(obj, additionalProp, key) {\n // eslint-disable-next-line\n var newObject = {};\n var keys = 'properties';\n var prop = 'propName';\n if (obj) {\n key = obj[prop];\n var sourceObject = obj[keys] || obj;\n var properties = [];\n properties = properties.concat(Object.keys(sourceObject));\n var customProperties = [];\n properties.push('version');\n if (key) {\n var propAdditional = getFunction(additionalProp);\n if (propAdditional) {\n customProperties = propAdditional(key);\n }\n else {\n customProperties = [];\n }\n properties = properties.concat(customProperties);\n }\n var internalProp = getInternalProperties(key);\n properties = properties.concat(internalProp);\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var property = properties_1[_i];\n if (property !== 'historyManager') {\n if (property !== 'wrapper') {\n // eslint-disable-next-line\n var isEventEmmitter = obj[property] && obj.hasOwnProperty('observers') ? true : false;\n if (!isEventEmmitter) {\n if (obj[property] instanceof Array) {\n newObject[property] = cloneArray((internalProp.indexOf(property) === -1 && obj[keys]) ? obj[keys][property] : obj[property], additionalProp, property);\n }\n else if (obj[property] instanceof Array === false && obj[property] instanceof HTMLElement) {\n newObject[property] = obj[property].cloneNode(true).innerHtml;\n }\n else if (obj[property] instanceof Array === false && obj[property] instanceof Object) {\n newObject[property] = cloneObject((internalProp.indexOf(property) === -1 && obj[keys]) ? obj[keys][property] : obj[property]);\n }\n else {\n newObject[property] = obj[property];\n }\n }\n }\n else {\n if (obj[property]) {\n newObject[property] = {\n actualSize: {\n width: obj[property].actualSize.width, height: obj[property].actualSize.height\n }, offsetX: obj[property].offsetX, offsetY: obj[property].offsetY\n };\n }\n }\n }\n }\n }\n return newObject;\n}\n/**\n * @private\n * @param {Object[]} sourceArray - Specified the annotation source collections.\n * @param {Function | string} additionalProp - Specified the annotation additional properties.\n * @param {string} key - Specified the annotation key value.\n * @returns {Object[]} - Returns the cloned object array.\n */\nexport function cloneArray(sourceArray, additionalProp, key) {\n var clonedArray;\n if (sourceArray) {\n clonedArray = [];\n for (var i = 0; i < sourceArray.length; i++) {\n if (sourceArray[i] instanceof Array) {\n clonedArray.push(sourceArray[i]);\n }\n else if (sourceArray[i] instanceof Object) {\n clonedArray.push(cloneObject(sourceArray[i], additionalProp, key));\n }\n else {\n clonedArray.push(sourceArray[i]);\n }\n }\n }\n return clonedArray;\n}\n/**\n * @private\n * @param {string} propName - Specified the annotation property name.\n * @returns {string[]} - Returns the internal properties.\n */\nexport function getInternalProperties(propName) {\n switch (propName) {\n case 'nodes':\n case 'children':\n return ['inEdges', 'outEdges', 'parentId', 'processId', 'nodeId', 'umlIndex', 'isPhase', 'isLane'];\n case 'connectors':\n return ['parentId'];\n case 'annotation':\n return ['nodeId'];\n case 'annotations':\n return ['nodeId'];\n case 'shape':\n return ['hasHeader'];\n }\n return [];\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {string} position - Specified the annotation position.\n * @hidden\n * @returns {Leader} - Returns the leader value.\n */\nexport function isLeader(obj, position) {\n var rotatedPoint;\n if (obj.shapeAnnotationType === 'Distance') {\n var leaderCount = 0;\n var newPoint1 = void 0;\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var angle = Point.findAngle(obj.sourcePoint, obj.targetPoint);\n // eslint-disable-next-line\n var segment = obj.wrapper.children[i];\n if (segment.id.indexOf('leader') > -1) {\n var center = obj.wrapper.children[0].bounds.center;\n if (leaderCount === 0) {\n newPoint1 = { x: obj.sourcePoint.x, y: obj.sourcePoint.y - obj.leaderHeight };\n center = obj.sourcePoint;\n }\n else {\n newPoint1 = { x: obj.targetPoint.x, y: obj.targetPoint.y - obj.leaderHeight };\n center = obj.targetPoint;\n }\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, center.x, center.y);\n rotatedPoint = transformPointByMatrix(matrix, { x: newPoint1.x, y: newPoint1.y });\n if (position === 'Leader' + leaderCount) {\n return { leader: 'leader' + leaderCount, point: rotatedPoint };\n }\n leaderCount++;\n }\n }\n }\n return { leader: '', point: rotatedPoint };\n}\n","/**\n * public Enum for `PdfFontStyle`.\n * @private\n */\nexport var PdfFontStyle;\n(function (PdfFontStyle) {\n /**\n * Specifies the type of `Regular`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Regular\"] = 0] = \"Regular\";\n /**\n * Specifies the type of `Bold`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Bold\"] = 1] = \"Bold\";\n /**\n * Specifies the type of `Italic`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Italic\"] = 2] = \"Italic\";\n /**\n * Specifies the type of `Underline`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Underline\"] = 4] = \"Underline\";\n /**\n * Specifies the type of `Strikeout`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Strikeout\"] = 8] = \"Strikeout\";\n})(PdfFontStyle || (PdfFontStyle = {}));\n/**\n * Specifies the font family from the standard font.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * ```\n */\nexport var PdfFontFamily;\n(function (PdfFontFamily) {\n /**\n * Specifies the `Helvetica` font.\n */\n PdfFontFamily[PdfFontFamily[\"Helvetica\"] = 0] = \"Helvetica\";\n /**\n * Specifies the `Courier` font.\n */\n PdfFontFamily[PdfFontFamily[\"Courier\"] = 1] = \"Courier\";\n /**\n * Specifies the `TimesRoman` font.\n */\n PdfFontFamily[PdfFontFamily[\"TimesRoman\"] = 2] = \"TimesRoman\";\n /**\n * Specifies the `Symbol` font.\n */\n PdfFontFamily[PdfFontFamily[\"Symbol\"] = 3] = \"Symbol\";\n /**\n * Specifies the `ZapfDingbats` font.\n */\n PdfFontFamily[PdfFontFamily[\"ZapfDingbats\"] = 4] = \"ZapfDingbats\";\n})(PdfFontFamily || (PdfFontFamily = {}));\n/**\n * public Enum for `PdfFontType`.\n * @private\n */\nexport var PdfFontType;\n(function (PdfFontType) {\n /**\n * Specifies the type of `Standard`.\n * @private\n */\n PdfFontType[PdfFontType[\"Standard\"] = 0] = \"Standard\";\n /**\n * Specifies the type of `TrueType`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueType\"] = 1] = \"TrueType\";\n /**\n * Specifies the type of `TrueTypeEmbedded`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueTypeEmbedded\"] = 2] = \"TrueTypeEmbedded\";\n})(PdfFontType || (PdfFontType = {}));\n/**\n * public Enum for `PdfWordWrapType`.\n * @private\n */\nexport var PdfWordWrapType;\n(function (PdfWordWrapType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Word`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Word\"] = 1] = \"Word\";\n /**\n * Specifies the type of `WordOnly`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"WordOnly\"] = 2] = \"WordOnly\";\n /**\n * Specifies the type of `Character`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Character\"] = 3] = \"Character\";\n})(PdfWordWrapType || (PdfWordWrapType = {}));\n/**\n * public Enum for `PdfSubSuperScript`.\n * @private\n */\nexport var PdfSubSuperScript;\n(function (PdfSubSuperScript) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `SuperScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SuperScript\"] = 1] = \"SuperScript\";\n /**\n * Specifies the type of `SubScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SubScript\"] = 2] = \"SubScript\";\n})(PdfSubSuperScript || (PdfSubSuperScript = {}));\n/**\n * public Enum for `FontEncoding`.\n * @private\n */\nexport var FontEncoding;\n(function (FontEncoding) {\n /**\n * Specifies the type of `Unknown`.\n * @private\n */\n FontEncoding[FontEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `StandardEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"StandardEncoding\"] = 1] = \"StandardEncoding\";\n /**\n * Specifies the type of `MacRomanEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacRomanEncoding\"] = 2] = \"MacRomanEncoding\";\n /**\n * Specifies the type of `MacExpertEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacExpertEncoding\"] = 3] = \"MacExpertEncoding\";\n /**\n * Specifies the type of `WinAnsiEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"WinAnsiEncoding\"] = 4] = \"WinAnsiEncoding\";\n /**\n * Specifies the type of `PdfDocEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"PdfDocEncoding\"] = 5] = \"PdfDocEncoding\";\n /**\n * Specifies the type of `IdentityH`.\n * @private\n */\n FontEncoding[FontEncoding[\"IdentityH\"] = 6] = \"IdentityH\";\n})(FontEncoding || (FontEncoding = {}));\n/**\n * public Enum for `TtfCmapFormat`.\n * @private\n */\nexport var TtfCmapFormat;\n(function (TtfCmapFormat) {\n /**\n * This is the Apple standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Apple\"] = 0] = \"Apple\";\n /**\n * This is the Microsoft standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Microsoft\"] = 4] = \"Microsoft\";\n /**\n * Format 6: Trimmed table mapping.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Trimmed\"] = 6] = \"Trimmed\";\n})(TtfCmapFormat || (TtfCmapFormat = {}));\n/**\n * Enumerator that implements CMAP encodings.\n * @private\n */\nexport var TtfCmapEncoding;\n(function (TtfCmapEncoding) {\n /**\n * Unknown encoding.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * When building a symbol font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Symbol\"] = 1] = \"Symbol\";\n /**\n * When building a Unicode font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unicode\"] = 2] = \"Unicode\";\n /**\n * For font that will be used on a Macintosh.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Macintosh\"] = 3] = \"Macintosh\";\n})(TtfCmapEncoding || (TtfCmapEncoding = {}));\n/**\n * Ttf platform ID.\n * @private\n */\nexport var TtfPlatformID;\n(function (TtfPlatformID) {\n /**\n * Apple platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"AppleUnicode\"] = 0] = \"AppleUnicode\";\n /**\n * Macintosh platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Macintosh\"] = 1] = \"Macintosh\";\n /**\n * Iso platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Iso\"] = 2] = \"Iso\";\n /**\n * Microsoft platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Microsoft\"] = 3] = \"Microsoft\";\n})(TtfPlatformID || (TtfPlatformID = {}));\n/**\n * Microsoft encoding ID.\n * @private\n */\nexport var TtfMicrosoftEncodingID;\n(function (TtfMicrosoftEncodingID) {\n /**\n * Undefined encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Undefined\"] = 0] = \"Undefined\";\n /**\n * Unicode encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Unicode\"] = 1] = \"Unicode\";\n})(TtfMicrosoftEncodingID || (TtfMicrosoftEncodingID = {}));\n/**\n * Macintosh encoding ID.\n * @private\n */\nexport var TtfMacintoshEncodingID;\n(function (TtfMacintoshEncodingID) {\n /**\n * Roman encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Roman\"] = 0] = \"Roman\";\n /**\n * Japanese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Japanese\"] = 1] = \"Japanese\";\n /**\n * Chinese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Chinese\"] = 2] = \"Chinese\";\n})(TtfMacintoshEncodingID || (TtfMacintoshEncodingID = {}));\n/**\n * Enumerator that implements font descriptor flags.\n * @private\n */\nexport var FontDescriptorFlags;\n(function (FontDescriptorFlags) {\n /**\n * All glyphs have the same width (as opposed to proportional or variable-pitch fonts, which have different widths).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"FixedPitch\"] = 1] = \"FixedPitch\";\n /**\n * Glyphs have serifs, which are short strokes drawn at an angle on the top and\n * bottom of glyph stems (as opposed to sans serif fonts, which do not).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Serif\"] = 2] = \"Serif\";\n /**\n * Font contains glyphs outside the Adobe standard Latin character set. The\n * flag and the nonsymbolic flag cannot both be set or both be clear.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Symbolic\"] = 4] = \"Symbolic\";\n /**\n * Glyphs resemble cursive handwriting.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Script\"] = 8] = \"Script\";\n /**\n * Font uses the Adobe standard Latin character set or a subset of it.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Nonsymbolic\"] = 32] = \"Nonsymbolic\";\n /**\n * Glyphs have dominant vertical strokes that are slanted.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Italic\"] = 64] = \"Italic\";\n /**\n * Bold font.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"ForceBold\"] = 262144] = \"ForceBold\";\n})(FontDescriptorFlags || (FontDescriptorFlags = {}));\n/**\n * true type font composite glyph flags.\n * @private\n */\nexport var TtfCompositeGlyphFlags;\n(function (TtfCompositeGlyphFlags) {\n /**\n * The Arg1And2AreWords.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Arg1And2AreWords\"] = 1] = \"Arg1And2AreWords\";\n /**\n * The ArgsAreXyValues.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"ArgsAreXyValues\"] = 2] = \"ArgsAreXyValues\";\n /**\n * The RoundXyToGrid.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"RoundXyToGrid\"] = 4] = \"RoundXyToGrid\";\n /**\n * The WeHaveScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveScale\"] = 8] = \"WeHaveScale\";\n /**\n * The Reserved.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Reserved\"] = 16] = \"Reserved\";\n /**\n * The MoreComponents.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"MoreComponents\"] = 32] = \"MoreComponents\";\n /**\n * The WeHaveAnXyScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveAnXyScale\"] = 64] = \"WeHaveAnXyScale\";\n /**\n * The WeHaveTwoByTwo\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveTwoByTwo\"] = 128] = \"WeHaveTwoByTwo\";\n /**\n * The WeHaveInstructions.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveInstructions\"] = 256] = \"WeHaveInstructions\";\n /**\n * The UseMyMetrics.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"UseMyMetrics\"] = 512] = \"UseMyMetrics\";\n})(TtfCompositeGlyphFlags || (TtfCompositeGlyphFlags = {}));\n","import { 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 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 {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\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 /* eslint-disable-next-line jsx-a11y/anchor-has-content */\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.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\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 sensitive,\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 sensitive,\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 sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\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, args.element);\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, element) {\n if (element === void 0) { element = null; }\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 var isNotFocused = element != null ? element !== document.activeElement : true;\n if (isNotFocused) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\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, element);\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","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ReactCSS = exports.loop = exports.handleActive = exports.handleHover = exports.hover = undefined;\n\nvar _flattenNames = require('./flattenNames');\n\nvar _flattenNames2 = _interopRequireDefault(_flattenNames);\n\nvar _mergeClasses = require('./mergeClasses');\n\nvar _mergeClasses2 = _interopRequireDefault(_mergeClasses);\n\nvar _autoprefix = require('./autoprefix');\n\nvar _autoprefix2 = _interopRequireDefault(_autoprefix);\n\nvar _hover2 = require('./components/hover');\n\nvar _hover3 = _interopRequireDefault(_hover2);\n\nvar _active = require('./components/active');\n\nvar _active2 = _interopRequireDefault(_active);\n\nvar _loop2 = require('./loop');\n\nvar _loop3 = _interopRequireDefault(_loop2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.hover = _hover3.default;\nexports.handleHover = _hover3.default;\nexports.handleActive = _active2.default;\nexports.loop = _loop3.default;\nvar ReactCSS = exports.ReactCSS = function ReactCSS(classes) {\n for (var _len = arguments.length, activations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n activations[_key - 1] = arguments[_key];\n }\n\n var activeNames = (0, _flattenNames2.default)(activations);\n var merged = (0, _mergeClasses2.default)(classes, activeNames);\n return (0, _autoprefix2.default)(merged);\n};\n\nexports.default = ReactCSS;","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","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","export function shallowEqual(\n objA: T,\n objB: T,\n compare?: (a: T, b: T, key?: string) => boolean | void,\n compareContext?: any\n) {\n var compareResult = compare\n ? compare.call(compareContext, objA, objB)\n : void 0;\n if (compareResult !== void 0) {\n return !!compareResult;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = (objA as any)[key];\n var valueB = (objB as any)[key];\n\n compareResult = compare\n ? compare.call(compareContext, valueA, valueB, key)\n : void 0;\n\n if (\n compareResult === false ||\n (compareResult === void 0 && valueA !== valueB)\n ) {\n return false;\n }\n }\n\n return true;\n}\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 isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n INIT: '@@redux/INIT'\n\n /**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n};export default function createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n var unexpectedKeyCache = void 0;\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError = void 0;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}","function bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(undefined, arguments));\n };\n });\n}","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\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}","import { unstable_capitalize as capitalize } from '@mui/utils';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n return path.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n}\n\nfunction getValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n\n if (transform) {\n value = transform(value);\n }\n\n return value;\n}\n\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n\n if (cssProperty === false) {\n return value;\n }\n\n return {\n [cssProperty]: value\n };\n };\n\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\n\nexport default style;","/**\n * Matrix module is used to transform points based on offsets, angle\n */\n/** @private */\nexport var MatrixTypes;\n(function (MatrixTypes) {\n MatrixTypes[MatrixTypes[\"Identity\"] = 0] = \"Identity\";\n MatrixTypes[MatrixTypes[\"Translation\"] = 1] = \"Translation\";\n MatrixTypes[MatrixTypes[\"Scaling\"] = 2] = \"Scaling\";\n MatrixTypes[MatrixTypes[\"Unknown\"] = 4] = \"Unknown\";\n})(MatrixTypes || (MatrixTypes = {}));\n/** @private */\nvar Matrix = /** @class */ (function () {\n function Matrix(m11, m12, m21, m22, offsetX, offsetY, type) {\n this.m11 = m11;\n this.m12 = m12;\n this.m21 = m21;\n this.m22 = m22;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n // if (type === undefined) {\n // this.type = MatrixTypes.Unknown;\n // } else {\n // this.type = type;\n // }\n this.type = type;\n }\n return Matrix;\n}());\nexport { Matrix };\n/** @private */\nexport function identityMatrix() {\n return new Matrix(1, 0, 0, 1, 0, 0, MatrixTypes.Identity);\n}\n/** @private */\nexport function transformPointByMatrix(matrix, point) {\n var pt = multiplyPoint(matrix, point.x, point.y);\n return { x: Math.round(pt.x * 100) / 100, y: Math.round(pt.y * 100) / 100 };\n}\n/** @private */\nexport function transformPointsByMatrix(matrix, points) {\n var transformedPoints = [];\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n transformedPoints.push(transformPointByMatrix(matrix, point));\n }\n return transformedPoints;\n}\n/** @private */\nexport function rotateMatrix(matrix, angle, centerX, centerY) {\n angle %= 360.0;\n multiplyMatrix(matrix, createRotationRadians(angle * 0.017453292519943295, centerX ? centerX : 0, centerY ? centerY : 0));\n}\n/** @private */\nexport function scaleMatrix(matrix, scaleX, scaleY, centerX, centerY) {\n if (centerX === void 0) { centerX = 0; }\n if (centerY === void 0) { centerY = 0; }\n multiplyMatrix(matrix, createScaling(scaleX, scaleY, centerX, centerY));\n}\n/** @private */\nexport function translateMatrix(matrix, offsetX, offsetY) {\n if (matrix.type & MatrixTypes.Identity) {\n matrix.type = MatrixTypes.Translation;\n setMatrix(matrix, 1.0, 0.0, 0.0, 1.0, offsetX, offsetY);\n return;\n }\n if (matrix.type & MatrixTypes.Unknown) {\n matrix.offsetX += offsetX;\n matrix.offsetY += offsetY;\n return;\n }\n matrix.offsetX += offsetX;\n matrix.offsetY += offsetY;\n matrix.type |= MatrixTypes.Translation;\n}\n/** @private */\nfunction createScaling(scaleX, scaleY, centerX, centerY) {\n var result = identityMatrix();\n result.type = !(centerX || centerY) ? MatrixTypes.Scaling : MatrixTypes.Scaling | MatrixTypes.Translation;\n setMatrix(result, scaleX, 0.0, 0.0, scaleY, centerX - scaleX * centerX, centerY - scaleY * centerY);\n return result;\n}\n/** @private */\nfunction createRotationRadians(angle, centerX, centerY) {\n var result = identityMatrix();\n var num = Math.sin(angle);\n var num2 = Math.cos(angle);\n var offsetX = centerX * (1.0 - num2) + centerY * num;\n var offsetY = centerY * (1.0 - num2) - centerX * num;\n result.type = MatrixTypes.Unknown;\n setMatrix(result, num2, num, -num, num2, offsetX, offsetY);\n return result;\n}\n/** @private */\nfunction multiplyPoint(matrix, x, y) {\n switch (matrix.type) {\n case MatrixTypes.Identity: break;\n case MatrixTypes.Translation:\n x += matrix.offsetX;\n y += matrix.offsetY;\n break;\n case MatrixTypes.Scaling:\n x *= matrix.m11;\n y *= matrix.m22;\n break;\n case MatrixTypes.Translation | MatrixTypes.Scaling:\n x *= matrix.m11;\n x += matrix.offsetX;\n y *= matrix.m22;\n y += matrix.offsetY;\n break;\n default:\n var num = y * matrix.m21 + matrix.offsetX;\n var num2 = x * matrix.m12 + matrix.offsetY;\n x *= matrix.m11;\n x += num;\n y *= matrix.m22;\n y += num2;\n break;\n }\n return { x: x, y: y };\n}\n/** @private */\nexport function multiplyMatrix(matrix1, matrix2) {\n var type = matrix1.type;\n var type2 = matrix2.type;\n if (type2 === MatrixTypes.Identity) {\n return;\n }\n if (type === MatrixTypes.Identity) {\n assignMatrix(matrix1, matrix2);\n matrix1.type = matrix2.type;\n return;\n }\n if (type2 === MatrixTypes.Translation) {\n matrix1.offsetX += matrix2.offsetX;\n matrix1.offsetY += matrix2.offsetY;\n if (type !== MatrixTypes.Unknown) {\n matrix1.type |= MatrixTypes.Translation;\n }\n return;\n }\n if (type !== MatrixTypes.Translation) {\n var num = type << 4 | type2;\n switch (num) {\n case 34:\n matrix1.m11 *= matrix2.m11;\n matrix1.m22 *= matrix2.m22;\n return;\n case 35:\n matrix1.m11 *= matrix2.m11;\n matrix1.m22 *= matrix2.m22;\n matrix1.offsetX = matrix2.offsetX;\n matrix1.offsetY = matrix2.offsetY;\n matrix1.type = (MatrixTypes.Translation | MatrixTypes.Scaling);\n return;\n case 36: break;\n default:\n {\n switch (num) {\n case 50:\n matrix1.m11 *= matrix2.m11;\n matrix1.m22 *= matrix2.m22;\n matrix1.offsetX *= matrix2.m11;\n matrix1.offsetY *= matrix2.m22;\n return;\n case 51:\n matrix1.m11 *= matrix2.m11;\n matrix1.m22 *= matrix2.m22;\n matrix1.offsetX = matrix2.m11 * matrix1.offsetX + matrix2.offsetX;\n matrix1.offsetY = matrix2.m22 * matrix1.offsetY + matrix2.offsetY;\n return;\n case 52: break;\n default:\n switch (num) {\n case 66:\n case 67:\n case 68: break;\n default: return;\n }\n break;\n }\n break;\n }\n }\n var result = identityMatrix();\n var m11New = matrix1.m11 * matrix2.m11 + matrix1.m12 * matrix2.m21;\n var m12New = matrix1.m11 * matrix2.m12 + matrix1.m12 * matrix2.m22;\n var m21New = matrix1.m21 * matrix2.m11 + matrix1.m22 * matrix2.m21;\n var m22New = matrix1.m21 * matrix2.m12 + matrix1.m22 * matrix2.m22;\n var offsetX_1 = matrix1.offsetX * matrix2.m11 + matrix1.offsetY * matrix2.m21 + matrix2.offsetX;\n var offsetY_1 = matrix1.offsetX * matrix2.m12 + matrix1.offsetY * matrix2.m22 + matrix2.offsetY;\n setMatrix(result, m11New, m12New, m21New, m22New, offsetX_1, offsetY_1);\n if (result.m21 || result.m12) {\n result.type = MatrixTypes.Unknown;\n }\n else {\n if (result.m11 && result.m11 !== 1.0 || result.m22 && result.m22 !== 1.0) {\n result.type = MatrixTypes.Scaling;\n }\n if (result.offsetX || result.offsetY) {\n result.type |= MatrixTypes.Translation;\n }\n if ((result.type & (MatrixTypes.Translation | MatrixTypes.Scaling)) === MatrixTypes.Identity) {\n result.type = MatrixTypes.Identity;\n }\n result.type = MatrixTypes.Scaling | MatrixTypes.Translation;\n }\n assignMatrix(matrix1, result);\n matrix1.type = result.type;\n return;\n }\n var offsetX = matrix1.offsetX;\n var offsetY = matrix1.offsetY;\n matrix1.offsetX = offsetX * matrix2.m11 + offsetY * matrix2.m21 + matrix2.offsetX;\n matrix1.offsetY = offsetX * matrix2.m12 + offsetY * matrix2.m22 + matrix2.offsetY;\n if (type2 === MatrixTypes.Unknown) {\n matrix1.type = MatrixTypes.Unknown;\n return;\n }\n matrix1.type = (MatrixTypes.Translation | MatrixTypes.Scaling);\n}\n/** @private */\nfunction setMatrix(mat, m11, m12, m21, m22, x, y) {\n mat.m11 = m11;\n mat.m12 = m12;\n mat.m21 = m21;\n mat.m22 = m22;\n mat.offsetX = x;\n mat.offsetY = y;\n}\n/** @private */\nfunction assignMatrix(matrix1, matrix2) {\n matrix1.m11 = matrix2.m11;\n matrix1.m12 = matrix2.m12;\n matrix1.m21 = matrix2.m21;\n matrix1.m22 = matrix2.m22;\n matrix1.offsetX = matrix2.offsetX;\n matrix1.offsetY = matrix2.offsetY;\n matrix1.type = matrix2.type;\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","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\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\nexport default createNamedContext;\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 HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\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 }\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.js\";\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 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.js\";\nimport matchPath from \"./matchPath.js\";\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.js\";\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.js\";\nimport matchPath from \"./matchPath.js\";\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 hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\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 HistoryContext from \"./HistoryContext.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(HistoryContext);\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 const location = useLocation();\n const match = useContext(Context).match;\n\n return path ? matchPath(location.pathname, path) : match;\n}\n","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import * as React from 'react';\nimport { MuiPickersAdapterContext } from '../../LocalizationProvider/LocalizationProvider';\nexport const useLocalizationContext = () => {\n const localization = React.useContext(MuiPickersAdapterContext);\n\n if (localization === null) {\n throw new Error('MUI: Can not find utils in context. It looks like you forgot to wrap your component in LocalizationProvider, or pass dateAdapter prop directly.');\n }\n\n return localization;\n};\nexport const useUtils = () => useLocalizationContext().utils;\nexport const useDefaultDates = () => useLocalizationContext().defaultDates;\nexport const useLocaleText = () => useLocalizationContext().localeText;\nexport const useNow = () => {\n const utils = useUtils();\n const now = React.useRef(utils.date());\n return now.current;\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","/**\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","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}","/* 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 sortBy: 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 = (componentInstance &&\n (componentInstance.getModuleName() == \"listview\" || componentInstance.getModuleName() == \"multiselect\")) ? curOpt.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 = compileTemplate(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 if (componentInstance && componentInstance.getModuleName() != \"listview\") {\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 append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() != \"listview\") {\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 else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), 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 = compileTemplate(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 if (componentInstance && componentInstance.getModuleName() != \"listview\") {\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 else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), 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 = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() != \"listview\") {\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 {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() != \"listview\") {\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 append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), 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}\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\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 { randomId, Point } from '@syncfusion/ej2-drawings';\nimport { rotatePoint } from '@syncfusion/ej2-drawings';\nimport { Rect } from '@syncfusion/ej2-drawings';\nimport { transformPointByMatrix, rotateMatrix, identityMatrix } from '@syncfusion/ej2-drawings';\nimport { TextElement } from '@syncfusion/ej2-drawings';\nimport { Selector } from './selector';\nimport { findActiveElement } from './action';\nimport { cloneObject, isLineShapes } from './drawing-util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { updatePerimeterLabel } from './connector-util';\nimport { Browser } from '@syncfusion/ej2-base';\n/**\n * Defines the interactive tools\n *\n * @hidden\n */\nvar ToolBase = /** @class */ (function () {\n /**\n * Initializes the tool\n *\n * @param {PdfViewer} pdfViewer - Specified the pdfviewer component.\n * @param {PdfViewerBase} pdfViewerBase - Specified the pdfViewer base component.\n * @param {boolean} protectChange - Set the default value as false.\n */\n function ToolBase(pdfViewer, pdfViewerBase, protectChange) {\n if (protectChange === void 0) { protectChange = false; }\n /**\n * Command that is corresponding to the current action\n */\n this.commandHandler = null;\n /**\n * Sets/Gets whether the interaction is being done\n */\n this.inAction = false;\n /**\n * Sets/Gets the protect change\n */\n this.pdfViewerBase = null;\n /**\n * Sets/Gets the current element that is under mouse\n */\n /** @private */\n this.currentElement = null;\n /** @private */\n this.blocked = false;\n this.isTooltipVisible = false;\n /** @private */\n this.childTable = {};\n /** @private */\n this.helper = undefined;\n /**\n * Sets/Gets the previous object when mouse down\n */\n this.undoElement = { annotations: [] };\n this.undoParentElement = { annotations: [] };\n this.commandHandler = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param {IElement} currentElement - Specified the current element.\n * @returns {void}\n */\n ToolBase.prototype.startAction = function (currentElement) {\n this.currentElement = currentElement;\n this.inAction = true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse up event arguments.\n * @returns {void}\n */\n ToolBase.prototype.mouseDown = function (args) {\n this.currentElement = args.source;\n this.startPosition = this.currentPosition = this.prevPosition = args.position;\n this.isTooltipVisible = true;\n this.startAction(args.source);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse up event arguments.\n * @returns {boolean} - Returns true or false.\n */\n ToolBase.prototype.mouseMove = function (args) {\n this.currentPosition = args.position;\n //this.currentElement = currentElement;\n this.prevPageId = this.pdfViewerBase.activeElements.activePageID;\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse up event arguments.\n * @returns {void}\n */\n ToolBase.prototype.mouseUp = function (args) {\n this.currentPosition = args.position;\n // this.currentElement = currentElement;\n this.isTooltipVisible = false;\n //At the end\n this.endAction();\n this.helper = null;\n };\n ToolBase.prototype.endAction = function () {\n //remove helper\n if (this.commandHandler) {\n this.commandHandler.tool = '';\n if (this.helper) {\n this.commandHandler.remove(this.helper);\n }\n }\n this.commandHandler = null;\n this.currentElement = null;\n this.currentPosition = null;\n this.inAction = false;\n this.blocked = false;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse wheel event arguments.\n * @returns {void}\n */\n ToolBase.prototype.mouseWheel = function (args) {\n this.currentPosition = args.position;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse leave event arguments.\n * @returns {void}\n */\n ToolBase.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n // eslint-disable-next-line\n ToolBase.prototype.updateSize = function (shape, startPoint, endPoint, corner, initialBounds, angle, isMouseUp) {\n var zoom = this.commandHandler.viewerBase.getZoomFactor();\n var difx = this.currentPosition.x / zoom - this.startPosition.x / zoom;\n var dify = this.currentPosition.y / zoom - this.startPosition.y / zoom;\n var rotateAngle = (shape instanceof TextElement) ? angle : shape.rotateAngle;\n var matrix = identityMatrix();\n rotateMatrix(matrix, -rotateAngle, 0, 0);\n var deltaWidth = 0;\n var deltaHeight = 0;\n var diff;\n var width = (shape instanceof TextElement) ? shape.actualSize.width : shape.wrapper.bounds.width;\n var height = (shape instanceof TextElement) ? shape.actualSize.height : shape.wrapper.bounds.height;\n // eslint-disable-next-line\n var obj = shape;\n if (!shape.formFieldAnnotationType) {\n if (!shape.annotName && !shape.shapeAnnotationType) {\n if (shape) {\n // eslint-disable-next-line\n obj = shape.annotations[0];\n }\n }\n }\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule ? this.commandHandler.annotationModule.findAnnotationSettings(obj) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n var isAnnotationSet = false;\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n isAnnotationSet = true;\n }\n if (isAnnotationSet && isMouseUp) {\n // eslint-disable-next-line\n var size = this.getPositions(corner, difx, dify);\n var newWidth = width + size.x;\n var newHeight = height + size.y;\n // eslint-disable-next-line max-len\n if ((newHeight > annotationMinHeight && newHeight < annotationMaxHeight) && (newWidth > annotationMinWidth && newWidth < annotationMaxWidth)) {\n // eslint-disable-next-line\n difx = difx;\n // eslint-disable-next-line\n dify = dify;\n }\n else {\n if (newHeight < annotationMinHeight || newHeight > annotationMaxHeight) {\n if (newHeight < annotationMinHeight) {\n dify = annotationMinHeight - height;\n }\n else {\n dify = annotationMaxHeight - height;\n }\n }\n if (newWidth < annotationMinWidth || newWidth > annotationMaxWidth) {\n if (newWidth < annotationMinWidth) {\n difx = annotationMinWidth - width;\n }\n else {\n difx = annotationMaxWidth - width;\n }\n }\n }\n }\n switch (corner) {\n case 'ResizeWest':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n deltaHeight = 1;\n // eslint-disable-next-line\n difx = difx;\n dify = 0;\n if (isAnnotationSet) {\n if (initialBounds.width - difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n }\n deltaWidth = (initialBounds.width - difx) / width;\n break;\n case 'ResizeEast':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n dify = 0;\n if (isAnnotationSet) {\n if (initialBounds.width + difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n }\n deltaWidth = (initialBounds.width + difx) / width;\n deltaHeight = 1;\n break;\n case 'ResizeNorth':\n deltaWidth = 1;\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.height - dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaHeight = (initialBounds.height - dify) / height;\n break;\n case 'ResizeSouth':\n deltaWidth = 1;\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.height + dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaHeight = (initialBounds.height + dify) / height;\n break;\n case 'ResizeNorthEast':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.width + difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n if (initialBounds.height - dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaWidth = (initialBounds.width + difx) / width;\n deltaHeight = (initialBounds.height - dify) / height;\n break;\n case 'ResizeNorthWest':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.width - difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n if (initialBounds.height - dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaWidth = (initialBounds.width - difx) / width;\n deltaHeight = (initialBounds.height - dify) / height;\n break;\n case 'ResizeSouthEast':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.width + difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n if (initialBounds.height + dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaHeight = (initialBounds.height + dify) / height;\n deltaWidth = (initialBounds.width + difx) / width;\n break;\n case 'ResizeSouthWest':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.width - difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n if (initialBounds.height + dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaWidth = (initialBounds.width - difx) / width;\n deltaHeight = (initialBounds.height + dify) / height;\n break;\n }\n return { width: deltaWidth, height: deltaHeight };\n };\n ToolBase.prototype.getPivot = function (corner) {\n switch (corner) {\n case 'ResizeWest':\n return { x: 1, y: 0.5 };\n case 'ResizeEast':\n return { x: 0, y: 0.5 };\n case 'ResizeNorth':\n return { x: 0.5, y: 1 };\n case 'ResizeSouth':\n return { x: 0.5, y: 0 };\n case 'ResizeNorthEast':\n return { x: 0, y: 1 };\n case 'ResizeNorthWest':\n return { x: 1, y: 1 };\n case 'ResizeSouthEast':\n return { x: 0, y: 0 };\n case 'ResizeSouthWest':\n return { x: 1, y: 0 };\n }\n return { x: 0.5, y: 0.5 };\n };\n ToolBase.prototype.getPositions = function (corner, x, y) {\n switch (corner) {\n case 'ResizeEast':\n return { x: x, y: 0 };\n case 'ResizeSouthEast':\n return { x: x, y: y };\n case 'ResizeSouth':\n return { x: 0, y: y };\n case 'ResizeNorth':\n return { x: 0, y: -y };\n case 'ResizeNorthEast':\n return { x: x, y: -y };\n case 'ResizeNorthWest':\n return { x: -x, y: -y };\n case 'ResizeWest':\n return { x: -x, y: 0 };\n case 'ResizeSouthWest':\n return { x: -x, y: y };\n }\n return { x: x, y: y };\n };\n return ToolBase;\n}());\nexport { ToolBase };\n/**\n * Helps to select the objects\n *\n * @hidden\n */\nvar SelectTool = /** @class */ (function (_super) {\n __extends(SelectTool, _super);\n function SelectTool(commandHandler, base) {\n return _super.call(this, commandHandler, base, true) || this;\n // this.action = action;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse down event arguments.\n * @returns {void}\n */\n SelectTool.prototype.mouseDown = function (args) {\n this.inAction = true;\n this.mouseEventHelper(args);\n _super.prototype.mouseDown.call(this, args);\n };\n SelectTool.prototype.mouseEventHelper = function (args) {\n if (this.commandHandler && this.commandHandler.annotationModule) {\n // eslint-disable-next-line\n this.commandHandler.annotationModule.overlappedCollections = findActiveElement(args, this.pdfViewerBase, this.commandHandler, true);\n }\n // eslint-disable-next-line\n var object = findActiveElement(args, this.pdfViewerBase, this.commandHandler);\n // if (!isNullOrUndefined(object) && (object as any).shapeAnnotationType != 'Path'){\n var isLock = false;\n // eslint-disable-next-line\n if (object && object.shapeAnnotationType === 'StickyNotes') {\n // eslint-disable-next-line\n if (object.annotationSettings && object.annotationSettings.isLock) {\n if (this.commandHandler.annotationModule.checkAllowedInteractions('Select', object)) {\n isLock = false;\n }\n else {\n isLock = true;\n }\n }\n }\n if (!isLock) {\n // eslint-disable-next-line\n var currentSelctor = void 0;\n if (args.source && args.annotationSelectorSettings !== null) {\n currentSelctor = args.source.annotationSelectorSettings;\n }\n else {\n currentSelctor = '';\n }\n if (this.commandHandler) {\n var selectedObject = this.commandHandler.selectedItems;\n if (selectedObject) {\n // eslint-disable-next-line\n var annotation = selectedObject.annotations[0];\n // eslint-disable-next-line\n var formField = selectedObject.formFields[0];\n var currentAnnot = this.commandHandler.selectedItems.annotations[0];\n var currentSource = args.source;\n if ((selectedObject.annotations.length) && args.info && !args.info.ctrlKey\n // eslint-disable-next-line\n && this.commandHandler.annotationModule && this.commandHandler.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus === false) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n }\n else if (args.info && args.info.ctrlKey && ((currentSource && currentSource.shapeAnnotationType === 'FreeText') || (currentAnnot && currentAnnot.shapeAnnotationType === 'FreeText'))) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n }\n else if (isNullOrUndefined(object) && this.commandHandler.formDesignerModule && !((currentSource && currentSource.shapeAnnotationType === 'FreeText') || (currentAnnot && (currentAnnot.shapeAnnotationType === 'FreeText' || currentAnnot.shapeAnnotationType === 'Image' || currentAnnot.shapeAnnotationType === 'StickyNotes')))) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n }\n if (object) {\n if (!isNullOrUndefined(this.pdfViewerBase.isFreeTextSelected) && !this.pdfViewerBase.isFreeTextSelected) {\n this.commandHandler.select([object.id], currentSelctor);\n this.commandHandler.viewerBase.isAnnotationMouseDown = true;\n }\n this.pdfViewerBase.isFreeTextSelected = false;\n this.commandHandler.viewerBase.isFormFieldMouseDown = true;\n }\n if (selectedObject.annotations.length === 0 && annotation && annotation.shapeAnnotationType !== 'HandWrittenSignature' && annotation.shapeAnnotationType !== 'SignatureText' && annotation.shapeAnnotationType !== 'SignatureImage' && annotation.shapeAnnotationType !== 'Path' && !annotation.formFieldAnnotationType) {\n if (this.commandHandler.enableToolbar && Browser.isDevice && !this.commandHandler.enableDesktopMode) {\n this.commandHandler.toolbarModule.showToolbar(true);\n }\n this.commandHandler.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n }\n // eslint-disable-next-line max-len\n if (selectedObject.formFields.length === 0 && this.commandHandler.formDesignerModule && formField && formField.formFieldAnnotationType) {\n // eslint-disable-next-line\n var field = { value: formField.value, fontFamily: formField.fontFamily, fontSize: formField.fontSize, fontStyle: formField.fontStyle,\n // eslint-disable-next-line\n color: formField.color, backgroundColor: formField.backgroundColor, alignment: formField.alignment, isReadonly: formField.isReadOnly, visibility: formField.visibility,\n // eslint-disable-next-line\n maxLength: formField.maxLength, isRequired: formField.isRequired, isPrint: formField.isPrint, rotation: formField.rotation, tooltip: formField.tooltip,\n // eslint-disable-next-line\n options: formField.options, isChecked: formField.isChecked, isSelected: formField.isSelected };\n this.commandHandler.fireFormFieldUnselectEvent('formFieldUnselect', field, formField.pageIndex);\n }\n }\n }\n }\n // } else {\n // if (!isNullOrUndefined(this.commandHandler))\n // this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n // }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse move event arguments.\n * @returns {boolean} - Returns true or false.\n */\n SelectTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n //draw selected region\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse up event arguments.\n * @returns {void}\n */\n SelectTool.prototype.mouseUp = function (args) {\n this.mouseEventHelper(args);\n this.inAction = false;\n _super.prototype.mouseUp.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse leave event arguments.\n * @returns {void}\n */\n SelectTool.prototype.mouseLeave = function (args) {\n if (this.inAction) {\n this.mouseUp(args);\n }\n };\n return SelectTool;\n}(ToolBase));\nexport { SelectTool };\n/** @hidden */\nvar MoveTool = /** @class */ (function (_super) {\n __extends(MoveTool, _super);\n function MoveTool(commandHandler, base) {\n var _this = _super.call(this, commandHandler, base) || this;\n /** @private */\n _this.currentTarget = null;\n /** @private */\n _this.prevNode = null;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse down event arguments.\n * @returns {void}\n */\n MoveTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseDown.call(this, args);\n this.offset = { x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY };\n this.startPosition = args.position;\n var nodeMouseDown = cloneObject(args.source);\n this.redoElement = {\n bounds: {\n x: nodeMouseDown.wrapper.offsetX, y: nodeMouseDown.wrapper.offsetY,\n width: nodeMouseDown.wrapper.actualSize.width, height: nodeMouseDown.wrapper.actualSize.height\n }\n // eslint-disable-next-line\n };\n if (isLineShapes(nodeMouseDown)) {\n this.redoElement.vertexPoints = nodeMouseDown.vertexPoints;\n this.redoElement.leaderHeight = nodeMouseDown.leaderHeight;\n }\n this.inAction = true;\n };\n /**\n * @private\n * @param {any} args - Specified the mouse event arguments.\n * @returns {void}\n */\n // eslint-disable-next-line\n MoveTool.prototype.mouseUp = function (args) {\n if (this.commandHandler && args.source) {\n this.checkisAnnotationMove(args);\n var currentSelctor = args.source.annotationSelectorSettings;\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([args.source.id], currentSelctor);\n // eslint-disable-next-line max-len\n this.commandHandler.dragSelectedObjects(this.calculateMouseActionXDiff(args), this.calculateMouseActionYDiff(args), this.pdfViewerBase.activeElements.activePageID, currentSelctor, null);\n if (args.source && (args.source.formFieldAnnotationType === 'Textbox' || args.source.formFieldAnnotationType === 'Checkbox'\n || args.source.formFieldAnnotationType === 'RadioButton' || args.source.formFieldAnnotationType === 'ListBox'\n || args.source.formFieldAnnotationType === 'SignatureField' || args.source.formFieldAnnotationType === 'InitialField' || args.source.formFieldAnnotationType === 'DropdownList'\n || args.source.formFieldAnnotationType === 'PasswordField')) {\n this.commandHandler.formDesignerModule.updateHTMLElement(args.source);\n }\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelctor);\n this.commandHandler.viewerBase.isAnnotationMouseMove = false;\n this.commandHandler.viewerBase.isFormFieldMouseMove = false;\n // eslint-disable-next-line\n var newShapeObject = {\n bounds: {\n x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY,\n width: args.source.wrapper.actualSize.width, height: args.source.wrapper.actualSize.height\n }, modifiedDate: args.source.modifiedDate\n };\n if (isLineShapes(args.source)) {\n newShapeObject.vertexPoints = args.source.vertexPoints;\n newShapeObject.leaderHeight = args.source.leaderHeight;\n }\n if (args.target && args.target.formFieldAnnotationType) {\n var node = args.target;\n var field = {\n // eslint-disable-next-line\n value: node.value, fontFamily: node.fontFamily, fontSize: node.fontSize, fontStyle: node.fontStyle,\n // eslint-disable-next-line\n color: node.color, backgroundColor: node.backgroundColor, borderColor: node.borderColor,\n // eslint-disable-next-line\n thickness: node.thickness, alignment: node.alignment, isReadonly: node.isReadonly, visibility: node.visibility,\n // eslint-disable-next-line\n maxLength: node.maxLength, isRequired: node.isRequired, isPrint: node.isPrint, rotation: node.rotateAngle, tooltip: node.tooltip, options: node.options,\n // eslint-disable-next-line\n isChecked: node.isChecked, isSelected: node.isSelected\n };\n // eslint-disable-next-line max-len\n var currentPosition = { X: args.source.wrapper.offsetX, Y: args.source.wrapper.offsetY, Width: args.source.wrapper.actualSize.width, Height: args.source.wrapper.actualSize.height };\n // eslint-disable-next-line max-len\n var previousPosition = { X: this.offset.x, Y: this.offset.y, Width: args.source.wrapper.actualSize.width, Height: args.source.wrapper.actualSize.height };\n this.commandHandler.fireFormFieldMoveEvent('formFieldMove', field, node.pageIndex, previousPosition, currentPosition);\n }\n if (this.commandHandler.annotation) {\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, args.source, 'Drag', '', this.redoElement, newShapeObject);\n this.commandHandler.annotation.stampAnnotationModule.updateSessionStorage(args.source, null, 'Drag');\n this.commandHandler.annotation.stickyNotesAnnotationModule.updateStickyNotes(args.source, null);\n }\n }\n var shapeAnnotationType = this.commandHandler.selectedItems && this.commandHandler.selectedItems.annotations && this.commandHandler.selectedItems.annotations.length > 0 ? this.commandHandler.selectedItems.annotations[0].shapeAnnotationType : null;\n if (shapeAnnotationType && shapeAnnotationType !== 'Image' && shapeAnnotationType !== 'SignatureImage') {\n _super.prototype.mouseUp.call(this, args);\n }\n else if (this.commandHandler.selectedItems && this.commandHandler.selectedItems.formFields && this.commandHandler.selectedItems.formFields.length > 0) {\n _super.prototype.mouseUp.call(this, args);\n }\n };\n MoveTool.prototype.calculateMouseXDiff = function () {\n if (this.currentPosition && this.startPosition) {\n return this.currentPosition.x - this.startPosition.x;\n }\n else {\n return 0;\n }\n };\n MoveTool.prototype.calculateMouseYDiff = function () {\n if (this.currentPosition && this.startPosition) {\n return this.currentPosition.y - this.startPosition.y;\n }\n else {\n return 0;\n }\n };\n MoveTool.prototype.calculateMouseActionXDiff = function (args) {\n var x = this.calculateMouseXDiff() / this.commandHandler.viewerBase.getZoomFactor();\n // let y: number = this.calculateMouseYDiff() / this.commandHandler.magnification.zoomFactor;\n if (this.offset) {\n var requiredX = this.offset.x + x;\n // let requiredY: number = this.offset.y + y;\n return requiredX - args.source.wrapper.offsetX;\n //let diffY: number = requiredY - args.source.wrapper.offsetY;\n }\n else {\n return 0;\n }\n };\n MoveTool.prototype.calculateMouseActionYDiff = function (args) {\n // let x: number = this.calculateMouseXDiff() / this.commandHandler.magnification.zoomFactor;\n var y = this.calculateMouseYDiff() / this.commandHandler.viewerBase.getZoomFactor();\n if (this.offset) {\n // let requiredX: number = this.offset.x + x;\n var requiredY = this.offset.y + y;\n // let diffX: number = requiredX - args.source.wrapper.offsetX;\n return requiredY - args.source.wrapper.offsetY;\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @param {boolean} isStamp - Specified the stamp annotation or not.\n * @param {boolean} isSkip - Specified the annotation skip or not.\n * @returns {boolean} - Returns the true or false.\n */\n MoveTool.prototype.mouseMove = function (args, isStamp, isSkip) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction) {\n this.currentPosition = args.position;\n this.currentTarget = args.target;\n var currentSelctor = args.source.annotationSelectorSettings;\n var x = this.calculateMouseXDiff() / this.commandHandler.viewerBase.getZoomFactor();\n var y = this.calculateMouseYDiff() / this.commandHandler.viewerBase.getZoomFactor();\n var requiredX = this.offset.x + x;\n var requiredY = this.offset.y + y;\n var diffX = this.calculateMouseActionXDiff(args);\n var diffY = this.calculateMouseActionYDiff(args);\n var selectedItem = this.commandHandler.selectedItems.annotations[0];\n var cobject = void 0;\n if (!this.helper) {\n // eslint-disable-next-line\n cobject = this.commandHandler.selectedItems.annotations.length > 0 ? cloneObject(this.commandHandler.selectedItems.annotations[0]) : cloneObject(this.commandHandler.selectedItems.formFields[0]);\n if (cobject.wrapper) {\n diffX = requiredX - cobject.wrapper.offsetX;\n diffY = requiredY - cobject.wrapper.offsetY;\n // eslint-disable-next-line max-len\n cobject.bounds = this.commandHandler.selectedItems.annotations.length > 0 ? this.commandHandler.selectedItems.annotations[0].wrapper.bounds : this.commandHandler.selectedItems.formFields[0].wrapper.bounds;\n }\n cobject.wrapper = undefined;\n cobject.id = 'diagram_helper';\n if (cobject.shapeAnnotationType === 'Stamp') {\n cobject.strokeColor = '';\n cobject.borderDashArray = '';\n cobject.fillColor = 'transparent';\n cobject.stampFillColor = 'transparent';\n cobject.data = '';\n }\n else if (cobject.shapeAnnotationType === 'FreeText') {\n cobject.strokeColor = 'blue';\n cobject.fillColor = 'transparent';\n cobject.thickness = 1;\n cobject.opacity = 1;\n cobject.dynamicText = '';\n }\n else if (cobject.shapeAnnotationType === 'SignatureText') {\n cobject.strokeColor = 'red';\n cobject.borderDashArray = '5,5';\n cobject.fillColor = 'transparent';\n cobject.thickness = 2;\n cobject.opacity = 1;\n cobject.data = '';\n }\n else {\n cobject.strokeColor = 'red';\n cobject.borderDashArray = '5,5';\n cobject.fillColor = 'transparent';\n cobject.thickness = 2;\n cobject.opacity = 1;\n }\n if (cobject.enableShapeLabel === true) {\n cobject.labelContent = '';\n }\n var shapeAnnotationType = cobject.shapeAnnotationType;\n if (!isStamp && shapeAnnotationType !== 'Image' && shapeAnnotationType !== 'SignatureImage') {\n this.helper = cobject = this.commandHandler.add(cobject);\n }\n else {\n cobject = this.helper = args.source;\n }\n if (this.commandHandler.selectedItems.annotations.length > 0) {\n this.commandHandler.selectedItems.annotations = [cobject];\n }\n else {\n this.commandHandler.selectedItems.formFields = [cobject];\n }\n }\n else {\n diffX = requiredX - this.helper.wrapper.offsetX;\n diffY = requiredY - this.helper.wrapper.offsetY;\n }\n if (this.helper && this.helper.shapeAnnotationType === 'Stamp') {\n isStamp = true;\n }\n // eslint-disable-next-line max-len\n if (this.commandHandler.checkBoundaryConstraints(diffX, diffY, this.pdfViewerBase.activeElements.activePageID, this.helper.wrapper.bounds, isStamp, isSkip)) {\n var shapeAnnotationType = this.helper.shapeAnnotationType;\n if (this.helper && (shapeAnnotationType === 'Image' || shapeAnnotationType === 'SignatureImage')) {\n this.checkisAnnotationMove(args);\n // eslint-disable-next-line max-len\n var currentSelctor_1 = args.source.annotationSelectorSettings;\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([args.source.id], currentSelctor_1);\n // eslint-disable-next-line max-len\n this.commandHandler.dragSelectedObjects(diffX, diffY, this.pdfViewerBase.activeElements.activePageID, currentSelctor_1, this.helper);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelctor_1);\n }\n else {\n this.commandHandler.dragSelectedObjects(diffX, diffY, this.pdfViewerBase.activeElements.activePageID, currentSelctor, this.helper);\n }\n this.prevNode = this.helper;\n this.prevPosition = this.currentPosition;\n }\n else {\n this.currentPosition = this.prevPosition;\n }\n if (selectedItem && selectedItem.annotName) {\n this.commandHandler.annotation.triggerAnnotationMove(selectedItem, true);\n }\n }\n return true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n MoveTool.prototype.mouseLeave = function (args) {\n var currentSelctor = args.source.annotationSelectorSettings;\n var requiredX = this.offset.x + this.calculateMouseXDiff();\n var requiredY = this.offset.y + this.calculateMouseYDiff();\n var diffX = requiredX - args.source.wrapper.offsetX;\n var diffY = requiredY - args.source.wrapper.offsetY;\n this.commandHandler.dragSelectedObjects(diffX, diffY, this.prevPageId, currentSelctor, null);\n this.commandHandler.renderSelector(this.prevPageId, currentSelctor);\n _super.prototype.mouseLeave.call(this, args);\n };\n /**\n * @private\n * @returns {void}\n */\n MoveTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n this.currentTarget = null;\n this.prevPosition = null;\n };\n MoveTool.prototype.checkisAnnotationMove = function (args) {\n // eslint-disable-next-line max-len\n if (this.commandHandler.selectedItems && this.commandHandler.selectedItems.annotations && this.commandHandler.selectedItems.annotations.length > 0) {\n if (this.commandHandler.selectedItems.annotations[0].annotName === args.source.annotName) {\n this.commandHandler.viewerBase.isAnnotationMouseMove = true;\n }\n }\n else {\n this.commandHandler.viewerBase.isAnnotationMouseMove = false;\n }\n // eslint-disable-next-line max-len\n if (this.commandHandler.selectedItems && this.commandHandler.selectedItems.formFields && this.commandHandler.selectedItems.formFields.length > 0) {\n if (this.commandHandler.selectedItems.formFields[0].name === args.source.name) {\n this.commandHandler.viewerBase.isFormFieldMouseMove = true;\n }\n }\n else {\n this.commandHandler.viewerBase.isFormFieldMouseMove = false;\n }\n };\n return MoveTool;\n}(ToolBase));\nexport { MoveTool };\n/** @hidden */\nvar StampTool = /** @class */ (function (_super) {\n __extends(StampTool, _super);\n function StampTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {any} - Returns the mouse up event.\n */\n // eslint-disable-next-line\n StampTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseUp.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns the true or false.\n */\n StampTool.prototype.mouseMove = function (args) {\n // eslint-disable-next-line\n var newObject;\n if (!this.inAction) {\n var pageIndex = this.pdfViewerBase.activeElements.activePageID;\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n // eslint-disable-next-line max-len\n var nodeElement = this.commandHandler.annotation.stampAnnotationModule.moveStampElement(args.position.x, args.position.y, pageIndex);\n if (nodeElement.shapeAnnotationType === 'SignatureText') {\n var textWidth = this.getTextWidth(nodeElement.data, nodeElement.fontSize);\n var widthRatio = 1;\n if (textWidth > nodeElement.bounds.width)\n widthRatio = nodeElement.bounds.width / textWidth;\n nodeElement.fontSize = (nodeElement.fontSize * widthRatio);\n nodeElement.thickness = 0;\n }\n newObject = this.commandHandler.add(nodeElement);\n args.source = this.commandHandler.annotations[this.commandHandler.annotations.length - 1];\n args.sourceWrapper = args.source.wrapper;\n this.inAction = true;\n // eslint-disable-next-line\n var currentSource = args.source;\n if (currentSource && (currentSource.shapeAnnotationType === 'HandWrittenSignature' || currentSource.shapeAnnotationType === 'SignatureText' || currentSource.shapeAnnotationType === 'SignatureImage')) {\n this['offset'] = { x: args.source.wrapper.offsetX - (args.source.wrapper.bounds.width / 2), y: args.source.wrapper.offsetY - (args.source.wrapper.bounds.height / 2) };\n }\n else {\n this['offset'] = { x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY };\n }\n this.startPosition = args.position;\n this.commandHandler.select([newObject.id]);\n }\n var currentSelctor = args.source.annotationSelectorSettings;\n _super.prototype.mouseMove.call(this, args, true, true);\n this.commandHandler.renderSelector(args.source.pageIndex, currentSelctor);\n return this.inAction;\n };\n StampTool.prototype.getTextWidth = function (text, font) {\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n context.font = font || getComputedStyle(document.body).font;\n return context.measureText(text).width;\n };\n return StampTool;\n}(MoveTool));\nexport { StampTool };\n/**\n * Draws a node that is defined by the user\n *\n * @hidden\n */\nvar InkDrawingTool = /** @class */ (function (_super) {\n __extends(InkDrawingTool, _super);\n function InkDrawingTool(commandHandler, base, sourceObject) {\n var _this = _super.call(this, commandHandler, base) || this;\n _this.sourceObject = sourceObject;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n InkDrawingTool.prototype.mouseDown = function (args) {\n this.pdfViewerBase.disableTextSelectionMode();\n _super.prototype.mouseDown.call(this, args);\n this.inAction = true;\n // eslint-disable-next-line\n var node = { currentPosition: this.currentPosition, prevPosition: this.prevPosition };\n this.commandHandler.annotation.inkAnnotationModule.drawInkInCanvas(node, this.pdfViewerBase.activeElements.activePageID);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n InkDrawingTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction) {\n // eslint-disable-next-line\n var node = { currentPosition: this.currentPosition, prevPosition: this.pdfViewerBase.prevPosition };\n this.commandHandler.annotation.inkAnnotationModule.drawInkInCanvas(node, this.pdfViewerBase.activeElements.activePageID);\n }\n return this.inAction;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true.\n */\n InkDrawingTool.prototype.mouseUp = function (args) {\n this.commandHandler.annotation.inkAnnotationModule.storePathData();\n return true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n InkDrawingTool.prototype.mouseLeave = function (args) {\n //this.mouseUp(args);\n };\n /**\n * @private\n * @returns {void}\n */\n InkDrawingTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n };\n return InkDrawingTool;\n}(ToolBase));\nexport { InkDrawingTool };\n/**\n * Helps to edit the selected connectors\n *\n * @hidden\n */\nvar ConnectTool = /** @class */ (function (_super) {\n __extends(ConnectTool, _super);\n function ConnectTool(commandHandler, base, endPoint) {\n var _this = _super.call(this, commandHandler, base, true) || this;\n _this.endPoint = endPoint;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n ConnectTool.prototype.mouseDown = function (args) {\n this.inAction = true;\n this.undoElement = undefined;\n _super.prototype.mouseDown.call(this, args);\n var oldValue;\n var connectors;\n if (args.source && args.source.annotations) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n oldValue = { x: this.prevPosition.x, y: this.prevPosition.y };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n connectors = args.source.annotations[0];\n }\n this.initialPosition = args.position;\n this.prevSource = this.commandHandler.selectedItems.annotations[0];\n var nodeElement = cloneObject(args.source);\n this.redoElement = {\n bounds: {\n x: nodeElement.wrapper.offsetX, y: nodeElement.wrapper.offsetY,\n width: nodeElement.wrapper.actualSize.width, height: nodeElement.wrapper.actualSize.height\n }\n // eslint-disable-next-line\n };\n if (isLineShapes(nodeElement)) {\n this.redoElement.vertexPoints = nodeElement.vertexPoints;\n this.redoElement.leaderHeight = nodeElement.leaderHeight;\n if (nodeElement.measureType === 'Distance' || nodeElement.measureType === 'Perimeter' || nodeElement.measureType === 'Area' || nodeElement.measureType === 'Volume') {\n this.redoElement.notes = nodeElement.notes;\n }\n }\n this.currentPosition = args.position;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n ConnectTool.prototype.mouseUp = function (args) {\n if (this.commandHandler) {\n var node = this.commandHandler.selectedItems.annotations[0];\n if (node) {\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule.findAnnotationSettings(node);\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n // eslint-disable-next-line max-len\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n if (node.vertexPoints.length > 3) {\n // eslint-disable-next-line\n var sizeObject = this.commandHandler.viewerBase.checkAnnotationWidth(node.vertexPoints);\n var width = sizeObject.width;\n var height = sizeObject.height;\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n // eslint-disable-next-line max-len\n if ((height > annotationMinHeight && height < annotationMaxHeight) || (width > annotationMinWidth && width < annotationMaxWidth)) {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n else {\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n if (node.shapeAnnotationType === 'Line' || node.shapeAnnotationType === 'Distance' || node.shapeAnnotationType === 'LineWidthArrowHead') {\n var x = 0;\n var y = 0;\n if (node.vertexPoints[0].x > node.vertexPoints[1].x) {\n x = node.vertexPoints[0].x - node.vertexPoints[1].x;\n }\n else {\n x = node.vertexPoints[1].x - node.vertexPoints[0].x;\n }\n if (node.vertexPoints[0].y > node.vertexPoints[1].y) {\n y = node.vertexPoints[0].y - node.vertexPoints[1].y;\n }\n else {\n y = node.vertexPoints[1].y - node.vertexPoints[0].y;\n }\n var diff = (x > y) ? x : y;\n if (diff < (annotationMaxHeight || annotationMaxWidth) && diff > (annotationMinHeight || annotationMinWidth)) {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n var currentSelctor = args.source.annotationSelectorSettings;\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([this.prevSource.id], currentSelctor);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelctor);\n // eslint-disable-next-line\n var newShapeElementObject = {\n bounds: {\n x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY,\n width: args.source.wrapper.actualSize.width, height: args.source.wrapper.actualSize.height\n }\n };\n if (node.measureType === 'Distance' || node.measureType === 'Perimeter' || node.measureType === 'Area' || node.measureType === 'Volume') {\n this.commandHandler.annotation.updateCalibrateValues(this.commandHandler.selectedItems.annotations[0]);\n newShapeElementObject.notes = args.source.notes;\n }\n if (isLineShapes(args.source)) {\n newShapeElementObject.vertexPoints = args.source.vertexPoints;\n newShapeElementObject.leaderHeight = args.source.leaderHeight;\n }\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, this.prevSource, 'Resize', '', this.redoElement, newShapeElementObject);\n }\n }\n _super.prototype.mouseUp.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n ConnectTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n var connector;\n this.currentPosition = args.position;\n if (this.currentPosition && this.prevPosition) {\n var diffX = this.currentPosition.x - this.prevPosition.x;\n var diffY = this.currentPosition.y - this.prevPosition.y;\n var newValue = void 0;\n var oldValue = void 0;\n if (args.source && args.source.annotations) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n newValue = {\n x: this.currentPosition.x, y: this.currentPosition.y\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n oldValue = {\n x: this.prevPosition.x, y: this.prevPosition.y\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n connector = args.source.annotations[0];\n }\n if (this.inAction && this.endPoint !== undefined && diffX !== 0 || diffY !== 0) {\n if (!this.helper) {\n // eslint-disable-next-line\n var cloneShapebject = cloneObject(this.commandHandler.selectedItems.annotations[0]);\n cloneShapebject.id = 'diagram_helper';\n cloneShapebject.strokeColor = 'red';\n cloneShapebject.borderDashArray = '5,5';\n cloneShapebject.fillColor = 'transparent';\n cloneShapebject.thickness = 2;\n cloneShapebject.opacity = 1;\n if (cloneShapebject.enableShapeLabel === true) {\n cloneShapebject.labelContent = '';\n }\n this.helper = cloneShapebject = this.commandHandler.add(cloneShapebject);\n this.commandHandler.selectedItems.annotations = [cloneShapebject];\n }\n var currentSelctor = args.source.annotationSelectorSettings;\n this.blocked = !this.commandHandler.dragConnectorEnds(this.endPoint, this.helper, this.currentPosition, this.selectedSegment, args.target, null, currentSelctor);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelctor);\n }\n }\n this.prevPosition = this.currentPosition;\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n ConnectTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n /**\n * @private\n * @returns {void}\n */\n ConnectTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n this.prevPosition = null;\n this.endPoint = null;\n };\n return ConnectTool;\n}(ToolBase));\nexport { ConnectTool };\n/**\n * Scales the selected objects\n *\n * @hidden\n */\nvar ResizeTool = /** @class */ (function (_super) {\n __extends(ResizeTool, _super);\n function ResizeTool(commandHandler, base, corner) {\n var _this = _super.call(this, commandHandler, base, true) || this;\n /** @private */\n _this.initialBounds = new Rect();\n _this.corner = corner;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void} - Returns true or false.\n */\n ResizeTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseDown.call(this, args);\n this.initialBounds.x = args.source.wrapper.offsetX;\n this.initialBounds.y = args.source.wrapper.offsetY;\n this.initialBounds.height = args.source.wrapper.actualSize.height;\n this.initialBounds.width = args.source.wrapper.actualSize.width;\n this.initialPosition = args.position;\n var node = cloneObject(args.source);\n this.redoElement = {\n bounds: {\n x: node.wrapper.offsetX, y: node.wrapper.offsetY,\n width: node.wrapper.actualSize.width, height: node.wrapper.actualSize.height\n }\n // eslint-disable-next-line\n };\n if (isLineShapes(node)) {\n this.redoElement.vertexPoints = node.vertexPoints;\n this.redoElement.leaderHeight = node.leaderHeight;\n }\n if (node.measureType === 'Radius') {\n this.redoElement.notes = node.notes;\n }\n // eslint-disable-next-line max-len\n this.prevSource = this.commandHandler.selectedItems.annotations.length > 0 ? this.commandHandler.selectedItems.annotations[0] : this.commandHandler.selectedItems.formFields[0];\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @param {boolean} isPreventHistory - Specified the prevent history value.\n * @returns {boolean} - Returns true or false.\n */\n ResizeTool.prototype.mouseUp = function (args, isPreventHistory) {\n var object = args.source;\n var oldObject = cloneObject(args.source);\n if (this.commandHandler && this.prevSource) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.viewerBase.isAnnotationSelect = true;\n this.commandHandler.viewerBase.isFormFieldSelect = true;\n this.commandHandler.select([this.prevSource.id], this.prevSource.annotationSelectorSettings);\n // eslint-disable-next-line max-len\n var deltaValues = this.updateSize(this.prevSource, this.currentPosition, this.initialPosition, this.corner, this.initialBounds, null, true);\n this.blocked = this.scaleObjects(deltaValues.width, deltaValues.height, this.corner, this.currentPosition, this.initialPosition, this.prevSource);\n if (this.commandHandler.selectedItems && this.commandHandler.selectedItems.annotations &&\n this.commandHandler.selectedItems.annotations[0] && this.commandHandler.selectedItems.annotations[0].shapeAnnotationType === 'Stamp') {\n if (this.commandHandler.stampSettings.minHeight || this.commandHandler.stampSettings.minWidth) {\n this.commandHandler.select([this.prevSource.id], this.prevSource.annotationSelectorSettings);\n }\n }\n if (this.commandHandler.selectedItems.formFields.length > 0 && (this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'Textbox' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'Checkbox'\n || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'RadioButton' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'InitialField' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'SignatureField'\n || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'DropdownList' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'ListBox' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'PasswordField')) {\n this.commandHandler.formDesignerModule.updateHTMLElement(this.commandHandler.selectedItems.formFields[0]);\n }\n this.commandHandler.renderSelector(this.prevPageId, this.prevSource.annotationSelectorSettings);\n if (this.commandHandler.annotation && args.source.wrapper) {\n // eslint-disable-next-line\n var newObject = {\n bounds: {\n x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY,\n width: args.source.wrapper.actualSize.width, height: args.source.wrapper.actualSize.height\n }\n };\n if (isLineShapes(args.source)) {\n newObject.vertexPoints = args.source.vertexPoints;\n newObject.leaderHeight = args.source.leaderHeight;\n }\n if (this.prevSource.measureType === 'Radius') {\n newObject.notes = args.source.notes;\n this.commandHandler.annotation.updateCalibrateValues(this.prevSource);\n }\n if (this.prevSource.shapeAnnotationType === 'SignatureText') {\n var boundsRatio = newObject.bounds.width / oldObject.width;\n newObject.fontSize = this.prevSource.wrapper.children[1].style.fontSize * boundsRatio;\n if (args.target != null) {\n args.target.fontSize = newObject.fontSize;\n // eslint-disable-next-line\n args.target.wrapper.children[1].style.fontSize = newObject.fontSize;\n args.target.wrapper.children[1].horizontalAlignment = 'Center';\n args.target.wrapper.children[1].verticalAlignment = 'Center';\n args.target.wrapper.children[1].setOffsetWithRespectToBounds(0, 0, 'Absolute');\n // eslint-disable-next-line\n this.commandHandler.selectedItems.annotations[0].wrapper.children[1].style.fontSize = newObject.fontSize;\n this.commandHandler.selectedItems.annotations[0].wrapper.children[1].horizontalAlignment = 'Center';\n this.commandHandler.selectedItems.annotations[0].wrapper.children[1].verticalAlignment = 'Center';\n this.commandHandler.selectedItems.annotations[0].wrapper.children[1].setOffsetWithRespectToBounds(0, 0, 'Absolute');\n this.commandHandler.selectedItems.annotations[0].fontSize = newObject.fontSize;\n }\n }\n if ((this.prevSource.shapeAnnotationType === 'SignatureText') && this.commandHandler.selectedItems.annotations && this.commandHandler.selectedItems.annotations.length > 0) {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.commandHandler.selectedItems.annotations[0], { fontSize: newObject.fontSize });\n }\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, this.prevSource, 'Resize', '', this.redoElement, newObject);\n }\n if (args.target && args.target.formFieldAnnotationType) {\n var node = args.target;\n // eslint-disable-next-line\n var field = { value: node.value, fontFamily: node.fontFamily, fontSize: node.fontSize, fontStyle: node.fontStyle,\n // eslint-disable-next-line\n color: node.color, backgroundColor: node.backgroundColor, alignment: node.alignment, isReadonly: node.isReadonly, visibility: node.visibility,\n // eslint-disable-next-line\n maxLength: node.maxLength, isRequired: node.isRequired, isPrint: node.isPrint, rotation: node.rotateAngle, tooltip: node.tooltip,\n // eslint-disable-next-line\n options: node.options, isChecked: node.isChecked, isSelected: node.isSelected };\n // eslint-disable-next-line max-len\n var currentPosition = { X: args.source.wrapper.offsetX, Y: args.source.wrapper.offsetY, Width: args.source.wrapper.actualSize.width, Height: args.source.wrapper.actualSize.height };\n // eslint-disable-next-line max-len\n var previousPosition = { X: this.initialBounds.x, Y: this.initialBounds.y, Width: this.initialBounds.width, Height: this.initialBounds.height };\n this.commandHandler.fireFormFieldResizeEvent('formFieldResize', field, node.pageIndex, previousPosition, currentPosition);\n }\n if (this.commandHandler.annotation && this.commandHandler.annotation.stampAnnotationModule) {\n this.commandHandler.annotation.stampAnnotationModule.updateSessionStorage(args.source, this.prevSource.id, 'Resize');\n }\n }\n _super.prototype.mouseUp.call(this, args);\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n ResizeTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n var object = args.source;\n this.currentPosition = args.position;\n var x = this.currentPosition.x - this.startPosition.x;\n var y = this.currentPosition.y - this.startPosition.y;\n x = x / this.commandHandler.viewerBase.getZoomFactor();\n y = y / this.commandHandler.viewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annotationElement = args.source;\n // eslint-disable-next-line\n var size = this.getPoints(x, y);\n var width = annotationElement.width + size.x;\n var height = annotationElement.height + size.y;\n // eslint-disable-next-line\n var obj = object;\n if (object && object.annotations) {\n // eslint-disable-next-line\n obj = object.annotations[0];\n }\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule ? this.commandHandler.annotationModule.findAnnotationSettings(obj) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n // eslint-disable-next-line max-len\n if ((height >= annotationMinHeight && height <= annotationMaxHeight) && (width >= annotationMinWidth && width <= annotationMaxWidth)) {\n // eslint-disable-next-line\n x = x;\n // eslint-disable-next-line\n y = y;\n }\n else {\n if (height < annotationMinHeight || height > annotationMaxHeight) {\n if (height < annotationMinHeight) {\n y = annotationMinHeight - annotationElement.height;\n }\n else {\n y = annotationMaxHeight - annotationElement.height;\n }\n }\n if (width < annotationMinWidth || width > annotationMaxWidth) {\n if (width < annotationMinWidth) {\n x = annotationMinWidth - annotationElement.width;\n }\n else {\n x = annotationMaxWidth - annotationElement.width;\n }\n }\n }\n }\n var changes = { x: x, y: y };\n if (this.currentElement.wrapper) {\n changes = rotatePoint(-this.currentElement.wrapper.rotateAngle, undefined, undefined, changes);\n }\n changes = this.getChanges(changes);\n if (!this.helper) {\n // eslint-disable-next-line\n var cobject = this.commandHandler.selectedItems.annotations.length > 0 ? cloneObject(this.commandHandler.selectedItems.annotations[0]) : cloneObject(this.commandHandler.selectedItems.formFields[0]);\n cobject.id = 'diagram_helper';\n if (cobject.shapeAnnotationType === 'Stamp') {\n cobject.strokeColor = '';\n cobject.borderDashArray = '';\n cobject.fillColor = 'transparent';\n cobject.stampFillColor = 'transparent';\n cobject.data = '';\n }\n else if (cobject.shapeAnnotationType === 'FreeText') {\n cobject.strokeColor = 'blue';\n cobject.fillColor = 'transparent';\n cobject.thickness = 1;\n cobject.opacity = 1;\n cobject.dynamicText = '';\n }\n else {\n // eslint-disable-next-line max-len\n cobject.bounds = this.commandHandler.selectedItems.annotations.length > 0 ? this.commandHandler.selectedItems.annotations[0].wrapper.bounds : this.commandHandler.selectedItems.formFields[0].wrapper.bounds;\n cobject.strokeColor = 'red';\n cobject.borderDashArray = '5,5';\n cobject.fillColor = 'transparent';\n cobject.thickness = 2;\n cobject.opacity = 1;\n }\n if (cobject.enableShapeLabel === true) {\n cobject.labelContent = '';\n }\n if (cobject.shapeAnnotationType === 'SignatureText') {\n cobject.fillColor = 'transparent';\n cobject.thickness = 1;\n cobject.opacity = 1;\n cobject.data = '';\n }\n this.helper = cobject = this.commandHandler.add(cobject);\n if (this.commandHandler.selectedItems.annotations.length > 0) {\n this.commandHandler.selectedItems.annotations = [cobject];\n }\n else {\n this.commandHandler.selectedItems.formFields = [cobject];\n }\n }\n var deltaValues = this.updateSize(this.helper, this.startPosition, this.currentPosition, this.corner, this.initialBounds);\n // eslint-disable-next-line max-len\n this.blocked = !(this.scaleObjects(deltaValues.width, deltaValues.height, this.corner, this.startPosition, this.currentPosition, this.helper));\n this.prevPosition = this.currentPosition;\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n ResizeTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n ResizeTool.prototype.getTooltipContent = function (pdfAnnotationBaseModel) {\n return 'W:' + Math.round(pdfAnnotationBaseModel.wrapper.bounds.width) + ' ' + 'H:' + Math.round(pdfAnnotationBaseModel.wrapper.bounds.height);\n };\n ResizeTool.prototype.getChanges = function (change) {\n switch (this.corner) {\n case 'ResizeEast':\n return { x: change.x, y: 0 };\n case 'ResizeSouthEast':\n return change;\n case 'ResizeSouth':\n return { x: 0, y: change.y };\n case 'ResizeNorth':\n return { x: 0, y: -change.y };\n case 'ResizeNorthEast':\n return { x: change.x, y: -change.y };\n case 'ResizeNorthWest':\n return { x: -change.x, y: -change.y };\n case 'ResizeWest':\n return { x: -change.x, y: 0 };\n case 'ResizeSouthWest':\n return { x: -change.x, y: change.y };\n }\n return change;\n };\n ResizeTool.prototype.getPoints = function (x, y) {\n switch (this.corner) {\n case 'ResizeEast':\n return { x: x, y: 0 };\n case 'ResizeSouthEast':\n return { x: x, y: y };\n case 'ResizeSouth':\n return { x: 0, y: y };\n case 'ResizeNorth':\n return { x: 0, y: -y };\n case 'ResizeNorthEast':\n return { x: x, y: -y };\n case 'ResizeNorthWest':\n return { x: -x, y: -y };\n case 'ResizeWest':\n return { x: -x, y: 0 };\n case 'ResizeSouthWest':\n return { x: -x, y: y };\n }\n return { x: x, y: y };\n };\n /**\n * Updates the size with delta width and delta height using scaling.\n * Aspect ratio used to resize the width or height based on resizing the height or width.\n *\n * @param {number} deltaWidth - Specified the delta width.\n * @param {number} deltaHeight - Specified the delta height.\n * @param {string} corner - Specified the corner value.\n * @param {PointModel} startPoint - Specified the start point of the annotation.\n * @param {PointModel} endPoint - Specified the end point of the annotation.\n * @param {SelectorModel | PdfAnnotationBaseModel} source - Specified the annotation object.\n * @returns {boolean} - Returns true or false.\n */\n ResizeTool.prototype.scaleObjects = function (deltaWidth, deltaHeight, corner, startPoint, endPoint, source) {\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule ? this.commandHandler.annotationModule.findAnnotationSettings(source) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n var x = this.currentPosition.x - this.startPosition.x;\n var y = this.currentPosition.y - this.startPosition.y;\n x = x / this.commandHandler.viewerBase.getZoomFactor();\n y = y / this.commandHandler.viewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annotationElement = source;\n // eslint-disable-next-line\n var size = this.getPoints(x, y);\n var width = annotationElement.bounds.width + size.x;\n var height = annotationElement.bounds.height + size.y;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n if (source instanceof Selector && source.annotations.length === 1 &&\n (source.annotations[0].shapeAnnotationType === 'Perimeter' || source.annotations[0].shapeAnnotationType === 'Radius' || source.shapeAnnotationType === 'Stamp')) {\n if (!(deltaHeight === 1 && deltaWidth === 1)) {\n deltaHeight = deltaWidth = Math.max(deltaHeight === 1 ? 0 : deltaHeight, deltaWidth === 1 ? 0 : deltaWidth);\n }\n else if (startPoint !== endPoint) {\n deltaHeight = deltaWidth = Math.max(deltaHeight, deltaWidth);\n }\n else {\n deltaHeight = deltaWidth = 0;\n }\n }\n else if (source.shapeAnnotationType === 'Image' || (source.shapeAnnotationType === 'HandWrittenSignature' || source.shapeAnnotationType === 'SignatureText' || source.shapeAnnotationType === 'SignatureImage')) {\n if (!(deltaHeight === 1 && deltaWidth === 1)) {\n if (width >= annotationMaxWidth && height < annotationMaxHeight) {\n deltaHeight = Math.max(deltaHeight, deltaWidth);\n }\n if (height >= annotationMaxHeight && width < annotationMaxWidth) {\n deltaWidth = Math.max(deltaHeight, deltaWidth);\n }\n if (width < annotationMaxWidth && height < annotationMaxHeight) {\n deltaHeight = deltaWidth = Math.max(deltaHeight, deltaWidth);\n }\n }\n }\n else {\n if (source.shapeAnnotationType === 'Perimeter' || source.shapeAnnotationType === 'Radius'\n || source.shapeAnnotationType === 'Stamp') {\n if (source.shapeAnnotationType === 'Stamp') {\n if (!annotationMaxHeight && !deltaHeight) {\n deltaHeight = Math.max(deltaHeight === 1 ? 0 : deltaHeight);\n }\n if (!annotationMaxWidth && !deltaWidth) {\n deltaWidth = Math.max(deltaWidth === 1 ? 0 : deltaWidth);\n }\n }\n else {\n if (!annotationMaxHeight || !annotationMaxWidth) {\n if (!(deltaHeight === 1 && deltaWidth === 1)) {\n deltaHeight = deltaWidth = Math.max(deltaHeight === 1 ? 0 : deltaHeight, deltaWidth === 1 ? 0 : deltaWidth);\n }\n }\n }\n }\n }\n this.blocked = this.commandHandler.scaleSelectedItems(deltaWidth, deltaHeight, this.getPivot(this.corner));\n return this.blocked;\n };\n return ResizeTool;\n}(ToolBase));\nexport { ResizeTool };\n/**\n * Draws a node that is defined by the user\n *\n * @hidden\n */\nvar NodeDrawingTool = /** @class */ (function (_super) {\n __extends(NodeDrawingTool, _super);\n function NodeDrawingTool(commandHandler, base, sourceObject) {\n var _this = _super.call(this, commandHandler, base) || this;\n _this.sourceObject = sourceObject;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n NodeDrawingTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseDown.call(this, args);\n this.inAction = true;\n var node = { bounds: { x: 100, y: 300, width: 100, height: 100 }, pageIndex: 0, strokeColor: 'red', thickness: 3 };\n node.id = randomId();\n this.sourceObject.pageIndex = node.pageIndex = this.pdfViewerBase.activeElements.activePageID || 0;\n this.sourceObject.enableShapeLabel = this.commandHandler.enableShapeLabel;\n this.pdfViewerBase.updateFreeTextProperties(this.sourceObject);\n this.isFormDesign = false;\n // eslint-disable-next-line\n var formFieldElement = document.getElementById('FormField_helper_html_element');\n if (formFieldElement) {\n formFieldElement.remove();\n }\n // eslint-disable-next-line\n this.commandHandler.drawingObject = this.drawingObject = this.commandHandler.add(this.sourceObject || node);\n if (this.drawingObject.formFieldAnnotationType === 'Textbox' || this.drawingObject.formFieldAnnotationType === 'SignatureField' || this.drawingObject.formFieldAnnotationType === 'InitialField' ||\n this.drawingObject.formFieldAnnotationType === 'Checkbox' || this.drawingObject.formFieldAnnotationType === 'ListBox' || this.drawingObject.formFieldAnnotationType === 'RadioButton' ||\n this.drawingObject.formFieldAnnotationType === 'DropdownList' || this.drawingObject.formFieldAnnotationType === 'PasswordField') {\n this.inAction = false;\n // eslint-disable-next-line\n this.drawingObject.pageNumber = this.pdfViewerBase.getActivePage(true);\n // eslint-disable-next-line\n var bounds = this.commandHandler.formDesignerModule.updateFormFieldInitialSize(this.drawingObject.wrapper.children[0], this.drawingObject.formFieldAnnotationType);\n var pageWidth = this.pdfViewerBase.pageContainer.firstElementChild.clientWidth - bounds.width;\n var pageHeight = this.pdfViewerBase.pageContainer.firstElementChild.clientHeight - bounds.height;\n // eslint-disable-next-line\n var left = this.pdfViewerBase.pageContainer.firstElementChild.offsetLeft;\n var offsetX = void 0;\n // eslint-disable-next-line\n if (this.currentPosition.y >= pageHeight && event.target && event.target.parentElement && event.target.parentElement.classList.contains('foreign-object')) {\n // eslint-disable-next-line\n var targetParentRect = event.path[3].getBoundingClientRect();\n // eslint-disable-next-line\n offsetX = event.clientX - targetParentRect.left;\n }\n else {\n offsetX = this.currentPosition.x - left;\n }\n // eslint-disable-next-line\n var rect = void 0;\n if (this.currentPosition.x >= pageWidth && this.currentPosition.y >= pageHeight) {\n // eslint-disable-next-line max-len\n rect = { x: pageWidth, y: pageHeight, width: this.drawingObject.wrapper.children[0].width, height: this.drawingObject.wrapper.children[0].height };\n }\n else if (this.currentPosition.x >= pageWidth) {\n // eslint-disable-next-line max-len\n rect = { x: pageWidth, y: this.currentPosition.y, width: this.drawingObject.wrapper.children[0].width, height: this.drawingObject.wrapper.children[0].height };\n }\n else if (this.currentPosition.y >= pageHeight) {\n // eslint-disable-next-line max-len\n rect = { x: offsetX, y: pageHeight, width: this.drawingObject.wrapper.children[0].width, height: this.drawingObject.wrapper.children[0].height };\n }\n else {\n // eslint-disable-next-line max-len\n rect = { x: this.currentPosition.x, y: this.currentPosition.y, width: this.drawingObject.wrapper.children[0].width, height: this.drawingObject.wrapper.children[0].height };\n }\n this.updateNodeDimension(this.drawingObject, rect);\n this.commandHandler.formFieldCollection.push(this.drawingObject);\n // eslint-disable-next-line max-len\n var formField = { id: this.drawingObject.id, name: this.drawingObject.name, value: this.drawingObject.value,\n // eslint-disable-next-line max-len\n type: this.drawingObject.formFieldAnnotationType, isReadOnly: this.drawingObject.isReadonly, fontFamily: this.drawingObject.fontFamily,\n // eslint-disable-next-line max-len\n fontSize: this.drawingObject.fontSize, fontStyle: this.drawingObject.fontStyle, color: this.drawingObject.color, backgroundColor: this.drawingObject.backgroundColor,\n // eslint-disable-next-line max-len\n alignment: this.drawingObject.alignment, visibility: this.drawingObject.visibility, maxLength: this.drawingObject.maxLength, isRequired: this.drawingObject.isRequired,\n // eslint-disable-next-line max-len\n isPrint: this.drawingObject.isPrint, isSelected: this.drawingObject.isSelected, isChecked: this.drawingObject.isChecked, tooltip: this.drawingObject.tooltip, bounds: this.drawingObject.bounds, thickness: this.drawingObject.thickness, borderColor: this.drawingObject.borderColor,\n signatureIndicatorSettings: this.drawingObject.signatureIndicatorSettings };\n this.commandHandler.formFieldCollections.push(formField);\n // eslint-disable-next-line max-len\n this.commandHandler.formDesignerModule.drawHTMLContent(this.drawingObject.formFieldAnnotationType, this.drawingObject.wrapper.children[0], this.drawingObject, this.drawingObject.pageIndex, this.commandHandler);\n this.commandHandler.select([this.commandHandler.drawingObject.id], this.commandHandler.annotationSelectorSettings);\n if (this.commandHandler.annotation) {\n this.commandHandler.annotation.addAction(this.pdfViewerBase.getActivePage(true), null, this.drawingObject, 'Addition', '', this.drawingObject, this.drawingObject);\n }\n this.endAction();\n this.pdfViewerBase.tool = null;\n this.pdfViewerBase.action = 'Select';\n this.drawingObject = null;\n this.pdfViewerBase.isMouseDown = false;\n this.pdfViewerBase.pdfViewer.drawingObject = null;\n this.isFormDesign = true;\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n NodeDrawingTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction && Point.equals(this.currentPosition, this.prevPosition) === false) {\n this.dragging = true;\n var rect = Rect.toBounds([this.prevPosition, this.currentPosition]);\n this.updateNodeDimension(this.drawingObject, rect);\n if (this.drawingObject.shapeAnnotationType === 'Radius') {\n this.updateRadiusLinePosition(this.drawingObject.wrapper.children[1], this.drawingObject);\n }\n }\n return true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n NodeDrawingTool.prototype.mouseUp = function (args) {\n if (this.drawingObject && this.dragging) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([this.drawingObject.id], this.commandHandler.annotationSelectorSettings);\n this.commandHandler.annotation.updateCalibrateValues(this.drawingObject, true);\n if (this.commandHandler && !this.isFormDesign) {\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, this.drawingObject, 'Addition', '', this.drawingObject, this.drawingObject);\n }\n this.drawingObject = null;\n this.dragging = false;\n _super.prototype.mouseUp.call(this, args);\n this.inAction = false;\n }\n else {\n _super.prototype.mouseUp.call(this, args);\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NodeDrawingTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {Rect} rect - Specified the annotation rect element.\n * @returns {void}\n */\n NodeDrawingTool.prototype.updateNodeDimension = function (obj, rect) {\n var zoom = this.commandHandler.viewerBase.getZoomFactor();\n obj.bounds.x = (rect.x / zoom) + rect.width / zoom;\n obj.bounds.y = (rect.y / zoom) + rect.height / zoom;\n obj.bounds.width = rect.width / zoom;\n obj.bounds.height = rect.height / zoom;\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule ? this.commandHandler.annotationModule.findAnnotationSettings(obj) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n if (annotationSettings.maxWidth || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n if (obj.bounds.width > annotationMaxWidth) {\n obj.bounds.width = annotationMaxWidth;\n }\n if (obj.bounds.height > annotationMaxHeight) {\n obj.bounds.height = annotationMaxHeight;\n }\n if (obj.bounds.height <= annotationMaxHeight && obj.bounds.width <= annotationMaxWidth) {\n this.commandHandler.nodePropertyChange(obj, { bounds: obj.bounds });\n }\n }\n else {\n this.commandHandler.nodePropertyChange(obj, { bounds: obj.bounds });\n }\n };\n /**\n * @private\n * @param {DrawingElement} obj - Specified the drawing element.\n * @param {PdfAnnotationBaseModel} node - Specified the annotation object.\n * @returns {void}\n */\n NodeDrawingTool.prototype.updateRadiusLinePosition = function (obj, node) {\n var trasPoint = { x: node.bounds.x + (node.bounds.width / 4), y: node.bounds.y };\n var center = { x: (node.bounds.x + (node.bounds.width / 2)), y: (node.bounds.y + (node.bounds.height / 2)) };\n var matrix = identityMatrix();\n rotateMatrix(matrix, node.rotateAngle, center.x, center.y);\n var rotatedPoint = transformPointByMatrix(matrix, trasPoint);\n var newPoint1 = { x: rotatedPoint.x, y: rotatedPoint.y };\n obj.offsetX = newPoint1.x;\n obj.offsetY = newPoint1.y;\n obj.width = node.bounds.width / 2;\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule.findAnnotationSettings(node);\n var annotationMaxWidth = 0;\n if (annotationSettings.maxWidth) {\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n if (node.bounds.width > annotationMaxWidth) {\n node.bounds.width = annotationMaxWidth;\n obj.width = node.bounds.width / 2;\n }\n }\n this.commandHandler.renderDrawing(undefined, node.pageIndex);\n };\n return NodeDrawingTool;\n}(ToolBase));\nexport { NodeDrawingTool };\n/**\n * Draws a Polygon shape node dynamically using polygon Tool\n *\n * @hidden\n */\nvar PolygonDrawingTool = /** @class */ (function (_super) {\n __extends(PolygonDrawingTool, _super);\n function PolygonDrawingTool(commandHandler, base, action) {\n var _this = _super.call(this, commandHandler, base) || this;\n _this.action = action;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n PolygonDrawingTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseDown.call(this, args);\n this.inAction = true;\n if (!this.drawingObject) {\n this.startPoint = { x: this.startPosition.x, y: this.startPosition.y };\n var nodeAnnotElement = {\n bounds: { x: this.currentPosition.x, y: this.currentPosition.y, width: 5, height: 5 },\n // eslint-disable-next-line max-len\n vertexPoints: [{ x: this.startPoint.x / this.pdfViewerBase.getZoomFactor(), y: this.startPoint.y / this.pdfViewerBase.getZoomFactor() }, { x: this.currentPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.currentPosition.y / this.pdfViewerBase.getZoomFactor() }],\n shapeAnnotationType: 'Line', fillColor: this.commandHandler.drawingObject.fillColor,\n strokeColor: this.commandHandler.drawingObject.strokeColor, pageIndex: this.pdfViewerBase.activeElements.activePageID,\n // eslint-disable-next-line max-len\n notes: this.commandHandler.drawingObject.notes, thickness: this.commandHandler.drawingObject.thickness, author: this.commandHandler.drawingObject.author,\n subject: this.commandHandler.drawingObject.subject, borderDashArray: this.commandHandler.drawingObject.borderDashArray,\n modifiedDate: this.commandHandler.drawingObject.modifiedDate, borderStyle: this.commandHandler.drawingObject.borderStyle,\n // eslint-disable-next-line max-len\n measureType: this.commandHandler.drawingObject.measureType, enableShapeLabel: this.commandHandler.enableShapeLabel, opacity: this.commandHandler.drawingObject.opacity\n };\n this.pdfViewerBase.updateFreeTextProperties(nodeAnnotElement);\n // eslint-disable-next-line\n this.drawingObject = this.commandHandler.add(nodeAnnotElement);\n }\n else {\n var pt = void 0;\n var obj = (this.drawingObject);\n pt = obj.vertexPoints[obj.vertexPoints.length - 1];\n pt = { x: pt.x, y: pt.y };\n var lastPoint = this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length - 1];\n if (!(lastPoint.x === pt.x && lastPoint.x === pt.y)) {\n this.drawingObject.vertexPoints.push(pt);\n }\n this.commandHandler.nodePropertyChange(obj, { vertexPoints: obj.vertexPoints });\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n PolygonDrawingTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction && Point.equals(this.currentPosition, this.prevPosition) === false) {\n this.dragging = true;\n var obj = (this.drawingObject);\n if (this.drawingObject && this.currentPosition) {\n obj.vertexPoints[obj.vertexPoints.length - 1].x = this.currentPosition.x / this.pdfViewerBase.getZoomFactor();\n obj.vertexPoints[obj.vertexPoints.length - 1].y = this.currentPosition.y / this.pdfViewerBase.getZoomFactor();\n this.commandHandler.nodePropertyChange(obj, { vertexPoints: obj.vertexPoints });\n }\n if (obj.measureType === 'Perimeter') {\n updatePerimeterLabel(obj, obj.vertexPoints, this.commandHandler.annotation.measureAnnotationModule);\n }\n }\n return true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @param {boolean} isDoubleClineck - Specified the double click event or not.\n * @param {boolean} isMouseLeave - Specified the mouse leave event or not.\n * @returns {void}\n */\n PolygonDrawingTool.prototype.mouseUp = function (args, isDoubleClineck, isMouseLeave) {\n _super.prototype.mouseMove.call(this, args);\n // eslint-disable-next-line\n var currentSelector;\n if (args.source && args.annotationSelectorSettings !== null) {\n currentSelector = args.source.annotationSelectorSettings;\n }\n if (this.drawingObject) {\n // eslint-disable-next-line max-len\n var bounds = new Rect(this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length - 1].x - 20, this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length - 1].y - 20, 40, 40);\n var point = { x: this.drawingObject.vertexPoints[0].x, y: this.drawingObject.vertexPoints[0].y };\n if ((bounds.containsPoint(point) || isDoubleClineck) && this.dragging) {\n if (this.inAction) {\n this.inAction = false;\n if (this.drawingObject) {\n if (!isMouseLeave) {\n if (this.drawingObject.vertexPoints.length > 2) {\n this.drawingObject.vertexPoints.splice(this.drawingObject.vertexPoints.length - 1, 1);\n }\n }\n if (this.action === 'Polygon') {\n if (!isMouseLeave) {\n // eslint-disable-next-line max-len\n this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length - 1] = this.drawingObject.vertexPoints[0];\n }\n else {\n // eslint-disable-next-line max-len\n this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length] = this.drawingObject.vertexPoints[0];\n }\n this.commandHandler.nodePropertyChange(this.drawingObject, { vertexPoints: this.drawingObject.vertexPoints });\n var cobject = cloneObject(this.drawingObject);\n cobject.shapeAnnotationType = 'Polygon';\n cobject.bounds.width = cobject.wrapper.actualSize.width;\n cobject.bounds.height = cobject.wrapper.actualSize.height;\n cobject.bounds.x = this.drawingObject.wrapper.bounds.x;\n cobject.bounds.y = this.drawingObject.wrapper.bounds.y;\n this.commandHandler.add(cobject);\n this.commandHandler.remove(this.drawingObject);\n this.commandHandler.select([cobject.id], currentSelector);\n var drawingObject = this.commandHandler.selectedItems.annotations[0];\n if (drawingObject) {\n if (this.commandHandler.enableShapeAnnotation && (isNullOrUndefined(drawingObject.measureType) || drawingObject.measureType === '')) {\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.shapeAnnotationModule.renderShapeAnnotations(drawingObject, drawingObject.pageIndex);\n }\n if (this.commandHandler.enableMeasureAnnotation && (drawingObject.measureType === 'Area' || drawingObject.measureType === 'Volume')) {\n if (drawingObject.measureType === 'Area') {\n // eslint-disable-next-line max-len\n drawingObject.notes = this.commandHandler.annotation.measureAnnotationModule.calculateArea(drawingObject.vertexPoints);\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.stickyNotesAnnotationModule.addTextToComments(drawingObject.annotName, drawingObject.notes);\n }\n else if (drawingObject.measureType === 'Volume') {\n // eslint-disable-next-line max-len\n drawingObject.notes = this.commandHandler.annotation.measureAnnotationModule.calculateVolume(drawingObject.vertexPoints);\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.stickyNotesAnnotationModule.addTextToComments(drawingObject.annotName, drawingObject.notes);\n }\n if (drawingObject.enableShapeLabel) {\n drawingObject.labelContent = drawingObject.notes;\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(drawingObject, { vertexPoints: drawingObject.vertexPoints, notes: drawingObject.notes });\n }\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.measureAnnotationModule.renderMeasureShapeAnnotations(drawingObject, drawingObject.pageIndex);\n }\n }\n }\n else {\n if (!isMouseLeave) {\n if (isDoubleClineck) {\n this.drawingObject.vertexPoints.splice(this.drawingObject.vertexPoints.length - 1, 1);\n }\n }\n this.commandHandler.nodePropertyChange(this.drawingObject, {\n // eslint-disable-next-line max-len\n vertexPoints: this.drawingObject.vertexPoints, sourceDecoraterShapes: this.commandHandler.drawingObject.sourceDecoraterShapes,\n taregetDecoraterShapes: this.commandHandler.drawingObject.taregetDecoraterShapes\n });\n this.commandHandler.select([this.drawingObject.id], currentSelector);\n if (this.commandHandler.enableMeasureAnnotation && this.drawingObject.measureType === 'Perimeter') {\n this.commandHandler.renderDrawing(null, this.drawingObject.pageIndex);\n // eslint-disable-next-line max-len\n this.drawingObject.notes = this.commandHandler.annotation.measureAnnotationModule.calculatePerimeter(this.drawingObject);\n if (this.drawingObject.enableShapeLabel) {\n this.drawingObject.labelContent = this.drawingObject.notes;\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.drawingObject, { vertexPoints: this.drawingObject.vertexPoints, notes: this.drawingObject.notes });\n }\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.stickyNotesAnnotationModule.addTextToComments(this.drawingObject.annotName, this.drawingObject.notes);\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.measureAnnotationModule.renderMeasureShapeAnnotations(this.drawingObject, this.drawingObject.pageIndex);\n }\n }\n var annotationObject = this.commandHandler.selectedItems.annotations[0];\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, annotationObject, 'Addition', '', annotationObject, annotationObject);\n this.drawingObject = null;\n }\n }\n this.endAction();\n }\n else if (this.inAction && !this.dragging) {\n this.commandHandler.remove(this.drawingObject);\n }\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n PolygonDrawingTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args, true, true);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n PolygonDrawingTool.prototype.mouseWheel = function (args) {\n _super.prototype.mouseWheel.call(this, args);\n this.mouseMove(args);\n };\n /**\n * @private\n * @returns {void}\n */\n PolygonDrawingTool.prototype.endAction = function () {\n this.inAction = false;\n this.drawingObject = null;\n this.commandHandler.tool = '';\n };\n return PolygonDrawingTool;\n}(ToolBase));\nexport { PolygonDrawingTool };\n/**\n * Helps to edit the selected connectors\n *\n * @hidden\n */\nvar LineTool = /** @class */ (function (_super) {\n __extends(LineTool, _super);\n function LineTool(commandHandler, base, endPoint, drawingObject) {\n var _this = _super.call(this, commandHandler, base, true) || this;\n _this.endPoint = endPoint;\n _this.drawingObject = drawingObject;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n LineTool.prototype.mouseDown = function (args) {\n this.inAction = true;\n this.undoElement = undefined;\n _super.prototype.mouseDown.call(this, args);\n var oldPointValue;\n var connectorsShape;\n if (args.source && args.source.annotations) {\n oldPointValue = { x: this.prevPosition.x, y: this.prevPosition.y };\n connectorsShape = this.drawingObject;\n }\n this.initialPosition = args.position;\n this.prevSource = this.drawingObject;\n this.currentPosition = args.position;\n if (!this.drawingObject) {\n var measureModule = this.commandHandler.annotation.measureAnnotationModule;\n var annotationNode = {\n // eslint-disable-next-line max-len\n vertexPoints: [{ x: this.startPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.startPosition.y / this.pdfViewerBase.getZoomFactor() }, { x: this.currentPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.currentPosition.y / this.pdfViewerBase.getZoomFactor() }],\n bounds: { x: this.currentPosition.x, y: this.currentPosition.y, width: 5, height: 5 },\n sourceDecoraterShapes: this.commandHandler.drawingObject.sourceDecoraterShapes,\n taregetDecoraterShapes: this.commandHandler.drawingObject.taregetDecoraterShapes, measureType: 'Distance',\n // eslint-disable-next-line max-len\n fillColor: this.commandHandler.drawingObject.fillColor, notes: this.commandHandler.drawingObject.notes, strokeColor: this.commandHandler.drawingObject.strokeColor,\n // eslint-disable-next-line max-len\n opacity: this.commandHandler.drawingObject.opacity, thickness: this.commandHandler.drawingObject.thickness, borderDashArray: this.commandHandler.drawingObject.borderDashArray,\n shapeAnnotationType: 'Distance', pageIndex: this.pdfViewerBase.activeElements.activePageID,\n author: this.commandHandler.drawingObject.author, subject: this.commandHandler.drawingObject.subject,\n enableShapeLabel: this.commandHandler.enableShapeLabel, leaderHeight: measureModule.leaderLength\n };\n this.pdfViewerBase.updateFreeTextProperties(annotationNode);\n // eslint-disable-next-line\n this.drawingObject = this.commandHandler.add(annotationNode);\n }\n else if (!this.dragging) {\n var nodeAnnot = {\n bounds: { x: this.currentPosition.x, y: this.currentPosition.y, width: 5, height: 5 },\n // eslint-disable-next-line max-len\n vertexPoints: [{ x: this.startPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.startPosition.y / this.pdfViewerBase.getZoomFactor() }, { x: this.currentPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.currentPosition.y / this.pdfViewerBase.getZoomFactor() }],\n // eslint-disable-next-line max-len\n shapeAnnotationType: this.drawingObject.shapeAnnotationType, sourceDecoraterShapes: this.drawingObject.sourceDecoraterShapes,\n taregetDecoraterShapes: this.drawingObject.taregetDecoraterShapes, fillColor: this.drawingObject.fillColor,\n strokeColor: this.drawingObject.strokeColor, pageIndex: this.pdfViewerBase.activeElements.activePageID,\n // eslint-disable-next-line max-len\n opacity: this.drawingObject.opacity || 1, borderDashArray: this.drawingObject.borderDashArray, thickness: this.drawingObject.thickness,\n modifiedDate: this.drawingObject.modifiedDate, author: this.drawingObject.author, subject: this.drawingObject.subject,\n lineHeadEnd: this.drawingObject.lineHeadEnd, lineHeadStart: this.drawingObject.lineHeadStart,\n measureType: this.commandHandler.drawingObject.measureType, enableShapeLabel: this.commandHandler.enableShapeLabel\n };\n this.pdfViewerBase.updateFreeTextProperties(nodeAnnot);\n // eslint-disable-next-line\n this.drawingObject = this.commandHandler.add(nodeAnnot);\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n LineTool.prototype.mouseUp = function (args) {\n if (this.dragging) {\n _super.prototype.mouseMove.call(this, args);\n if (this.commandHandler) {\n // eslint-disable-next-line\n var currentSelector = void 0;\n if (args.source && args.annotationSelectorSettings !== null) {\n currentSelector = args.source.annotationSelectorSettings;\n }\n else {\n currentSelector = '';\n }\n // eslint-disable-next-line\n var node = this.drawingObject;\n this.commandHandler.nodePropertyChange(node, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([node.id], currentSelector);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelector);\n }\n if (this.endPoint && this.endPoint.indexOf('ConnectorSegmentPoint') > -1 && this.dragging) {\n this.commandHandler.annotation.updateCalibrateValues(this.drawingObject);\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, this.drawingObject, 'Addition', '', this.drawingObject, this.drawingObject);\n this.drawingObject = null;\n this.dragging = false;\n _super.prototype.mouseUp.call(this, args);\n }\n if (this.drawingObject) {\n this.endPoint = 'ConnectorSegmentPoint_1';\n }\n }\n else {\n if (this.drawingObject) {\n this.commandHandler.remove(this.drawingObject);\n }\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n LineTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction && Point.equals(this.currentPosition, this.prevPosition) === false) {\n this.currentPosition = args.position;\n this.dragging = true;\n if (this.currentPosition && this.prevPosition) {\n var diffX = this.currentPosition.x - this.prevPosition.x;\n var diffY = this.currentPosition.y - this.prevPosition.y;\n // eslint-disable-next-line\n var currentSelector = void 0;\n if (args.source && args.annotationSelectorSettings !== null) {\n currentSelector = args.source.annotationSelectorSettings;\n }\n else {\n currentSelector = '';\n }\n // eslint-disable-next-line max-len\n if (this.inAction && this.commandHandler && this.drawingObject && this.endPoint !== undefined && diffX !== 0 || diffY !== 0) {\n // eslint-disable-next-line max-len\n this.blocked = !this.commandHandler.dragConnectorEnds(this.endPoint, this.drawingObject, this.currentPosition, this.selectedSegment, args.target, null, currentSelector);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelector);\n }\n }\n this.prevPosition = this.currentPosition;\n }\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n LineTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n /**\n * @private\n * @returns {void}\n */\n LineTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n this.prevPosition = null;\n this.endPoint = null;\n };\n return LineTool;\n}(ToolBase));\nexport { LineTool };\n/**\n * Rotates the selected objects\n *\n * @hidden\n */\nvar RotateTool = /** @class */ (function (_super) {\n __extends(RotateTool, _super);\n function RotateTool(commandHandler, base) {\n return _super.call(this, commandHandler, base, true) || this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n RotateTool.prototype.mouseDown = function (args) {\n var nodeMouseDown = cloneObject(args.source);\n this.undoElement = {\n bounds: {\n x: nodeMouseDown.wrapper.offsetX, y: nodeMouseDown.wrapper.offsetY,\n width: nodeMouseDown.wrapper.actualSize.width, height: nodeMouseDown.wrapper.actualSize.height\n }, rotateAngle: nodeMouseDown.rotateAngle\n // eslint-disable-next-line\n };\n _super.prototype.mouseDown.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n RotateTool.prototype.mouseUp = function (args) {\n var object = args.source;\n // eslint-disable-next-line\n var newShapeObject;\n if (this.undoElement.rotateAngle !== object.wrapper.rotateAngle) {\n // eslint-disable-next-line\n var currentSelector = args.source.annotations[0].annotationSelectorSettings;\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelector);\n newShapeObject = {\n bounds: {\n x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY,\n width: args.source.wrapper.actualSize.width, height: args.source.wrapper.actualSize.height\n }, rotateAngle: args.source.wrapper.rotateAngle\n };\n }\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, args.source, 'Rotate', '', this.undoElement, newShapeObject);\n this.commandHandler.annotation.stampAnnotationModule.updateSessionStorage(args.source, null, 'Rotate');\n this.commandHandler.annotation.stickyNotesAnnotationModule.updateStickyNotes(args.source, null);\n _super.prototype.mouseUp.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n RotateTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n var object = args.source;\n // eslint-disable-next-line\n var currentSelector = args.source.annotations[0].annotationSelectorSettings;\n this.currentPosition = args.position;\n if (object.wrapper) {\n var refPoint = { x: object.wrapper.offsetX, y: object.wrapper.offsetY };\n var angle = Point.findAngle(refPoint, this.currentPosition) + 90;\n angle = (angle + 360) % 360;\n this.blocked = !(this.commandHandler.rotate(angle - object.wrapper.rotateAngle, currentSelector));\n }\n return !this.blocked;\n };\n RotateTool.prototype.getTooltipContent = function (node) {\n return Math.round((node.rotateAngle % 360)).toString() + '\\xB0';\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n RotateTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n /**\n * @private\n * @returns {void}\n */\n RotateTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n };\n return RotateTool;\n}(ToolBase));\nexport { RotateTool };\n","import React, { useCallback } from 'react';\r\nimport clsx from 'clsx';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport { makeStyles } from '@mui/styles';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n root: {},\r\n cellHide: {\r\n display: 'none',\r\n },\r\n simpleHeader: {\r\n [theme.breakpoints.down('sm')]: {\r\n display: 'inline-block',\r\n fontWeight: 'bold',\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n simpleCell: {\r\n [theme.breakpoints.down('sm')]: {\r\n display: 'inline-block',\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n stackedHeader: {\r\n verticalAlign: 'top',\r\n },\r\n stackedCommon: {\r\n [theme.breakpoints.down('md')]: {\r\n display: 'inline-block',\r\n fontSize: '16px',\r\n height: 'auto',\r\n width: 'calc(50%)',\r\n boxSizing: 'border-box',\r\n '&:last-child': {\r\n borderBottom: 'none',\r\n },\r\n '&:nth-last-child(2)': {\r\n borderBottom: 'none',\r\n },\r\n },\r\n },\r\n stackedCommonAlways: {\r\n display: 'inline-block',\r\n fontSize: '16px',\r\n height: 'auto',\r\n width: 'calc(50%)',\r\n boxSizing: 'border-box',\r\n '&:last-child': {\r\n borderBottom: 'none',\r\n },\r\n '&:nth-last-child(2)': {\r\n borderBottom: 'none',\r\n },\r\n },\r\n stackedParent: {\r\n [theme.breakpoints.down('md')]: {\r\n display: 'inline-block',\r\n fontSize: '16px',\r\n height: 'auto',\r\n width: 'calc(100%)',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n stackedParentAlways: {\r\n display: 'inline-block',\r\n fontSize: '16px',\r\n height: 'auto',\r\n width: 'calc(100%)',\r\n boxSizing: 'border-box',\r\n },\r\n cellStackedSmall: {\r\n [theme.breakpoints.down('md')]: {\r\n width: '50%',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n responsiveStackedSmall: {\r\n [theme.breakpoints.down('md')]: {\r\n width: '50%',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n responsiveStackedSmallParent: {\r\n [theme.breakpoints.down('md')]: {\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n }),\r\n { name: 'MUIDataTableBodyCell' },\r\n);\r\n\r\nfunction TableBodyCell(props) {\r\n const classes = useStyles();\r\n const {\r\n children,\r\n colIndex,\r\n columnHeader,\r\n options,\r\n dataIndex,\r\n rowIndex,\r\n className,\r\n print,\r\n tableId,\r\n ...otherProps\r\n } = props;\r\n const onCellClick = options.onCellClick;\r\n\r\n const handleClick = useCallback(\r\n event => {\r\n onCellClick(children, { colIndex, rowIndex, dataIndex, event });\r\n },\r\n [onCellClick, children, colIndex, rowIndex, dataIndex],\r\n );\r\n\r\n // Event listeners. Avoid attaching them if they're not necessary.\r\n let methods = {};\r\n if (onCellClick) {\r\n methods.onClick = handleClick;\r\n }\r\n\r\n let cells = [\r\n \r\n {columnHeader}\r\n ,\r\n \r\n {typeof children === 'function' ? children(dataIndex, rowIndex) : children}\r\n ,\r\n ];\r\n\r\n var innerCells;\r\n if (\r\n ['standard', 'scrollMaxHeight', 'scrollFullHeight', 'scrollFullHeightFullWidth'].indexOf(options.responsive) !== -1\r\n ) {\r\n innerCells = cells.slice(1, 2);\r\n } else {\r\n innerCells = cells;\r\n }\r\n\r\n return (\r\n \r\n {innerCells}\r\n \r\n );\r\n}\r\n\r\nexport default TableBodyCell;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport { withStyles } from '@mui/styles';\r\n\r\nconst defaultBodyRowStyles = theme => ({\r\n root: {\r\n // material v4\r\n '&.Mui-selected': {\r\n backgroundColor: theme.palette.action.selected,\r\n },\r\n\r\n // material v3 workaround\r\n '&.mui-row-selected': {\r\n backgroundColor: theme.palette.action.selected,\r\n },\r\n },\r\n hoverCursor: { cursor: 'pointer' },\r\n responsiveStacked: {\r\n [theme.breakpoints.down('md')]: {\r\n borderTop: 'solid 2px rgba(0, 0, 0, 0.15)',\r\n borderBottom: 'solid 2px rgba(0, 0, 0, 0.15)',\r\n padding: 0,\r\n margin: 0,\r\n },\r\n },\r\n responsiveSimple: {\r\n [theme.breakpoints.down('sm')]: {\r\n borderTop: 'solid 2px rgba(0, 0, 0, 0.15)',\r\n borderBottom: 'solid 2px rgba(0, 0, 0, 0.15)',\r\n padding: 0,\r\n margin: 0,\r\n },\r\n },\r\n});\r\n\r\nclass TableBodyRow extends React.Component {\r\n static propTypes = {\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Callback to execute when row is clicked */\r\n onClick: PropTypes.func,\r\n /** Current row selected or not */\r\n rowSelected: PropTypes.bool,\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n };\r\n\r\n render() {\r\n const { classes, options, rowSelected, onClick, className, isRowSelectable, ...rest } = this.props;\r\n\r\n var methods = {};\r\n if (onClick) {\r\n methods.onClick = onClick;\r\n }\r\n\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultBodyRowStyles, { name: 'MUIDataTableBodyRow' })(TableBodyRow);\r\n","import React from 'react';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\r\nimport RemoveIcon from '@mui/icons-material/Remove';\r\n\r\nconst ExpandButton = ({\r\n areAllRowsExpanded,\r\n buttonClass,\r\n expandableRowsHeader,\r\n expandedRows,\r\n iconClass,\r\n iconIndeterminateClass,\r\n isHeaderCell,\r\n onExpand,\r\n}) => {\r\n return (\r\n <>\r\n {isHeaderCell && !areAllRowsExpanded() && areAllRowsExpanded && expandedRows.data.length > 0 ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ExpandButton;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport { makeStyles } from '@mui/styles';\r\nimport ExpandButton from './ExpandButton';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n root: {\r\n '@media print': {\r\n display: 'none',\r\n },\r\n },\r\n fixedHeader: {\r\n position: 'sticky',\r\n top: '0px',\r\n zIndex: 100,\r\n },\r\n fixedLeft: {\r\n position: 'sticky',\r\n left: '0px',\r\n zIndex: 100,\r\n },\r\n icon: {\r\n cursor: 'pointer',\r\n transition: 'transform 0.25s',\r\n },\r\n expanded: {\r\n transform: 'rotate(90deg)',\r\n },\r\n hide: {\r\n visibility: 'hidden',\r\n },\r\n headerCell: {\r\n zIndex: 110,\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n expandDisabled: {},\r\n checkboxRoot: {},\r\n checked: {},\r\n disabled: {},\r\n }),\r\n\r\n { name: 'MUIDataTableSelectCell' },\r\n);\r\n\r\nconst TableSelectCell = ({\r\n fixedHeader,\r\n fixedSelectColumn,\r\n isHeaderCell = false,\r\n expandableOn = false,\r\n selectableOn = 'none',\r\n isRowExpanded = false,\r\n onExpand,\r\n isRowSelectable,\r\n selectableRowsHeader,\r\n hideExpandButton,\r\n expandableRowsHeader,\r\n expandedRows,\r\n areAllRowsExpanded = () => false,\r\n selectableRowsHideCheckboxes,\r\n setHeadCellRef,\r\n dataIndex,\r\n components = {},\r\n ...otherProps\r\n}) => {\r\n const classes = useStyles();\r\n const CheckboxComponent = components.Checkbox || Checkbox;\r\n const ExpandButtonComponent = components.ExpandButton || ExpandButton;\r\n\r\n if (expandableOn === false && (selectableOn === 'none' || selectableRowsHideCheckboxes === true)) {\r\n return null;\r\n }\r\n\r\n const cellClass = clsx({\r\n [classes.root]: true,\r\n [classes.fixedHeader]: fixedHeader && isHeaderCell,\r\n [classes.fixedLeft]: fixedSelectColumn,\r\n [classes.headerCell]: isHeaderCell,\r\n });\r\n\r\n const buttonClass = clsx({\r\n [classes.expandDisabled]: hideExpandButton,\r\n });\r\n\r\n const iconClass = clsx({\r\n [classes.icon]: true,\r\n [classes.hide]: isHeaderCell && !expandableRowsHeader,\r\n [classes.expanded]: isRowExpanded || (isHeaderCell && areAllRowsExpanded()),\r\n });\r\n const iconIndeterminateClass = clsx({\r\n [classes.icon]: true,\r\n [classes.hide]: isHeaderCell && !expandableRowsHeader,\r\n });\r\n\r\n let refProp = {};\r\n if (setHeadCellRef) {\r\n refProp.ref = el => {\r\n setHeadCellRef(0, 0, el);\r\n };\r\n }\r\n\r\n const renderCheckBox = () => {\r\n if (isHeaderCell && (selectableOn !== 'multiple' || selectableRowsHeader === false)) {\r\n // only display the header checkbox for multiple selection.\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n
\r\n {expandableOn && (\r\n \r\n )}\r\n {selectableOn !== 'none' && selectableRowsHideCheckboxes !== true && renderCheckBox()}\r\n
\r\n
\r\n );\r\n};\r\n\r\nTableSelectCell.propTypes = {\r\n /** Select cell checked on/off */\r\n checked: PropTypes.bool.isRequired,\r\n /** Select cell part of fixed header */\r\n fixedHeader: PropTypes.bool,\r\n /** Callback to trigger cell update */\r\n onChange: PropTypes.func,\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n /** Is expandable option enabled */\r\n expandableOn: PropTypes.bool,\r\n /** Adds extra class, `expandDisabled` when the row is not expandable. */\r\n hideExpandButton: PropTypes.bool,\r\n /** Is selectable option enabled */\r\n selectableOn: PropTypes.string,\r\n /** Select cell disabled on/off */\r\n isRowSelectable: PropTypes.bool,\r\n};\r\n\r\nexport default TableSelectCell;\r\n","function buildMap(rows) {\r\n return rows.reduce((accum, { dataIndex }) => {\r\n accum[dataIndex] = true;\r\n return accum;\r\n }, {});\r\n}\r\n\r\nfunction escapeDangerousCSVCharacters(data) {\r\n if (typeof data === 'string') {\r\n // Places single quote before the appearance of dangerous characters if they\r\n // are the first in the data string.\r\n return data.replace(/^\\+|^\\-|^\\=|^\\@/g, \"'$&\");\r\n }\r\n\r\n return data;\r\n}\r\n\r\nfunction warnDeprecated(warning, consoleWarnings = true) {\r\n let consoleWarn = typeof consoleWarnings === 'function' ? consoleWarnings : console.warn;\r\n if (consoleWarnings) {\r\n consoleWarn(`Deprecation Notice: ${warning}`);\r\n }\r\n}\r\n\r\nfunction warnInfo(warning, consoleWarnings = true) {\r\n let consoleWarn = typeof consoleWarnings === 'function' ? consoleWarnings : console.warn;\r\n if (consoleWarnings) {\r\n consoleWarn(`${warning}`);\r\n }\r\n}\r\n\r\nfunction getPageValue(count, rowsPerPage, page) {\r\n const totalPages = count <= rowsPerPage ? 1 : Math.ceil(count / rowsPerPage);\r\n\r\n // `page` is 0-indexed\r\n return page >= totalPages ? totalPages - 1 : page;\r\n}\r\n\r\nfunction getCollatorComparator() {\r\n if (!!Intl) {\r\n const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });\r\n return collator.compare;\r\n }\r\n\r\n const fallbackComparator = (a, b) => a.localeCompare(b);\r\n return fallbackComparator;\r\n}\r\n\r\nfunction sortCompare(order) {\r\n return (a, b) => {\r\n var aData = a.data === null || typeof a.data === 'undefined' ? '' : a.data;\r\n var bData = b.data === null || typeof b.data === 'undefined' ? '' : b.data;\r\n return (\r\n (typeof aData.localeCompare === 'function' ? aData.localeCompare(bData) : aData - bData) *\r\n (order === 'asc' ? 1 : -1)\r\n );\r\n };\r\n}\r\n\r\nfunction buildCSV(columns, data, options) {\r\n const replaceDoubleQuoteInString = columnData =>\r\n typeof columnData === 'string' ? columnData.replace(/\\\"/g, '\"\"') : columnData;\r\n\r\n const buildHead = columns => {\r\n return (\r\n columns\r\n .reduce(\r\n (soFar, column) =>\r\n column.download\r\n ? soFar +\r\n '\"' +\r\n escapeDangerousCSVCharacters(replaceDoubleQuoteInString(column.label || column.name)) +\r\n '\"' +\r\n options.downloadOptions.separator\r\n : soFar,\r\n '',\r\n )\r\n .slice(0, -1) + '\\r\\n'\r\n );\r\n };\r\n const CSVHead = buildHead(columns);\r\n\r\n const buildBody = data => {\r\n if (!data.length) return '';\r\n return data\r\n .reduce(\r\n (soFar, row) =>\r\n soFar +\r\n '\"' +\r\n row.data\r\n .filter((_, index) => columns[index].download)\r\n .map(columnData => escapeDangerousCSVCharacters(replaceDoubleQuoteInString(columnData)))\r\n .join('\"' + options.downloadOptions.separator + '\"') +\r\n '\"\\r\\n',\r\n '',\r\n )\r\n .trim();\r\n };\r\n const CSVBody = buildBody(data);\r\n\r\n const csv = options.onDownload\r\n ? options.onDownload(buildHead, buildBody, columns, data)\r\n : `${CSVHead}${CSVBody}`.trim();\r\n\r\n return csv;\r\n}\r\n\r\nfunction downloadCSV(csv, filename) {\r\n const blob = new Blob([csv], { type: 'text/csv' });\r\n\r\n /* taken from react-csv */\r\n if (navigator && navigator.msSaveOrOpenBlob) {\r\n navigator.msSaveOrOpenBlob(blob, filename);\r\n } else {\r\n const dataURI = `data:text/csv;charset=utf-8,${csv}`;\r\n\r\n const URL = window.URL || window.webkitURL;\r\n const downloadURI = typeof URL.createObjectURL === 'undefined' ? dataURI : URL.createObjectURL(blob);\r\n\r\n let link = document.createElement('a');\r\n link.setAttribute('href', downloadURI);\r\n link.setAttribute('download', filename);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n}\r\n\r\nfunction createCSVDownload(columns, data, options, downloadCSV) {\r\n const csv = buildCSV(columns, data, options);\r\n\r\n if (options.onDownload && csv === false) {\r\n return;\r\n }\r\n\r\n downloadCSV(csv, options.downloadOptions.filename);\r\n}\r\n\r\nexport {\r\n buildMap,\r\n getPageValue,\r\n getCollatorComparator,\r\n sortCompare,\r\n createCSVDownload,\r\n buildCSV,\r\n downloadCSV,\r\n warnDeprecated,\r\n warnInfo,\r\n escapeDangerousCSVCharacters,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Typography from '@mui/material/Typography';\r\nimport MuiTableBody from '@mui/material/TableBody';\r\nimport TableBodyCell from './TableBodyCell';\r\nimport TableBodyRow from './TableBodyRow';\r\nimport TableSelectCell from './TableSelectCell';\r\nimport { withStyles } from '@mui/styles';\r\nimport cloneDeep from 'lodash.clonedeep';\r\nimport { getPageValue } from '../utils';\r\nimport clsx from 'clsx';\r\n\r\nconst defaultBodyStyles = theme => ({\r\n root: {},\r\n emptyTitle: {\r\n textAlign: 'center',\r\n },\r\n lastStackedCell: {\r\n [theme.breakpoints.down('md')]: {\r\n '& td:last-child': {\r\n borderBottom: 'none',\r\n },\r\n },\r\n },\r\n lastSimpleCell: {\r\n [theme.breakpoints.down('sm')]: {\r\n '& td:last-child': {\r\n borderBottom: 'none',\r\n },\r\n },\r\n },\r\n});\r\n\r\nclass TableBody extends React.Component {\r\n static propTypes = {\r\n /** Data used to describe table */\r\n data: PropTypes.array.isRequired,\r\n /** Total number of data rows */\r\n count: PropTypes.number.isRequired,\r\n /** Columns used to describe table */\r\n columns: PropTypes.array.isRequired,\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Data used to filter table against */\r\n filterList: PropTypes.array,\r\n /** Callback to execute when row is clicked */\r\n onRowClick: PropTypes.func,\r\n /** Table rows expanded */\r\n expandedRows: PropTypes.object,\r\n /** Table rows selected */\r\n selectedRows: PropTypes.object,\r\n /** Callback to trigger table row select */\r\n selectRowUpdate: PropTypes.func,\r\n /** The most recent row to have been selected/unselected */\r\n previousSelectedRow: PropTypes.object,\r\n /** Data used to search table against */\r\n searchText: PropTypes.string,\r\n /** Toggle row expandable */\r\n toggleExpandRow: PropTypes.func,\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n };\r\n\r\n static defaultProps = {\r\n toggleExpandRow: () => {},\r\n };\r\n\r\n buildRows() {\r\n const { data, page, rowsPerPage, count } = this.props;\r\n\r\n if (this.props.options.serverSide) return data.length ? data : null;\r\n\r\n let rows = [];\r\n const highestPageInRange = getPageValue(count, rowsPerPage, page);\r\n const fromIndex = highestPageInRange === 0 ? 0 : highestPageInRange * rowsPerPage;\r\n const toIndex = Math.min(count, (highestPageInRange + 1) * rowsPerPage);\r\n\r\n if (page > highestPageInRange) {\r\n console.warn('Current page is out of range, using the highest page that is in range instead.');\r\n }\r\n\r\n for (let rowIndex = fromIndex; rowIndex < count && rowIndex < toIndex; rowIndex++) {\r\n if (data[rowIndex] !== undefined) rows.push(data[rowIndex]);\r\n }\r\n\r\n return rows.length ? rows : null;\r\n }\r\n\r\n getRowIndex(index) {\r\n const { page, rowsPerPage, options } = this.props;\r\n\r\n if (options.serverSide) {\r\n return index;\r\n }\r\n\r\n const startIndex = page === 0 ? 0 : page * rowsPerPage;\r\n return startIndex + index;\r\n }\r\n\r\n isRowSelected(dataIndex) {\r\n const { selectedRows } = this.props;\r\n return selectedRows.lookup && selectedRows.lookup[dataIndex] ? true : false;\r\n }\r\n\r\n isRowExpanded(dataIndex) {\r\n const { expandedRows } = this.props;\r\n return expandedRows.lookup && expandedRows.lookup[dataIndex] ? true : false;\r\n }\r\n\r\n isRowSelectable(dataIndex, selectedRows) {\r\n const { options } = this.props;\r\n selectedRows = selectedRows || this.props.selectedRows;\r\n\r\n if (options.isRowSelectable) {\r\n return options.isRowSelectable(dataIndex, selectedRows);\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n isRowExpandable(dataIndex) {\r\n const { options, expandedRows } = this.props;\r\n if (options.isRowExpandable) {\r\n return options.isRowExpandable(dataIndex, expandedRows);\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n handleRowSelect = (data, event) => {\r\n let shiftKey = event && event.nativeEvent ? event.nativeEvent.shiftKey : false;\r\n let shiftAdjacentRows = [];\r\n let previousSelectedRow = this.props.previousSelectedRow;\r\n\r\n // If the user is pressing shift and has previously clicked another row.\r\n if (shiftKey && previousSelectedRow && previousSelectedRow.index < this.props.data.length) {\r\n let curIndex = previousSelectedRow.index;\r\n\r\n // Create a copy of the selectedRows object. This will be used and modified\r\n // below when we see if we can add adjacent rows.\r\n let selectedRows = cloneDeep(this.props.selectedRows);\r\n\r\n // Add the clicked on row to our copy of selectedRows (if it isn't already present).\r\n let clickedDataIndex = this.props.data[data.index].dataIndex;\r\n if (selectedRows.data.filter(d => d.dataIndex === clickedDataIndex).length === 0) {\r\n selectedRows.data.push({\r\n index: data.index,\r\n dataIndex: clickedDataIndex,\r\n });\r\n selectedRows.lookup[clickedDataIndex] = true;\r\n }\r\n\r\n while (curIndex !== data.index) {\r\n let dataIndex = this.props.data[curIndex].dataIndex;\r\n\r\n if (this.isRowSelectable(dataIndex, selectedRows)) {\r\n let lookup = {\r\n index: curIndex,\r\n dataIndex: dataIndex,\r\n };\r\n\r\n // Add adjacent row to temp selectedRow object if it isn't present.\r\n if (selectedRows.data.filter(d => d.dataIndex === dataIndex).length === 0) {\r\n selectedRows.data.push(lookup);\r\n selectedRows.lookup[dataIndex] = true;\r\n }\r\n\r\n shiftAdjacentRows.push(lookup);\r\n }\r\n curIndex = data.index > curIndex ? curIndex + 1 : curIndex - 1;\r\n }\r\n }\r\n this.props.selectRowUpdate('cell', data, shiftAdjacentRows);\r\n };\r\n\r\n handleRowClick = (row, data, event) => {\r\n // Don't trigger onRowClick if the event was actually the expandable icon.\r\n if (\r\n event.target.id === 'expandable-button' ||\r\n (event.target.nodeName === 'path' && event.target.parentNode.id === 'expandable-button')\r\n ) {\r\n return;\r\n }\r\n\r\n // Don't trigger onRowClick if the event was actually a row selection via checkbox\r\n if (event.target.id && event.target.id.startsWith('MUIDataTableSelectCell')) return;\r\n\r\n // Check if we should toggle row select when row is clicked anywhere\r\n if (\r\n this.props.options.selectableRowsOnClick &&\r\n this.props.options.selectableRows !== 'none' &&\r\n this.isRowSelectable(data.dataIndex, this.props.selectedRows)\r\n ) {\r\n const selectRow = { index: data.rowIndex, dataIndex: data.dataIndex };\r\n this.handleRowSelect(selectRow, event);\r\n }\r\n // Check if we should trigger row expand when row is clicked anywhere\r\n if (\r\n this.props.options.expandableRowsOnClick &&\r\n this.props.options.expandableRows &&\r\n this.isRowExpandable(data.dataIndex, this.props.expandedRows)\r\n ) {\r\n const expandRow = { index: data.rowIndex, dataIndex: data.dataIndex };\r\n this.props.toggleExpandRow(expandRow);\r\n }\r\n\r\n // Don't trigger onRowClick if the event was actually a row selection via click\r\n if (this.props.options.selectableRowsOnClick) return;\r\n\r\n this.props.options.onRowClick && this.props.options.onRowClick(row, data, event);\r\n };\r\n\r\n processRow = (row, columnOrder) => {\r\n let ret = [];\r\n for (let ii = 0; ii < row.length; ii++) {\r\n ret.push({\r\n value: row[columnOrder[ii]],\r\n index: columnOrder[ii],\r\n });\r\n }\r\n return ret;\r\n };\r\n\r\n render() {\r\n const {\r\n classes,\r\n columns,\r\n toggleExpandRow,\r\n options,\r\n columnOrder = this.props.columns.map((item, idx) => idx),\r\n components = {},\r\n tableId,\r\n } = this.props;\r\n const tableRows = this.buildRows();\r\n const visibleColCnt = columns.filter(c => c.display === 'true').length;\r\n\r\n return (\r\n \r\n {tableRows && tableRows.length > 0 ? (\r\n tableRows.map((data, rowIndex) => {\r\n const { data: row, dataIndex } = data;\r\n\r\n if (options.customRowRender) {\r\n return options.customRowRender(row, dataIndex, rowIndex);\r\n }\r\n\r\n let isRowSelected = options.selectableRows !== 'none' ? this.isRowSelected(dataIndex) : false;\r\n let isRowSelectable = this.isRowSelectable(dataIndex);\r\n let bodyClasses = options.setRowProps ? options.setRowProps(row, dataIndex, rowIndex) || {} : {};\r\n\r\n const processedRow = this.processRow(row, columnOrder);\r\n\r\n return (\r\n \r\n \r\n \r\n {processedRow.map(\r\n column =>\r\n columns[column.index].display === 'true' && (\r\n \r\n {column.value}\r\n \r\n ),\r\n )}\r\n \r\n {this.isRowExpanded(dataIndex) && options.renderExpandableRow(row, { rowIndex, dataIndex })}\r\n \r\n );\r\n })\r\n ) : (\r\n \r\n \r\n \r\n {options.textLabels.body.noMatch}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultBodyStyles, { name: 'MUIDataTableBody' })(TableBody);\r\n","import Button from '@mui/material/Button';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport FormGroup from '@mui/material/FormGroup';\r\nimport Grid from '@mui/material/Grid';\r\nimport Input from '@mui/material/Input';\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport Select from '@mui/material/Select';\r\nimport TextField from '@mui/material/TextField';\r\nimport Typography from '@mui/material/Typography';\r\nimport clsx from 'clsx';\r\nimport { withStyles } from '@mui/styles';\r\nimport cloneDeep from 'lodash.clonedeep';\r\n\r\nexport const defaultFilterStyles = theme => ({\r\n root: {\r\n backgroundColor: theme.palette.background.default,\r\n padding: '24px 24px 36px 24px',\r\n fontFamily: 'Roboto',\r\n },\r\n header: {\r\n flex: '0 0 auto',\r\n marginBottom: '16px',\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n title: {\r\n display: 'inline-block',\r\n marginLeft: '7px',\r\n color: theme.palette.text.primary,\r\n fontSize: '14px',\r\n fontWeight: 500,\r\n },\r\n noMargin: {\r\n marginLeft: '0px',\r\n },\r\n reset: {\r\n alignSelf: 'left',\r\n },\r\n resetLink: {\r\n marginLeft: '16px',\r\n fontSize: '12px',\r\n cursor: 'pointer',\r\n },\r\n filtersSelected: {\r\n alignSelf: 'right',\r\n },\r\n /* checkbox */\r\n checkboxListTitle: {\r\n marginLeft: '7px',\r\n marginBottom: '8px',\r\n fontSize: '14px',\r\n color: theme.palette.text.secondary,\r\n textAlign: 'left',\r\n fontWeight: 500,\r\n },\r\n checkboxFormGroup: {\r\n marginTop: '8px',\r\n },\r\n checkboxFormControl: {\r\n margin: '0px',\r\n },\r\n checkboxFormControlLabel: {\r\n fontSize: '15px',\r\n marginLeft: '8px',\r\n color: theme.palette.text.primary,\r\n },\r\n checkboxIcon: {\r\n width: '32px',\r\n height: '32px',\r\n },\r\n checkbox: {},\r\n checked: {},\r\n gridListTile: {\r\n marginTop: '16px',\r\n },\r\n});\r\n\r\nclass TableFilter extends React.Component {\r\n static propTypes = {\r\n /** Data used to populate filter dropdown/checkbox */\r\n filterData: PropTypes.array.isRequired,\r\n /** Data selected to be filtered against dropdown/checkbox */\r\n filterList: PropTypes.array.isRequired,\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Callback to trigger filter update */\r\n onFilterUpdate: PropTypes.func,\r\n /** Callback to trigger filter reset */\r\n onFilterReset: PropTypes.func,\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n filterList: cloneDeep(props.filterList),\r\n };\r\n }\r\n\r\n filterUpdate = (index, value, column, type, customUpdate) => {\r\n let newFilterList = this.state.filterList.slice(0);\r\n\r\n this.props.updateFilterByType(newFilterList, index, value, type, customUpdate);\r\n this.setState({\r\n filterList: newFilterList,\r\n });\r\n };\r\n\r\n handleCheckboxChange = (index, value, column) => {\r\n this.filterUpdate(index, value, column, 'checkbox');\r\n\r\n if (this.props.options.confirmFilters !== true) {\r\n this.props.onFilterUpdate(index, value, column, 'checkbox');\r\n }\r\n };\r\n\r\n handleDropdownChange = (event, index, column) => {\r\n const labelFilterAll = this.props.options.textLabels.filter.all;\r\n const value = event.target.value === labelFilterAll ? [] : [event.target.value];\r\n this.filterUpdate(index, value, column, 'dropdown');\r\n\r\n if (this.props.options.confirmFilters !== true) {\r\n this.props.onFilterUpdate(index, value, column, 'dropdown');\r\n }\r\n };\r\n\r\n handleMultiselectChange = (index, value, column) => {\r\n this.filterUpdate(index, value, column, 'multiselect');\r\n\r\n if (this.props.options.confirmFilters !== true) {\r\n this.props.onFilterUpdate(index, value, column, 'multiselect');\r\n }\r\n };\r\n\r\n handleTextFieldChange = (event, index, column) => {\r\n this.filterUpdate(index, event.target.value, column, 'textField');\r\n\r\n if (this.props.options.confirmFilters !== true) {\r\n this.props.onFilterUpdate(index, event.target.value, column, 'textField');\r\n }\r\n };\r\n\r\n handleCustomChange = (value, index, column) => {\r\n this.filterUpdate(index, value, column.name, column.filterType);\r\n\r\n if (this.props.options.confirmFilters !== true) {\r\n this.props.onFilterUpdate(index, value, column.name, column.filterType);\r\n }\r\n };\r\n\r\n renderCheckbox(column, index, components = {}) {\r\n const CheckboxComponent = components.Checkbox || Checkbox;\r\n\r\n const { classes, filterData } = this.props;\r\n const { filterList } = this.state;\r\n const renderItem =\r\n column.filterOptions && column.filterOptions.renderValue ? column.filterOptions.renderValue : v => v;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {column.label}\r\n \r\n \r\n \r\n {filterData[index].map((filterValue, filterIndex) => (\r\n \r\n = 0}\r\n classes={{\r\n root: classes.checkbox,\r\n checked: classes.checked,\r\n }}\r\n value={filterValue != null ? filterValue.toString() : ''}\r\n />\r\n }\r\n label={renderItem(filterValue)}\r\n />\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderSelect(column, index) {\r\n const { classes, filterData, options } = this.props;\r\n const { filterList } = this.state;\r\n const textLabels = options.textLabels.filter;\r\n const renderItem =\r\n column.filterOptions && column.filterOptions.renderValue\r\n ? column.filterOptions.renderValue\r\n : v => (v != null ? v.toString() : '');\r\n const width = (column.filterOptions && column.filterOptions.fullWidth) === true ? 12 : 6;\r\n\r\n return (\r\n \r\n \r\n {column.label}\r\n this.handleDropdownChange(event, index, column.name)}\r\n input={}>\r\n \r\n {textLabels.all}\r\n \r\n {filterData[index].map((filterValue, filterIndex) => (\r\n \r\n {renderItem(filterValue)}\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderTextField(column, index) {\r\n const { classes } = this.props;\r\n const { filterList } = this.state;\r\n if (column.filterOptions && column.filterOptions.renderValue) {\r\n console.warn('Custom renderValue not supported for textField filters');\r\n }\r\n const width = (column.filterOptions && column.filterOptions.fullWidth) === true ? 12 : 6;\r\n\r\n return (\r\n \r\n \r\n this.handleTextFieldChange(event, index, column.name)}\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n renderMultiselect(column, index, components = {}) {\r\n const CheckboxComponent = components.Checkbox || Checkbox;\r\n\r\n const { classes, filterData } = this.props;\r\n const { filterList } = this.state;\r\n const renderItem =\r\n column.filterOptions && column.filterOptions.renderValue ? column.filterOptions.renderValue : v => v;\r\n const width = (column.filterOptions && column.filterOptions.fullWidth) === true ? 12 : 6;\r\n return (\r\n \r\n \r\n {column.label}\r\n selected.map(renderItem).join(', ')}\r\n name={column.name}\r\n onChange={event => this.handleMultiselectChange(index, event.target.value, column.name)}\r\n input={}>\r\n {filterData[index].map((filterValue, filterIndex) => (\r\n \r\n = 0}\r\n value={filterValue != null ? filterValue.toString() : ''}\r\n className={classes.checkboxIcon}\r\n classes={{\r\n root: classes.checkbox,\r\n checked: classes.checked,\r\n }}\r\n />\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderCustomField(column, index) {\r\n const { classes, filterData, options } = this.props;\r\n const { filterList } = this.state;\r\n const width = (column.filterOptions && column.filterOptions.fullWidth) === true ? 12 : 6;\r\n const display =\r\n (column.filterOptions && column.filterOptions.display) ||\r\n (options.filterOptions && options.filterOptions.display);\r\n\r\n if (!display) {\r\n console.error('Property \"display\" is required when using custom filter type.');\r\n return;\r\n }\r\n if (column.filterListOptions && column.filterListOptions.renderValue) {\r\n console.warning('\"renderValue\" is ignored for custom filter fields');\r\n }\r\n\r\n return (\r\n \r\n \r\n {display(filterList, this.handleCustomChange, index, column, filterData)}\r\n \r\n \r\n );\r\n }\r\n\r\n applyFilters = () => {\r\n this.state.filterList.forEach((filter, index) => {\r\n this.props.onFilterUpdate(index, filter, this.props.columns[index], 'custom');\r\n });\r\n\r\n this.props.handleClose(); // close filter dialog popover\r\n\r\n if (this.props.options.onFilterConfirm) {\r\n this.props.options.onFilterConfirm(this.state.filterList);\r\n }\r\n\r\n return this.state.filterList;\r\n };\r\n\r\n resetFilters = () => {\r\n this.setState({\r\n filterList: this.props.columns.map(() => []),\r\n });\r\n if (this.props.options.confirmFilters !== true) {\r\n this.props.onFilterReset();\r\n }\r\n };\r\n\r\n render() {\r\n const { classes, columns, options, customFooter, filterList, components = {} } = this.props;\r\n const textLabels = options.textLabels.filter;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {textLabels.title}\r\n \r\n \r\n {textLabels.reset}\r\n \r\n
\r\n
\r\n
\r\n \r\n {columns.map((column, index) => {\r\n if (column.filter) {\r\n const filterType = column.filterType || options.filterType;\r\n return filterType === 'checkbox'\r\n ? this.renderCheckbox(column, index, components)\r\n : filterType === 'multiselect'\r\n ? this.renderMultiselect(column, index, components)\r\n : filterType === 'textField'\r\n ? this.renderTextField(column, index)\r\n : filterType === 'custom'\r\n ? this.renderCustomField(column, index)\r\n : this.renderSelect(column, index);\r\n }\r\n })}\r\n \r\n {customFooter ? customFooter(filterList, this.applyFilters) : ''}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultFilterStyles, { name: 'MUIDataTableFilter' })(TableFilter);\r\n","import Chip from '@mui/material/Chip';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\n\r\nconst TableFilterListItem = ({ label, onDelete, className, filterProps }) => {\r\n filterProps = filterProps || {};\r\n if (filterProps.className) {\r\n className = clsx(className, filterProps.className);\r\n }\r\n return ;\r\n};\r\n\r\nTableFilterListItem.propTypes = {\r\n label: PropTypes.node,\r\n onDelete: PropTypes.func.isRequired,\r\n className: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default TableFilterListItem;\r\n","import { makeStyles } from '@mui/styles';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport TableFilterListItem from './TableFilterListItem';\r\n\r\nconst useStyles = makeStyles(\r\n () => ({\r\n root: {\r\n display: 'flex',\r\n justifyContent: 'left',\r\n flexWrap: 'wrap',\r\n margin: '0px 16px 0px 16px',\r\n },\r\n chip: {\r\n margin: '8px 8px 0px 0px',\r\n },\r\n }),\r\n { name: 'MUIDataTableFilterList' },\r\n);\r\n\r\nconst TableFilterList = ({\r\n options,\r\n filterList,\r\n filterUpdate,\r\n filterListRenderers,\r\n columnNames,\r\n serverSideFilterList,\r\n customFilterListUpdate,\r\n ItemComponent = TableFilterListItem,\r\n}) => {\r\n const classes = useStyles();\r\n const { serverSide } = options;\r\n\r\n const removeFilter = (index, filterValue, columnName, filterType, customFilterListUpdate = null) => {\r\n let removedFilter = filterValue;\r\n if (Array.isArray(removedFilter) && removedFilter.length === 0) {\r\n removedFilter = filterList[index];\r\n }\r\n\r\n filterUpdate(index, filterValue, columnName, filterType, customFilterListUpdate, filterList => {\r\n if (options.onFilterChipClose) {\r\n options.onFilterChipClose(index, removedFilter, filterList);\r\n }\r\n });\r\n };\r\n const customFilterChip = (customFilterItem, index, customFilterItemIndex, item, isArray) => {\r\n let type;\r\n // If our custom filter list is an array, we need to check for custom update functions to determine\r\n // default type. Otherwise we use the supplied type in options.\r\n if (isArray) {\r\n type = customFilterListUpdate[index] ? 'custom' : 'chip';\r\n } else {\r\n type = columnNames[index].filterType;\r\n }\r\n\r\n return (\r\n \r\n removeFilter(\r\n index,\r\n item[customFilterItemIndex] || [],\r\n columnNames[index].name,\r\n type,\r\n customFilterListUpdate[index],\r\n )\r\n }\r\n className={classes.chip}\r\n itemKey={customFilterItemIndex}\r\n index={index}\r\n data={item}\r\n columnNames={columnNames}\r\n filterProps={\r\n options.setFilterChipProps\r\n ? options.setFilterChipProps(index, columnNames[index].name, item[customFilterItemIndex] || [])\r\n : {}\r\n }\r\n />\r\n );\r\n };\r\n\r\n const filterChip = (index, data, colIndex) => (\r\n removeFilter(index, data, columnNames[index].name, 'chip')}\r\n className={classes.chip}\r\n itemKey={colIndex}\r\n index={index}\r\n data={data}\r\n columnNames={columnNames}\r\n filterProps={options.setFilterChipProps ? options.setFilterChipProps(index, columnNames[index].name, data) : {}}\r\n />\r\n );\r\n\r\n const getFilterList = filterList => {\r\n return filterList.map((item, index) => {\r\n if (columnNames[index].filterType === 'custom' && filterList[index].length) {\r\n const filterListRenderersValue = filterListRenderers[index](item);\r\n\r\n if (Array.isArray(filterListRenderersValue)) {\r\n return filterListRenderersValue.map((customFilterItem, customFilterItemIndex) =>\r\n customFilterChip(customFilterItem, index, customFilterItemIndex, item, true),\r\n );\r\n } else {\r\n return customFilterChip(filterListRenderersValue, index, index, item, false);\r\n }\r\n }\r\n\r\n return item.map((data, colIndex) => filterChip(index, data, colIndex));\r\n });\r\n };\r\n\r\n return (\r\n
\r\n {serverSide && serverSideFilterList ? getFilterList(serverSideFilterList) : getFilterList(filterList)}\r\n
\r\n );\r\n};\r\n\r\nTableFilterList.propTypes = {\r\n /** Data used to filter table against */\r\n filterList: PropTypes.array.isRequired,\r\n /** Filter List value renderers */\r\n filterListRenderers: PropTypes.array.isRequired,\r\n /** Columns used to describe table */\r\n columnNames: PropTypes.arrayOf(\r\n PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.shape({ name: PropTypes.string.isRequired, filterType: PropTypes.string }),\r\n ]),\r\n ).isRequired,\r\n /** Callback to trigger filter update */\r\n onFilterUpdate: PropTypes.func,\r\n ItemComponent: PropTypes.any,\r\n};\r\n\r\nexport default TableFilterList;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport InputBase from '@mui/material/InputBase';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport Select from '@mui/material/Select';\r\nimport Toolbar from '@mui/material/Toolbar';\r\nimport Typography from '@mui/material/Typography';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { getPageValue } from '../utils.js';\r\nimport clsx from 'clsx';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n root: {\r\n color: theme.palette.text.primary,\r\n },\r\n caption: {\r\n flexShrink: 0,\r\n },\r\n /*  Styles applied to the Select component root element */\r\n selectRoot: {\r\n marginRight: 32,\r\n marginLeft: 8,\r\n },\r\n select: {\r\n paddingTop: 6,\r\n paddingBottom: 7,\r\n paddingLeft: 8,\r\n paddingRight: 24,\r\n textAlign: 'right',\r\n textAlignLast: 'right',\r\n fontSize: theme.typography.pxToRem(14),\r\n },\r\n /* Styles applied to Select component icon class */\r\n selectIcon: {},\r\n /* Styles applied to InputBase component */\r\n input: {\r\n color: 'inhert',\r\n fontSize: 'inhert',\r\n flexShrink: 0,\r\n },\r\n }),\r\n { name: 'MUIDataTableJumpToPage' },\r\n);\r\n\r\nfunction JumpToPage(props) {\r\n const classes = useStyles();\r\n\r\n const handlePageChange = event => {\r\n props.changePage(parseInt(event.target.value, 10));\r\n };\r\n\r\n const { count, textLabels, rowsPerPage, page, changePage } = props;\r\n\r\n const textLabel = textLabels.pagination.jumpToPage;\r\n\r\n let pages = [];\r\n let lastPage = Math.min(1000, getPageValue(count, rowsPerPage, 1000000));\r\n\r\n for (let ii = 0; ii <= lastPage; ii++) {\r\n pages.push(ii);\r\n }\r\n const MenuItemComponent = MenuItem;\r\n\r\n let myStyle = {\r\n display: 'flex',\r\n minHeight: '52px',\r\n alignItems: 'center',\r\n };\r\n\r\n return (\r\n \r\n \r\n {textLabel}\r\n \r\n }\r\n value={getPageValue(count, rowsPerPage, page)}\r\n onChange={handlePageChange}\r\n style={{ marginRight: 0 }}>\r\n {pages.map(pageVal => (\r\n \r\n {pageVal + 1}\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\nJumpToPage.propTypes = {\r\n count: PropTypes.number.isRequired,\r\n page: PropTypes.number.isRequired,\r\n rowsPerPage: PropTypes.number.isRequired,\r\n textLabels: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default JumpToPage;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport MuiTableCell from '@mui/material/TableCell';\r\nimport MuiTableRow from '@mui/material/TableRow';\r\nimport MuiTableFooter from '@mui/material/TableFooter';\r\nimport MuiTablePagination from '@mui/material/TablePagination';\r\nimport JumpToPage from './JumpToPage';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { getPageValue } from '../utils';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n root: {},\r\n tableCellContainer: {\r\n padding: '0px 24px 0px 24px',\r\n },\r\n navContainer: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n },\r\n toolbar: {},\r\n selectRoot: {},\r\n '@media screen and (max-width: 400px)': {\r\n toolbar: {\r\n '& span:nth-child(2)': {\r\n display: 'none',\r\n },\r\n },\r\n selectRoot: {\r\n marginRight: '8px',\r\n },\r\n },\r\n }),\r\n { name: 'MUIDataTablePagination' },\r\n);\r\n\r\nfunction TablePagination(props) {\r\n const classes = useStyles();\r\n\r\n const handleRowChange = event => {\r\n props.changeRowsPerPage(event.target.value);\r\n };\r\n\r\n const handlePageChange = (_, page) => {\r\n props.changePage(page);\r\n };\r\n\r\n const { count, options, rowsPerPage, page } = props;\r\n const textLabels = options.textLabels.pagination;\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n {options.jumpToPage ? (\r\n \r\n ) : null}\r\n `${from}-${to} ${textLabels.displayRows} ${count}`}\r\n backIconButtonProps={{\r\n id: 'pagination-back',\r\n 'data-testid': 'pagination-back',\r\n 'aria-label': textLabels.previous,\r\n title: textLabels.previous || '',\r\n }}\r\n nextIconButtonProps={{\r\n id: 'pagination-next',\r\n 'data-testid': 'pagination-next',\r\n 'aria-label': textLabels.next,\r\n title: textLabels.next || '',\r\n }}\r\n SelectProps={{\r\n id: 'pagination-input',\r\n SelectDisplayProps: { id: 'pagination-rows', 'data-testid': 'pagination-rows' },\r\n MenuProps: {\r\n id: 'pagination-menu',\r\n 'data-testid': 'pagination-menu',\r\n MenuListProps: { id: 'pagination-menu-list', 'data-testid': 'pagination-menu-list' },\r\n },\r\n }}\r\n rowsPerPageOptions={options.rowsPerPageOptions}\r\n onPageChange={handlePageChange}\r\n onRowsPerPageChange={handleRowChange}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nTablePagination.propTypes = {\r\n /** Total number of table rows */\r\n count: PropTypes.number.isRequired,\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Current page index */\r\n page: PropTypes.number.isRequired,\r\n /** Total number allowed of rows per page */\r\n rowsPerPage: PropTypes.number.isRequired,\r\n /** Callback to trigger rows per page change */\r\n changeRowsPerPage: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default TablePagination;\r\n","import React from 'react';\r\nimport MuiTable from '@mui/material/Table';\r\nimport TablePagination from './TablePagination';\r\nimport { makeStyles } from '@mui/styles';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst useStyles = makeStyles(\r\n () => ({\r\n root: {\r\n '@media print': {\r\n display: 'none',\r\n },\r\n },\r\n }),\r\n { name: 'MUIDataTableFooter' },\r\n);\r\n\r\nconst TableFooter = ({ options, rowCount, page, rowsPerPage, changeRowsPerPage, changePage }) => {\r\n const classes = useStyles();\r\n const { customFooter, pagination = true } = options;\r\n\r\n if (customFooter) {\r\n return (\r\n \r\n {options.customFooter(\r\n rowCount,\r\n page,\r\n rowsPerPage,\r\n changeRowsPerPage,\r\n changePage,\r\n options.textLabels.pagination,\r\n )}\r\n \r\n );\r\n }\r\n\r\n if (pagination) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nTableFooter.propTypes = {\r\n /** Total number of table rows */\r\n rowCount: PropTypes.number.isRequired,\r\n /** Options used to describe table */\r\n options: PropTypes.shape({\r\n customFooter: PropTypes.func,\r\n pagination: PropTypes.bool,\r\n textLabels: PropTypes.shape({\r\n pagination: PropTypes.object,\r\n }),\r\n }),\r\n /** Current page index */\r\n page: PropTypes.number.isRequired,\r\n /** Total number allowed of rows per page */\r\n rowsPerPage: PropTypes.number.isRequired,\r\n /** Callback to trigger rows per page change */\r\n changeRowsPerPage: PropTypes.func.isRequired,\r\n /** Callback to trigger page change */\r\n changePage: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default TableFooter;\r\n","/*\r\n This hook handles the dragging and dropping effects that occur for columns.\r\n*/\r\n\r\nimport { useDrop } from 'react-dnd';\r\n\r\nconst getColModel = (headCellRefs, columnOrder, columns) => {\r\n let colModel = [];\r\n let leftMostCell = headCellRefs[0] ? headCellRefs[0] : null; // left most cell is the select cell, if it exists\r\n\r\n if (leftMostCell === null) {\r\n leftMostCell = { offsetLeft: Infinity };\r\n let headCells = Object.entries(headCellRefs);\r\n headCells.forEach(([key, item], idx) => {\r\n if (item && item.offsetLeft < leftMostCell.offsetLeft) {\r\n leftMostCell = item;\r\n }\r\n });\r\n\r\n if (leftMostCell.offsetLeft === Infinity) {\r\n leftMostCell = { offsetParent: 0, offsetWidth: 0, offsetLeft: 0 };\r\n }\r\n }\r\n\r\n let ii = 0,\r\n parentOffsetLeft = 0,\r\n offsetParent = leftMostCell.offsetParent;\r\n while (offsetParent) {\r\n parentOffsetLeft = parentOffsetLeft + (offsetParent.offsetLeft || 0) - (offsetParent.scrollLeft || 0);\r\n offsetParent = offsetParent.offsetParent;\r\n ii++;\r\n if (ii > 1000) break;\r\n }\r\n\r\n // if the select cell is present, make sure it is apart of the column model\r\n if (headCellRefs[0]) {\r\n colModel[0] = {\r\n left: parentOffsetLeft + leftMostCell.offsetLeft,\r\n width: leftMostCell.offsetWidth,\r\n columnIndex: null,\r\n ref: leftMostCell,\r\n };\r\n }\r\n\r\n columnOrder.forEach((colIdx, idx) => {\r\n let col = headCellRefs[colIdx + 1];\r\n let cmIndx = colModel.length - 1;\r\n if (!(columns[colIdx] && columns[colIdx].display !== 'true')) {\r\n let prevLeft =\r\n cmIndx !== -1 ? colModel[cmIndx].left + colModel[cmIndx].width : parentOffsetLeft + leftMostCell.offsetLeft;\r\n colModel.push({\r\n left: prevLeft,\r\n width: col.offsetWidth,\r\n columnIndex: colIdx,\r\n ref: col,\r\n });\r\n }\r\n });\r\n\r\n return colModel;\r\n};\r\n\r\nconst reorderColumns = (prevColumnOrder, columnIndex, newPosition) => {\r\n let columnOrder = prevColumnOrder.slice();\r\n let srcIndex = columnOrder.indexOf(columnIndex);\r\n let targetIndex = columnOrder.indexOf(newPosition);\r\n\r\n if (srcIndex !== -1 && targetIndex !== -1) {\r\n let newItem = columnOrder[srcIndex];\r\n columnOrder = [...columnOrder.slice(0, srcIndex), ...columnOrder.slice(srcIndex + 1)];\r\n columnOrder = [...columnOrder.slice(0, targetIndex), newItem, ...columnOrder.slice(targetIndex)];\r\n }\r\n return columnOrder;\r\n};\r\n\r\nconst handleHover = opts => {\r\n const {\r\n item,\r\n mon,\r\n index,\r\n headCellRefs,\r\n updateColumnOrder,\r\n columnOrder,\r\n transitionTime = 300,\r\n tableRef,\r\n tableId,\r\n timers,\r\n columns,\r\n } = opts;\r\n\r\n let hoverIdx = mon.getItem().colIndex;\r\n\r\n if (headCellRefs !== mon.getItem().headCellRefs) return;\r\n\r\n if (hoverIdx !== index) {\r\n let reorderedCols = reorderColumns(columnOrder, mon.getItem().colIndex, index);\r\n let newColModel = getColModel(headCellRefs, reorderedCols, columns);\r\n\r\n let newX = mon.getClientOffset().x;\r\n let modelIdx = -1;\r\n for (let ii = 0; ii < newColModel.length; ii++) {\r\n if (newX > newColModel[ii].left && newX < newColModel[ii].left + newColModel[ii].width) {\r\n modelIdx = newColModel[ii].columnIndex;\r\n break;\r\n }\r\n }\r\n\r\n if (modelIdx === mon.getItem().colIndex) {\r\n clearTimeout(timers.columnShift);\r\n\r\n let curColModel = getColModel(headCellRefs, columnOrder, columns);\r\n\r\n let transitions = [];\r\n newColModel.forEach(item => {\r\n transitions[item.columnIndex] = item.left;\r\n });\r\n curColModel.forEach(item => {\r\n transitions[item.columnIndex] = transitions[item.columnIndex] - item.left;\r\n });\r\n\r\n for (let idx = 1; idx < columnOrder.length; idx++) {\r\n let colIndex = columnOrder[idx];\r\n if (columns[colIndex] && columns[colIndex].display !== 'true') {\r\n // skip\r\n } else {\r\n if (headCellRefs[idx]) headCellRefs[idx].style.transition = '280ms';\r\n if (headCellRefs[idx]) headCellRefs[idx].style.transform = 'translateX(' + transitions[idx - 1] + 'px)';\r\n }\r\n }\r\n\r\n let allElms = [];\r\n let dividers = [];\r\n for (let ii = 0; ii < columnOrder.length; ii++) {\r\n let elms = tableRef\r\n ? tableRef.querySelectorAll('[data-colindex=\"' + ii + '\"][data-tableid=\"' + tableId + '\"]')\r\n : [];\r\n for (let jj = 0; jj < elms.length; jj++) {\r\n elms[jj].style.transition = transitionTime + 'ms';\r\n elms[jj].style.transform = 'translateX(' + transitions[ii] + 'px)';\r\n allElms.push(elms[jj]);\r\n }\r\n\r\n let divider = tableRef\r\n ? tableRef.querySelectorAll('[data-divider-index=\"' + (ii + 1) + '\"][data-tableid=\"' + tableId + '\"]')\r\n : [];\r\n for (let jj = 0; jj < divider.length; jj++) {\r\n divider[jj].style.transition = transitionTime + 'ms';\r\n divider[jj].style.transform = 'translateX(' + transitions[columnOrder[ii]] + 'px)';\r\n dividers.push(divider[jj]);\r\n }\r\n }\r\n\r\n let newColIndex = mon.getItem().colIndex;\r\n timers.columnShift = setTimeout(() => {\r\n allElms.forEach(item => {\r\n item.style.transition = '0s';\r\n item.style.transform = 'translateX(0)';\r\n });\r\n dividers.forEach(item => {\r\n item.style.transition = '0s';\r\n item.style.transform = 'translateX(0)';\r\n });\r\n updateColumnOrder(reorderedCols, newColIndex, index);\r\n }, transitionTime);\r\n }\r\n }\r\n};\r\n\r\nconst useColumnDrop = opts => {\r\n const [{ isOver, canDrop }, drop] = useDrop({\r\n accept: 'HEADER',\r\n drop: drop,\r\n hover: (item, mon) => handleHover(Object.assign({}, opts, { item, mon })),\r\n collect: mon => ({\r\n isOver: !!mon.isOver(),\r\n canDrop: !!mon.canDrop(),\r\n }),\r\n });\r\n\r\n return [drop];\r\n};\r\n\r\nexport { getColModel, reorderColumns, handleHover };\r\nexport default useColumnDrop;\r\n","import Button from '@mui/material/Button';\r\nimport clsx from 'clsx';\r\nimport HelpIcon from '@mui/icons-material/Help';\r\nimport MuiTooltip from '@mui/material/Tooltip';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useState } from 'react';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport TableSortLabel from '@mui/material/TableSortLabel';\r\nimport useColumnDrop from '../hooks/useColumnDrop.js';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { useDrag } from 'react-dnd';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n root: {},\r\n fixedHeader: {\r\n position: 'sticky',\r\n top: '0px',\r\n zIndex: 100,\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n tooltip: {\r\n cursor: 'pointer',\r\n },\r\n mypopper: {\r\n '&[data-x-out-of-boundaries]': {\r\n display: 'none',\r\n },\r\n },\r\n data: {\r\n display: 'inline-block',\r\n },\r\n sortAction: {\r\n display: 'flex',\r\n cursor: 'pointer',\r\n },\r\n dragCursor: {\r\n cursor: 'grab',\r\n },\r\n sortLabelRoot: {\r\n height: '20px',\r\n },\r\n sortActive: {\r\n color: theme.palette.text.primary,\r\n },\r\n toolButton: {\r\n textTransform: 'none',\r\n marginLeft: '-8px',\r\n minWidth: 0,\r\n marginRight: '8px',\r\n paddingLeft: '8px',\r\n paddingRight: '8px',\r\n },\r\n contentWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n hintIconAlone: {\r\n marginTop: '-3px',\r\n marginLeft: '3px',\r\n },\r\n hintIconWithSortIcon: {\r\n marginTop: '-3px',\r\n },\r\n }),\r\n { name: 'MUIDataTableHeadCell' },\r\n);\r\n\r\nconst TableHeadCell = ({\r\n cellHeaderProps = {},\r\n children,\r\n colPosition,\r\n column,\r\n columns,\r\n columnOrder = [],\r\n components = {},\r\n draggableHeadCellRefs,\r\n draggingHook,\r\n hint,\r\n index,\r\n options,\r\n print,\r\n setCellRef,\r\n sort,\r\n sortDirection,\r\n tableRef,\r\n tableId,\r\n timers,\r\n toggleSort,\r\n updateColumnOrder,\r\n}) => {\r\n const [sortTooltipOpen, setSortTooltipOpen] = useState(false);\r\n const [hintTooltipOpen, setHintTooltipOpen] = useState(false);\r\n\r\n const classes = useStyles();\r\n\r\n const handleKeyboardSortInput = e => {\r\n if (e.key === 'Enter') {\r\n toggleSort(index);\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const handleSortClick = () => {\r\n toggleSort(index);\r\n };\r\n\r\n const [dragging, setDragging] = draggingHook ? draggingHook : [];\r\n\r\n const { className, ...otherProps } = cellHeaderProps;\r\n const Tooltip = components.Tooltip || MuiTooltip;\r\n const sortActive = sortDirection !== 'none' && sortDirection !== undefined;\r\n const ariaSortDirection = sortDirection === 'none' ? false : sortDirection;\r\n\r\n const isDraggingEnabled = () => {\r\n if (!draggingHook) return false;\r\n return options.draggableColumns && options.draggableColumns.enabled && column.draggable !== false;\r\n };\r\n\r\n const sortLabelProps = {\r\n classes: { root: classes.sortLabelRoot },\r\n tabIndex: -1,\r\n active: sortActive,\r\n hideSortIcon: true,\r\n ...(ariaSortDirection ? { direction: sortDirection } : {}),\r\n };\r\n\r\n const [{ opacity }, dragRef, preview] = useDrag({\r\n item: {\r\n type: 'HEADER',\r\n colIndex: index,\r\n headCellRefs: draggableHeadCellRefs,\r\n },\r\n begin: monitor => {\r\n setTimeout(() => {\r\n setHintTooltipOpen(false);\r\n setSortTooltipOpen(false);\r\n setDragging(true);\r\n }, 0);\r\n return null;\r\n },\r\n end: (item, monitor) => {\r\n setDragging(false);\r\n },\r\n collect: monitor => {\r\n return {\r\n opacity: monitor.isDragging() ? 1 : 0,\r\n };\r\n },\r\n });\r\n\r\n const [drop] = useColumnDrop({\r\n drop: (item, mon) => {\r\n setSortTooltipOpen(false);\r\n setHintTooltipOpen(false);\r\n setDragging(false);\r\n },\r\n index,\r\n headCellRefs: draggableHeadCellRefs,\r\n updateColumnOrder,\r\n columnOrder,\r\n columns,\r\n transitionTime: options.draggableColumns ? options.draggableColumns.transitionTime : 300,\r\n tableRef: tableRef ? tableRef() : null,\r\n tableId: tableId || 'none',\r\n timers,\r\n });\r\n\r\n const cellClass = clsx({\r\n [classes.root]: true,\r\n [classes.fixedHeader]: options.fixedHeader,\r\n 'datatables-noprint': !print,\r\n [className]: className,\r\n });\r\n\r\n const showHintTooltip = () => {\r\n setSortTooltipOpen(false);\r\n setHintTooltipOpen(true);\r\n };\r\n\r\n const getTooltipTitle = () => {\r\n if (dragging) return '';\r\n if (!options.textLabels) return '';\r\n return options.textLabels.body.columnHeaderTooltip\r\n ? options.textLabels.body.columnHeaderTooltip(column)\r\n : options.textLabels.body.toolTip;\r\n };\r\n\r\n const closeTooltip = () => {\r\n setSortTooltipOpen(false);\r\n };\r\n\r\n return (\r\n {\r\n drop && drop(ref);\r\n setCellRef && setCellRef(index + 1, colPosition + 1, ref);\r\n }}\r\n className={cellClass}\r\n scope={'col'}\r\n sortDirection={ariaSortDirection}\r\n data-colindex={index}\r\n data-tableid={tableId}\r\n onMouseDown={closeTooltip}\r\n {...otherProps}>\r\n {options.sort && sort ? (\r\n \r\n (dragging ? setSortTooltipOpen(false) : setSortTooltipOpen(true))}\r\n onClose={() => setSortTooltipOpen(false)}\r\n classes={{\r\n tooltip: classes.tooltip,\r\n popper: classes.mypopper,\r\n }}>\r\n \r\n
\r\n \r\n {children}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n {hint && (\r\n \r\n \r\n \r\n )}\r\n \r\n ) : (\r\n
\r\n {children}\r\n {hint && (\r\n showHintTooltip()}\r\n onClose={() => setHintTooltipOpen(false)}\r\n classes={{\r\n tooltip: classes.tooltip,\r\n popper: classes.mypopper,\r\n }}\r\n enterDelay={300}>\r\n \r\n \r\n )}\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nTableHeadCell.propTypes = {\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Current sort direction */\r\n sortDirection: PropTypes.oneOf(['asc', 'desc', 'none']),\r\n /** Callback to trigger column sort */\r\n toggleSort: PropTypes.func.isRequired,\r\n /** Sort enabled / disabled for this column **/\r\n sort: PropTypes.bool.isRequired,\r\n /** Hint tooltip text */\r\n hint: PropTypes.string,\r\n /** Column displayed in print */\r\n print: PropTypes.bool.isRequired,\r\n /** Optional to be used with `textLabels.body.columnHeaderTooltip` */\r\n column: PropTypes.object,\r\n /** Injectable component structure **/\r\n components: PropTypes.object,\r\n};\r\n\r\nexport default TableHeadCell;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport { makeStyles } from '@mui/styles';\r\n\r\nconst useStyles = makeStyles(\r\n () => ({\r\n root: {},\r\n }),\r\n { name: 'MUIDataTableHeadRow' },\r\n);\r\n\r\nconst TableHeadRow = ({ children }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nTableHeadRow.propTypes = {\r\n children: PropTypes.node,\r\n};\r\n\r\nexport default TableHeadRow;\r\n","import { makeStyles } from '@mui/styles';\r\nimport clsx from 'clsx';\r\nimport MuiTableHead from '@mui/material/TableHead';\r\nimport React, { useState } from 'react';\r\nimport TableHeadCell from './TableHeadCell';\r\nimport TableHeadRow from './TableHeadRow';\r\nimport TableSelectCell from './TableSelectCell';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n main: {},\r\n responsiveStacked: {\r\n [theme.breakpoints.down('md')]: {\r\n display: 'none',\r\n },\r\n },\r\n responsiveStackedAlways: {\r\n display: 'none',\r\n },\r\n responsiveSimple: {\r\n [theme.breakpoints.down('sm')]: {\r\n display: 'none',\r\n },\r\n },\r\n }),\r\n { name: 'MUIDataTableHead' },\r\n);\r\n\r\nconst TableHead = ({\r\n columnOrder = null,\r\n columns,\r\n components = {},\r\n count,\r\n data,\r\n draggableHeadCellRefs,\r\n expandedRows,\r\n options,\r\n selectedRows,\r\n selectRowUpdate,\r\n setCellRef,\r\n sortOrder = {},\r\n tableRef,\r\n tableId,\r\n timers,\r\n toggleAllExpandableRows,\r\n toggleSort,\r\n updateColumnOrder,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n if (columnOrder === null) {\r\n columnOrder = columns ? columns.map((item, idx) => idx) : [];\r\n }\r\n\r\n const [dragging, setDragging] = useState(false);\r\n\r\n const handleToggleColumn = index => {\r\n toggleSort(index);\r\n };\r\n\r\n const handleRowSelect = () => {\r\n selectRowUpdate('head', null);\r\n };\r\n\r\n const numSelected = (selectedRows && selectedRows.data.length) || 0;\r\n let isIndeterminate = numSelected > 0 && numSelected < count;\r\n let isChecked = numSelected > 0 && numSelected >= count;\r\n\r\n // When the disableToolbarSelect option is true, there can be\r\n // selected items that aren't visible, so we need to be more\r\n // precise when determining if the head checkbox should be checked.\r\n if (\r\n options.disableToolbarSelect === true ||\r\n options.selectToolbarPlacement === 'none' ||\r\n options.selectToolbarPlacement === 'above'\r\n ) {\r\n if (isChecked) {\r\n for (let ii = 0; ii < data.length; ii++) {\r\n if (!selectedRows.lookup[data[ii].dataIndex]) {\r\n isChecked = false;\r\n isIndeterminate = true;\r\n break;\r\n }\r\n }\r\n } else {\r\n if (numSelected > count) {\r\n isIndeterminate = true;\r\n }\r\n }\r\n }\r\n\r\n let orderedColumns = columnOrder.map((colIndex, idx) => {\r\n return {\r\n column: columns[colIndex],\r\n index: colIndex,\r\n colPos: idx,\r\n };\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n {orderedColumns.map(\r\n ({ column, index, colPos }) =>\r\n column.display === 'true' &&\r\n (column.customHeadRender ? (\r\n column.customHeadRender({ index, ...column }, handleToggleColumn, sortOrder)\r\n ) : (\r\n \r\n {column.customHeadLabelRender\r\n ? column.customHeadLabelRender({ index, colPos, ...column })\r\n : column.label}\r\n \r\n )),\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default TableHead;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withStyles } from '@mui/styles';\r\n\r\nconst defaultResizeStyles = {\r\n root: {\r\n position: 'absolute',\r\n },\r\n resizer: {\r\n position: 'absolute',\r\n width: '1px',\r\n height: '100%',\r\n left: '100px',\r\n cursor: 'ew-resize',\r\n border: '0.1px solid rgba(224, 224, 224, 1)',\r\n },\r\n};\r\n\r\nfunction getParentOffsetLeft(tableEl) {\r\n let ii = 0,\r\n parentOffsetLeft = 0,\r\n offsetParent = tableEl.offsetParent;\r\n while (offsetParent) {\r\n parentOffsetLeft = parentOffsetLeft + (offsetParent.offsetLeft || 0) - (offsetParent.scrollLeft || 0);\r\n offsetParent = offsetParent.offsetParent;\r\n ii++;\r\n if (ii > 1000) break;\r\n }\r\n return parentOffsetLeft;\r\n}\r\n\r\nclass TableResize extends React.Component {\r\n static propTypes = {\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n };\r\n\r\n state = {\r\n resizeCoords: {},\r\n priorPosition: {},\r\n tableWidth: '100%',\r\n tableHeight: '100%',\r\n };\r\n\r\n handleResize = () => {\r\n if (window.innerWidth !== this.windowWidth) {\r\n this.windowWidth = window.innerWidth;\r\n this.setDividers();\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n this.minWidths = [];\r\n this.windowWidth = null;\r\n this.props.setResizeable(this.setCellRefs);\r\n this.props.updateDividers(() => this.setState({ updateCoords: true }, () => this.updateWidths));\r\n window.addEventListener('resize', this.handleResize, false);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.handleResize, false);\r\n }\r\n\r\n setCellRefs = (cellsRef, tableRef) => {\r\n this.cellsRef = cellsRef;\r\n this.tableRef = tableRef;\r\n this.setDividers();\r\n };\r\n\r\n setDividers = () => {\r\n const tableEl = this.tableRef;\r\n const { width: tableWidth, height: tableHeight } = tableEl.getBoundingClientRect();\r\n const { resizeCoords } = this.state;\r\n\r\n for (let prop in resizeCoords) {\r\n delete resizeCoords[prop];\r\n }\r\n\r\n let parentOffsetLeft = getParentOffsetLeft(tableEl);\r\n let finalCells = Object.entries(this.cellsRef);\r\n let cellMinusOne = finalCells.filter((_item, ix) => ix + 1 < finalCells.length);\r\n\r\n cellMinusOne.forEach(([key, item], idx) => {\r\n if (!item) return;\r\n let elRect = item.getBoundingClientRect();\r\n let left = elRect.left;\r\n left = (left || 0) - parentOffsetLeft;\r\n const elStyle = window.getComputedStyle(item, null);\r\n resizeCoords[key] = { left: left + item.offsetWidth };\r\n });\r\n this.setState({ tableWidth, tableHeight, resizeCoords }, this.updateWidths);\r\n };\r\n\r\n updateWidths = () => {\r\n let lastPosition = 0;\r\n const { resizeCoords, tableWidth } = this.state;\r\n\r\n Object.entries(resizeCoords).forEach(([key, item]) => {\r\n let newWidth = Number(((item.left - lastPosition) / tableWidth) * 100);\r\n\r\n /*\r\n Using .toFixed(2) causes the columns to jitter when resized. On all browsers I (patrojk) have tested,\r\n a width with a floating point decimal works fine. It's unclear to me why the numbers were being rouned.\r\n However, I'm putting in an undocumented escape hatch to use toFixed in case the change introduces a bug.\r\n The below code will be removed in a later release if no problems with non-rounded widths are reported.\r\n */\r\n if (typeof this.props.resizableColumns === 'object' && this.props.resizableColumns.roundWidthPercentages) {\r\n newWidth = newWidth.toFixed(2);\r\n }\r\n\r\n lastPosition = item.left;\r\n\r\n const thCell = this.cellsRef[key];\r\n if (thCell) thCell.style.width = newWidth + '%';\r\n });\r\n };\r\n\r\n onResizeStart = (id, e) => {\r\n const tableEl = this.tableRef;\r\n const originalWidth = tableEl.style.width;\r\n let lastColumn = 0;\r\n tableEl.style.width = '1px';\r\n\r\n let finalCells = Object.entries(this.cellsRef);\r\n finalCells.forEach(([key, item], idx) => {\r\n let elRect = item ? item.getBoundingClientRect() : { width: 0, left: 0 };\r\n this.minWidths[key] = elRect.width;\r\n lastColumn = Math.max(key, lastColumn);\r\n });\r\n tableEl.style.width = originalWidth;\r\n\r\n this.setState({ isResize: true, id, lastColumn });\r\n };\r\n\r\n onResizeMove = (id, e) => {\r\n const { isResize, resizeCoords, lastColumn } = this.state;\r\n\r\n const prevCol = id => {\r\n let nextId = id - 1;\r\n while (typeof resizeCoords[nextId] === 'undefined' && nextId >= 0) {\r\n nextId--;\r\n }\r\n return nextId;\r\n };\r\n const nextCol = id => {\r\n let nextId = id + 1;\r\n let tries = 0;\r\n while (typeof resizeCoords[nextId] === 'undefined' && tries < 20) {\r\n nextId++;\r\n tries++;\r\n }\r\n return nextId;\r\n };\r\n\r\n const fixedMinWidth1 = this.minWidths[id];\r\n const fixedMinWidth2 = this.minWidths[nextCol(parseInt(id, 10))] || this.minWidths[id];\r\n const idNumber = parseInt(id, 10);\r\n const finalCells = Object.entries(this.cellsRef);\r\n const tableEl = this.tableRef;\r\n const { width: tableWidth, height: tableHeight } = tableEl.getBoundingClientRect();\r\n const { selectableRows } = this.props.options;\r\n\r\n let parentOffsetLeft = getParentOffsetLeft(tableEl);\r\n\r\n const nextCoord = id => {\r\n let nextId = id + 1;\r\n let tries = 0;\r\n while (typeof resizeCoords[nextId] === 'undefined' && tries < 20) {\r\n nextId++;\r\n tries++;\r\n }\r\n return resizeCoords[nextId];\r\n };\r\n const prevCoord = id => {\r\n let nextId = id - 1;\r\n while (typeof resizeCoords[nextId] === 'undefined' && nextId >= 0) {\r\n nextId--;\r\n }\r\n return resizeCoords[nextId];\r\n };\r\n\r\n if (isResize) {\r\n let leftPos = e.clientX - parentOffsetLeft;\r\n\r\n const handleMoveRightmostBoundary = (leftPos, tableWidth, fixedMinWidth) => {\r\n if (leftPos > tableWidth - fixedMinWidth) {\r\n return tableWidth - fixedMinWidth;\r\n }\r\n return leftPos;\r\n };\r\n\r\n const handleMoveLeftmostBoundary = (leftPos, fixedMinWidth) => {\r\n if (leftPos < fixedMinWidth) {\r\n return fixedMinWidth;\r\n }\r\n return leftPos;\r\n };\r\n\r\n const handleMoveRight = (leftPos, resizeCoords, id, fixedMinWidth) => {\r\n if (typeof nextCoord(id) === 'undefined') return leftPos;\r\n if (leftPos > nextCoord(id).left - fixedMinWidth) {\r\n return nextCoord(id).left - fixedMinWidth;\r\n }\r\n return leftPos;\r\n };\r\n\r\n const handleMoveLeft = (leftPos, resizeCoords, id, fixedMinWidth) => {\r\n if (typeof prevCoord(id) === 'undefined') return leftPos;\r\n if (leftPos < prevCoord(id).left + fixedMinWidth) {\r\n return prevCoord(id).left + fixedMinWidth;\r\n }\r\n return leftPos;\r\n };\r\n\r\n const isFirstColumn = (selectableRows, id) => {\r\n let firstColumn = 1;\r\n while (!resizeCoords[firstColumn] && firstColumn < 20) {\r\n firstColumn++;\r\n }\r\n\r\n return (selectableRows !== 'none' && id === 0) || (selectableRows === 'none' && id === firstColumn);\r\n };\r\n\r\n const isLastColumn = (id, finalCells) => {\r\n return id === prevCol(lastColumn);\r\n };\r\n\r\n if (isFirstColumn(selectableRows, idNumber) && isLastColumn(idNumber, finalCells)) {\r\n leftPos = handleMoveLeftmostBoundary(leftPos, fixedMinWidth1);\r\n leftPos = handleMoveRightmostBoundary(leftPos, tableWidth, fixedMinWidth2);\r\n } else if (!isFirstColumn(selectableRows, idNumber) && isLastColumn(idNumber, finalCells)) {\r\n leftPos = handleMoveRightmostBoundary(leftPos, tableWidth, fixedMinWidth2);\r\n leftPos = handleMoveLeft(leftPos, resizeCoords, idNumber, fixedMinWidth1);\r\n } else if (isFirstColumn(selectableRows, idNumber) && !isLastColumn(idNumber, finalCells)) {\r\n leftPos = handleMoveLeftmostBoundary(leftPos, fixedMinWidth1);\r\n leftPos = handleMoveRight(leftPos, resizeCoords, idNumber, fixedMinWidth2);\r\n } else if (!isFirstColumn(selectableRows, idNumber) && !isLastColumn(idNumber, finalCells)) {\r\n leftPos = handleMoveLeft(leftPos, resizeCoords, idNumber, fixedMinWidth1);\r\n leftPos = handleMoveRight(leftPos, resizeCoords, idNumber, fixedMinWidth2);\r\n }\r\n\r\n const curCoord = { ...resizeCoords[id], left: leftPos };\r\n const newResizeCoords = { ...resizeCoords, [id]: curCoord };\r\n this.setState({ resizeCoords: newResizeCoords, tableHeight }, this.updateWidths);\r\n }\r\n };\r\n\r\n onResizeEnd = (id, e) => {\r\n this.setState({ isResize: false, id: null });\r\n };\r\n\r\n render() {\r\n const { classes, tableId } = this.props;\r\n const { id, isResize, resizeCoords, tableWidth, tableHeight } = this.state;\r\n\r\n return (\r\n
\r\n {Object.entries(resizeCoords).map(([key, val]) => {\r\n return (\r\n \r\n \r\n
\r\n );\r\n })}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultResizeStyles, { name: 'MUIDataTableResize' })(TableResize);\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport MuiPopover from '@mui/material/Popover';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\nconst Popover = ({ className, trigger, refExit, hide, content, ...providedProps }) => {\r\n const [isOpen, open] = useState(false);\r\n const anchorEl = useRef(null);\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n const shouldHide = typeof hide === 'boolean' ? hide : false;\r\n if (shouldHide) {\r\n open(false);\r\n }\r\n }\r\n }, [hide, isOpen, open]);\r\n\r\n const handleClick = event => {\r\n anchorEl.current = event.currentTarget;\r\n open(true);\r\n };\r\n\r\n const handleRequestClose = () => {\r\n open(false);\r\n };\r\n\r\n const closeIconClass = providedProps.classes.closeIcon;\r\n delete providedProps.classes.closeIcon; // remove non-standard class from being passed to the popover component\r\n\r\n const transformOriginSpecs = {\r\n vertical: 'top',\r\n horizontal: 'center',\r\n };\r\n\r\n const anchorOriginSpecs = {\r\n vertical: 'bottom',\r\n horizontal: 'center',\r\n };\r\n\r\n const handleOnExit = () => {\r\n if (refExit) {\r\n refExit();\r\n }\r\n };\r\n\r\n const triggerProps = {\r\n key: 'content',\r\n onClick: event => {\r\n if (trigger.props.onClick) trigger.props.onClick();\r\n handleClick(event);\r\n },\r\n };\r\n\r\n return (\r\n <>\r\n {trigger}\r\n \r\n \r\n \r\n \r\n {content}\r\n \r\n \r\n );\r\n};\r\n\r\nPopover.propTypes = {\r\n refExit: PropTypes.func,\r\n trigger: PropTypes.node.isRequired,\r\n content: PropTypes.node.isRequired,\r\n hide: PropTypes.bool,\r\n};\r\n\r\nexport default Popover;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport Typography from '@mui/material/Typography';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport FormGroup from '@mui/material/FormGroup';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport { makeStyles } from '@mui/styles';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n root: {\r\n padding: '16px 24px 16px 24px',\r\n fontFamily: 'Roboto',\r\n },\r\n title: {\r\n marginLeft: '-7px',\r\n marginRight: '24px',\r\n fontSize: '14px',\r\n color: theme.palette.text.secondary,\r\n textAlign: 'left',\r\n fontWeight: 500,\r\n },\r\n formGroup: {\r\n marginTop: '8px',\r\n },\r\n formControl: {},\r\n checkbox: {\r\n padding: '0px',\r\n width: '32px',\r\n height: '32px',\r\n },\r\n checkboxRoot: {},\r\n checked: {},\r\n label: {\r\n fontSize: '15px',\r\n marginLeft: '8px',\r\n color: theme.palette.text.primary,\r\n },\r\n }),\r\n { name: 'MUIDataTableViewCol' },\r\n);\r\n\r\nconst TableViewCol = ({ columns, options, components = {}, onColumnUpdate, updateColumns }) => {\r\n const classes = useStyles();\r\n const textLabels = options.textLabels.viewColumns;\r\n const CheckboxComponent = components.Checkbox || Checkbox;\r\n\r\n const handleColChange = index => {\r\n onColumnUpdate(index);\r\n };\r\n\r\n return (\r\n \r\n \r\n {textLabels.title}\r\n \r\n \r\n {columns.map((column, index) => {\r\n return (\r\n column.display !== 'excluded' &&\r\n column.viewColumns !== false && (\r\n handleColChange(index)}\r\n checked={column.display === 'true'}\r\n value={column.name}\r\n />\r\n }\r\n label={column.label}\r\n />\r\n )\r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nTableViewCol.propTypes = {\r\n /** Columns used to describe table */\r\n columns: PropTypes.array.isRequired,\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Callback to trigger View column update */\r\n onColumnUpdate: PropTypes.func,\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n};\r\n\r\nexport default TableViewCol;\r\n","import React from 'react';\r\nimport Grow from '@mui/material/Grow';\r\nimport TextField from '@mui/material/TextField';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport ClearIcon from '@mui/icons-material/Clear';\r\nimport { makeStyles } from '@mui/styles';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n main: {\r\n display: 'flex',\r\n flex: '1 0 auto',\r\n alignItems: \"center\"\r\n },\r\n searchIcon: {\r\n color: theme.palette.text.secondary,\r\n marginRight: '8px',\r\n },\r\n searchText: {\r\n flex: '0.8 0',\r\n },\r\n clearIcon: {\r\n '&:hover': {\r\n color: theme.palette.error.main,\r\n },\r\n },\r\n }),\r\n { name: 'MUIDataTableSearch' },\r\n);\r\n\r\nconst TableSearch = ({ options, searchText, onSearch, onHide }) => {\r\n const classes = useStyles();\r\n\r\n const handleTextChange = event => {\r\n onSearch(event.target.value);\r\n };\r\n\r\n const onKeyDown = event => {\r\n if (event.key === 'Escape') {\r\n onHide();\r\n }\r\n };\r\n\r\n const clearIconVisibility = options.searchAlwaysOpen ? 'hidden' : 'visible';\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TableSearch;\r\n","import React from 'react';\r\nimport Typography from '@mui/material/Typography';\r\nimport Toolbar from '@mui/material/Toolbar';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Popover from './Popover';\r\nimport TableFilter from './TableFilter';\r\nimport TableViewCol from './TableViewCol';\r\nimport TableSearch from './TableSearch';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport DownloadIcon from '@mui/icons-material/CloudDownload';\r\nimport PrintIcon from '@mui/icons-material/Print';\r\nimport ViewColumnIcon from '@mui/icons-material/ViewColumn';\r\nimport FilterIcon from '@mui/icons-material/FilterList';\r\nimport ReactToPrint, { PrintContextConsumer } from 'react-to-print';\r\nimport find from 'lodash.find';\r\nimport { withStyles } from '@mui/styles';\r\nimport { createCSVDownload, downloadCSV } from '../utils';\r\nimport MuiTooltip from '@mui/material/Tooltip';\r\n\r\nexport const defaultToolbarStyles = theme => ({\r\n root: {\r\n '@media print': {\r\n display: 'none',\r\n },\r\n },\r\n fullWidthRoot: {},\r\n left: {\r\n flex: '1 1 auto',\r\n },\r\n fullWidthLeft: {\r\n flex: '1 1 auto',\r\n },\r\n actions: {\r\n flex: '1 1 auto',\r\n textAlign: 'right',\r\n },\r\n fullWidthActions: {\r\n flex: '1 1 auto',\r\n textAlign: 'right',\r\n },\r\n titleRoot: {},\r\n titleText: {},\r\n fullWidthTitleText: {\r\n textAlign: 'left',\r\n },\r\n icon: {\r\n '&:hover': {\r\n color: theme.palette.primary.main,\r\n },\r\n },\r\n iconActive: {\r\n color: theme.palette.primary.main,\r\n },\r\n filterPaper: {\r\n maxWidth: '50%',\r\n },\r\n filterCloseIcon: {\r\n position: 'absolute',\r\n right: 0,\r\n top: 0,\r\n zIndex: 100,\r\n },\r\n searchIcon: {\r\n display: 'inline-flex',\r\n marginTop: '10px',\r\n marginRight: '8px',\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n titleRoot: {},\r\n titleText: {\r\n fontSize: '16px',\r\n },\r\n spacer: {\r\n display: 'none',\r\n },\r\n left: {\r\n // flex: \"1 1 40%\",\r\n padding: '8px 0px',\r\n },\r\n actions: {\r\n // flex: \"1 1 60%\",\r\n textAlign: 'right',\r\n },\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n root: {\r\n display: 'block',\r\n '@media print': {\r\n display: 'none !important',\r\n },\r\n },\r\n left: {\r\n padding: '8px 0px 0px 0px',\r\n },\r\n titleText: {\r\n textAlign: 'center',\r\n },\r\n actions: {\r\n textAlign: 'center',\r\n },\r\n },\r\n '@media screen and (max-width: 480px)': {},\r\n});\r\n\r\nconst RESPONSIVE_FULL_WIDTH_NAME = 'scrollFullHeightFullWidth';\r\n\r\nclass TableToolbar extends React.Component {\r\n state = {\r\n iconActive: null,\r\n showSearch: Boolean(\r\n this.props.searchText ||\r\n this.props.options.searchText ||\r\n this.props.options.searchOpen ||\r\n this.props.options.searchAlwaysOpen,\r\n ),\r\n searchText: this.props.searchText || null,\r\n };\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.searchText !== prevProps.searchText) {\r\n this.setState({ searchText: this.props.searchText });\r\n }\r\n }\r\n\r\n handleCSVDownload = () => {\r\n const { data, displayData, columns, options, columnOrder } = this.props;\r\n let dataToDownload = []; //cloneDeep(data);\r\n let columnsToDownload = [];\r\n let columnOrderCopy = Array.isArray(columnOrder) ? columnOrder.slice(0) : [];\r\n\r\n if (columnOrderCopy.length === 0) {\r\n columnOrderCopy = columns.map((item, idx) => idx);\r\n }\r\n\r\n data.forEach(row => {\r\n let newRow = { index: row.index, data: [] };\r\n columnOrderCopy.forEach(idx => {\r\n newRow.data.push(row.data[idx]);\r\n });\r\n dataToDownload.push(newRow);\r\n });\r\n\r\n columnOrderCopy.forEach(idx => {\r\n columnsToDownload.push(columns[idx]);\r\n });\r\n\r\n if (options.downloadOptions && options.downloadOptions.filterOptions) {\r\n // check rows first:\r\n if (options.downloadOptions.filterOptions.useDisplayedRowsOnly) {\r\n let filteredDataToDownload = displayData.map((row, index) => {\r\n let i = -1;\r\n\r\n // Help to preserve sort order in custom render columns\r\n row.index = index;\r\n\r\n return {\r\n data: row.data.map(column => {\r\n i += 1;\r\n\r\n // if we have a custom render, which will appear as a react element, we must grab the actual value from data\r\n // that matches the dataIndex and column\r\n // TODO: Create a utility function for checking whether or not something is a react object\r\n let val =\r\n typeof column === 'object' && column !== null && !Array.isArray(column)\r\n ? find(data, d => d.index === row.dataIndex).data[i]\r\n : column;\r\n val = typeof val === 'function' ? find(data, d => d.index === row.dataIndex).data[i] : val;\r\n return val;\r\n }),\r\n };\r\n });\r\n\r\n dataToDownload = [];\r\n filteredDataToDownload.forEach(row => {\r\n let newRow = { index: row.index, data: [] };\r\n columnOrderCopy.forEach(idx => {\r\n newRow.data.push(row.data[idx]);\r\n });\r\n dataToDownload.push(newRow);\r\n });\r\n }\r\n\r\n // now, check columns:\r\n if (options.downloadOptions.filterOptions.useDisplayedColumnsOnly) {\r\n columnsToDownload = columnsToDownload.filter(_ => _.display === 'true');\r\n\r\n dataToDownload = dataToDownload.map(row => {\r\n row.data = row.data.filter((_, index) => columns[columnOrderCopy[index]].display === 'true');\r\n return row;\r\n });\r\n }\r\n }\r\n createCSVDownload(columnsToDownload, dataToDownload, options, downloadCSV);\r\n };\r\n\r\n setActiveIcon = iconName => {\r\n this.setState(\r\n prevState => ({\r\n showSearch: this.isSearchShown(iconName),\r\n iconActive: iconName,\r\n prevIconActive: prevState.iconActive,\r\n }),\r\n () => {\r\n const { iconActive, prevIconActive } = this.state;\r\n\r\n if (iconActive === 'filter') {\r\n this.props.setTableAction('onFilterDialogOpen');\r\n if (this.props.options.onFilterDialogOpen) {\r\n this.props.options.onFilterDialogOpen();\r\n }\r\n }\r\n if (iconActive === undefined && prevIconActive === 'filter') {\r\n this.props.setTableAction('onFilterDialogClose');\r\n if (this.props.options.onFilterDialogClose) {\r\n this.props.options.onFilterDialogClose();\r\n }\r\n }\r\n },\r\n );\r\n };\r\n\r\n isSearchShown = iconName => {\r\n if (this.props.options.searchAlwaysOpen) {\r\n return true;\r\n }\r\n\r\n let nextVal = false;\r\n if (this.state.showSearch) {\r\n if (this.state.searchText) {\r\n nextVal = true;\r\n } else {\r\n const { onSearchClose } = this.props.options;\r\n this.props.setTableAction('onSearchClose');\r\n if (onSearchClose) onSearchClose();\r\n nextVal = false;\r\n }\r\n } else if (iconName === 'search') {\r\n nextVal = this.showSearch();\r\n }\r\n return nextVal;\r\n };\r\n\r\n getActiveIcon = (styles, iconName) => {\r\n let isActive = this.state.iconActive === iconName;\r\n if (iconName === 'search') {\r\n const { showSearch, searchText } = this.state;\r\n isActive = isActive || showSearch || searchText;\r\n }\r\n return isActive ? styles.iconActive : styles.icon;\r\n };\r\n\r\n showSearch = () => {\r\n this.props.setTableAction('onSearchOpen');\r\n !!this.props.options.onSearchOpen && this.props.options.onSearchOpen();\r\n return true;\r\n };\r\n\r\n hideSearch = () => {\r\n const { onSearchClose } = this.props.options;\r\n\r\n this.props.setTableAction('onSearchClose');\r\n if (onSearchClose) onSearchClose();\r\n this.props.searchClose();\r\n\r\n this.setState(() => ({\r\n iconActive: null,\r\n showSearch: false,\r\n searchText: null,\r\n }));\r\n };\r\n\r\n handleSearch = value => {\r\n this.setState({ searchText: value });\r\n this.props.searchTextUpdate(value);\r\n };\r\n\r\n handleSearchIconClick = () => {\r\n const { showSearch, searchText } = this.state;\r\n if (showSearch && !searchText) {\r\n this.hideSearch();\r\n } else {\r\n this.setActiveIcon('search');\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n data,\r\n options,\r\n classes,\r\n columns,\r\n filterData,\r\n filterList,\r\n filterUpdate,\r\n resetFilters,\r\n toggleViewColumn,\r\n updateColumns,\r\n title,\r\n components = {},\r\n updateFilterByType,\r\n } = this.props;\r\n const { icons = {} } = components;\r\n\r\n const Tooltip = components.Tooltip || MuiTooltip;\r\n const TableViewColComponent = components.TableViewCol || TableViewCol;\r\n const TableFilterComponent = components.TableFilter || TableFilter;\r\n const SearchIconComponent = icons.SearchIcon || SearchIcon;\r\n const DownloadIconComponent = icons.DownloadIcon || DownloadIcon;\r\n const PrintIconComponent = icons.PrintIcon || PrintIcon;\r\n const ViewColumnIconComponent = icons.ViewColumnIcon || ViewColumnIcon;\r\n const FilterIconComponent = icons.FilterIcon || FilterIcon;\r\n const { search, downloadCsv, print, viewColumns, filterTable } = options.textLabels.toolbar;\r\n const { showSearch, searchText } = this.state;\r\n\r\n const filterPopoverExit = () => {\r\n this.setState({ hideFilterPopover: false });\r\n this.setActiveIcon();\r\n };\r\n\r\n const closeFilterPopover = () => {\r\n this.setState({ hideFilterPopover: true });\r\n };\r\n\r\n return (\r\n \r\n
\r\n {showSearch === true ? (\r\n options.customSearchRender ? (\r\n options.customSearchRender(searchText, this.handleSearch, this.hideSearch, options)\r\n ) : (\r\n \r\n )\r\n ) : typeof title !== 'string' ? (\r\n title\r\n ) : (\r\n
\r\n \r\n {title}\r\n \r\n
\r\n )}\r\n
\r\n
\r\n {!(options.search === false || options.search === 'false' || options.searchAlwaysOpen === true) && (\r\n \r\n (this.searchButton = el)}\r\n classes={{ root: this.getActiveIcon(classes, 'search') }}\r\n disabled={options.search === 'disabled'}\r\n onClick={this.handleSearchIconClick}>\r\n \r\n \r\n \r\n )}\r\n {!(options.download === false || options.download === 'false') && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {!(options.print === false || options.print === 'false') && (\r\n \r\n this.props.tableRef()}>\r\n \r\n {({ handlePrint }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n )}\r\n {!(options.viewColumns === false || options.viewColumns === 'false') && (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n content={\r\n \r\n }\r\n />\r\n )}\r\n {!(options.filter === false || options.filter === 'false') && (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n content={\r\n \r\n }\r\n />\r\n )}\r\n {options.customToolbar && options.customToolbar({ displayData: this.props.displayData })}\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultToolbarStyles, { name: 'MUIDataTableToolbar' })(TableToolbar);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Paper from '@mui/material/Paper';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Typography from '@mui/material/Typography';\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\nimport { withStyles } from '@mui/styles';\r\nimport MuiTooltip from '@mui/material/Tooltip';\r\n\r\nconst defaultToolbarSelectStyles = theme => ({\r\n root: {\r\n backgroundColor: theme.palette.background.default,\r\n flex: '1 1 100%',\r\n display: 'flex',\r\n position: 'relative',\r\n zIndex: 120,\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n paddingTop: typeof theme.spacing === 'function' ? theme.spacing(1) : theme.spacing.unit,\r\n paddingBottom: typeof theme.spacing === 'function' ? theme.spacing(1) : theme.spacing.unit,\r\n '@media print': {\r\n display: 'none',\r\n },\r\n },\r\n title: {\r\n paddingLeft: '26px',\r\n },\r\n iconButton: {\r\n marginRight: '24px',\r\n },\r\n deleteIcon: {},\r\n});\r\n\r\nclass TableToolbarSelect extends React.Component {\r\n static propTypes = {\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Current row selected or not */\r\n rowSelected: PropTypes.bool,\r\n /** Callback to trigger selected rows delete */\r\n onRowsDelete: PropTypes.func,\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n };\r\n\r\n /**\r\n * @param {number[]} selectedRows Array of rows indexes that are selected, e.g. [0, 2] will select first and third rows in table\r\n */\r\n handleCustomSelectedRows = selectedRows => {\r\n if (!Array.isArray(selectedRows)) {\r\n throw new TypeError(`\"selectedRows\" must be an \"array\", but it's \"${typeof selectedRows}\"`);\r\n }\r\n\r\n if (selectedRows.some(row => typeof row !== 'number')) {\r\n throw new TypeError(`Array \"selectedRows\" must contain only numbers`);\r\n }\r\n\r\n const { options } = this.props;\r\n if (selectedRows.length > 1 && options.selectableRows === 'single') {\r\n throw new Error('Can not select more than one row when \"selectableRows\" is \"single\"');\r\n }\r\n this.props.selectRowUpdate('custom', selectedRows);\r\n };\r\n\r\n render() {\r\n const { classes, onRowsDelete, selectedRows, options, displayData, components = {} } = this.props;\r\n const textLabels = options.textLabels.selectedRows;\r\n const Tooltip = components.Tooltip || MuiTooltip;\r\n\r\n return (\r\n \r\n
\r\n \r\n {selectedRows.data.length} {textLabels.text}\r\n \r\n
\r\n {options.customToolbarSelect ? (\r\n options.customToolbarSelect(selectedRows, displayData, this.handleCustomSelectedRows)\r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultToolbarSelectStyles, { name: 'MUIDataTableToolbarSelect' })(TableToolbarSelect);\r\n","import Paper from '@mui/material/Paper';\r\nimport MuiTable from '@mui/material/Table';\r\nimport MuiTooltip from '@mui/material/Tooltip';\r\nimport { withStyles } from '@mui/styles';\r\nimport clsx from 'clsx';\r\nimport assignwith from 'lodash.assignwith';\r\nimport cloneDeep from 'lodash.clonedeep';\r\nimport find from 'lodash.find';\r\nimport isEqual from 'lodash.isequal';\r\nimport isUndefined from 'lodash.isundefined';\r\nimport merge from 'lodash.merge';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport DefaultTableBody from './components/TableBody';\r\nimport DefaultTableFilter from './components/TableFilter';\r\nimport DefaultTableFilterList from './components/TableFilterList';\r\nimport DefaultTableFooter from './components/TableFooter';\r\nimport DefaultTableHead from './components/TableHead';\r\nimport DefaultTableResize from './components/TableResize';\r\nimport DefaultTableToolbar from './components/TableToolbar';\r\nimport DefaultTableToolbarSelect from './components/TableToolbarSelect';\r\nimport getTextLabels from './textLabels';\r\nimport { buildMap, getCollatorComparator, getPageValue, sortCompare, warnDeprecated, warnInfo } from './utils';\r\nimport { DndProvider } from 'react-dnd';\r\nimport { HTML5Backend } from 'react-dnd-html5-backend';\r\nimport { load, save } from './localStorage';\r\n\r\nconst defaultTableStyles = theme => ({\r\n root: {},\r\n paper: {},\r\n paperResponsiveScrollFullHeightFullWidth: {\r\n position: 'absolute',\r\n },\r\n tableRoot: {\r\n outline: 'none',\r\n },\r\n responsiveBase: {\r\n overflow: 'auto',\r\n '@media print': {\r\n height: 'auto !important',\r\n },\r\n },\r\n\r\n // deprecated, but continuing support through v3.x\r\n responsiveScroll: {\r\n overflow: 'auto',\r\n height: '100%',\r\n },\r\n // deprecated, but continuing support through v3.x\r\n responsiveScrollMaxHeight: {\r\n overflow: 'auto',\r\n height: '100%',\r\n },\r\n // deprecated, but continuing support through v3.x\r\n responsiveScrollFullHeight: {\r\n height: '100%',\r\n },\r\n // deprecated, but continuing support through v3.x\r\n responsiveStacked: {\r\n overflow: 'auto',\r\n [theme.breakpoints.down('md')]: {\r\n overflow: 'hidden',\r\n },\r\n },\r\n // deprecated, but continuing support through v3.x\r\n responsiveStackedFullWidth: {},\r\n caption: {\r\n position: 'absolute',\r\n left: '-3000px',\r\n },\r\n\r\n liveAnnounce: {\r\n border: '0',\r\n clip: 'rect(0 0 0 0)',\r\n height: '1px',\r\n margin: '-1px',\r\n overflow: 'hidden',\r\n padding: '0',\r\n position: 'absolute',\r\n width: '1px',\r\n },\r\n '@global': {\r\n '@media print': {\r\n '.datatables-noprint': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst TABLE_LOAD = {\r\n INITIAL: 1,\r\n UPDATE: 2,\r\n};\r\n\r\n// Populate this list with anything that might render in the toolbar to determine if we hide the toolbar\r\nconst TOOLBAR_ITEMS = ['title', 'filter', 'search', 'print', 'download', 'viewColumns', 'customToolbar'];\r\n\r\nconst hasToolbarItem = (options, title) => {\r\n options.title = title;\r\n\r\n return !isUndefined(find(TOOLBAR_ITEMS, i => options[i]));\r\n};\r\n\r\n// Select Toolbar Placement options\r\nconst STP = {\r\n REPLACE: 'replace',\r\n ABOVE: 'above',\r\n NONE: 'none',\r\n};\r\n\r\nclass MUIDataTable extends React.Component {\r\n static propTypes = {\r\n /** Title of the table */\r\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\r\n /** Data used to describe table */\r\n data: PropTypes.array.isRequired,\r\n /** Columns used to describe table */\r\n columns: PropTypes.PropTypes.arrayOf(\r\n PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.shape({\r\n label: PropTypes.string,\r\n name: PropTypes.string.isRequired,\r\n options: PropTypes.shape({\r\n display: PropTypes.oneOf(['true', 'false', 'excluded', 'always', true, false]),\r\n empty: PropTypes.bool,\r\n filter: PropTypes.bool,\r\n sort: PropTypes.bool,\r\n print: PropTypes.bool,\r\n searchable: PropTypes.bool,\r\n download: PropTypes.bool,\r\n viewColumns: PropTypes.bool,\r\n filterList: PropTypes.array,\r\n filterOptions: PropTypes.oneOfType([\r\n PropTypes.array,\r\n PropTypes.shape({\r\n names: PropTypes.array,\r\n logic: PropTypes.func,\r\n display: PropTypes.func,\r\n }),\r\n ]),\r\n filterType: PropTypes.oneOf(['dropdown', 'checkbox', 'multiselect', 'textField', 'custom']),\r\n customHeadRender: PropTypes.func,\r\n customBodyRender: PropTypes.func,\r\n customBodyRenderLite: PropTypes.func,\r\n customHeadLabelRender: PropTypes.func,\r\n customFilterListOptions: PropTypes.oneOfType([\r\n PropTypes.shape({\r\n render: PropTypes.func,\r\n update: PropTypes.func,\r\n }),\r\n ]),\r\n customFilterListRender: PropTypes.func,\r\n setCellProps: PropTypes.func,\r\n setCellHeaderProps: PropTypes.func,\r\n sortThirdClickReset: PropTypes.bool,\r\n sortDescFirst: PropTypes.bool,\r\n }),\r\n }),\r\n ]),\r\n ).isRequired,\r\n /** Options used to describe table */\r\n options: PropTypes.shape({\r\n caseSensitive: PropTypes.bool,\r\n columnOrder: PropTypes.array,\r\n count: PropTypes.number,\r\n confirmFilters: PropTypes.bool,\r\n consoleWarnings: PropTypes.bool,\r\n customFilterDialogFooter: PropTypes.func,\r\n customFooter: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\r\n customRowRender: PropTypes.func,\r\n customSearch: PropTypes.func,\r\n customSearchRender: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\r\n customSort: PropTypes.func,\r\n customToolbar: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\r\n customToolbarSelect: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\r\n draggableColumns: PropTypes.object,\r\n enableNestedDataAccess: PropTypes.string,\r\n expandableRows: PropTypes.bool,\r\n expandableRowsHeader: PropTypes.bool,\r\n expandableRowsOnClick: PropTypes.bool,\r\n disableToolbarSelect: PropTypes.bool,\r\n download: PropTypes.oneOf([true, false, 'true', 'false', 'disabled']),\r\n downloadOptions: PropTypes.shape({\r\n filename: PropTypes.string,\r\n separator: PropTypes.string,\r\n filterOptions: PropTypes.shape({\r\n useDisplayedColumnsOnly: PropTypes.bool,\r\n useDisplayedRowsOnly: PropTypes.bool,\r\n }),\r\n }),\r\n filter: PropTypes.oneOf([true, false, 'true', 'false', 'disabled']),\r\n filterArrayFullMatch: PropTypes.bool,\r\n filterType: PropTypes.oneOf(['dropdown', 'checkbox', 'multiselect', 'textField', 'custom']),\r\n fixedHeader: PropTypes.bool,\r\n fixedSelectColumn: PropTypes.bool,\r\n getTextLabels: PropTypes.func,\r\n isRowExpandable: PropTypes.func,\r\n isRowSelectable: PropTypes.func,\r\n jumpToPage: PropTypes.bool,\r\n onDownload: PropTypes.func,\r\n onFilterChange: PropTypes.func,\r\n onFilterChipClose: PropTypes.func,\r\n onFilterConfirm: PropTypes.func,\r\n onFilterDialogOpen: PropTypes.func,\r\n onFilterDialogClose: PropTypes.func,\r\n onRowClick: PropTypes.func,\r\n onRowsExpand: PropTypes.func,\r\n onRowExpansionChange: PropTypes.func,\r\n onRowsSelect: PropTypes.func,\r\n onRowSelectionChange: PropTypes.func,\r\n onTableChange: PropTypes.func,\r\n onTableInit: PropTypes.func,\r\n page: PropTypes.number,\r\n pagination: PropTypes.bool,\r\n print: PropTypes.oneOf([true, false, 'true', 'false', 'disabled']),\r\n searchProps: PropTypes.object,\r\n selectableRows: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['none', 'single', 'multiple'])]),\r\n selectableRowsHeader: PropTypes.bool,\r\n selectableRowsHideCheckboxes: PropTypes.bool,\r\n selectableRowsOnClick: PropTypes.bool,\r\n serverSide: PropTypes.bool,\r\n tableId: PropTypes.string,\r\n tableBodyHeight: PropTypes.string,\r\n tableBodyMaxHeight: PropTypes.string,\r\n renderExpandableRow: PropTypes.func,\r\n resizableColumns: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\r\n responsive: PropTypes.oneOf(['standard', 'vertical', 'verticalAlways', 'simple']),\r\n rowHover: PropTypes.bool,\r\n rowsExpanded: PropTypes.array,\r\n rowsPerPage: PropTypes.number,\r\n rowsPerPageOptions: PropTypes.array,\r\n rowsSelected: PropTypes.array,\r\n search: PropTypes.oneOf([true, false, 'true', 'false', 'disabled']),\r\n searchOpen: PropTypes.bool,\r\n searchAlwaysOpen: PropTypes.bool,\r\n searchPlaceholder: PropTypes.string,\r\n searchText: PropTypes.string,\r\n setFilterChipProps: PropTypes.func,\r\n setRowProps: PropTypes.func,\r\n selectToolbarPlacement: PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.oneOf([STP.REPLACE, STP.ABOVE, STP.NONE]),\r\n ]),\r\n setTableProps: PropTypes.func,\r\n sort: PropTypes.bool,\r\n sortOrder: PropTypes.object,\r\n storageKey: PropTypes.string,\r\n viewColumns: PropTypes.oneOf([true, false, 'true', 'false', 'disabled']),\r\n }),\r\n /** Pass and use className to style MUIDataTable as desired */\r\n className: PropTypes.string,\r\n components: PropTypes.objectOf(PropTypes.any),\r\n };\r\n\r\n static defaultProps = {\r\n title: '',\r\n options: {},\r\n data: [],\r\n columns: [],\r\n components: {\r\n TableBody: DefaultTableBody,\r\n TableFilter: DefaultTableFilter,\r\n TableFilterList: DefaultTableFilterList,\r\n TableFooter: DefaultTableFooter,\r\n TableHead: DefaultTableHead,\r\n TableResize: DefaultTableResize,\r\n TableToolbar: DefaultTableToolbar,\r\n TableToolbarSelect: DefaultTableToolbarSelect,\r\n Tooltip: MuiTooltip,\r\n icons: {},\r\n },\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n this.tableContent = React.createRef();\r\n this.draggableHeadCellRefs = {};\r\n this.resizeHeadCellRefs = {};\r\n this.timers = {};\r\n this.setHeadResizeable = () => {};\r\n this.updateDividers = () => {};\r\n\r\n let defaultState = {\r\n activeColumn: null,\r\n announceText: null,\r\n count: 0,\r\n columns: [],\r\n expandedRows: {\r\n data: [],\r\n lookup: {},\r\n },\r\n data: [],\r\n displayData: [],\r\n filterData: [],\r\n filterList: [],\r\n page: 0,\r\n previousSelectedRow: null,\r\n rowsPerPage: 10,\r\n searchProps: {},\r\n searchText: null,\r\n selectedRows: {\r\n data: [],\r\n lookup: {},\r\n },\r\n showResponsive: false,\r\n sortOrder: {},\r\n };\r\n\r\n this.mergeDefaultOptions(props);\r\n\r\n const restoredState = load(props.options.storageKey);\r\n this.state = Object.assign(defaultState, restoredState ? restoredState : this.getInitTableOptions());\r\n\r\n this.setTableData = this.setTableData.bind(this);\r\n\r\n this.setTableData(props, TABLE_LOAD.INITIAL, true, null, true);\r\n }\r\n\r\n componentDidMount() {\r\n this.setHeadResizeable(this.resizeHeadCellRefs, this.tableRef);\r\n\r\n // When we have a search, we must reset page to view it unless on serverSide since paging is handled by the user.\r\n if (this.props.options.searchText && !this.props.options.serverSide) this.setState({ page: 0 });\r\n\r\n this.setTableInit('tableInitialized');\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (\r\n this.props.data !== prevProps.data ||\r\n this.props.columns !== prevProps.columns ||\r\n this.props.options !== prevProps.options\r\n ) {\r\n this.updateOptions(this.options, this.props);\r\n\r\n var didDataUpdate = this.props.data !== prevProps.data;\r\n if (this.props.data && prevProps.data) {\r\n didDataUpdate = didDataUpdate && this.props.data.length === prevProps.data.length;\r\n }\r\n\r\n this.setTableData(this.props, TABLE_LOAD.INITIAL, didDataUpdate, () => {\r\n this.setTableAction('propsUpdate');\r\n });\r\n }\r\n\r\n if (this.props.options.searchText !== prevProps.options.searchText && !this.props.options.serverSide) {\r\n // When we have a search, we must reset page to view it unless on serverSide since paging is handled by the user.\r\n this.setState({ page: 0 });\r\n }\r\n\r\n if (\r\n this.options.resizableColumns === true ||\r\n (this.options.resizableColumns && this.options.resizableColumns.enabled)\r\n ) {\r\n this.setHeadResizeable(this.resizeHeadCellRefs, this.tableRef);\r\n this.updateDividers();\r\n }\r\n }\r\n\r\n updateOptions(options, props) {\r\n // set backwards compatibility options\r\n if (props.options.disableToolbarSelect === true && props.options.selectToolbarPlacement === undefined) {\r\n // if deprecated option disableToolbarSelect is set and selectToolbarPlacement is default then use it\r\n props.options.selectToolbarPlacement = STP.NONE;\r\n }\r\n\r\n // provide default tableId when no tableId has been passed as prop\r\n if (!props.options.tableId) {\r\n props.options.tableId = (Math.random() + '').replace(/\\./, '');\r\n }\r\n\r\n this.options = assignwith(options, props.options, (objValue, srcValue, key) => {\r\n // Merge any default options that are objects, as they will be overwritten otherwise\r\n if (key === 'textLabels' || key === 'downloadOptions') return merge(objValue, srcValue);\r\n return;\r\n });\r\n\r\n this.handleOptionDeprecation(props);\r\n }\r\n\r\n getDefaultOptions = () => ({\r\n caseSensitive: false,\r\n consoleWarnings: true,\r\n disableToolbarSelect: false,\r\n download: true,\r\n downloadOptions: {\r\n filename: 'tableDownload.csv',\r\n separator: ',',\r\n },\r\n draggableColumns: {\r\n enabled: false,\r\n transitionTime: 300,\r\n },\r\n elevation: 4,\r\n enableNestedDataAccess: '',\r\n expandableRows: false,\r\n expandableRowsHeader: true,\r\n expandableRowsOnClick: false,\r\n filter: true,\r\n filterArrayFullMatch: true,\r\n filterType: 'dropdown',\r\n fixedHeader: true,\r\n fixedSelectColumn: true,\r\n pagination: true,\r\n print: true,\r\n resizableColumns: false,\r\n responsive: 'vertical',\r\n rowHover: true,\r\n //rowsPerPage: 10,\r\n rowsPerPageOptions: [10, 15, 100],\r\n search: true,\r\n selectableRows: 'multiple',\r\n selectableRowsHideCheckboxes: false,\r\n selectableRowsOnClick: false,\r\n selectableRowsHeader: true,\r\n serverSide: false,\r\n serverSideFilterList: null,\r\n setTableProps: () => ({}),\r\n sort: true,\r\n sortFilterList: true,\r\n tableBodyHeight: 'auto',\r\n tableBodyMaxHeight: null, // if set, it will override tableBodyHeight\r\n sortOrder: {},\r\n textLabels: getTextLabels(),\r\n viewColumns: true,\r\n selectToolbarPlacement: STP.REPLACE,\r\n });\r\n\r\n warnDep = (msg, consoleWarnings) => {\r\n warnDeprecated(msg, this.options.consoleWarnings);\r\n };\r\n\r\n warnInfo = (msg, consoleWarnings) => {\r\n warnInfo(msg, this.options.consoleWarnings);\r\n };\r\n\r\n handleOptionDeprecation = props => {\r\n if (typeof this.options.selectableRows === 'boolean') {\r\n this.warnDep(\r\n 'Using a boolean for selectableRows has been deprecated. Please use string option: multiple | single | none',\r\n );\r\n this.options.selectableRows = this.options.selectableRows ? 'multiple' : 'none';\r\n }\r\n if (['standard', 'vertical', 'verticalAlways', 'simple'].indexOf(this.options.responsive) === -1) {\r\n if (\r\n [\r\n 'scrollMaxHeight',\r\n 'scrollFullHeight',\r\n 'stacked',\r\n 'stackedFullWidth',\r\n 'scrollFullHeightFullWidth',\r\n 'scroll',\r\n ].indexOf(this.options.responsive) !== -1\r\n ) {\r\n this.warnDep(\r\n this.options.responsive +\r\n ' has been deprecated, but will still work in version 3.x. Please use string option: standard | vertical | simple. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n } else {\r\n this.warnInfo(\r\n this.options.responsive +\r\n ' is not recognized as a valid input for responsive option. Please use string option: standard | vertical | simple. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n }\r\n if (this.options.onRowsSelect) {\r\n this.warnDep(\r\n 'onRowsSelect has been renamed onRowSelectionChange. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n if (this.options.onRowsExpand) {\r\n this.warnDep(\r\n 'onRowsExpand has been renamed onRowExpansionChange. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n if (this.options.fixedHeaderOptions) {\r\n if (\r\n typeof this.options.fixedHeaderOptions.yAxis !== 'undefined' &&\r\n typeof this.options.fixedHeader === 'undefined'\r\n ) {\r\n this.options.fixedHeader = this.options.fixedHeaderOptions.yAxis;\r\n }\r\n if (\r\n typeof this.options.fixedHeaderOptions.xAxis !== 'undefined' &&\r\n typeof this.options.fixedSelectColumn === 'undefined'\r\n ) {\r\n this.options.fixedSelectColumn = this.options.fixedHeaderOptions.xAxis;\r\n }\r\n this.warnDep(\r\n 'fixedHeaderOptions will still work but has been deprecated in favor of fixedHeader and fixedSelectColumn. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n if (this.options.serverSideFilterList) {\r\n this.warnDep(\r\n 'serverSideFilterList will still work but has been deprecated in favor of the confirmFilters option. See this example for details: https://github.com/gregnb/mui-datatables/blob/master/examples/serverside-filters/index.js More info here: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n\r\n props.columns.map(c => {\r\n if (c.options && c.options.customFilterListRender) {\r\n this.warnDep(\r\n 'The customFilterListRender option has been deprecated. It is being replaced by customFilterListOptions.render (Specify customFilterListOptions: { render: Function } in column options.)',\r\n );\r\n }\r\n });\r\n\r\n if (this.options.disableToolbarSelect === true) {\r\n this.warnDep(\r\n 'disableToolbarSelect has been deprecated but will still work in version 3.x. It is being replaced by \"selectToolbarPlacement\"=\"none\". More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n\r\n // only give this warning message in newer browsers\r\n if (Object.values) {\r\n if (Object.values(STP).indexOf(this.options.selectToolbarPlacement) === -1) {\r\n this.warnDep(\r\n 'Invalid option value for selectToolbarPlacement. Please check the documentation: https://github.com/gregnb/mui-datatables#options',\r\n );\r\n }\r\n }\r\n };\r\n\r\n /*\r\n * React currently does not support deep merge for defaultProps. Objects are overwritten\r\n */\r\n mergeDefaultOptions(props) {\r\n const defaultOptions = this.getDefaultOptions();\r\n const theProps = Object.assign({}, props);\r\n theProps.options = theProps.options || {};\r\n\r\n this.updateOptions(defaultOptions, theProps);\r\n }\r\n\r\n validateOptions(options) {\r\n if (options.serverSide && options.onTableChange === undefined) {\r\n throw Error('onTableChange callback must be provided when using serverSide option');\r\n }\r\n if (options.expandableRows && options.renderExpandableRow === undefined) {\r\n throw Error('renderExpandableRow must be provided when using expandableRows option');\r\n }\r\n if (options.rowsSelected && Array.isArray(options.rowsSelected) && options.rowsSelected.some(isNaN)) {\r\n warnInfo('When using the rowsSelected option, must be provided an array of numbers only.');\r\n }\r\n }\r\n\r\n setTableAction = action => {\r\n if (typeof this.options.onTableChange === 'function') {\r\n this.options.onTableChange(action, this.state);\r\n }\r\n if (this.options.storageKey) {\r\n save(this.options.storageKey, this.state);\r\n }\r\n };\r\n\r\n setTableInit = action => {\r\n if (typeof this.options.onTableInit === 'function') {\r\n this.options.onTableInit(action, this.state);\r\n }\r\n };\r\n\r\n getInitTableOptions() {\r\n const optionNames = ['rowsPerPage', 'page', 'rowsSelected', 'rowsPerPageOptions'];\r\n const optState = optionNames.reduce((acc, cur) => {\r\n if (this.options[cur] !== undefined) {\r\n acc[cur] = this.options[cur];\r\n }\r\n return acc;\r\n }, {});\r\n\r\n this.validateOptions(optState);\r\n return optState;\r\n }\r\n\r\n setHeadCellRef = (index, pos, el) => {\r\n this.draggableHeadCellRefs[index] = el;\r\n this.resizeHeadCellRefs[pos] = el;\r\n };\r\n\r\n // must be arrow function on local field to refer to the correct instance when passed around\r\n // assigning it as arrow function in the JSX would cause hard to track re-render errors\r\n getTableContentRef = () => this.tableContent.current;\r\n\r\n /*\r\n *  Build the source table data\r\n *\r\n * newColumns - columns from the options object.\r\n * prevColumns - columns object saved onto ths state.\r\n * newColumnOrder - columnOrder from the options object.\r\n * prevColumnOrder - columnOrder object saved onto the state.\r\n */\r\n\r\n buildColumns = (newColumns, prevColumns = [], newColumnOrder, prevColumnOrder = []) => {\r\n let columnData = [];\r\n let filterData = [];\r\n let filterList = [];\r\n let columnOrder = [];\r\n\r\n newColumns.forEach((column, colIndex) => {\r\n let columnOptions = {\r\n display: 'true',\r\n empty: false,\r\n filter: true,\r\n sort: true,\r\n print: true,\r\n searchable: true,\r\n download: true,\r\n viewColumns: true,\r\n sortCompare: null,\r\n sortThirdClickReset: false,\r\n sortDescFirst: false,\r\n };\r\n\r\n columnOrder.push(colIndex);\r\n const options = { ...column.options };\r\n\r\n if (typeof column === 'object') {\r\n if (options) {\r\n if (options.display !== undefined) {\r\n options.display = options.display.toString();\r\n }\r\n\r\n if (options.sortDirection === null || options.sortDirection) {\r\n this.warnDep(\r\n 'The sortDirection column field has been deprecated. Please use the sortOrder option on the options object. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n }\r\n\r\n // remember stored version of display if not overwritten\r\n if (\r\n typeof options.display === 'undefined' &&\r\n prevColumns[colIndex] &&\r\n prevColumns[colIndex].name === column.name &&\r\n prevColumns[colIndex].display\r\n ) {\r\n options.display = prevColumns[colIndex].display;\r\n }\r\n\r\n columnOptions = {\r\n name: column.name,\r\n label: column.label ? column.label : column.name,\r\n ...columnOptions,\r\n ...options,\r\n };\r\n } else {\r\n // remember stored version of display if not overwritten\r\n if (prevColumns[colIndex] && prevColumns[colIndex].display) {\r\n options.display = prevColumns[colIndex].display;\r\n }\r\n\r\n columnOptions = { ...columnOptions, ...options, name: column, label: column };\r\n }\r\n\r\n columnData.push(columnOptions);\r\n\r\n filterData[colIndex] = [];\r\n filterList[colIndex] = [];\r\n });\r\n\r\n if (Array.isArray(newColumnOrder)) {\r\n columnOrder = newColumnOrder;\r\n } else if (\r\n Array.isArray(prevColumnOrder) &&\r\n Array.isArray(newColumns) &&\r\n Array.isArray(prevColumns) &&\r\n newColumns.length === prevColumns.length\r\n ) {\r\n columnOrder = prevColumnOrder;\r\n }\r\n\r\n return { columns: columnData, filterData, filterList, columnOrder };\r\n };\r\n\r\n transformData = (columns, data) => {\r\n const { enableNestedDataAccess } = this.options;\r\n const leaf = (obj, path) =>\r\n (enableNestedDataAccess ? path.split(enableNestedDataAccess) : path.split()).reduce(\r\n (value, el) => (value ? value[el] : undefined),\r\n obj,\r\n );\r\n\r\n const transformedData = Array.isArray(data[0])\r\n ? data.map(row => {\r\n let i = -1;\r\n\r\n return columns.map(col => {\r\n if (!col.empty) i++;\r\n return col.empty ? undefined : row[i];\r\n });\r\n })\r\n : data.map(row => columns.map(col => leaf(row, col.name)));\r\n\r\n return transformedData;\r\n };\r\n\r\n setTableData(props, status, dataUpdated, callback = () => {}, fromConstructor = false) {\r\n let tableData = [];\r\n let { columns, filterData, filterList, columnOrder } = this.buildColumns(\r\n props.columns,\r\n this.state.columns,\r\n this.options.columnOrder,\r\n this.state.columnOrder,\r\n );\r\n\r\n let sortIndex = null;\r\n let sortDirection = 'none';\r\n let tableMeta;\r\n\r\n let sortOrder;\r\n if (this.options.sortOrder && this.options.sortOrder.direction && this.options.sortOrder.name) {\r\n sortOrder = Object.assign({}, this.options.sortOrder);\r\n } else {\r\n sortOrder = Object.assign({}, this.state.sortOrder);\r\n\r\n // if no sortOrder, check and see if there's a sortDirection on one of the columns (deprecation notice for this is given above)\r\n if (!sortOrder.direction) {\r\n props.columns.forEach((column, colIndex) => {\r\n if (column.options && (column.options.sortDirection === 'asc' || column.options.sortDirection === 'desc')) {\r\n sortOrder.name = column.name;\r\n sortOrder.sortDirection = column.sortDirection;\r\n }\r\n });\r\n }\r\n }\r\n\r\n const data = status === TABLE_LOAD.INITIAL ? this.transformData(columns, props.data) : props.data;\r\n let searchText = status === TABLE_LOAD.INITIAL ? this.options.searchText : null;\r\n\r\n if (typeof this.options.searchText === 'undefined' && typeof this.state.searchText !== 'undefined') {\r\n searchText = this.state.searchText;\r\n }\r\n\r\n let rowsPerPage = this.state.rowsPerPage;\r\n if (typeof this.options.rowsPerPage === 'number') {\r\n rowsPerPage = this.options.rowsPerPage;\r\n }\r\n\r\n let page = this.state.page;\r\n if (typeof this.options.page === 'number') {\r\n page = this.options.page;\r\n }\r\n\r\n columns.forEach((column, colIndex) => {\r\n for (let rowIndex = 0; rowIndex < data.length; rowIndex++) {\r\n let value = status === TABLE_LOAD.INITIAL ? data[rowIndex][colIndex] : data[rowIndex].data[colIndex];\r\n\r\n if (typeof tableData[rowIndex] === 'undefined') {\r\n tableData.push({\r\n index: status === TABLE_LOAD.INITIAL ? rowIndex : data[rowIndex].index,\r\n data: status === TABLE_LOAD.INITIAL ? data[rowIndex] : data[rowIndex].data,\r\n });\r\n }\r\n\r\n if (column.filter !== false) {\r\n if (typeof column.customBodyRender === 'function') {\r\n const rowData = tableData[rowIndex].data;\r\n tableMeta = this.getTableMeta(rowIndex, colIndex, rowData, column, data, this.state, tableData);\r\n const funcResult = column.customBodyRender(value, tableMeta);\r\n\r\n if (React.isValidElement(funcResult) && funcResult.props.value) {\r\n value = funcResult.props.value;\r\n } else if (typeof funcResult === 'string') {\r\n value = funcResult;\r\n }\r\n }\r\n\r\n if (typeof value === 'object' && !Array.isArray(value) && value !== null) {\r\n // it's extremely rare but possible to create an object without a toString method, ex: var x = Object.create(null);\r\n // so this check has to be made\r\n value = value.toString ? value.toString() : '';\r\n }\r\n\r\n if (filterData[colIndex].indexOf(value) < 0 && !Array.isArray(value)) {\r\n filterData[colIndex].push(value);\r\n } else if (Array.isArray(value)) {\r\n value.forEach(element => {\r\n let elmVal;\r\n if ((typeof element === 'object' && element !== null) || typeof element === 'function') {\r\n elmVal = element.toString ? element.toString() : '';\r\n } else {\r\n elmVal = element;\r\n }\r\n\r\n if (filterData[colIndex].indexOf(elmVal) < 0) {\r\n filterData[colIndex].push(elmVal);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (column.filterOptions) {\r\n if (Array.isArray(column.filterOptions)) {\r\n filterData[colIndex] = cloneDeep(column.filterOptions);\r\n this.warnDep(\r\n 'filterOptions must now be an object. see https://github.com/gregnb/mui-datatables/tree/master/examples/customize-filter example',\r\n );\r\n } else if (Array.isArray(column.filterOptions.names)) {\r\n filterData[colIndex] = cloneDeep(column.filterOptions.names);\r\n }\r\n }\r\n\r\n if (column.filterList) {\r\n filterList[colIndex] = cloneDeep(column.filterList);\r\n } else if (\r\n this.state.filterList &&\r\n this.state.filterList[colIndex] &&\r\n this.state.filterList[colIndex].length > 0\r\n ) {\r\n filterList[colIndex] = cloneDeep(this.state.filterList[colIndex]);\r\n }\r\n\r\n if (this.options.sortFilterList) {\r\n const comparator = getCollatorComparator();\r\n filterData[colIndex].sort(comparator);\r\n }\r\n\r\n if (column.name === sortOrder.name) {\r\n sortDirection = sortOrder.direction;\r\n sortIndex = colIndex;\r\n }\r\n });\r\n\r\n let selectedRowsData = {\r\n data: [],\r\n lookup: {},\r\n };\r\n\r\n let expandedRowsData = {\r\n data: [],\r\n lookup: {},\r\n };\r\n\r\n if (TABLE_LOAD.INITIAL) {\r\n // Multiple row selection customization\r\n if (this.options.rowsSelected && this.options.rowsSelected.length && this.options.selectableRows === 'multiple') {\r\n this.options.rowsSelected\r\n .filter(selectedRowIndex => selectedRowIndex === 0 || (Number(selectedRowIndex) && selectedRowIndex > 0))\r\n .forEach(row => {\r\n let rowPos = row;\r\n\r\n for (let cIndex = 0; cIndex < this.state.displayData.length; cIndex++) {\r\n if (this.state.displayData[cIndex].dataIndex === row) {\r\n rowPos = cIndex;\r\n break;\r\n }\r\n }\r\n\r\n selectedRowsData.data.push({ index: rowPos, dataIndex: row });\r\n selectedRowsData.lookup[row] = true;\r\n });\r\n\r\n // Single row selection customization\r\n } else if (\r\n this.options.rowsSelected &&\r\n this.options.rowsSelected.length === 1 &&\r\n this.options.selectableRows === 'single'\r\n ) {\r\n let rowPos = this.options.rowsSelected[0];\r\n\r\n for (let cIndex = 0; cIndex < this.state.displayData.length; cIndex++) {\r\n if (this.state.displayData[cIndex].dataIndex === this.options.rowsSelected[0]) {\r\n rowPos = cIndex;\r\n break;\r\n }\r\n }\r\n\r\n selectedRowsData.data.push({ index: rowPos, dataIndex: this.options.rowsSelected[0] });\r\n selectedRowsData.lookup[this.options.rowsSelected[0]] = true;\r\n } else if (\r\n this.options.rowsSelected &&\r\n this.options.rowsSelected.length > 1 &&\r\n this.options.selectableRows === 'single'\r\n ) {\r\n console.error(\r\n 'Multiple values provided for selectableRows, but selectableRows set to \"single\". Either supply only a single value or use \"multiple\".',\r\n );\r\n } else if (typeof this.options.rowsSelected === 'undefined' && dataUpdated === false) {\r\n if (this.state.selectedRows) {\r\n selectedRowsData = Object.assign({}, this.state.selectedRows);\r\n }\r\n }\r\n\r\n if (this.options.rowsExpanded && this.options.rowsExpanded.length && this.options.expandableRows) {\r\n this.options.rowsExpanded.forEach(row => {\r\n let rowPos = row;\r\n\r\n for (let cIndex = 0; cIndex < this.state.displayData.length; cIndex++) {\r\n if (this.state.displayData[cIndex].dataIndex === row) {\r\n rowPos = cIndex;\r\n break;\r\n }\r\n }\r\n\r\n expandedRowsData.data.push({ index: rowPos, dataIndex: row });\r\n expandedRowsData.lookup[row] = true;\r\n });\r\n } else if (typeof this.options.rowsExpanded === 'undefined' && dataUpdated === false && this.state.expandedRows) {\r\n expandedRowsData = Object.assign({}, this.state.expandedRows);\r\n }\r\n }\r\n\r\n if (!this.options.serverSide && sortIndex !== null) {\r\n const sortedData = this.sortTable(tableData, sortIndex, sortDirection, columns[sortIndex].sortCompare);\r\n tableData = sortedData.data;\r\n }\r\n\r\n /* set source data and display Data set source set */\r\n let stateUpdates = {\r\n columns: columns,\r\n filterData: filterData,\r\n filterList: filterList,\r\n searchText: searchText,\r\n selectedRows: selectedRowsData,\r\n expandedRows: expandedRowsData,\r\n count: this.options.count,\r\n data: tableData,\r\n sortOrder: sortOrder,\r\n rowsPerPage,\r\n page,\r\n displayData: this.getDisplayData(columns, tableData, filterList, searchText, tableMeta, props),\r\n columnOrder,\r\n };\r\n\r\n if (fromConstructor) {\r\n this.state = Object.assign({}, this.state, stateUpdates);\r\n } else {\r\n this.setState(stateUpdates, callback);\r\n }\r\n }\r\n\r\n /*\r\n * Build the table data used to display to the user (ie: after filter/search applied)\r\n */\r\n computeDisplayRow(\r\n columns,\r\n row,\r\n rowIndex,\r\n filterList,\r\n searchText,\r\n dataForTableMeta,\r\n options,\r\n props,\r\n currentTableData,\r\n ) {\r\n let isFiltered = false;\r\n let isSearchFound = false;\r\n let displayRow = [];\r\n\r\n for (let index = 0; index < row.length; index++) {\r\n let columnDisplay = row[index];\r\n let columnValue = row[index];\r\n let column = columns[index];\r\n\r\n if (column.customBodyRenderLite) {\r\n displayRow.push(column.customBodyRenderLite);\r\n } else if (column.customBodyRender) {\r\n const tableMeta = this.getTableMeta(\r\n rowIndex,\r\n index,\r\n row,\r\n column,\r\n dataForTableMeta,\r\n {\r\n ...this.state,\r\n filterList: filterList,\r\n searchText: searchText,\r\n },\r\n currentTableData,\r\n );\r\n\r\n const funcResult = column.customBodyRender(\r\n columnValue,\r\n tableMeta,\r\n this.updateDataCol.bind(null, rowIndex, index),\r\n );\r\n columnDisplay = funcResult;\r\n\r\n /* drill down to get the value of a cell */\r\n columnValue =\r\n typeof funcResult === 'string' || !funcResult\r\n ? funcResult\r\n : funcResult.props && funcResult.props.value\r\n ? funcResult.props.value\r\n : columnValue;\r\n\r\n displayRow.push(columnDisplay);\r\n } else {\r\n displayRow.push(columnDisplay);\r\n }\r\n\r\n const columnVal = columnValue === null || columnValue === undefined ? '' : columnValue.toString();\r\n\r\n const filterVal = filterList[index];\r\n const caseSensitive = options.caseSensitive;\r\n const filterType = column.filterType || options.filterType;\r\n if (filterVal.length || filterType === 'custom') {\r\n if (column.filterOptions && column.filterOptions.logic) {\r\n if (column.filterOptions.logic(columnValue, filterVal, row)) isFiltered = true;\r\n } else if (filterType === 'textField' && !this.hasSearchText(columnVal, filterVal, caseSensitive)) {\r\n isFiltered = true;\r\n } else if (\r\n filterType !== 'textField' &&\r\n Array.isArray(columnValue) === false &&\r\n filterVal.indexOf(columnValue) < 0\r\n ) {\r\n isFiltered = true;\r\n } else if (filterType !== 'textField' && Array.isArray(columnValue)) {\r\n if (options.filterArrayFullMatch) {\r\n //true if every filterVal exists in columnVal, false otherwise\r\n const isFullMatch = filterVal.every(el => {\r\n return columnValue.indexOf(el) >= 0;\r\n });\r\n //if it is not a fullMatch, filter row out\r\n if (!isFullMatch) {\r\n isFiltered = true;\r\n }\r\n } else {\r\n const isAnyMatch = filterVal.some(el => {\r\n return columnValue.indexOf(el) >= 0;\r\n });\r\n //if no value matches, filter row out\r\n if (!isAnyMatch) {\r\n isFiltered = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (\r\n searchText &&\r\n column.display !== 'excluded' &&\r\n this.hasSearchText(columnVal, searchText, caseSensitive) &&\r\n column.display !== 'false' &&\r\n column.searchable\r\n ) {\r\n isSearchFound = true;\r\n }\r\n }\r\n\r\n const { customSearch } = props.options;\r\n\r\n if (searchText && customSearch) {\r\n const customSearchResult = customSearch(searchText, row, columns);\r\n if (typeof customSearchResult !== 'boolean') {\r\n console.error('customSearch must return a boolean');\r\n } else {\r\n isSearchFound = customSearchResult;\r\n }\r\n }\r\n\r\n if (options.serverSide) {\r\n if (customSearch) {\r\n console.warn('Server-side filtering is enabled, hence custom search will be ignored.');\r\n }\r\n\r\n return displayRow;\r\n }\r\n\r\n if (isFiltered || (searchText && !isSearchFound)) return null;\r\n else return displayRow;\r\n }\r\n\r\n hasSearchText = (toSearch, toFind, caseSensitive) => {\r\n let stack = toSearch.toString();\r\n let needle = toFind.toString();\r\n\r\n if (!caseSensitive) {\r\n needle = needle.toLowerCase();\r\n stack = stack.toLowerCase();\r\n }\r\n\r\n return stack.indexOf(needle) >= 0;\r\n };\r\n\r\n updateDataCol = (row, index, value) => {\r\n this.setState(prevState => {\r\n let changedData = cloneDeep(prevState.data);\r\n let filterData = cloneDeep(prevState.filterData);\r\n\r\n const tableMeta = this.getTableMeta(\r\n row,\r\n index,\r\n row,\r\n prevState.columns[index],\r\n prevState.data,\r\n prevState,\r\n prevState.data,\r\n );\r\n const funcResult = prevState.columns[index].customBodyRender(value, tableMeta);\r\n\r\n const filterValue =\r\n React.isValidElement(funcResult) && funcResult.props.value\r\n ? funcResult.props.value\r\n : prevState['data'][row][index];\r\n\r\n const prevFilterIndex = filterData[index].indexOf(filterValue);\r\n filterData[index].splice(prevFilterIndex, 1, filterValue);\r\n\r\n changedData[row].data[index] = value;\r\n\r\n if (this.options.sortFilterList) {\r\n const comparator = getCollatorComparator();\r\n filterData[index].sort(comparator);\r\n }\r\n\r\n return {\r\n data: changedData,\r\n filterData: filterData,\r\n displayData: this.getDisplayData(\r\n prevState.columns,\r\n changedData,\r\n prevState.filterList,\r\n prevState.searchText,\r\n null,\r\n this.props,\r\n ),\r\n };\r\n });\r\n };\r\n\r\n getTableMeta = (rowIndex, colIndex, rowData, columnData, tableData, curState, currentTableData) => {\r\n const { columns, data, displayData, filterData, ...tableState } = curState;\r\n\r\n return {\r\n rowIndex: rowIndex,\r\n columnIndex: colIndex,\r\n columnData: columnData,\r\n rowData: rowData,\r\n tableData: tableData,\r\n tableState: tableState,\r\n currentTableData: currentTableData,\r\n };\r\n };\r\n\r\n getDisplayData(columns, data, filterList, searchText, tableMeta, props) {\r\n let newRows = [];\r\n const dataForTableMeta = tableMeta ? tableMeta.tableData : props.data;\r\n\r\n for (let index = 0; index < data.length; index++) {\r\n const value = data[index].data;\r\n const displayRow = this.computeDisplayRow(\r\n columns,\r\n value,\r\n index,\r\n filterList,\r\n searchText,\r\n dataForTableMeta,\r\n this.options,\r\n props,\r\n data,\r\n );\r\n\r\n if (displayRow) {\r\n newRows.push({\r\n data: displayRow,\r\n dataIndex: data[index].index,\r\n });\r\n }\r\n }\r\n return newRows;\r\n }\r\n\r\n toggleViewColumn = index => {\r\n this.setState(\r\n prevState => {\r\n const columns = cloneDeep(prevState.columns);\r\n columns[index].display = columns[index].display === 'true' ? 'false' : 'true';\r\n return {\r\n columns: columns,\r\n };\r\n },\r\n () => {\r\n this.setTableAction('viewColumnsChange');\r\n var cb = this.options.onViewColumnsChange || this.options.onColumnViewChange;\r\n\r\n if (cb) {\r\n cb(this.state.columns[index].name, this.state.columns[index].display === 'true' ? 'add' : 'remove');\r\n }\r\n },\r\n );\r\n };\r\n\r\n updateColumns = newColumns => {\r\n this.setState(\r\n prevState => {\r\n return {\r\n columns: newColumns,\r\n };\r\n },\r\n () => {\r\n this.setTableAction('viewColumnsChange');\r\n var cb = this.options.onViewColumnsChange || this.options.onColumnViewChange;\r\n\r\n if (cb) {\r\n cb(null, 'update', newColumns);\r\n }\r\n },\r\n );\r\n };\r\n\r\n getSortDirectionLabel(sortOrder) {\r\n switch (sortOrder.direction) {\r\n case 'asc':\r\n return 'ascending';\r\n case 'desc':\r\n return 'descending';\r\n case 'none':\r\n return 'none';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n getTableProps() {\r\n const { classes } = this.props;\r\n const tableProps = this.options.setTableProps() || {};\r\n\r\n tableProps.className = clsx(classes.tableRoot, tableProps.className);\r\n\r\n return tableProps;\r\n }\r\n\r\n toggleSortColumn = index => {\r\n this.setState(\r\n prevState => {\r\n let columns = cloneDeep(prevState.columns);\r\n let data = prevState.data;\r\n let newOrder = columns[index].sortDescFirst ? 'desc' : 'asc'; // default\r\n\r\n let sequenceOrder = ['asc', 'desc'];\r\n if (columns[index].sortDescFirst) {\r\n sequenceOrder = ['desc', 'asc'];\r\n }\r\n if (columns[index].sortThirdClickReset) {\r\n sequenceOrder.push('none');\r\n }\r\n\r\n if (columns[index].name === this.state.sortOrder.name) {\r\n let pos = sequenceOrder.indexOf(this.state.sortOrder.direction);\r\n if (pos !== -1) {\r\n pos++;\r\n if (pos >= sequenceOrder.length) pos = 0;\r\n newOrder = sequenceOrder[pos];\r\n }\r\n }\r\n\r\n const newSortOrder = {\r\n name: columns[index].name,\r\n direction: newOrder,\r\n };\r\n\r\n const orderLabel = this.getSortDirectionLabel(newSortOrder);\r\n const announceText = `Table now sorted by ${columns[index].name} : ${orderLabel}`;\r\n\r\n let newState = {\r\n columns: columns,\r\n announceText: announceText,\r\n activeColumn: index,\r\n };\r\n\r\n if (this.options.serverSide) {\r\n newState = {\r\n ...newState,\r\n data: prevState.data,\r\n displayData: prevState.displayData,\r\n selectedRows: prevState.selectedRows,\r\n sortOrder: newSortOrder,\r\n };\r\n } else {\r\n const sortedData = this.sortTable(data, index, newOrder, columns[index].sortCompare);\r\n\r\n newState = {\r\n ...newState,\r\n data: sortedData.data,\r\n displayData: this.getDisplayData(\r\n columns,\r\n sortedData.data,\r\n prevState.filterList,\r\n prevState.searchText,\r\n null,\r\n this.props,\r\n ),\r\n selectedRows: sortedData.selectedRows,\r\n sortOrder: newSortOrder,\r\n previousSelectedRow: null,\r\n };\r\n }\r\n\r\n return newState;\r\n },\r\n () => {\r\n this.setTableAction('sort');\r\n\r\n if (this.options.onColumnSortChange) {\r\n this.options.onColumnSortChange(this.state.sortOrder.name, this.state.sortOrder.direction);\r\n }\r\n },\r\n );\r\n };\r\n\r\n changeRowsPerPage = rows => {\r\n const rowCount = this.options.count || this.state.displayData.length;\r\n\r\n this.setState(\r\n () => ({\r\n rowsPerPage: rows,\r\n page: getPageValue(rowCount, rows, this.state.page),\r\n }),\r\n () => {\r\n this.setTableAction('changeRowsPerPage');\r\n\r\n if (this.options.onChangeRowsPerPage) {\r\n this.options.onChangeRowsPerPage(this.state.rowsPerPage);\r\n }\r\n },\r\n );\r\n };\r\n\r\n changePage = page => {\r\n this.setState(\r\n () => ({\r\n page: page,\r\n }),\r\n () => {\r\n this.setTableAction('changePage');\r\n if (this.options.onChangePage) {\r\n this.options.onChangePage(this.state.page);\r\n }\r\n },\r\n );\r\n };\r\n\r\n searchClose = () => {\r\n this.setState(\r\n prevState => ({\r\n searchText: null,\r\n displayData: this.options.serverSide\r\n ? prevState.displayData\r\n : this.getDisplayData(prevState.columns, prevState.data, prevState.filterList, null, null, this.props),\r\n }),\r\n () => {\r\n this.setTableAction('search');\r\n if (this.options.onSearchChange) {\r\n this.options.onSearchChange(this.state.searchText);\r\n }\r\n },\r\n );\r\n };\r\n\r\n searchTextUpdate = text => {\r\n this.setState(\r\n prevState => ({\r\n searchText: text && text.length ? text : null,\r\n page: 0,\r\n displayData: this.options.serverSide\r\n ? prevState.displayData\r\n : this.getDisplayData(prevState.columns, prevState.data, prevState.filterList, text, null, this.props),\r\n }),\r\n () => {\r\n this.setTableAction('search');\r\n if (this.options.onSearchChange) {\r\n this.options.onSearchChange(this.state.searchText);\r\n }\r\n },\r\n );\r\n };\r\n\r\n resetFilters = () => {\r\n this.setState(\r\n prevState => {\r\n const filterList = prevState.columns.map(() => []);\r\n\r\n return {\r\n filterList: filterList,\r\n displayData: this.options.serverSide\r\n ? prevState.displayData\r\n : this.getDisplayData(\r\n prevState.columns,\r\n prevState.data,\r\n filterList,\r\n prevState.searchText,\r\n null,\r\n this.props,\r\n ),\r\n };\r\n },\r\n () => {\r\n this.setTableAction('resetFilters');\r\n if (this.options.onFilterChange) {\r\n this.options.onFilterChange(null, this.state.filterList, 'reset', null);\r\n }\r\n },\r\n );\r\n };\r\n\r\n updateFilterByType = (filterList, index, value, type, customUpdate) => {\r\n const filterPos = filterList[index].findIndex(filter => isEqual(filter, value));\r\n\r\n switch (type) {\r\n case 'checkbox':\r\n filterPos >= 0 ? filterList[index].splice(filterPos, 1) : filterList[index].push(value);\r\n break;\r\n case 'chip':\r\n filterPos >= 0 ? filterList[index].splice(filterPos, 1) : filterList[index].push(value);\r\n break;\r\n case 'multiselect':\r\n filterList[index] = value === '' ? [] : value;\r\n break;\r\n case 'dropdown':\r\n filterList[index] = value;\r\n break;\r\n case 'custom':\r\n if (customUpdate) {\r\n filterList = customUpdate(filterList, filterPos, index);\r\n } else {\r\n filterList[index] = value;\r\n }\r\n break;\r\n default:\r\n filterList[index] = filterPos >= 0 || value === '' ? [] : [value];\r\n }\r\n };\r\n\r\n filterUpdate = (index, value, column, type, customUpdate, next) => {\r\n this.setState(\r\n prevState => {\r\n const filterList = cloneDeep(prevState.filterList);\r\n this.updateFilterByType(filterList, index, value, type, customUpdate);\r\n\r\n return {\r\n page: 0,\r\n filterList: filterList,\r\n displayData: this.options.serverSide\r\n ? prevState.displayData\r\n : this.getDisplayData(\r\n prevState.columns,\r\n prevState.data,\r\n filterList,\r\n prevState.searchText,\r\n null,\r\n this.props,\r\n ),\r\n previousSelectedRow: null,\r\n };\r\n },\r\n () => {\r\n this.setTableAction('filterChange');\r\n if (this.options.onFilterChange) {\r\n this.options.onFilterChange(column, this.state.filterList, type, index, this.state.displayData);\r\n }\r\n next && next(this.state.filterList);\r\n },\r\n );\r\n };\r\n\r\n // Collapses or expands all expanded rows\r\n toggleAllExpandableRows = () => {\r\n let expandedRowsData = [...this.state.expandedRows.data];\r\n const { isRowExpandable } = this.options;\r\n let affecttedRows = [];\r\n\r\n if (expandedRowsData.length > 0) {\r\n // collapse all\r\n for (let ii = expandedRowsData.length - 1; ii >= 0; ii--) {\r\n let item = expandedRowsData[ii];\r\n if (!isRowExpandable || (isRowExpandable && isRowExpandable(item.dataIndex, this.state.expandedRows))) {\r\n affecttedRows.push(expandedRowsData.splice(ii, 1));\r\n }\r\n }\r\n } else {\r\n // expand all\r\n for (let ii = 0; ii < this.state.data.length; ii++) {\r\n let item = this.state.data[ii];\r\n if (!isRowExpandable || (isRowExpandable && isRowExpandable(item.dataIndex, this.state.expandedRows))) {\r\n if (this.state.expandedRows.lookup[item.index] !== true) {\r\n let newItem = {\r\n index: ii,\r\n dataIndex: item.index,\r\n };\r\n expandedRowsData.push(newItem);\r\n affecttedRows.push(newItem);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.setState(\r\n {\r\n expandedRows: {\r\n lookup: buildMap(expandedRowsData),\r\n data: expandedRowsData,\r\n },\r\n },\r\n () => {\r\n this.setTableAction('expandRow');\r\n if (this.options.onRowExpansionChange) {\r\n this.options.onRowExpansionChange(\r\n affecttedRows,\r\n this.state.expandedRows.data,\r\n this.state.expandedRows.data.map(item => item.dataIndex),\r\n );\r\n }\r\n },\r\n );\r\n };\r\n\r\n areAllRowsExpanded = () => {\r\n return this.state.expandedRows.data.length === this.state.data.length;\r\n };\r\n\r\n updateColumnOrder = (columnOrder, columnIndex, newPosition) => {\r\n this.setState(\r\n prevState => {\r\n return {\r\n columnOrder,\r\n };\r\n },\r\n () => {\r\n this.setTableAction('columnOrderChange');\r\n if (this.options.onColumnOrderChange) {\r\n this.options.onColumnOrderChange(this.state.columnOrder, columnIndex, newPosition);\r\n }\r\n },\r\n );\r\n };\r\n\r\n selectRowDelete = () => {\r\n const { selectedRows, data, filterList } = this.state;\r\n\r\n const selectedMap = buildMap(selectedRows.data);\r\n const cleanRows = data.filter(({ index }) => !selectedMap[index]);\r\n\r\n if (this.options.onRowsDelete) {\r\n if (\r\n this.options.onRowsDelete(\r\n selectedRows,\r\n cleanRows.map(ii => ii.data),\r\n ) === false\r\n )\r\n return;\r\n }\r\n\r\n this.setTableData(\r\n {\r\n columns: this.props.columns,\r\n data: cleanRows,\r\n options: {\r\n filterList: filterList,\r\n },\r\n },\r\n TABLE_LOAD.UPDATE,\r\n true,\r\n () => {\r\n this.setTableAction('rowDelete');\r\n },\r\n );\r\n };\r\n\r\n toggleExpandRow = row => {\r\n const { dataIndex } = row;\r\n const { isRowExpandable } = this.options;\r\n let { expandedRows } = this.state;\r\n const expandedRowsData = [...expandedRows.data];\r\n let shouldCollapseExpandedRow = false;\r\n let hasRemovedRow = false;\r\n let removedRow = [];\r\n\r\n for (var cIndex = 0; cIndex < expandedRowsData.length; cIndex++) {\r\n if (expandedRowsData[cIndex].dataIndex === dataIndex) {\r\n shouldCollapseExpandedRow = true;\r\n break;\r\n }\r\n }\r\n\r\n if (shouldCollapseExpandedRow) {\r\n if ((isRowExpandable && isRowExpandable(dataIndex, expandedRows)) || !isRowExpandable) {\r\n removedRow = expandedRowsData.splice(cIndex, 1);\r\n hasRemovedRow = true;\r\n }\r\n } else {\r\n if (isRowExpandable && isRowExpandable(dataIndex, expandedRows)) expandedRowsData.push(row);\r\n else if (!isRowExpandable) expandedRowsData.push(row);\r\n }\r\n\r\n this.setState(\r\n {\r\n curExpandedRows: hasRemovedRow ? removedRow : [row],\r\n expandedRows: {\r\n lookup: buildMap(expandedRowsData),\r\n data: expandedRowsData,\r\n },\r\n },\r\n () => {\r\n this.setTableAction('rowExpansionChange');\r\n if (this.options.onRowExpansionChange || this.options.onRowsExpand) {\r\n let expandCallback = this.options.onRowExpansionChange || this.options.onRowsExpand;\r\n expandCallback(this.state.curExpandedRows, this.state.expandedRows.data);\r\n }\r\n },\r\n );\r\n };\r\n\r\n selectRowUpdate = (type, value, shiftAdjacentRows = []) => {\r\n // safety check\r\n const { selectableRows } = this.options;\r\n if (selectableRows === 'none') {\r\n return;\r\n }\r\n\r\n if (type === 'head') {\r\n const { isRowSelectable } = this.options;\r\n this.setState(\r\n prevState => {\r\n const { displayData, selectedRows: prevSelectedRows } = prevState;\r\n const selectedRowsLen = prevState.selectedRows.data.length;\r\n let isDeselect =\r\n selectedRowsLen === displayData.length || (selectedRowsLen < displayData.length && selectedRowsLen > 0);\r\n\r\n let selectedRows = displayData.reduce((arr, d, i) => {\r\n const selected = isRowSelectable ? isRowSelectable(displayData[i].dataIndex, prevSelectedRows) : true;\r\n selected && arr.push({ index: i, dataIndex: displayData[i].dataIndex });\r\n return arr;\r\n }, []);\r\n\r\n let newRows = [...selectedRows];\r\n let selectedMap = buildMap(newRows);\r\n\r\n // if the select toolbar is disabled, the rules are a little different\r\n if (this.options.selectToolbarPlacement === STP.NONE) {\r\n if (selectedRowsLen > displayData.length) {\r\n isDeselect = true;\r\n } else {\r\n for (let ii = 0; ii < displayData.length; ii++) {\r\n if (!selectedMap[displayData[ii].dataIndex]) {\r\n isDeselect = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (isDeselect) {\r\n newRows = prevState.selectedRows.data.filter(({ dataIndex }) => !selectedMap[dataIndex]);\r\n selectedMap = buildMap(newRows);\r\n }\r\n\r\n return {\r\n curSelectedRows: newRows,\r\n selectedRows: {\r\n data: newRows,\r\n lookup: selectedMap,\r\n },\r\n previousSelectedRow: null,\r\n };\r\n },\r\n () => {\r\n this.setTableAction('rowSelectionChange');\r\n if (this.options.onRowSelectionChange) {\r\n this.options.onRowSelectionChange(\r\n this.state.curSelectedRows,\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data.map(item => item.dataIndex),\r\n );\r\n } else if (this.options.onRowsSelect) {\r\n this.options.onRowsSelect(\r\n this.state.curSelectedRows,\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data.map(item => item.dataIndex),\r\n );\r\n }\r\n },\r\n );\r\n } else if (type === 'cell') {\r\n this.setState(\r\n prevState => {\r\n const { dataIndex } = value;\r\n let selectedRows = [...prevState.selectedRows.data];\r\n let rowPos = -1;\r\n\r\n for (let cIndex = 0; cIndex < selectedRows.length; cIndex++) {\r\n if (selectedRows[cIndex].dataIndex === dataIndex) {\r\n rowPos = cIndex;\r\n break;\r\n }\r\n }\r\n\r\n if (rowPos >= 0) {\r\n selectedRows.splice(rowPos, 1);\r\n\r\n // handle rows affected by shift+click\r\n if (shiftAdjacentRows.length > 0) {\r\n let shiftAdjacentMap = buildMap(shiftAdjacentRows);\r\n for (let cIndex = selectedRows.length - 1; cIndex >= 0; cIndex--) {\r\n if (shiftAdjacentMap[selectedRows[cIndex].dataIndex]) {\r\n selectedRows.splice(cIndex, 1);\r\n }\r\n }\r\n }\r\n } else if (selectableRows === 'single') {\r\n selectedRows = [value];\r\n } else {\r\n // multiple\r\n selectedRows.push(value);\r\n\r\n // handle rows affected by shift+click\r\n if (shiftAdjacentRows.length > 0) {\r\n let selectedMap = buildMap(selectedRows);\r\n shiftAdjacentRows.forEach(aRow => {\r\n if (!selectedMap[aRow.dataIndex]) {\r\n selectedRows.push(aRow);\r\n }\r\n });\r\n }\r\n }\r\n\r\n return {\r\n selectedRows: {\r\n lookup: buildMap(selectedRows),\r\n data: selectedRows,\r\n },\r\n previousSelectedRow: value,\r\n };\r\n },\r\n () => {\r\n this.setTableAction('rowSelectionChange');\r\n if (this.options.onRowSelectionChange) {\r\n this.options.onRowSelectionChange(\r\n [value],\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data.map(item => item.dataIndex),\r\n );\r\n } else if (this.options.onRowsSelect) {\r\n this.options.onRowsSelect(\r\n [value],\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data.map(item => item.dataIndex),\r\n );\r\n }\r\n },\r\n );\r\n } else if (type === 'custom') {\r\n const { displayData } = this.state;\r\n\r\n const data = value.map(row => ({ index: row, dataIndex: displayData[row].dataIndex }));\r\n const lookup = buildMap(data);\r\n\r\n this.setState(\r\n {\r\n selectedRows: { data, lookup },\r\n previousSelectedRow: null,\r\n },\r\n () => {\r\n this.setTableAction('rowSelectionChange');\r\n if (this.options.onRowSelectionChange) {\r\n this.options.onRowSelectionChange(\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data.map(item => item.dataIndex),\r\n );\r\n } else if (this.options.onRowsSelect) {\r\n this.options.onRowsSelect(\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data.map(item => item.dataIndex),\r\n );\r\n }\r\n },\r\n );\r\n }\r\n };\r\n\r\n sortTable(data, col, order, columnSortCompare = null) {\r\n let hasCustomTableSort = this.options.customSort && !columnSortCompare;\r\n let meta = { selectedRows: this.state.selectedRows }; // meta for customSort\r\n let dataSrc = hasCustomTableSort\r\n ? this.options.customSort(data, col, order || (this.options.sortDescFirst ? 'desc' : 'asc'), meta)\r\n : data;\r\n\r\n // reset the order by index\r\n let noSortData;\r\n if (order === 'none') {\r\n noSortData = data.reduce((r, i) => {\r\n r[i.index] = i;\r\n return r;\r\n }, []);\r\n }\r\n\r\n let sortedData = dataSrc.map((row, sIndex) => ({\r\n data: row.data[col],\r\n rowData: row.data,\r\n position: sIndex,\r\n rowSelected: this.state.selectedRows.lookup[row.index] ? true : false,\r\n }));\r\n\r\n if (!hasCustomTableSort) {\r\n const sortFn = columnSortCompare || sortCompare;\r\n sortedData.sort(sortFn(order));\r\n }\r\n\r\n let tableData = [];\r\n let selectedRows = [];\r\n\r\n for (let i = 0; i < sortedData.length; i++) {\r\n const row = sortedData[i];\r\n tableData.push(dataSrc[row.position]);\r\n if (row.rowSelected) {\r\n selectedRows.push({ index: i, dataIndex: dataSrc[row.position].index });\r\n }\r\n }\r\n\r\n return {\r\n data: order === 'none' ? noSortData : tableData,\r\n selectedRows: {\r\n lookup: buildMap(selectedRows),\r\n data: selectedRows,\r\n },\r\n };\r\n }\r\n\r\n render() {\r\n const {\r\n classes,\r\n className,\r\n title,\r\n components: {\r\n TableBody,\r\n TableFilterList,\r\n TableFooter,\r\n TableHead,\r\n TableResize,\r\n TableToolbar,\r\n TableToolbarSelect,\r\n DragDropBackend = HTML5Backend,\r\n },\r\n } = this.props;\r\n const {\r\n announceText,\r\n activeColumn,\r\n data,\r\n displayData,\r\n columns,\r\n page,\r\n filterData,\r\n filterList,\r\n selectedRows,\r\n previousSelectedRow,\r\n expandedRows,\r\n searchText,\r\n sortOrder,\r\n serverSideFilterList,\r\n columnOrder,\r\n } = this.state;\r\n\r\n const TableBodyComponent = TableBody || DefaultTableBody;\r\n const TableFilterListComponent = TableFilterList || DefaultTableFilterList;\r\n const TableFooterComponent = TableFooter || DefaultTableFooter;\r\n const TableHeadComponent = TableHead || DefaultTableHead;\r\n const TableResizeComponent = TableResize || DefaultTableResize;\r\n const TableToolbarComponent = TableToolbar || DefaultTableToolbar;\r\n const TableToolbarSelectComponent = TableToolbarSelect || DefaultTableToolbarSelect;\r\n\r\n const rowCount = this.state.count || displayData.length;\r\n const rowsPerPage = this.options.pagination ? this.state.rowsPerPage : displayData.length;\r\n const showToolbar = hasToolbarItem(this.options, title);\r\n const columnNames = columns.map(column => ({\r\n name: column.name,\r\n filterType: column.filterType || this.options.filterType,\r\n }));\r\n const responsiveOption = this.options.responsive;\r\n let paperClasses = `${classes.paper} ${className}`;\r\n let maxHeight = this.options.tableBodyMaxHeight;\r\n let responsiveClass;\r\n\r\n switch (responsiveOption) {\r\n // deprecated\r\n case 'scroll':\r\n responsiveClass = classes.responsiveScroll;\r\n maxHeight = '499px';\r\n break;\r\n // deprecated\r\n case 'scrollMaxHeight':\r\n responsiveClass = classes.responsiveScrollMaxHeight;\r\n maxHeight = '499px';\r\n break;\r\n // deprecated\r\n case 'scrollFullHeight':\r\n responsiveClass = classes.responsiveScrollFullHeight;\r\n maxHeight = 'none';\r\n break;\r\n // deprecated\r\n case 'scrollFullHeightFullWidth':\r\n responsiveClass = classes.responsiveScrollFullHeight;\r\n paperClasses = `${classes.paperResponsiveScrollFullHeightFullWidth} ${className}`;\r\n break;\r\n // deprecated\r\n case 'stacked':\r\n responsiveClass = classes.responsiveStacked;\r\n maxHeight = 'none';\r\n break;\r\n // deprecated\r\n case 'stackedFullWidth':\r\n responsiveClass = classes.responsiveStackedFullWidth;\r\n paperClasses = `${classes.paperResponsiveScrollFullHeightFullWidth} ${className}`;\r\n maxHeight = 'none';\r\n break;\r\n\r\n default:\r\n responsiveClass = classes.responsiveBase;\r\n break;\r\n }\r\n\r\n var tableHeightVal = {};\r\n if (maxHeight) {\r\n tableHeightVal.maxHeight = maxHeight;\r\n }\r\n if (this.options.tableBodyHeight) {\r\n tableHeightVal.height = this.options.tableBodyHeight;\r\n }\r\n\r\n const tableProps = this.options.setTableProps ? this.options.setTableProps() || {} : {};\r\n const tableClassNames = clsx(classes.tableRoot, tableProps.className);\r\n delete tableProps.className; // remove className from props to avoid the className being applied twice\r\n\r\n const dndProps = {};\r\n if (typeof window !== 'undefined') {\r\n dndProps.context = window;\r\n }\r\n\r\n return (\r\n \r\n {selectedRows.data.length > 0 && this.options.selectToolbarPlacement !== STP.NONE && (\r\n \r\n )}\r\n {(selectedRows.data.length === 0 ||\r\n [STP.ABOVE, STP.NONE].indexOf(this.options.selectToolbarPlacement) !== -1) &&\r\n showToolbar && (\r\n \r\n )}\r\n {\r\n if (c.customFilterListOptions && c.customFilterListOptions.render) return c.customFilterListOptions.render;\r\n // DEPRECATED: This option is being replaced with customFilterListOptions.render\r\n if (c.customFilterListRender) return c.customFilterListRender;\r\n\r\n return f => f;\r\n })}\r\n customFilterListUpdate={columns.map(c => {\r\n return c.customFilterListOptions && c.customFilterListOptions.update\r\n ? c.customFilterListOptions.update\r\n : null;\r\n })}\r\n filterList={filterList}\r\n filterUpdate={this.filterUpdate}\r\n columnNames={columnNames}\r\n />\r\n
\r\n {(this.options.resizableColumns === true ||\r\n (this.options.resizableColumns && this.options.resizableColumns.enabled)) && (\r\n (this.updateDividers = fn)}\r\n setResizeable={fn => (this.setHeadResizeable = fn)}\r\n options={this.props.options}\r\n tableId={this.options.tableId}\r\n />\r\n )}\r\n {(() => {\r\n const components = (\r\n (this.tableRef = el)}\r\n tabIndex={'0'}\r\n role={'grid'}\r\n className={tableClassNames}\r\n {...tableProps}>\r\n {title}\r\n \r\n \r\n {this.options.customTableBodyFooterRender\r\n ? this.options.customTableBodyFooterRender({\r\n data: displayData,\r\n count: rowCount,\r\n columns,\r\n selectedRows,\r\n selectableRows: this.options.selectableRows,\r\n })\r\n : null}\r\n \r\n );\r\n if (DragDropBackend) {\r\n return (\r\n \r\n {components}\r\n \r\n );\r\n }\r\n\r\n return components;\r\n })()}\r\n
\r\n \r\n
\r\n {announceText}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultTableStyles, { name: 'MUIDataTable' })(MUIDataTable);\r\n","/*\r\n * Default text labels.\r\n */\r\nconst getTextLabels = () => ({\r\n body: {\r\n noMatch: 'Sorry, no matching records found',\r\n toolTip: 'Sort',\r\n },\r\n pagination: {\r\n next: 'Next Page',\r\n previous: 'Previous Page',\r\n rowsPerPage: 'Rows per page:',\r\n displayRows: 'of',\r\n jumpToPage: 'Jump to Page:',\r\n },\r\n toolbar: {\r\n search: 'Search',\r\n downloadCsv: 'Download CSV',\r\n print: 'Print',\r\n viewColumns: 'View Columns',\r\n filterTable: 'Filter Table',\r\n },\r\n filter: {\r\n all: 'All',\r\n title: 'FILTERS',\r\n reset: 'RESET',\r\n },\r\n viewColumns: {\r\n title: 'Show Columns',\r\n titleAria: 'Show/Hide Table Columns',\r\n },\r\n selectedRows: {\r\n text: 'row(s) selected',\r\n delete: 'Delete',\r\n deleteAria: 'Delete Selected Rows',\r\n },\r\n});\r\n\r\nexport default getTextLabels;\r\n","export const save = (storageKey, state) => {\r\n const { selectedRows, data, displayData, ...savedState } = state;\r\n\r\n window.localStorage.setItem(storageKey, JSON.stringify(savedState));\r\n};\r\n","export const load = storageKey => JSON.parse(window.localStorage.getItem(storageKey));\r\n","import React, { useEffect } from 'react';\r\nimport Grow from '@mui/material/Grow';\r\nimport TextField from '@mui/material/TextField';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport ClearIcon from '@mui/icons-material/Clear';\r\nimport { withStyles } from '@mui/styles';\r\n\r\nfunction debounce(func, wait, immediate) {\r\n var timeout;\r\n return function() {\r\n var context = this,\r\n args = arguments;\r\n var later = function() {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n}\r\n\r\nconst defaultStyles = theme => ({\r\n main: {\r\n display: 'flex',\r\n flex: '1 0 auto',\r\n alignItems: \"center\"\r\n },\r\n searchIcon: {\r\n color: theme.palette.text.secondary,\r\n marginRight: '8px',\r\n },\r\n searchText: {\r\n flex: '0.8 0',\r\n },\r\n clearIcon: {\r\n '&:hover': {\r\n color: theme.palette.error.main,\r\n },\r\n },\r\n});\r\n\r\nclass _DebounceTableSearch extends React.Component {\r\n handleTextChangeWrapper = debouncedSearch => {\r\n return function(event) {\r\n debouncedSearch(event.target.value);\r\n };\r\n };\r\n\r\n componentDidMount() {\r\n document.addEventListener('keydown', this.onKeyDown, false);\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('keydown', this.onKeyDown, false);\r\n }\r\n\r\n onKeyDown = event => {\r\n if (event.keyCode === 27) {\r\n this.props.onHide();\r\n }\r\n };\r\n\r\n render() {\r\n const { classes, options, onHide, searchText, debounceWait } = this.props;\r\n\r\n const debouncedSearch = debounce(value => {\r\n this.props.onSearch(value);\r\n }, debounceWait);\r\n\r\n return (\r\n \r\n
\r\n \r\n (this.searchField = el)}\r\n placeholder={options.searchPlaceholder}\r\n {...(options.searchProps ? options.searchProps : {})}\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nvar DebounceTableSearch = withStyles(defaultStyles, { name: 'MUIDataTableSearch' })(_DebounceTableSearch);\r\nexport { DebounceTableSearch };\r\n\r\nexport function debounceSearchRender(debounceWait = 200) {\r\n return (searchText, handleSearch, hideSearch, options) => {\r\n return (\r\n \r\n );\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","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}","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","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 * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(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))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import Cookies from './Cookies';\r\nexport default Cookies;\r\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n/**\n * Private module reserved for @mui packages.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n const Component = (props, ref) => /*#__PURE__*/_jsx(SvgIcon, _extends({\n \"data-testid\": `${displayName}Icon`,\n ref: ref\n }, props, {\n children: path\n }));\n\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = `${displayName}Icon`;\n }\n\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\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}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as ReactDOM from 'react-dom';\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.clsName = true;\n var propsClsName = this.props[propkey].split(' ');\n for (var i = 0; i < propsClsName.length; i++) {\n this.element.classList.remove(propsClsName[i]);\n }\n var dpropsClsName = dProps[propkey].split(' ');\n for (var j = 0; j < dpropsClsName.length; j++) {\n this.element.classList.add(dpropsClsName[j]);\n }\n }\n else if (propkey !== 'disabled') {\n delete dProps[propkey];\n }\n }\n else if (propkey === 'value' && nextProps[propkey] === this[propkey]) {\n delete dProps[propkey];\n }\n else if ((propkey === 'valueTemplate' || propkey === 'itemTemplate' || propkey === 'headerTemplate') && nextProps[propkey].toString() === this[propkey].toString()) {\n delete dProps[propkey];\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 if (this.clsName) {\n var clsList = this.element.classList;\n var className = this.htmlattributes['className'];\n for (var i = 0; i < clsList.length; i++) {\n if ((className.indexOf(clsList[i]) == -1)) {\n this.htmlattributes['className'] = this.htmlattributes['className'] + ' ' + clsList[i];\n }\n }\n this.clsName = false;\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 (key === 'items') {\n for (var _j = 0; _j < newValue.length; _j++) {\n if (this.getModuleName() === 'richtexteditor' && typeof (newValue[_j]) === 'object') {\n return { status: true };\n }\n }\n }\n if (this.getModuleName() === 'grid' && key === 'field') {\n curObj[key] = newValue;\n }\n if (!oldProp.hasOwnProperty(key) || !this.compareValues(oldValue, newValue)) {\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.appendReactElement = function (element, container) {\n ReactDOM.render(ReactDOM.createPortal(element, container), container);\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","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}","/* 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': 'Number Format List',\n 'command': 'NumberFormatList',\n 'subCommand': 'NumberFormatList'\n },\n 'bulletformatlist': {\n 'id': 'BulletFormatList',\n 'icon': 'e-unorder-list',\n 'tooltip': 'Bullet Format List',\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-img-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","export { default } from './TextField';\nexport { default as textFieldClasses } from './textFieldClasses';\nexport * from './textFieldClasses';","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","export { default } from './Button';\nexport { default as buttonClasses } from './buttonClasses';\nexport * from './buttonClasses';","/**\n * dictionaryProperties.ts class for EJ2-PDF\n * PDF dictionary properties.\n * @private\n */\nvar DictionaryProperties = /** @class */ (function () {\n /**\n * Initialize an instance for `PdfDictionaryProperties` class.\n * @private\n */\n function DictionaryProperties() {\n /**\n * Specifies the value of `Pages`.\n * @private\n */\n this.pages = 'Pages';\n /**\n * Specifies the value of `Kids`.\n * @private\n */\n this.kids = 'Kids';\n /**\n * Specifies the value of `Count`.\n * @private\n */\n this.count = 'Count';\n /**\n * Specifies the value of `Resources`.\n * @private\n */\n this.resources = 'Resources';\n /**\n * Specifies the value of `Type`.\n * @private\n */\n this.type = 'Type';\n /**\n * Specifies the value of `Size`.\n * @private\n */\n this.size = 'Size';\n /**\n * Specifies the value of `MediaBox`.\n * @private\n */\n this.mediaBox = 'MediaBox';\n /**\n * Specifies the value of `Parent`.\n * @private\n */\n this.parent = 'Parent';\n /**\n * Specifies the value of `Root`.\n * @private\n */\n this.root = 'Root';\n /**\n * Specifies the value of `DecodeParms`.\n * @private\n */\n this.decodeParms = 'DecodeParms';\n /**\n * Specifies the value of `Filter`.\n * @private\n */\n this.filter = 'Filter';\n /**\n * Specifies the value of `Font`.\n * @private\n */\n this.font = 'Font';\n /**\n * Specifies the value of `Type1`.\n * @private\n */\n this.type1 = 'Type1';\n /**\n * Specifies the value of `BaseFont`.\n * @private\n */\n this.baseFont = 'BaseFont';\n /**\n * Specifies the value of `Encoding`.\n * @private\n */\n this.encoding = 'Encoding';\n /**\n * Specifies the value of `Subtype`.\n * @private\n */\n this.subtype = 'Subtype';\n /**\n * Specifies the value of `Contents`.\n * @private\n */\n this.contents = 'Contents';\n /**\n * Specifies the value of `ProcSet`.\n * @private\n */\n this.procset = 'ProcSet';\n /**\n * Specifies the value of `ColorSpace`.\n * @private\n */\n this.colorSpace = 'ColorSpace';\n /**\n * Specifies the value of `ExtGState`.\n * @private\n */\n this.extGState = 'ExtGState';\n /**\n * Specifies the value of `Pattern`.\n * @private\n */\n this.pattern = 'Pattern';\n /**\n * Specifies the value of `XObject`.\n * @private\n */\n this.xObject = 'XObject';\n /**\n * Specifies the value of `Length`.\n * @private\n */\n this.length = 'Length';\n /**\n * Specifies the value of `Width`.\n * @private\n */\n this.width = 'Width';\n /**\n * Specifies the value of `Height`.\n * @private\n */\n this.height = 'Height';\n /**\n * Specifies the value of `BitsPerComponent`.\n * @private\n */\n this.bitsPerComponent = 'BitsPerComponent';\n /**\n * Specifies the value of `Image`.\n * @private\n */\n this.image = 'Image';\n /**\n * Specifies the value of `dctdecode`.\n * @private\n */\n this.dctdecode = 'DCTDecode';\n /**\n * Specifies the value of `Columns`.\n * @private\n */\n this.columns = 'Columns';\n /**\n * Specifies the value of `BlackIs1`.\n * @private\n */\n this.blackIs1 = 'BlackIs1';\n /**\n * Specifies the value of `K`.\n * @private\n */\n this.k = 'K';\n /**\n * Specifies the value of `S`.\n * @private\n */\n this.s = 'S';\n /**\n * Specifies the value of `Predictor`.\n * @private\n */\n this.predictor = 'Predictor';\n /**\n * Specifies the value of `DeviceRGB`.\n * @private\n */\n this.deviceRgb = 'DeviceRGB';\n /**\n * Specifies the value of `Next`.\n * @private\n */\n this.next = 'Next';\n /**\n * Specifies the value of `Action`.\n * @private\n */\n this.action = 'Action';\n /**\n * Specifies the value of `Link`.\n * @private\n */\n this.link = 'Link';\n /**\n *\n * Specifies the value of `A`.\n * @private\n */\n this.a = 'A';\n /**\n * Specifies the value of `Annot`.\n * @private\n */\n this.annot = 'Annot';\n /**\n * Specifies the value of `P`.\n * @private\n */\n this.p = 'P';\n /**\n * Specifies the value of `C`.\n * @private\n */\n this.c = 'C';\n /**\n * Specifies the value of `Rect`.\n * @private\n */\n this.rect = 'Rect';\n /**\n * Specifies the value of `URI`.\n * @private\n */\n this.uri = 'URI';\n /**\n * Specifies the value of `Annots`.\n * @private\n */\n this.annots = 'Annots';\n /**\n * Specifies the value of `ca`.\n * @private\n */\n this.ca = 'ca';\n /**\n * Specifies the value of `CA`.\n * @private\n */\n this.CA = 'CA';\n /**\n * Specifies the value of `XYZ`.\n * @private\n */\n this.xyz = 'XYZ';\n /**\n * Specifies the value of `Fit`.\n * @private\n */\n this.fit = 'Fit';\n /**\n * Specifies the value of `Dest`.\n * @private\n */\n this.dest = 'Dest';\n /**\n * Specifies the value of `BM`.\n * @private\n */\n this.BM = 'BM';\n /**\n * Specifies the value of `flatedecode`.\n * @private\n */\n this.flatedecode = 'FlateDecode';\n /**\n * Specifies the value of `Rotate`.\n * @private\n */\n this.rotate = 'Rotate';\n /**\n * Specifies the value of 'bBox'.\n * @private\n */\n this.bBox = 'BBox';\n /**\n * Specifies the value of 'form'.\n * @private\n */\n this.form = 'Form';\n /**\n * Specifies the value of 'w'.\n * @private\n */\n this.w = 'W';\n /**\n * Specifies the value of 'cIDFontType2'.\n * @private\n */\n this.cIDFontType2 = 'CIDFontType2';\n /**\n * Specifies the value of 'cIDToGIDMap'.\n * @private\n */\n this.cIDToGIDMap = 'CIDToGIDMap';\n /**\n * Specifies the value of 'identity'.\n * @private\n */\n this.identity = 'Identity';\n /**\n * Specifies the value of 'dw'.\n * @private\n */\n this.dw = 'DW';\n /**\n * Specifies the value of 'fontDescriptor'.\n * @private\n */\n this.fontDescriptor = 'FontDescriptor';\n /**\n * Specifies the value of 'cIDSystemInfo'.\n * @private\n */\n this.cIDSystemInfo = 'CIDSystemInfo';\n /**\n * Specifies the value of 'fontName'.\n * @private\n */\n this.fontName = 'FontName';\n /**\n * Specifies the value of 'flags'.\n * @private\n */\n this.flags = 'Flags';\n /**\n * Specifies the value of 'fontBBox'.\n * @private\n */\n this.fontBBox = 'FontBBox';\n /**\n * Specifies the value of 'missingWidth'.\n * @private\n */\n this.missingWidth = 'MissingWidth';\n /**\n * Specifies the value of 'stemV'.\n * @private\n */\n this.stemV = 'StemV';\n /**\n * Specifies the value of 'italicAngle'.\n * @private\n */\n this.italicAngle = 'ItalicAngle';\n /**\n * Specifies the value of 'capHeight'.\n * @private\n */\n this.capHeight = 'CapHeight';\n /**\n * Specifies the value of 'ascent'.\n * @private\n */\n this.ascent = 'Ascent';\n /**\n * Specifies the value of 'descent'.\n * @private\n */\n this.descent = 'Descent';\n /**\n * Specifies the value of 'leading'.\n * @private\n */\n this.leading = 'Leading';\n /**\n * Specifies the value of 'avgWidth'.\n * @private\n */\n this.avgWidth = 'AvgWidth';\n /**\n * Specifies the value of 'fontFile2'.\n * @private\n */\n this.fontFile2 = 'FontFile2';\n /**\n * Specifies the value of 'maxWidth'.\n * @private\n */\n this.maxWidth = 'MaxWidth';\n /**\n * Specifies the value of 'xHeight'.\n * @private\n */\n this.xHeight = 'XHeight';\n /**\n * Specifies the value of 'stemH'.\n * @private\n */\n this.stemH = 'StemH';\n /**\n * Specifies the value of 'registry'.\n * @private\n */\n this.registry = 'Registry';\n /**\n * Specifies the value of 'ordering'.\n * @private\n */\n this.ordering = 'Ordering';\n /**\n * Specifies the value of 'supplement'.\n * @private\n */\n this.supplement = 'Supplement';\n /**\n * Specifies the value of 'type0'.\n * @private\n */\n this.type0 = 'Type0';\n /**\n * Specifies the value of 'identityH'.\n * @private\n */\n this.identityH = 'Identity-H';\n /**\n * Specifies the value of 'toUnicode'.\n * @private\n */\n this.toUnicode = 'ToUnicode';\n /**\n * Specifies the value of 'descendantFonts'.\n * @private\n */\n this.descendantFonts = 'DescendantFonts';\n /**\n * Specifies the value of 'background'.\n * @private\n */\n this.background = 'Background';\n /**\n * Specifies the value of 'shading'.\n * @private\n */\n this.shading = 'Shading';\n /**\n * Specifies the value of 'matrix'.\n * @private\n */\n this.matrix = 'Matrix';\n /**\n * Specifies the value of 'antiAlias'.\n * @private\n */\n this.antiAlias = 'AntiAlias';\n /**\n * Specifies the value of 'function'.\n * @private\n */\n this.function = 'Function';\n /**\n * Specifies the value of 'extend'.\n * @private\n */\n this.extend = 'Extend';\n /**\n * Specifies the value of 'shadingType'.\n * @private\n */\n this.shadingType = 'ShadingType';\n /**\n * Specifies the value of 'coords'.\n * @private\n */\n this.coords = 'Coords';\n /**\n * Specifies the value of 'domain'.\n * @private\n */\n this.domain = 'Domain';\n /**\n * Specifies the value of 'range'.\n * @private\n */\n this.range = 'Range';\n /**\n * Specifies the value of 'functionType'.\n * @private\n */\n this.functionType = 'FunctionType';\n /**\n * Specifies the value of 'bitsPerSample'.\n * @private\n */\n this.bitsPerSample = 'BitsPerSample';\n /**\n * Specifies the value of 'patternType'.\n * @private\n */\n this.patternType = 'PatternType';\n /**\n * Specifies the value of 'paintType'.\n * @private\n */\n this.paintType = 'PaintType';\n /**\n * Specifies the value of 'tilingType'.\n * @private\n */\n this.tilingType = 'TilingType';\n /**\n * Specifies the value of 'xStep'.\n * @private\n */\n this.xStep = 'XStep';\n /**\n * Specifies the value of 'yStep'.\n * @private\n */\n this.yStep = 'YStep';\n //\n }\n return DictionaryProperties;\n}());\nexport { DictionaryProperties };\n","import { unstable_useForkRef as useForkRef } from '@mui/utils';\nexport default useForkRef;","/**\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 { Rect } from '../primitives/rect';\nimport { identityMatrix, transformPointByMatrix, rotateMatrix } from '../primitives/matrix';\nimport { getChildNode } from './dom-util';\nimport { Size } from '../primitives/size';\n/**\n * Implements the basic functionalities\n */\n/** @private */\nexport function randomId() {\n var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';\n var id = '';\n var num;\n for (var i = 0; i < 5; i++) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var count = new Uint16Array(1);\n // tslint:disable-next-line:no-any\n var intCrypto = window.msCrypto || window.crypto;\n num = intCrypto.getRandomValues(count)[0] % (chars.length - 1);\n }\n else {\n num = Math.floor(Math.random() * chars.length);\n }\n if (i === 0 && num < 10) {\n i--;\n continue;\n }\n id += chars.substring(num, num + 1);\n }\n return id;\n}\n/** @private */\nexport function cornersPointsBeforeRotation(ele) {\n var bounds = new Rect();\n var top = ele.offsetY - ele.actualSize.height * ele.pivot.y;\n var bottom = ele.offsetY + ele.actualSize.height * (1 - ele.pivot.y);\n var left = ele.offsetX - ele.actualSize.width * ele.pivot.x;\n var right = ele.offsetX + ele.actualSize.width * (1 - ele.pivot.x);\n var topLeft = { x: left, y: top };\n var topCenter = { x: (left + right) / 2, y: top };\n var topRight = { x: right, y: top };\n var middleLeft = { x: left, y: (top + bottom) / 2 };\n var middleRight = { x: right, y: (top + bottom) / 2 };\n var bottomLeft = { x: left, y: bottom };\n var bottomCenter = { x: (left + right) / 2, y: bottom };\n var bottomRight = { x: right, y: bottom };\n bounds = Rect.toBounds([topLeft, topRight, bottomLeft, bottomRight]);\n return bounds;\n}\n/** @private */\nexport function rotateSize(size, angle) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, 0, 0);\n var topLeft = transformPointByMatrix(matrix, { x: 0, y: 0 });\n var topRight = transformPointByMatrix(matrix, { x: size.width, y: 0 });\n var bottomLeft = transformPointByMatrix(matrix, { x: 0, y: size.height });\n var bottomRight = transformPointByMatrix(matrix, { x: size.width, y: size.height });\n var minX = Math.min(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x);\n var minY = Math.min(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y);\n var maxX = Math.max(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x);\n var maxY = Math.max(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y);\n return new Size(maxX - minX, maxY - minY);\n}\n/** @private */\nexport function getBounds(element) {\n var bounds = new Rect();\n var corners;\n corners = cornersPointsBeforeRotation(element);\n var middleLeft = corners.middleLeft;\n var topCenter = corners.topCenter;\n var bottomCenter = corners.bottomCenter;\n var middleRight = corners.middleRight;\n var topLeft = corners.topLeft;\n var topRight = corners.topRight;\n var bottomLeft = corners.bottomLeft;\n var bottomRight = corners.bottomRight;\n element.corners = {\n topLeft: topLeft, topCenter: topCenter, topRight: topRight, middleLeft: middleLeft,\n middleRight: middleRight, bottomLeft: bottomLeft, bottomCenter: bottomCenter, bottomRight: bottomRight\n };\n if (element.rotateAngle !== 0 || element.parentTransform !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, element.rotateAngle + element.parentTransform, element.offsetX, element.offsetY);\n element.corners.topLeft = topLeft = transformPointByMatrix(matrix, topLeft);\n element.corners.topCenter = topCenter = transformPointByMatrix(matrix, topCenter);\n element.corners.topRight = topRight = transformPointByMatrix(matrix, topRight);\n element.corners.middleLeft = middleLeft = transformPointByMatrix(matrix, middleLeft);\n element.corners.middleRight = middleRight = transformPointByMatrix(matrix, middleRight);\n element.corners.bottomLeft = bottomLeft = transformPointByMatrix(matrix, bottomLeft);\n element.corners.bottomCenter = bottomCenter = transformPointByMatrix(matrix, bottomCenter);\n element.corners.bottomRight = bottomRight = transformPointByMatrix(matrix, bottomRight);\n //Set corners based on rotate angle\n }\n bounds = Rect.toBounds([topLeft, topRight, bottomLeft, bottomRight]);\n element.corners.left = bounds.left;\n element.corners.right = bounds.right;\n element.corners.top = bounds.top;\n element.corners.bottom = bounds.bottom;\n element.corners.center = bounds.center;\n element.corners.width = bounds.width;\n element.corners.height = bounds.height;\n return bounds;\n}\n/** @private */\nexport function textAlignToString(value) {\n var state = '';\n switch (value) {\n case 'Center':\n state = 'center';\n break;\n case 'Left':\n state = 'left';\n break;\n case 'Right':\n state = 'right';\n break;\n }\n return state;\n}\n/** @private */\nexport function wordBreakToString(value) {\n var state = '';\n switch (value) {\n case 'Wrap':\n state = 'breakall';\n break;\n case 'NoWrap':\n state = 'keepall';\n break;\n case 'WrapWithOverflow':\n state = 'normal';\n break;\n case 'LineThrough':\n state = 'line-through';\n break;\n }\n return state;\n}\nexport function bBoxText(textContent, options) {\n var measureElement = 'measureElement';\n window[measureElement].style.visibility = 'visible';\n var svg = window[measureElement].children[2];\n var text = getChildNode(svg)[1];\n text.textContent = textContent;\n text.setAttribute('style', 'font-size:' + options.fontSize + 'px; font-family:'\n + options.fontFamily + ';font-weight:' + (options.bold ? 'bold' : 'normal'));\n var bBox = text.getBBox().width;\n window[measureElement].style.visibility = 'hidden';\n return bBox;\n}\n/** @private */\nexport function middleElement(i, j) {\n var m = 0;\n m = (i + j) / 2;\n return m;\n}\n/** @private */\nexport function whiteSpaceToString(value, wrap) {\n if (wrap === 'NoWrap' && value === 'PreserveAll') {\n return 'pre';\n }\n var state = '';\n switch (value) {\n case 'CollapseAll':\n state = 'nowrap';\n break;\n case 'CollapseSpace':\n state = 'pre-line';\n break;\n case 'PreserveAll':\n state = 'pre-wrap';\n break;\n }\n return state;\n}\n/** @private */\nexport function rotatePoint(angle, pivotX, pivotY, point) {\n if (angle !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, pivotX, pivotY);\n return transformPointByMatrix(matrix, point);\n }\n return point;\n}\n/** @private */\nexport function getOffset(topLeft, obj) {\n var offX = topLeft.x + obj.desiredSize.width * obj.pivot.x;\n var offY = topLeft.y + obj.desiredSize.height * obj.pivot.y;\n return {\n x: offX, y: offY\n };\n}\n","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM8 9h8v10H8V9zm7.5-5-1-1h-5l-1 1H5v2h14V4z\"\n}), 'DeleteOutline');\n\nexports.default = _default;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getChipUtilityClass(slot) {\n return generateUtilityClass('MuiChip', slot);\n}\nconst chipClasses = generateUtilityClasses('MuiChip', ['root', 'sizeSmall', 'sizeMedium', 'colorPrimary', 'colorSecondary', 'disabled', 'clickable', 'clickableColorPrimary', 'clickableColorSecondary', 'deletable', 'deletableColorPrimary', 'deletableColorSecondary', 'outlined', 'filled', 'outlinedPrimary', 'outlinedSecondary', 'avatar', 'avatarSmall', 'avatarMedium', 'avatarColorPrimary', 'avatarColorSecondary', 'icon', 'iconSmall', 'iconMedium', 'iconColorPrimary', 'iconColorSecondary', 'label', 'labelSmall', 'labelMedium', 'deleteIcon', 'deleteIconSmall', 'deleteIconMedium', 'deleteIconColorPrimary', 'deleteIconColorSecondary', 'deleteIconOutlinedColorPrimary', 'deleteIconOutlinedColorSecondary', 'focusVisible']);\nexport default chipClasses;","// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n","/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hour12: false\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23', always 24-hour.\n */\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hour12: false\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23 EDT', always 24-hour.\n */\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hour12: false,\n timeZoneName: s\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23 Eastern Daylight Time', always 24-hour.\n */\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hour12: false,\n timeZoneName: l\n};\n\n/**\n * {@link toLocaleString}; format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n */\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n\n};\n\n/**\n * {@link toLocaleString}; format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n */\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\n","/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasIntl() {\n try {\n return typeof Intl !== \"undefined\" && Intl.DateTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasFormatToParts() {\n return !isUndefined(Intl.DateTimeFormat.prototype.formatToParts);\n}\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n if (input.toString().length < n) {\n return (\"0\".repeat(n) + input).slice(-n);\n } else {\n return input.toString();\n }\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// covert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n return +d;\n}\n\nexport function weeksInWeekYear(weekYear) {\n const p1 =\n (weekYear +\n Math.floor(weekYear / 4) -\n Math.floor(weekYear / 100) +\n Math.floor(weekYear / 400)) %\n 7,\n last = weekYear - 1,\n p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;\n return p1 === 4 || p2 === 3 ? 53 : 52;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > 60 ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hour12: false,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\"\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = Object.assign({ timeZoneName: offsetFormat }, intlOpts),\n intl = hasIntl();\n\n if (intl && hasFormatToParts()) {\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find(m => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n } else if (intl) {\n // this probably doesn't work for all locales\n const without = new Intl.DateTimeFormat(locale, intlOpts).format(date),\n included = new Intl.DateTimeFormat(locale, modified).format(date),\n diffed = included.substring(without.length),\n trimmed = diffed.replace(/^[, \\u200e]+/, \"\");\n return trimmed;\n } else {\n return null;\n }\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer, nonUnitKeys) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n if (nonUnitKeys.indexOf(u) >= 0) continue;\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n\nexport const ianaRegex = /[A-Za-z_+-]{1,256}(:?\\/[A-Za-z_+-]{1,256}(\\/[A-Za-z_+-]{1,256})?)?/;\n","import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return monthsNarrow;\n case \"short\":\n return monthsShort;\n case \"long\":\n return monthsLong;\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\"\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return weekdaysNarrow;\n case \"short\":\n return weekdaysShort;\n case \"long\":\n return weekdaysLong;\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return erasNarrow;\n case \"short\":\n return erasShort;\n case \"long\":\n return erasLong;\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"]\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hour12\"\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n","import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { hasFormatToParts, padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: false, val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n }\n\n formatDateTime(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n }\n\n formatDateTimeParts(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.formatToParts();\n }\n\n resolvedOptions(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = Object.assign({}, this.opts);\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter =\n this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\" && hasFormatToParts(),\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = opts => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hour12: true }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = token => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = length =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = token => {\n // Where possible: http://cldr.unicode.org/translation/date-time#TOC-Stand-Alone-vs.-Format-Styles\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = token => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = lildur => token => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter(t => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n","export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n","/* eslint no-unused-vars: \"off\" */\nimport { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get universal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n","import { formatOffset, parseZoneInfo, hasIntl } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this Javascript environment.\n * @implements {Zone}\n */\nexport default class LocalZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {LocalZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new LocalZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"local\";\n }\n\n /** @override **/\n get name() {\n if (hasIntl()) {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n } else return \"local\";\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"local\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import { formatOffset, parseZoneInfo, isUndefined, ianaRegex, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nconst matchingRegex = RegExp(`^${ianaRegex.source}$`);\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date),\n filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i],\n pos = typeToPos[type];\n\n if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Fantasia/Castle\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return !!(s && s.match(matchingRegex));\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n // Etc/GMT+8 -> -480\n /** @ignore */\n static parseGMTOffset(specifier) {\n if (specifier) {\n const match = specifier.match(/^Etc\\/GMT([+-]\\d{1,2})$/i);\n if (match) {\n return -60 * parseInt(match[1]);\n }\n }\n return null;\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /** @override **/\n get type() {\n return \"iana\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n const date = new Date(ts),\n dtf = makeDTF(this.name),\n [year, month, day, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date),\n // work around https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /** @override **/\n get isValid() {\n return this.valid;\n }\n}\n","import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /** @override **/\n get type() {\n return \"fixed\";\n }\n\n /** @override **/\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n /** @override **/\n offsetName() {\n return this.name;\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /** @override **/\n get universal() {\n return true;\n }\n\n /** @override **/\n offset() {\n return this.fixed;\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n","/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"local\") return defaultZone;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else if ((offset = IANAZone.parseGMTOffset(input)) != null) {\n // handle Etc/GMT-4, which V8 chokes on\n return FixedOffsetZone.instance(offset);\n } else if (IANAZone.isValidSpecifier(lowered)) return IANAZone.create(input);\n else return FixedOffsetZone.parseSpecifier(lowered) || new InvalidZone(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && input.offset && typeof input.offset === \"number\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n","import LocalZone from \"./zones/localZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nlet now = () => Date.now(),\n defaultZone = null, // not setting this directly to LocalZone.instance bc loading order issues\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n throwOnInvalid = false;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Get the default time zone to create DateTimes in.\n * @type {string}\n */\n static get defaultZoneName() {\n return Settings.defaultZone.name;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * @type {string}\n */\n static set defaultZoneName(z) {\n if (!z) {\n defaultZone = null;\n } else {\n defaultZone = normalizeZone(z);\n }\n }\n\n /**\n * Get the default time zone object to create DateTimes in. Does not affect existing instances.\n * @type {Zone}\n */\n static get defaultZone() {\n return defaultZone || LocalZone.instance;\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n }\n}\n","import { hasFormatToParts, hasIntl, padStart, roundTo, hasRelative } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport Formatter from \"./formatter.js\";\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else if (hasIntl()) {\n const computedSys = new Intl.DateTimeFormat().resolvedOptions().locale;\n // node sometimes defaults to \"und\". Override that because that is dumb\n sysLocaleCache = !computedSys || computedSys === \"und\" ? \"en-US\" : computedSys;\n return sysLocaleCache;\n } else {\n sysLocaleCache = \"en-US\";\n return sysLocaleCache;\n }\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n const smaller = localeStr.substring(0, uIndex);\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n } catch (e) {\n options = getCachedDTF(smaller).resolvedOptions();\n }\n\n const { numberingSystem, calendar } = options;\n // return the smaller one so that we can append the calendar and numbering overrides to it\n return [smaller, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (hasIntl()) {\n if (outputCalendar || numberingSystem) {\n localeStr += \"-u\";\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n } else {\n return [];\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2016, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, defaultOK, englishFn, intlFn) {\n const mode = loc.listingMode(defaultOK);\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n (hasIntl() && new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\")\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n if (!forceSimple && hasIntl()) {\n const intlOpts = { useGrouping: false };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.hasIntl = hasIntl();\n\n let z;\n if (dt.zone.universal && this.hasIntl) {\n // Chromium doesn't support fixed-offset zones like Etc/GMT+8 in its formatter,\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=364374.\n // So we have to make do. Two cases:\n // 1. The format options tell us to show the zone. We can't do that, so the best\n // we can do is format the date in UTC.\n // 2. The format options don't tell us to show the zone. Then we can adjust them\n // the time and tell the formatter to show it to us in UTC, so that the time is right\n // and the bad zone doesn't show up.\n // We can clean all this up when Chrome fixes this.\n z = \"UTC\";\n if (opts.timeZoneName) {\n this.dt = dt;\n } else {\n this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000);\n }\n } else if (dt.zone.type === \"local\") {\n this.dt = dt;\n } else {\n this.dt = dt;\n z = dt.zone.name;\n }\n\n if (this.hasIntl) {\n const intlOpts = Object.assign({}, this.opts);\n if (z) {\n intlOpts.timeZone = z;\n }\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n }\n\n format() {\n if (this.hasIntl) {\n return this.dtf.format(this.dt.toJSDate());\n } else {\n const tokenFormat = English.formatString(this.opts),\n loc = Locale.create(\"en-US\");\n return Formatter.create(loc).formatDateTimeFromString(this.dt, tokenFormat);\n }\n }\n\n formatToParts() {\n if (this.hasIntl && hasFormatToParts()) {\n return this.dtf.formatToParts(this.dt.toJSDate());\n } else {\n // This is kind of a cop out. We actually could do this for English. However, we couldn't do it for intl strings\n // and IMO it's too weird to have an uncanny valley like that\n return [];\n }\n }\n\n resolvedOptions() {\n if (this.hasIntl) {\n return this.dtf.resolvedOptions();\n } else {\n return {\n locale: \"en-US\",\n numberingSystem: \"latn\",\n outputCalendar: \"gregory\"\n };\n }\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = Object.assign({ style: \"long\" }, opts);\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);\n }\n\n static create(locale, numberingSystem, outputCalendar, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale,\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale()),\n numberingSystemR = numberingSystem || Settings.defaultNumberingSystem,\n outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar);\n }\n\n constructor(locale, numbering, outputCalendar, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode(defaultOK = true) {\n const intl = hasIntl(),\n hasFTP = intl && hasFormatToParts(),\n isActuallyEn = this.isEnglish(),\n hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n\n if (!hasFTP && !(isActuallyEn && hasNoWeirdness) && !defaultOK) {\n return \"error\";\n } else if (!hasFTP || (isActuallyEn && hasNoWeirdness)) {\n return \"en\";\n } else {\n return \"intl\";\n }\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone(Object.assign({}, alts, { defaultToEN: true }));\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone(Object.assign({}, alts, { defaultToEN: false }));\n }\n\n months(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.months, () => {\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths(dt => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays(dt =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems(defaultOK = true) {\n return listStuff(\n this,\n undefined,\n defaultOK,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hour12: true };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n dt => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.eras, () => {\n const intl = { era: length };\n\n // This is utter bullshit. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(dt =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find(m => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n (hasIntl() && new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\"))\n );\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n}\n","import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n ianaRegex,\n isUndefined\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return m =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [Object.assign(mergedVals, val), mergedZone || zone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/,\n isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/,\n isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${offsetRegex.source}?`),\n isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`),\n isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/,\n isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/,\n isoOrdinalRegex = /(\\d{4})-?(\\d{3})/,\n extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\"),\n extractISOOrdinalData = simpleParse(\"year\", \"ordinal\"),\n sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/, // dumbed-down version of the ISO one\n sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n ),\n sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1)\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hour: int(match, cursor, 0),\n minute: int(match, cursor + 1, 0),\n second: int(match, cursor + 2, 0),\n millisecond: parseMillis(match[cursor + 3])\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO duration parsing\n\nconst isoDuration = /^-?P(?:(?:(-?\\d{1,9})Y)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,9})W)?(?:(-?\\d{1,9})D)?(?:T(?:(-?\\d{1,9})H)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,9}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [\n s,\n yearStr,\n monthStr,\n weekStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr,\n millisecondsStr\n ] = match;\n\n const hasNegativePrefix = s[0] === \"-\";\n\n const maybeNegate = num => (num && hasNegativePrefix ? -num : num);\n\n return [\n {\n years: maybeNegate(parseInteger(yearStr)),\n months: maybeNegate(parseInteger(monthStr)),\n weeks: maybeNegate(parseInteger(weekStr)),\n days: maybeNegate(parseInteger(dayStr)),\n hours: maybeNegate(parseInteger(hourStr)),\n minutes: maybeNegate(parseInteger(minuteStr)),\n seconds: maybeNegate(parseInteger(secondStr)),\n milliseconds: maybeNegate(parseMillis(millisecondsStr))\n }\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\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\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr)\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst 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\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction 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 .trim();\n}\n\n// http date\n\nconst rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 = /^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOOrdinalDataAndTime = combineExtractors(extractISOOrdinalData, extractISOTime);\nconst extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset);\n\n/**\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDataAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOYmdTimeOffsetAndIANAZone = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeOffsetAndIANAZone],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n","import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nconst lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 }\n },\n casualMatrix = Object.assign(\n {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000\n }\n },\n lowOrderMatrix\n ),\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = Object.assign(\n {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000\n }\n },\n lowOrderMatrix\n );\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : Object.assign({}, dur.values, alts.values || {}),\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy\n };\n return new Duration(conf);\n}\n\nfunction antiTrunc(n) {\n return n < 0 ? Math.floor(n) : Math.ceil(n);\n}\n\n// NB: mutates parameters\nfunction convert(matrix, fromMap, fromUnit, toMap, toUnit) {\n const conv = matrix[toUnit][fromUnit],\n raw = fromMap[fromUnit] / conv,\n sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]),\n // ok, so this is wild, but see the matrix in the tests\n added =\n !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);\n toMap[toUnit] += added;\n fromMap[fromUnit] -= added * conv;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n reverseUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n convert(matrix, vals, previous, vals, current);\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime.plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration.years}, {@link Duration.months}, {@link Duration.weeks}, {@link Duration.days}, {@link Duration.hours}, {@link Duration.minutes}, {@link Duration.seconds}, {@link Duration.milliseconds} accessors.\n * * **Configuration** See {@link Duration.locale} and {@link Duration.numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration.plus}, {@link Duration.minus}, {@link Duration.normalize}, {@link Duration.set}, {@link Duration.reconfigure}, {@link Duration.shiftTo}, and {@link Duration.negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration.as}, {@link Duration.toISO}, {@link Duration.toFormat}, and {@link Duration.toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = accurate ? accurateMatrix : casualMatrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject(Object.assign({ milliseconds: count }, opts));\n }\n\n /**\n * Create a Duration from a Javascript object with keys like 'years' and 'hours.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {string} [obj.locale='en-US'] - the locale to use\n * @param {string} obj.numberingSystem - the numbering system to use\n * @param {string} [obj.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromObject(obj) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit, [\n \"locale\",\n \"numberingSystem\",\n \"conversionAccuracy\",\n \"zone\" // a bit of debt; it's super inconvenient internally not to be able to blindly pass this\n ]),\n loc: Locale.fromObject(obj),\n conversionAccuracy: obj.conversionAccuracy\n });\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n const obj = Object.assign(parsed, opts);\n return Duration.fromObject(obj);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\"\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * The duration will be converted to the set of units in the format string using {@link Duration.shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = Object.assign({}, opts, {\n floor: opts.round !== false && opts.floor !== false\n });\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a Javascript object with this Duration's values.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = Object.assign({}, this.values);\n\n if (opts.includeConfig) {\n base.conversionAccuracy = this.conversionAccuracy;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n valueOf() {\n return this.as(\"milliseconds\");\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = friendlyDuration(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = friendlyDuration(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit((x, u) => u === \"hour\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).years //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).months //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).days //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = Object.assign(this.values, normalizeObject(values, Duration.normalizeUnit, []));\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem }),\n opts = { loc };\n\n if (conversionAccuracy) {\n opts.conversionAccuracy = conversionAccuracy;\n }\n\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map(u => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = own - i; // we'd like to absorb these fractions in another unit\n\n // plus anything further down the chain that should be rolled up in to this\n for (const down in vals) {\n if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {\n convert(this.matrix, vals, down, built, k);\n }\n }\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n return clone(this, { values: built }, true).normalize();\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n for (const u of orderedUnits) {\n if (this.values[u] !== other.values[u]) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDuration(durationish) {\n if (isNumber(durationish)) {\n return Duration.fromMillis(durationish);\n } else if (Duration.isDuration(durationish)) {\n return durationish;\n } else if (typeof durationish === \"object\") {\n return Duration.fromObject(durationish);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationish} of type ${typeof durationish}`\n );\n }\n}\n","import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration, { friendlyDuration } from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link fromDateTimes}, {@link after}, {@link before}, or {@link fromISO}.\n * * **Accessors** Use {@link start} and {@link end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link count}, {@link length}, {@link hasSame}, {@link contains}, {@link isAfter}, or {@link isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link set}, {@link splitAt}, {@link splitBy}, {@link divideEqually}, {@link merge}, {@link xor}, {@link union}, {@link intersection}, or {@link difference}.\n * * **Comparison** To compare this Interval to another one, use {@link equals}, {@link overlaps}, {@link abutsStart}, {@link abutsEnd}, {@link engulfs}.\n * * **Output** To convert the Interval into other representations, see {@link toString}, {@link toISO}, {@link toISODate}, {@link toISOTime}, {@link toFormat}, and {@link toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = friendlyDuration(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = friendlyDuration(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `/`, `/`, and `/` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime.fromISO} and optionally {@link Duration.fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @return {number}\n */\n count(unit = \"milliseconds\") {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit),\n end = this.end.startOf(unit);\n return Math.floor(end.diff(start, unit).get(unit)) + 1;\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...[DateTime]} dateTimes - the unit of time to count.\n * @return {[Interval]}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter(d => this.contains(d))\n .sort(),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {[Interval]}\n */\n splitBy(duration) {\n const dur = friendlyDuration(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n added,\n next;\n\n const results = [];\n while (s < this.e) {\n added = s.plus(dur);\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {[Interval]}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s > e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {[Interval]} intervals\n * @return {[Interval]}\n */\n static merge(intervals) {\n const [found, final] = intervals.sort((a, b) => a.s - b.s).reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {[Interval]} intervals\n * @return {[Interval]}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map(i => [{ time: i.s, type: \"s\" }, { time: i.e, type: \"e\" }]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {[Interval]}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map(i => this.intersection(i))\n .filter(i => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime.toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime.toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format string.\n * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime.toFormat} for details.\n * @param {Object} opts - options\n * @param {string} [opts.separator = ' – '] - a separator to place between the start and end representations\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasFormatToParts, hasIntl, hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.local()\n .setZone(zone)\n .set({ month: 12 });\n\n return !zone.universal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidSpecifier(zone) && IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone.isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\n * @return {[string]}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, outputCalendar = \"gregory\" } = {}\n ) {\n return Locale.create(locale, numberingSystem, outputCalendar).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {[string]}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, outputCalendar = \"gregory\" } = {}\n ) {\n return Locale.create(locale, numberingSystem, outputCalendar).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {[string]}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null } = {}) {\n return Locale.create(locale, numberingSystem, null).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link weekdays}\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @return {[string]}\n */\n static weekdaysFormat(length = \"long\", { locale = null, numberingSystem = null } = {}) {\n return Locale.create(locale, numberingSystem, null).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {[string]}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {[string]}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, timezone support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `zones`: whether this environment supports IANA timezones\n * * `intlTokens`: whether this environment supports internationalized token-based formatting/parsing\n * * `intl`: whether this environment supports general internationalization\n * * `relative`: whether this environment supports relative time formatting\n * @example Info.features() //=> { intl: true, intlTokens: false, zones: true, relative: false }\n * @return {Object}\n */\n static features() {\n let intl = false,\n intlTokens = false,\n zones = false,\n relative = false;\n\n if (hasIntl()) {\n intl = true;\n intlTokens = hasFormatToParts();\n relative = hasRelative();\n\n try {\n zones =\n new Intl.DateTimeFormat(\"en\", { timeZone: \"America/New_York\" }).resolvedOptions()\n .timeZone === \"America/New_York\";\n } catch (e) {\n zones = false;\n }\n }\n\n return { intl, intlTokens, zones, relative };\n }\n}\n","import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = dt =>\n dt\n .toUTC(0, { keepLocalTime: true })\n .startOf(\"day\")\n .valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n }\n ],\n [\"days\", dayDiff]\n ];\n\n const results = {};\n let lowestOrder, highWater;\n\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n let delta = differ(cursor, later);\n highWater = cursor.plus({ [unit]: delta });\n\n if (highWater > later) {\n cursor = cursor.plus({ [unit]: delta - 1 });\n delta -= 1;\n } else {\n cursor = highWater;\n }\n\n results[unit] = delta;\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function(earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n u => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(Object.assign(results, opts));\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n","const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\"\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881]\n};\n\n// eslint-disable-next-line\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n return new RegExp(`${numberingSystems[numberingSystem || \"latn\"]}${append}`);\n}\n","import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = i => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `( |${NBSP})`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex(i => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n // eslint-disable-next-line no-useless-escape\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = t => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = t => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\", false), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\", false), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true, false), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true, false), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false, false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false, false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false, false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false, false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true, false), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true, false), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\"\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\"\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\"\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\"\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour: {\n numeric: \"h\",\n \"2-digit\": \"hh\"\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\"\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\"\n }\n};\n\nfunction tokenForPart(part, locale, formatOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n return {\n literal: true,\n val: value\n };\n }\n\n const style = formatOpts[type];\n\n let val = partTypeStyleToTokenVal[type];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map(u => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = token => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone;\n if (!isUndefined(matches.Z)) {\n zone = new FixedOffsetZone(matches.Z);\n } else if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n } else {\n zone = null;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n\n if (!formatOpts) {\n return token;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const parts = formatter.formatDateTimeParts(getDummyDateTime());\n\n const tokens = parts.map(p => tokenForPart(p, locale, formatOpts));\n\n if (tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nfunction expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map(t => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport function explainFromTokens(locale, input, format) {\n const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map(t => unitForToken(t, locale)),\n disqualifyingUnit = units.find(t => t.invalidReason);\n\n if (disqualifyingUnit) {\n return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n } else {\n const [regexString, handlers] = buildRegex(units),\n regex = RegExp(regexString, \"i\"),\n [rawMatches, matches] = match(input, regex, handlers),\n [result, zone] = matches ? dateTimeFromMatches(matches) : [null, null];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return { input, tokens, regex, rawMatches, matches, result, zone };\n }\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, invalidReason];\n}\n","import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nfunction dayOfWeek(year, month, day) {\n const js = new Date(Date.UTC(year, month - 1, day)).getUTCDay();\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex(i => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = dayOfWeek(year, month, day);\n\n let weekNumber = Math.floor((ordinal - weekday + 10) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear);\n } else if (weekNumber > weeksInWeekYear(year)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return Object.assign({ weekYear, weekNumber, weekday }, timeObject(gregObj));\n}\n\nexport function weekToGregorian(weekData) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n\n return Object.assign({ year, month, day }, timeObject(weekData));\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData,\n ordinal = computeOrdinal(year, month, day);\n\n return Object.assign({ year, ordinal }, timeObject(gregData));\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData,\n { month, day } = uncomputeOrdinal(year, ordinal);\n\n return Object.assign({ year, month, day }, timeObject(ordinalData));\n}\n\nexport function hasInvalidWeekData(obj) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.week);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n","import Duration, { friendlyDuration } from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport { parseFromTokens, explainFromTokens } from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid\n };\n return new DateTime(Object.assign({}, current, alts, { old: current }));\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds()\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = Object.assign({}, inst.c, {\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7\n }),\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text) {\n const { setZone, zone } = opts;\n if (parsed && Object.keys(parsed).length !== 0) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(\n Object.assign(parsed, opts, {\n zone: interpretationZone,\n // setZone is a valid option in the calling methods, but not in fromObject\n setZone: undefined\n })\n );\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\n// technical time formats (e.g. the time part of ISO 8601), take some options\n// and this commonizes their handling\nfunction toTechTimeFormat(\n dt,\n {\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset,\n includeZone = false,\n spaceZone = false,\n format = \"extended\"\n }\n) {\n let fmt = format === \"basic\" ? \"HHmm\" : \"HH:mm\";\n\n if (!suppressSeconds || dt.second !== 0 || dt.millisecond !== 0) {\n fmt += format === \"basic\" ? \"ss\" : \":ss\";\n if (!suppressMilliseconds || dt.millisecond !== 0) {\n fmt += \".SSS\";\n }\n }\n\n if ((includeZone || includeOffset) && spaceZone) {\n fmt += \" \";\n }\n\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += format === \"basic\" ? \"ZZZ\" : \"ZZ\";\n }\n\n return toTechFormat(dt, fmt);\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\"\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\"\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, zone) {\n // assume we have the higher-order units\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const tsNow = Settings.now(),\n offsetProvis = zone.offset(tsNow),\n [ts, o] = objToTS(obj, offsetProvis, zone);\n\n return new DateTime({\n ts,\n zone,\n o\n });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = unit => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end\n .startOf(unit)\n .diff(start.startOf(unit), unit)\n .get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(0, opts.units[opts.units.length - 1]);\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link local}, {@link utc}, and (most flexibly) {@link fromObject}. To create one from a standard string format, use {@link fromISO}, {@link fromHTTP}, and {@link fromRFC2822}. To create one from a custom string format, use {@link fromFormat}. To create one from a native JS date, use {@link fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link toObject}), use the {@link year}, {@link month},\n * {@link day}, {@link hour}, {@link minute}, {@link second}, {@link millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link weekYear}, {@link weekNumber}, and {@link weekday} accessors.\n * * **Configuration** See the {@link locale} and {@link numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link set}, {@link reconfigure}, {@link setZone}, {@link setLocale}, {@link plus}, {@link minus}, {@link endOf}, {@link startOf}, {@link toUTC}, and {@link toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link toRelative}, {@link toRelativeCalendar}, {@link toJSON}, {@link toISO}, {@link toHTTP}, {@link toObject}, {@link toRFC2822}, {@link toString}, {@link toLocaleString}, {@link toFormat}, {@link toMillis} and {@link toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n const ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12) //~> 2017-03-12T00:00:00\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return new DateTime({ ts: Settings.now() });\n } else {\n return quickDT(\n {\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond\n },\n Settings.defaultZone\n );\n }\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765Z\n * @return {DateTime}\n */\n static utc(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return new DateTime({\n ts: Settings.now(),\n zone: FixedOffsetZone.utcInstance\n });\n } else {\n return quickDT(\n {\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond\n },\n FixedOffsetZone.utcInstance\n );\n }\n }\n\n /**\n * Create a DateTime from a Javascript Date object. Uses the default zone.\n * @param {Date} date - a Javascript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options)\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n\n /**\n * Create a DateTime from a Javascript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {string|Zone} [obj.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [obj.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} obj.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} obj.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @return {DateTime}\n */\n static fromObject(obj) {\n const zoneToUse = normalizeZone(obj.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const tsNow = Settings.now(),\n offsetProvis = zoneToUse.offset(tsNow),\n normalized = normalizeObject(obj, normalizeUnit, [\n \"zone\",\n \"locale\",\n \"outputCalendar\",\n \"numberingSystem\"\n ]),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber,\n loc = Locale.fromObject(obj);\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @see https://moment.github.io/luxon/docs/manual/parsing.html#table-of-tokens\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true\n }),\n [vals, parsedZone, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is a DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locale: this.locale })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locale: this.locale })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locale: this.locale })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locale: this.locale })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.local().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.universal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1 }).offset || this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOpts(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link plus}. You may wish to use {@link toLocal} and {@link toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link reconfigure} and {@link setZone}.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnit, []),\n settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday);\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(Object.assign(gregorianToWeek(this.c), normalized));\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian(Object.assign(gregorianToOrdinal(this.c), normalized));\n } else {\n mixed = Object.assign(this.toObject(), normalized);\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.local().plus(123) //~> in 123 milliseconds\n * @example DateTime.local().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.local().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.local().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.local().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.local().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = friendlyDuration(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = friendlyDuration(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit) {\n if (!this.isValid) return this;\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n o.weekday = 1;\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'month', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @see https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options\n * @example DateTime.local().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.local().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.local().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.local().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param opts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @example DateTime.local().toLocaleString(); //=> 4/20/2017\n * @example DateTime.local().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.local().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017'\n * @example DateTime.local().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.local().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.local().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.local().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.local().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.local().toLocaleString({ hour: '2-digit', minute: '2-digit', hour12: false }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(opts = Formats.DATE_SHORT) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.local().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.local().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.local().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.local().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toISODate(opts)}T${this.toISOTime(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n let fmt = format === \"basic\" ? \"yyyyMMdd\" : \"yyyy-MM-dd\";\n if (this.year > 9999) {\n fmt = \"+\" + fmt;\n }\n\n return toTechFormat(this, fmt);\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n format = \"extended\"\n } = {}) {\n return toTechTimeFormat(this, {\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n format\n });\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime, always in UTC\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n return toTechFormat(this, \"yyyy-MM-dd\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.local().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.local().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.local().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false } = {}) {\n return toTechTimeFormat(this, {\n includeOffset,\n includeZone,\n spaceZone: true\n });\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a Javascript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.local().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = Object.assign({}, this.c);\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a Javascript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\n this.invalid || otherDateTime.invalid,\n \"created by diffing an invalid DateTime\"\n );\n }\n\n const durOpts = Object.assign(\n { locale: this.locale, numberingSystem: this.numberingSystem },\n opts\n );\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.local(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @example DateTime.local().hasSame(otherDT, 'day'); //~> true if both the same calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit) {\n if (!this.isValid) return false;\n if (unit === \"millisecond\") {\n return this.valueOf() === otherDateTime.valueOf();\n } else {\n const inputMs = otherDateTime.valueOf();\n return this.startOf(unit) <= inputMs && inputMs <= this.endOf(unit);\n }\n }\n\n /**\n * Equality check\n * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.local()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {boolean} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.local().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.local().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\n * @example DateTime.local().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.local().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.local().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.local().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({ zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n return diffRelative(\n base,\n this.plus(padding),\n Object.assign(options, {\n numeric: \"always\",\n units: [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"]\n })\n );\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.local()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.local().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.local().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.local().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.local().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(\n options.base || DateTime.fromObject({ zone: this.zone }),\n this,\n Object.assign(options, {\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true\n })\n );\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, i => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, i => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.20';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '\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 var relateToElem = this.getRelateToElement();\n // eslint-disable-next-line\n var props = this.content.props;\n if (!relateToElem.classList.contains('e-dropdown-btn') || isNullOrUndefined(props)) {\n this.element.appendChild(this.content);\n }\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 = val.replace(/'/g, \"''\");\n if (predicate.ignoreCase) {\n val = val.toLowerCase();\n }\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 if (splits.length == 2) {\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1) {\n if (selected[splits[0]][0].indexOf('$expand') !== -1 && selected[splits[0]][0].indexOf(';$select=') === -1) {\n selected[splits[0]][0] = selected[splits[0]][0] + ';' + '$select=' + splits[1];\n }\n else {\n selected[splits[0]][0] = selected[splits[0]][0] + ',' + splits[1];\n }\n }\n else {\n selected[splits[0]].push('$select=' + splits[1]);\n }\n }\n else {\n var sel = '$select=' + splits[splits.length - 1];\n var exp = '';\n var close_1 = '';\n for (var i = 1; i < splits.length - 1; i++) {\n exp = exp + '$expand=' + splits[i] + '(';\n close_1 = close_1 + ')';\n }\n var combineVal = exp + sel + close_1;\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1 &&\n _this.expandQueryIndex(selected[splits[0]], true)) {\n var idx = _this.expandQueryIndex(selected[splits[0]]);\n selected[splits[0]][idx] = selected[splits[0]][idx] + combineVal.replace('$expand=', ',');\n }\n else {\n selected[splits[0]].push(combineVal);\n }\n }\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 + \"(\" + selected[expand].join(';') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n ODataV4Adaptor.prototype.expandQueryIndex = function (query, isExpand) {\n for (var i = 0; i < query.length; i++) {\n if (query[i].indexOf('$expand') !== -1) {\n return isExpand ? true : i;\n }\n }\n return isExpand ? false : 0;\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","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","import { unstable_useControlled as useControlled } from '@mui/utils';\nexport default useControlled;","import { unstable_ownerDocument as ownerDocument } from '@mui/utils';\nexport default ownerDocument;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useOpenState } from './useOpenState';\nimport { useUtils } from './useUtils';\nexport const usePickerState = (props, valueManager) => {\n const {\n onAccept,\n onChange,\n value,\n closeOnSelect\n } = props;\n const utils = useUtils();\n const {\n isOpen,\n setIsOpen\n } = useOpenState(props);\n const parsedDateValue = React.useMemo(() => valueManager.parseInput(utils, value), [valueManager, utils, value]);\n const [lastValidDateValue, setLastValidDateValue] = React.useState(parsedDateValue);\n const [dateState, setDateState] = React.useState(() => ({\n committed: parsedDateValue,\n draft: parsedDateValue,\n resetFallback: parsedDateValue\n }));\n const setDate = React.useCallback(params => {\n setDateState(prev => {\n switch (params.action) {\n case 'setAll':\n case 'acceptAndClose':\n {\n return {\n draft: params.value,\n committed: params.value,\n resetFallback: params.value\n };\n }\n\n case 'setCommitted':\n {\n return _extends({}, prev, {\n draft: params.value,\n committed: params.value\n });\n }\n\n case 'setDraft':\n {\n return _extends({}, prev, {\n draft: params.value\n });\n }\n\n default:\n {\n return prev;\n }\n }\n });\n\n if (!params.skipOnChangeCall && !valueManager.areValuesEqual(utils, dateState.committed, params.value)) {\n onChange(params.value);\n }\n\n if (params.action === 'acceptAndClose') {\n setIsOpen(false);\n\n if (onAccept && !valueManager.areValuesEqual(utils, dateState.resetFallback, params.value)) {\n onAccept(params.value);\n }\n }\n }, [onAccept, onChange, setIsOpen, dateState, utils, valueManager]);\n React.useEffect(() => {\n if (utils.isValid(parsedDateValue)) {\n setLastValidDateValue(parsedDateValue);\n }\n }, [utils, parsedDateValue]);\n React.useEffect(() => {\n if (isOpen) {\n // Update all dates in state to equal the current prop value\n setDate({\n action: 'setAll',\n value: parsedDateValue,\n skipOnChangeCall: true\n });\n }\n }, [isOpen]); // eslint-disable-line react-hooks/exhaustive-deps\n // Set the draft and committed date to equal the new prop value.\n\n if (!valueManager.areValuesEqual(utils, dateState.committed, parsedDateValue)) {\n setDate({\n action: 'setCommitted',\n value: parsedDateValue,\n skipOnChangeCall: true\n });\n }\n\n const wrapperProps = React.useMemo(() => ({\n open: isOpen,\n onClear: () => {\n // Reset all date in state to the empty value and close picker.\n setDate({\n value: valueManager.emptyValue,\n action: 'acceptAndClose'\n });\n },\n onAccept: () => {\n // Set all date in state to equal the current draft value and close picker.\n setDate({\n value: dateState.draft,\n action: 'acceptAndClose'\n });\n },\n onDismiss: () => {\n // Set all dates in state to equal the last committed date.\n // e.g. Reset the state to the last committed value.\n setDate({\n value: dateState.committed,\n action: 'acceptAndClose'\n });\n },\n onCancel: () => {\n // Set all dates in state to equal the last accepted date and close picker.\n // e.g. Reset the state to the last accepted value\n setDate({\n value: dateState.resetFallback,\n action: 'acceptAndClose'\n });\n },\n onSetToday: () => {\n // Set all dates in state to equal today and close picker.\n setDate({\n value: valueManager.getTodayValue(utils),\n action: 'acceptAndClose'\n });\n }\n }), [setDate, isOpen, utils, dateState, valueManager]); // Mobile keyboard view is a special case.\n // When it's open picker should work like closed, because we are just showing text field\n\n const [isMobileKeyboardViewOpen, setMobileKeyboardViewOpen] = React.useState(false);\n const pickerProps = React.useMemo(() => ({\n parsedValue: dateState.draft,\n isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: () => setMobileKeyboardViewOpen(!isMobileKeyboardViewOpen),\n onDateChange: (newDate, wrapperVariant, selectionState = 'partial') => {\n switch (selectionState) {\n case 'shallow':\n {\n // Update the `draft` state but do not fire `onChange`\n return setDate({\n action: 'setDraft',\n value: newDate,\n skipOnChangeCall: true\n });\n }\n\n case 'partial':\n {\n // Update the `draft` state and fire `onChange`\n return setDate({\n action: 'setDraft',\n value: newDate\n });\n }\n\n case 'finish':\n {\n if (closeOnSelect != null ? closeOnSelect : wrapperVariant === 'desktop') {\n // Set all dates in state to equal the new date and close picker.\n return setDate({\n value: newDate,\n action: 'acceptAndClose'\n });\n } // Updates the `committed` state and fire `onChange`\n\n\n return setDate({\n value: newDate,\n action: 'setCommitted'\n });\n }\n\n default:\n {\n throw new Error('MUI: Invalid selectionState passed to `onDateChange`');\n }\n }\n }\n }), [setDate, isMobileKeyboardViewOpen, dateState.draft, closeOnSelect]);\n const handleInputChange = React.useCallback((newParsedValue, keyboardInputValue) => {\n const cleanParsedValue = valueManager.valueReducer ? valueManager.valueReducer(utils, lastValidDateValue, newParsedValue) : newParsedValue;\n onChange(cleanParsedValue, keyboardInputValue);\n }, [onChange, valueManager, lastValidDateValue, utils]);\n const inputProps = React.useMemo(() => ({\n onChange: handleInputChange,\n open: isOpen,\n rawValue: value,\n openPicker: () => setIsOpen(true)\n }), [handleInputChange, isOpen, value, setIsOpen]);\n const pickerState = {\n pickerProps,\n inputProps,\n wrapperProps\n };\n React.useDebugValue(pickerState, () => ({\n MuiPickerState: {\n dateState,\n other: pickerState\n }\n }));\n return pickerState;\n};","import * as React from 'react';\nexport const useOpenState = ({\n open,\n onOpen,\n onClose\n}) => {\n const isControllingOpenProp = React.useRef(typeof open === 'boolean').current;\n const [openState, setIsOpenState] = React.useState(false); // It is required to update inner state in useEffect in order to avoid situation when\n // Our component is not mounted yet, but `open` state is set to `true` (e.g. initially opened)\n\n React.useEffect(() => {\n if (isControllingOpenProp) {\n if (typeof open !== 'boolean') {\n throw new Error('You must not mix controlling and uncontrolled mode for `open` prop');\n }\n\n setIsOpenState(open);\n }\n }, [isControllingOpenProp, open]);\n const setIsOpen = React.useCallback(newIsOpen => {\n if (!isControllingOpenProp) {\n setIsOpenState(newIsOpen);\n }\n\n if (newIsOpen && onOpen) {\n onOpen();\n }\n\n if (!newIsOpen && onClose) {\n onClose();\n }\n }, [isControllingOpenProp, onOpen, onClose]);\n return {\n isOpen: openState,\n setIsOpen\n };\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, Internationalization } 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 options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: '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 if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n 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 this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n 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 var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n // 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') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n }\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 innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n 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 this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n }\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","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Collection, Complex, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Container } from '@syncfusion/ej2-drawings';\nimport { Point } from '@syncfusion/ej2-drawings';\nimport { PdfAnnotationBase, PdfFormFieldBase } from './pdf-annotation';\n/**\n * Defines the size and position of selected items and defines the appearance of selector\n *\n * @hidden\n */\nvar Selector = /** @class */ (function (_super) {\n __extends(Selector, _super);\n function Selector() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Initializes the UI of the container\n *\n * @param {any} diagram - diagram element.\n * @returns {Container} - Returns the container element.\n */\n // eslint-disable-next-line\n Selector.prototype.init = function (diagram) {\n var container = new Container();\n container.measureChildren = false;\n container.children = [];\n if (this.formFields && this.formFields.length > 0) {\n for (var i = 0; i < this.formFields.length; i++) {\n var node = diagram.pdfViewer.nameTable[this.formFields[i].id];\n var wrapper = node.wrapper;\n container.children.push(wrapper);\n }\n }\n else if (this.annotations) {\n for (var i = 0; i < this.annotations.length; i++) {\n if (!isNullOrUndefined(this.annotations[i])) {\n var node = diagram.pdfViewer.nameTable[this.annotations[i].id];\n var wrapper = node.wrapper;\n container.children.push(wrapper);\n }\n }\n }\n this.wrapper = container;\n return container;\n };\n __decorate([\n Property(null)\n ], Selector.prototype, \"wrapper\", void 0);\n __decorate([\n Collection([], PdfAnnotationBase)\n ], Selector.prototype, \"annotations\", void 0);\n __decorate([\n Collection([], PdfFormFieldBase)\n ], Selector.prototype, \"formFields\", void 0);\n __decorate([\n Property()\n ], Selector.prototype, \"width\", void 0);\n __decorate([\n Property()\n ], Selector.prototype, \"height\", void 0);\n __decorate([\n Property(0)\n ], Selector.prototype, \"rotateAngle\", void 0);\n __decorate([\n Property(0)\n ], Selector.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Selector.prototype, \"offsetY\", void 0);\n __decorate([\n Complex({ x: 0.5, y: 0.5 }, Point)\n ], Selector.prototype, \"pivot\", void 0);\n return Selector;\n}(ChildProperty));\nexport { Selector };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, extend, deleteObject, Property, addClass, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {Object} props - Specifies the properties\n * @param {string[]} model - Specifies the model\n * @returns {Object} Component Model\n */\nexport function getModel(props, model) {\n var obj = extend({}, props);\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((model).indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {number} keyCode - Specifies the keycode\n * @returns {void}\n */\nexport function upDownKeyHandler(ul, keyCode) {\n var defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n var liIdx = defaultIdx;\n var li;\n var selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n if (keyCode === 40) {\n liIdx++;\n }\n else {\n liIdx--;\n }\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\n/**\n * Get Valid LI element\n *\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {Element} li - Specifies the LI element\n * @param {number} index - Specifies the index\n * @param {number} keyCode - Specifies the keycode\n * @param {number} count - Specifies the count\n * @returns {number} - Index\n */\nfunction isValidLI(ul, li, index, keyCode, count) {\n if (count === void 0) { count = 0; }\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n }\n else {\n if (keyCode === 40) {\n index++;\n }\n else {\n index--;\n }\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden\n * @param {HTMLElement} popup - Specifies the popup element.\n * @returns {void}\n */\nexport function setBlankIconStyle(popup) {\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 (isNullOrUndefined(iconLi)) {\n return;\n }\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n var cssProp;\n var enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = { padding: 'paddingRight', margin: 'marginLeft' };\n }\n else {\n cssProp = { padding: 'paddingLeft', margin: 'marginRight' };\n }\n /* eslint-disable */\n var size = parseInt(getComputedStyle(icon).fontSize, 10) + parseInt((enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin]), 10)\n + parseInt(getComputedStyle(iconLi).paddingLeft, 10) + \"px\";\n blankIconList.forEach(function (li) {\n if (li.classList.contains('e-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n }\n else {\n li.style[cssProp.padding] = size;\n }\n });\n /* eslint-enable */\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"separator\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"url\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n","/**\n * PdfPen.ts class for EJ2-PDF\n */\nimport { PdfColor } from './pdf-color';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfDashStyle, PdfColorSpace } from './enum';\nimport { PdfBrush } from './brushes/pdf-brush';\n/**\n * `PdfPen` class defining settings for drawing operations, that determines the color,\n * width, and style of the drawing elements.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPen = /** @class */ (function () {\n function PdfPen(arg1, arg2) {\n //Fields\n /**\n * Specifies the `color of the pen`.\n * @default new PdfColor()\n * @private\n */\n this.pdfColor = new PdfColor(0, 0, 0);\n /**\n * Specifies the `dash offset of the pen`.\n * @default 0\n * @private\n */\n this.dashOffsetValue = 0;\n /**\n * Specifies the `dash pattern of the pen`.\n * @default [0]\n * @private\n */\n this.penDashPattern = [0];\n /**\n * Specifies the `dash style of the pen`.\n * @default Solid\n * @private\n */\n this.pdfDashStyle = PdfDashStyle.Solid;\n /**\n * Specifies the `line cap of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineCap = 0;\n /**\n * Specifies the `line join of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineJoin = 0;\n /**\n * Specifies the `width of the pen`.\n * @default 1.0\n * @private\n */\n this.penWidth = 1.0;\n /**\n * Specifies the `mitter limit of the pen`.\n * @default 0.0\n * @private\n */\n this.internalMiterLimit = 0.0;\n /**\n * Stores the `colorspace` value.\n * @default Rgb\n * @private\n */\n this.colorSpace = PdfColorSpace.Rgb;\n if (arg1 instanceof PdfBrush) {\n this.setBrush(arg1);\n }\n else if (arg1 instanceof PdfColor) {\n this.color = arg1;\n }\n if (typeof arg2 === 'number') {\n this.width = arg2;\n }\n }\n Object.defineProperty(PdfPen.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color of the pen`.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashOffset\", {\n /**\n * Gets or sets the `dash offset of the pen`.\n * @private\n */\n get: function () {\n if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {\n return 0;\n }\n else {\n return this.dashOffsetValue;\n }\n },\n set: function (value) {\n this.dashOffsetValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashPattern\", {\n /**\n * Gets or sets the `dash pattern of the pen`.\n * @private\n */\n get: function () {\n return this.penDashPattern;\n },\n set: function (value) {\n this.penDashPattern = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashStyle\", {\n /**\n * Gets or sets the `dash style of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen style\n * pen.dashStyle = PdfDashStyle.DashDot;\n * // get pen style\n * let style : PdfDashStyle = pen.dashStyle;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfDashStyle;\n },\n set: function (value) {\n if (this.pdfDashStyle !== value) {\n this.pdfDashStyle = value;\n switch (this.pdfDashStyle) {\n case PdfDashStyle.Custom:\n break;\n case PdfDashStyle.Dash:\n this.penDashPattern = [3, 1];\n break;\n case PdfDashStyle.Dot:\n this.penDashPattern = [1, 1];\n break;\n case PdfDashStyle.DashDot:\n this.penDashPattern = [3, 1, 1, 1];\n break;\n case PdfDashStyle.DashDotDot:\n this.penDashPattern = [3, 1, 1, 1, 1, 1];\n break;\n case PdfDashStyle.Solid:\n break;\n default:\n this.pdfDashStyle = PdfDashStyle.Solid;\n this.penDashPattern = [0];\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineCap\", {\n /**\n * Gets or sets the `line cap of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineCap;\n },\n set: function (value) {\n this.pdfLineCap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineJoin\", {\n /**\n * Gets or sets the `line join style of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineJoin;\n },\n set: function (value) {\n this.pdfLineJoin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"miterLimit\", {\n /**\n * Gets or sets the `miter limit`.\n * @private\n */\n get: function () {\n return this.internalMiterLimit;\n },\n set: function (value) {\n this.internalMiterLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"width\", {\n /**\n * Gets or sets the `width of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen width\n * pen.width = 2;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.penWidth;\n },\n set: function (value) {\n this.penWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Helper\n /**\n * `Clones` this instance of PdfPen class.\n * @private\n */\n PdfPen.prototype.clone = function () {\n var pen = this;\n return pen;\n };\n /**\n * `Sets the brush`.\n * @private\n */\n PdfPen.prototype.setBrush = function (brush) {\n var sBrush = brush;\n if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n };\n /**\n * `Monitors the changes`.\n * @private\n */\n PdfPen.prototype.monitorChanges = function (currentPen, streamWriter, getResources, saveState, currentColorSpace, matrix) {\n var diff = false;\n saveState = true;\n if (currentPen == null) {\n diff = true;\n }\n diff = this.dashControl(currentPen, saveState, streamWriter);\n streamWriter.setLineWidth(this.width);\n streamWriter.setLineJoin(this.lineJoin);\n streamWriter.setLineCap(this.lineCap);\n var miterLimit = this.miterLimit;\n if (miterLimit > 0) {\n streamWriter.setMiterLimit(miterLimit);\n diff = true;\n }\n var brush = this.pdfBrush;\n streamWriter.setColorAndSpace(this.color, currentColorSpace, true);\n diff = true;\n return diff;\n };\n /**\n * `Controls the dash style` and behaviour of each line.\n * @private\n */\n PdfPen.prototype.dashControl = function (pen, saveState, streamWriter) {\n saveState = true;\n var lineWidth = this.width;\n var pattern = this.getPattern();\n streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);\n return saveState;\n };\n /**\n * `Gets the pattern` of PdfPen.\n * @private\n */\n PdfPen.prototype.getPattern = function () {\n var pattern = this.dashPattern;\n for (var i = 0; i < pattern.length; ++i) {\n pattern[i] *= this.width;\n }\n return pattern;\n };\n return PdfPen;\n}());\nexport { PdfPen };\n","/**\n * These utility methods help to process the data and to convert it to desired dimensions\n */\n/** @private */\nexport function processPathData(data) {\n var collection = [];\n var j;\n var arrayCollection = parsePathData(data);\n if (arrayCollection.length > 0) {\n for (var i = 0; i < arrayCollection.length; i++) {\n var ob = arrayCollection[i];\n var char = '';\n char = ob[0];\n switch (char.toLowerCase()) {\n case 'm':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x: ob[j], y: ob[j + 1] });\n j = j + 1;\n if (char === 'm') {\n char = 'l';\n }\n else if (char === 'M') {\n char = 'L';\n }\n }\n break;\n case 'l':\n case 't':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x: ob[j], y: ob[j + 1] });\n j = j + 1;\n }\n break;\n case 'h':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x: ob[j] });\n }\n break;\n case 'v':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, y: ob[j] });\n }\n break;\n case 'z':\n collection.push({ command: char });\n break;\n case 'c':\n for (j = 1; j < ob.length; j++) {\n collection.push({\n command: char, x1: ob[j], y1: ob[j + 1], x2: ob[j + 2], y2: ob[j + 3], x: ob[j + 4], y: ob[j + 5]\n });\n j = j + 5;\n }\n break;\n case 's':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x2: ob[j], y2: ob[j + 1], x: ob[j + 2], y: ob[j + 3] });\n j = j + 3;\n }\n break;\n case 'q':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x1: ob[j], y1: ob[j + 1], x: ob[j + 2], y: ob[j + 3] });\n j = j + 3;\n }\n break;\n case 'a':\n for (j = 1; j < ob.length; j++) {\n collection.push({\n command: char, r1: ob[j], r2: ob[j + 1], angle: ob[j + 2], largeArc: ob[j + 3],\n sweep: ob[j + 4], x: ob[j + 5], y: ob[j + 6]\n });\n j = j + 6;\n }\n break;\n }\n }\n }\n return collection;\n}\n/** @private */\nexport function parsePathData(data) {\n var tokenizer = /([a-z]+)|([+-]?(?:\\d+\\.?\\d*|\\.\\d+))/gi;\n var current = [];\n var commands = [];\n var match = {};\n tokenizer.lastIndex = 0;\n var isExponential = false;\n match = tokenizer.exec(data);\n while (match) {\n if (match[1] === 'e') {\n var s1 = '';\n isExponential = true;\n }\n else if (match[1]) {\n if (match[1].toLowerCase() === 'zm') {\n if (current.length) {\n commands.push(current);\n }\n commands.push(['Z']);\n current = [match[1].substring(1, 2)];\n }\n else {\n if (current.length) {\n commands.push(current);\n }\n current = [match[1]];\n }\n isExponential = false;\n }\n else {\n if (!current.length) {\n current = [];\n }\n if (!isExponential) {\n current.push(Number(match[2]));\n }\n isExponential = false;\n }\n match = tokenizer.exec(data);\n }\n if (current.length) {\n commands.push(current);\n }\n return commands;\n}\n/**\n * Used to find the path for rounded rect\n */\nexport function getRectanglePath(cornerRadius, height, width) {\n var x = 0;\n var y = 0;\n var path = '';\n var points = [{ x: x + cornerRadius, y: y }, { x: x + width - cornerRadius, y: y },\n { x: x + width, y: y + cornerRadius }, { x: x + width, y: y + height - cornerRadius },\n { x: x + width - cornerRadius, y: y + height }, { x: x + cornerRadius, y: y + height },\n { x: x, y: y + height - cornerRadius }, { x: x, y: y + cornerRadius }\n ];\n var corners = [{ x: x + width, y: y }, { x: x + width, y: y + height }, { x: x, y: y + height }, { x: x, y: y }];\n var corner = 0;\n var point2;\n var next;\n path = 'M' + points[0].x + ' ' + points[0].y;\n var i;\n for (i = 0; i < points.length; i = i + 2) {\n point2 = points[i + 1];\n path += 'L' + point2.x + ' ' + point2.y;\n next = points[i + 2] || points[0];\n path += 'Q' + corners[corner].x + ' ' + corners[corner].y + ' ' + next.x + ' ' + next.y;\n corner++;\n }\n return path;\n}\n/** @private */\nexport function pathSegmentCollection(collection) {\n var x0;\n var y0;\n var x1;\n var y1;\n var x2;\n var y2;\n var x;\n var y;\n var length;\n var i;\n var initx;\n var inity;\n var segments = [];\n for (x = 0, y = 0, i = 0, length = collection.length; i < length; ++i) {\n var obj = collection[i];\n var seg = obj;\n var char = '';\n char = seg.command;\n if ('y1' in seg) {\n y1 = seg.y1;\n }\n if ('y2' in seg) {\n y2 = seg.y2;\n }\n if ('x1' in seg) {\n x1 = seg.x1;\n }\n if ('x2' in seg) {\n x2 = seg.x2;\n }\n if ('x' in seg) {\n x = seg.x;\n }\n if ('y' in seg) {\n y = seg.y;\n }\n var prev = segments[segments.length - 1];\n switch (char) {\n case 'M':\n segments.push({ command: 'M', x: x, y: y });\n break;\n case 'L':\n segments.push({ command: 'L', x0: x0, y0: y0, x: x, y: y });\n break;\n case 'H':\n segments.push({ command: 'L', x0: x0, y0: y0, x: x, y: y0 });\n break;\n case 'V':\n segments.push({ command: 'L', x0: x0, y0: y0, x: x0, y: y });\n break;\n case 'C':\n segments.push({ command: 'C', x0: x0, y0: y0, x1: x1, y1: y1, x2: x2, y2: y2, x: x, y: y });\n break;\n case 'S':\n if (prev) {\n var ctrl = void 0;\n if (prev.command === 'C' || prev.command === 'S') {\n ctrl = { x: prev.x2, y: prev.y2 };\n }\n else {\n ctrl = { x: x0, y: y0 };\n }\n var cpt2 = { x: 2 * x0 - ctrl.x, y: 2 * y0 - ctrl.y };\n segments.push({ command: 'C', x0: x0, y0: y0, x1: cpt2.x, y1: cpt2.y, x2: x2, y2: y2, x: x, y: y });\n }\n break;\n case 'Q':\n //ctx.quadraticCurveTo(x1, y1, x, y);\n segments.push({ command: 'Q', x0: x0, y0: y0, x1: x1, y1: y1, x: x, y: y });\n break;\n case 'T':\n if (prev) {\n var ctrl = void 0;\n if (prev.command === 'Q') {\n ctrl = { x: prev.x1, y: prev.y1 };\n }\n else {\n ctrl = { x: x0, y: y0 };\n }\n var cpt2 = { x: 2 * x0 - ctrl.x, y: 2 * y0 - ctrl.y };\n segments.push({ command: 'Q', x0: x0, y0: y0, x1: cpt2.x, y1: cpt2.y, x: x, y: y });\n }\n break;\n case 'A':\n var newSeg = seg;\n newSeg.command = 'A';\n segments.push(newSeg);\n break;\n case 'Z':\n case 'z':\n segments.push({ command: 'Z' });\n x = x0;\n y = y0;\n break;\n }\n if (char === 'M' || char === 'm') {\n initx = x;\n inity = y;\n }\n x0 = x;\n y0 = y;\n }\n return segments;\n}\n/** @private */\nexport function transformPath(arr, sX, sY, s, bX, bY, iX, iY) {\n var x0;\n var y0;\n var x1;\n var y1;\n var x2;\n var y2;\n var x;\n var y;\n var length;\n var i;\n var newSeg;\n for (x = 0, y = 0, i = 0, length = arr.length; i < length; ++i) {\n var obj = arr[i];\n var seg = obj;\n var char = seg.command;\n if ('x' in seg) {\n x = seg.x;\n }\n if ('y' in seg) {\n y = seg.y;\n }\n if ('y1' in seg) {\n y1 = seg.y1;\n }\n if ('y2' in seg) {\n y2 = seg.y2;\n }\n if ('x1' in seg) {\n x1 = seg.x1;\n }\n if ('x2' in seg) {\n x2 = seg.x2;\n }\n if (s) {\n if (x !== undefined) {\n x = scalePathData(x, sX, bX, iX);\n }\n if (y !== undefined) {\n y = scalePathData(y, sY, bY, iY);\n }\n if (x1 !== undefined) {\n x1 = scalePathData(x1, sX, bX, iX);\n }\n if (y1 !== undefined) {\n y1 = scalePathData(y1, sY, bY, iY);\n }\n if (x2 !== undefined) {\n x2 = scalePathData(x2, sX, bX, iX);\n }\n if (y2 !== undefined) {\n y2 = scalePathData(y2, sY, bY, iY);\n }\n }\n else {\n if (x !== undefined) {\n x = Number((x + sX).toFixed(2));\n }\n if (y !== undefined) {\n y = Number((y + sY).toFixed(2));\n }\n if (x1 !== undefined) {\n x1 = Number((x1 + sX).toFixed(2));\n }\n if (y1 !== undefined) {\n y1 = Number((y1 + sY).toFixed(2));\n }\n if (x2 !== undefined) {\n x2 = Number((x2 + sX).toFixed(2));\n }\n if (y2 !== undefined) {\n y2 = Number((y2 + sY).toFixed(2));\n }\n }\n var scaledPath = { x: x, y: y, x1: x1, y1: y1, x2: x2, y2: y2, r1: seg.r1, r2: seg.r2 };\n newSeg = updatedSegment(seg, char, scaledPath, s, sX, sY);\n if (newSeg) {\n arr[i] = newSeg;\n }\n // Record the start of a subpath\n if (char === 'M' || char === 'm') {\n x0 = x;\n y0 = y;\n }\n }\n var pathData = getPathString(arr);\n return pathData;\n}\n/** @private */\nexport function updatedSegment(segment, char, obj, isScale, sX, sY) {\n switch (char) {\n case 'M':\n segment.x = obj.x;\n segment.y = obj.y;\n break;\n case 'L':\n segment.x = obj.x;\n segment.y = obj.y;\n break;\n case 'H':\n segment.x = obj.x;\n break;\n case 'V':\n segment.y = obj.y;\n break;\n case 'C':\n segment.x = obj.x;\n segment.y = obj.y;\n segment.x1 = obj.x1;\n segment.y1 = obj.y1;\n segment.x2 = obj.x2;\n segment.y2 = obj.y2;\n break;\n case 'S':\n segment.x = obj.x;\n segment.y = obj.y;\n segment.x2 = obj.x2;\n segment.y2 = obj.y2;\n break;\n case 'Q':\n segment.x = obj.x;\n segment.y = obj.y;\n segment.x1 = obj.x1;\n segment.y1 = obj.y1;\n break;\n case 'T':\n segment.x = obj.x;\n segment.y = obj.y;\n break;\n case 'A':\n var r1 = obj.r1;\n var r2 = obj.r2;\n if (isScale) {\n obj.r1 = r1 = (r1 * sX);\n obj.r2 = r2 = (r2 * sY);\n }\n segment.x = obj.x;\n segment.y = obj.y;\n segment.r1 = obj.r1;\n segment.r2 = obj.r2;\n break;\n case 'z':\n case 'Z':\n segment = { command: 'Z' };\n break;\n }\n return segment;\n}\n/** @private */\nexport function scalePathData(val, scaleFactor, oldOffset, newOffset) {\n if (val !== oldOffset) {\n if (newOffset !== oldOffset) {\n val = (((val * scaleFactor) - (Number(oldOffset) * scaleFactor - Number(oldOffset)))\n + (newOffset - Number(oldOffset)));\n }\n else {\n val = ((Number(val) * scaleFactor) - (Number(oldOffset) * scaleFactor - Number(oldOffset)));\n }\n }\n else {\n if (newOffset !== oldOffset) {\n val = newOffset;\n }\n }\n return Number(val.toFixed(2));\n}\n/** @private */\nexport function splitArrayCollection(arrayCollection) {\n var x0;\n var y0;\n var x1;\n var y1;\n var x2;\n var y2;\n var x;\n var y;\n var length;\n var i;\n for (x = 0, y = 0, i = 0, length = arrayCollection.length; i < length; ++i) {\n var path = arrayCollection[i];\n var seg = path;\n var char = seg.command;\n if (/[MLHVCSQTA]/.test(char)) {\n if ('x' in seg) {\n seg.x = x = seg.x;\n }\n if ('y' in seg) {\n seg.y = y = seg.y;\n }\n }\n else {\n if ('x1' in seg) {\n seg.x1 = x1 = x + seg.x1;\n }\n if ('x2' in seg) {\n seg.x2 = x2 = x + seg.x2;\n }\n if ('y1' in seg) {\n seg.y1 = y1 = y + seg.y1;\n }\n if ('y2' in seg) {\n seg.y2 = y2 = y + seg.y2;\n }\n if ('x' in seg) {\n seg.x = x += seg.x;\n }\n if ('y' in seg) {\n seg.y = y += seg.y;\n }\n var newSeg = void 0;\n switch (char) {\n case 'm':\n case 'M':\n newSeg = { command: 'M', x: x, y: y };\n break;\n case 'l':\n case 'L':\n newSeg = { command: 'L', x: x, y: y };\n break;\n case 'h':\n case 'H':\n newSeg = { command: 'H', x: x };\n break;\n case 'v':\n case 'V':\n newSeg = { command: 'V', y: y };\n break;\n case 'c':\n case 'C':\n newSeg = { command: 'C', x: x, y: y, x1: x1, y1: y1, x2: x2, y2: y2 };\n break;\n case 's':\n case 'S':\n newSeg = { command: 'S', x: x, y: y, x2: x2, y2: y2 };\n break;\n case 'q':\n case 'Q':\n newSeg = { command: 'Q', x: x, y: y, x1: x1, y1: y1 };\n break;\n case 't':\n case 'T':\n newSeg = { command: 'T', x: x, y: y };\n break;\n case 'a':\n case 'A':\n newSeg = { command: 'A', x: x, y: y };\n newSeg.r1 = seg.r1;\n newSeg.r2 = seg.r2;\n newSeg.angle = seg.angle;\n newSeg.largeArc = seg.largeArc;\n newSeg.sweep = seg.sweep;\n break;\n case 'z':\n case 'Z':\n newSeg = { command: 'Z' };\n x = x0;\n y = y0;\n newSeg = arrayCollection[i];\n break;\n }\n if (newSeg) {\n arrayCollection[i] = newSeg;\n }\n }\n if (char === 'M' || char === 'm') {\n x0 = x;\n y0 = y;\n }\n }\n return arrayCollection;\n}\n/** @private */\nexport function getPathString(arrayCollection) {\n var getNewString = '';\n var i;\n for (i = 0; i < arrayCollection.length; i++) {\n if (i === 0) {\n getNewString += getString(arrayCollection[i]);\n }\n else {\n getNewString += ' ' + getString(arrayCollection[i]);\n }\n }\n return getNewString;\n}\n/** @private */\nexport function getString(obj) {\n var string = '';\n switch (obj.command) {\n case 'Z':\n case 'z':\n string = obj.command;\n break;\n case 'M':\n case 'm':\n case 'L':\n case 'l':\n string = obj.command + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'C':\n case 'c':\n string = obj.command + ' ' + obj.x1 + ' ' + obj.y1 + ' ' + obj.x2 + ' ' + obj.y2 + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'Q':\n case 'q':\n string = obj.command + ' ' + obj.x1 + ' ' + obj.y1 + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'A':\n case 'a':\n var cmd = obj.command;\n var ang = obj.angle;\n var l = (obj.largeArc ? '1' : '0');\n var s = (obj.sweep ? '1' : '0');\n string = cmd + ' ' + obj.r1 + ' ' + obj.r2 + ' ' + ang + ' ' + l + ' ' + s + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'H':\n case 'h':\n string = obj.command + ' ' + obj.x;\n break;\n case 'V':\n case 'v':\n string = obj.command + ' ' + obj.y;\n break;\n case 'S':\n case 's':\n string = obj.command + ' ' + obj.x2 + ' ' + obj.y2 + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'T':\n case 't':\n string = obj.command + ' ' + obj.x + ' ' + obj.y;\n }\n return string;\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\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}","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _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\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _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(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(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(store, parentSub) {\n this.store = store;\n this.parentSub = parentSub;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.handleChangeWrapper = function handleChangeWrapper() {\n if (this.onStateChange) {\n this.onStateChange();\n }\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import React, { useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = new Subscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","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 { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, [\"reactReduxForwardedRef\"]);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var subscription = new Subscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default /*#__PURE__*/createConnect();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return new Subscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(storeState);\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(store.getState());\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production' && !selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return
{counter}
\n * }\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","import { useState, useRef, useEffect } from 'react';\n\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction useMemoOne(getResult, inputs) {\n var initial = useState(function () {\n return {\n inputs: inputs,\n result: getResult()\n };\n })[0];\n var committed = useRef(initial);\n var isInputMatch = Boolean(inputs && committed.current.inputs && areInputsEqual(inputs, committed.current.inputs));\n var cache = isInputMatch ? committed.current : {\n inputs: inputs,\n result: getResult()\n };\n useEffect(function () {\n committed.current = cache;\n }, [cache]);\n return cache.result;\n}\nfunction useCallbackOne(callback, inputs) {\n return useMemoOne(function () {\n return callback;\n }, inputs);\n}\nvar useMemo = useMemoOne;\nvar useCallback = useCallbackOne;\n\nexport { useCallback, useCallbackOne, useMemo, useMemoOne };\n","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };","import invariant from 'tiny-invariant';\n\nvar getRect = function getRect(_ref) {\n var top = _ref.top,\n right = _ref.right,\n bottom = _ref.bottom,\n left = _ref.left;\n var width = right - left;\n var height = bottom - top;\n var rect = {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: width,\n height: height,\n x: left,\n y: top,\n center: {\n x: (right + left) / 2,\n y: (bottom + top) / 2\n }\n };\n return rect;\n};\nvar expand = function expand(target, expandBy) {\n return {\n top: target.top - expandBy.top,\n left: target.left - expandBy.left,\n bottom: target.bottom + expandBy.bottom,\n right: target.right + expandBy.right\n };\n};\nvar shrink = function shrink(target, shrinkBy) {\n return {\n top: target.top + shrinkBy.top,\n left: target.left + shrinkBy.left,\n bottom: target.bottom - shrinkBy.bottom,\n right: target.right - shrinkBy.right\n };\n};\n\nvar shift = function shift(target, shiftBy) {\n return {\n top: target.top + shiftBy.y,\n left: target.left + shiftBy.x,\n bottom: target.bottom + shiftBy.y,\n right: target.right + shiftBy.x\n };\n};\n\nvar noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\nvar createBox = function createBox(_ref2) {\n var borderBox = _ref2.borderBox,\n _ref2$margin = _ref2.margin,\n margin = _ref2$margin === void 0 ? noSpacing : _ref2$margin,\n _ref2$border = _ref2.border,\n border = _ref2$border === void 0 ? noSpacing : _ref2$border,\n _ref2$padding = _ref2.padding,\n padding = _ref2$padding === void 0 ? noSpacing : _ref2$padding;\n var marginBox = getRect(expand(borderBox, margin));\n var paddingBox = getRect(shrink(borderBox, border));\n var contentBox = getRect(shrink(paddingBox, padding));\n return {\n marginBox: marginBox,\n borderBox: getRect(borderBox),\n paddingBox: paddingBox,\n contentBox: contentBox,\n margin: margin,\n border: border,\n padding: padding\n };\n};\n\nvar parse = function parse(raw) {\n var value = raw.slice(0, -2);\n var suffix = raw.slice(-2);\n\n if (suffix !== 'px') {\n return 0;\n }\n\n var result = Number(value);\n !!isNaN(result) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not parse value [raw: \" + raw + \", without suffix: \" + value + \"]\") : invariant(false) : void 0;\n return result;\n};\n\nvar getWindowScroll = function getWindowScroll() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};\n\nvar offset = function offset(original, change) {\n var borderBox = original.borderBox,\n border = original.border,\n margin = original.margin,\n padding = original.padding;\n var shifted = shift(borderBox, change);\n return createBox({\n borderBox: shifted,\n border: border,\n margin: margin,\n padding: padding\n });\n};\nvar withScroll = function withScroll(original, scroll) {\n if (scroll === void 0) {\n scroll = getWindowScroll();\n }\n\n return offset(original, scroll);\n};\nvar calculateBox = function calculateBox(borderBox, styles) {\n var margin = {\n top: parse(styles.marginTop),\n right: parse(styles.marginRight),\n bottom: parse(styles.marginBottom),\n left: parse(styles.marginLeft)\n };\n var padding = {\n top: parse(styles.paddingTop),\n right: parse(styles.paddingRight),\n bottom: parse(styles.paddingBottom),\n left: parse(styles.paddingLeft)\n };\n var border = {\n top: parse(styles.borderTopWidth),\n right: parse(styles.borderRightWidth),\n bottom: parse(styles.borderBottomWidth),\n left: parse(styles.borderLeftWidth)\n };\n return createBox({\n borderBox: borderBox,\n margin: margin,\n padding: padding,\n border: border\n });\n};\nvar getBox = function getBox(el) {\n var borderBox = el.getBoundingClientRect();\n var styles = window.getComputedStyle(el);\n return calculateBox(borderBox, styles);\n};\n\nexport { calculateBox, createBox, expand, getBox, getRect, offset, shrink, withScroll };\n","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","var rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return wrapperFn;\n};\n\nexport default rafSchd;\n","import React, { useLayoutEffect, useEffect, useRef, useState, useContext } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { createStore as createStore$1, applyMiddleware, compose, bindActionCreators } from 'redux';\nimport { Provider, connect } from 'react-redux';\nimport { useMemo, useCallback } from 'use-memo-one';\nimport { getRect, expand, offset, withScroll, getBox, createBox, calculateBox } from 'css-box-model';\nimport memoizeOne from 'memoize-one';\nimport rafSchd from 'raf-schd';\nimport ReactDOM from 'react-dom';\n\nvar isProduction = process.env.NODE_ENV === 'production';\nvar spacesAndTabs = /[ \\t]{2,}/g;\nvar lineStartWithSpaces = /^[ \\t]*/gm;\n\nvar clean = function clean(value) {\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n};\n\nvar getDevMessage = function getDevMessage(message) {\n return clean(\"\\n %creact-beautiful-dnd\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development only message. It will be removed in production builds.\\n\");\n};\n\nvar getFormattedMessage = function getFormattedMessage(message) {\n return [getDevMessage(message), 'color: #00C584; font-size: 1.2em; font-weight: bold;', 'line-height: 1.5', 'color: #723874;'];\n};\nvar isDisabledFlag = '__react-beautiful-dnd-disable-dev-warnings';\nfunction log(type, message) {\n var _console;\n\n if (isProduction) {\n return;\n }\n\n if (typeof window !== 'undefined' && window[isDisabledFlag]) {\n return;\n }\n\n (_console = console)[type].apply(_console, getFormattedMessage(message));\n}\nvar warning = log.bind(null, 'warn');\nvar error = log.bind(null, 'error');\n\nfunction noop() {}\n\nfunction getOptions(shared, fromBinding) {\n return _extends({}, shared, {}, fromBinding);\n}\n\nfunction bindEvents(el, bindings, sharedOptions) {\n var unbindings = bindings.map(function (binding) {\n var options = getOptions(sharedOptions, binding.options);\n el.addEventListener(binding.eventName, binding.fn, options);\n return function unbind() {\n el.removeEventListener(binding.eventName, binding.fn, options);\n };\n });\n return function unbindAll() {\n unbindings.forEach(function (unbind) {\n unbind();\n });\n };\n}\n\nvar isProduction$1 = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction RbdInvariant(message) {\n this.message = message;\n}\n\nRbdInvariant.prototype.toString = function toString() {\n return this.message;\n};\n\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction$1) {\n throw new RbdInvariant(prefix);\n } else {\n throw new RbdInvariant(prefix + \": \" + (message || ''));\n }\n}\n\nvar ErrorBoundary = function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n\n function ErrorBoundary() {\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 _this.callbacks = null;\n _this.unbind = noop;\n\n _this.onWindowError = function (event) {\n var callbacks = _this.getCallbacks();\n\n if (callbacks.isDragging()) {\n callbacks.tryAbort();\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n An error was caught by our window 'error' event listener while a drag was occurring.\\n The active drag has been aborted.\\n \") : void 0;\n }\n\n var err = event.error;\n\n if (err instanceof RbdInvariant) {\n event.preventDefault();\n\n if (process.env.NODE_ENV !== 'production') {\n error(err.message);\n }\n }\n };\n\n _this.getCallbacks = function () {\n if (!_this.callbacks) {\n throw new Error('Unable to find AppCallbacks in ');\n }\n\n return _this.callbacks;\n };\n\n _this.setCallbacks = function (callbacks) {\n _this.callbacks = callbacks;\n };\n\n return _this;\n }\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.unbind = bindEvents(window, [{\n eventName: 'error',\n fn: this.onWindowError\n }]);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.unbind();\n };\n\n _proto.componentDidCatch = function componentDidCatch(err) {\n if (err instanceof RbdInvariant) {\n if (process.env.NODE_ENV !== 'production') {\n error(err.message);\n }\n\n this.setState({});\n return;\n }\n\n throw err;\n };\n\n _proto.render = function render() {\n return this.props.children(this.setCallbacks);\n };\n\n return ErrorBoundary;\n}(React.Component);\n\nvar dragHandleUsageInstructions = \"\\n Press space bar to start a drag.\\n When dragging you can use the arrow keys to move the item around and escape to cancel.\\n Some screen readers may require you to be in focus mode or to use your pass through key\\n\";\n\nvar position = function position(index) {\n return index + 1;\n};\n\nvar onDragStart = function onDragStart(start) {\n return \"\\n You have lifted an item in position \" + position(start.source.index) + \"\\n\";\n};\n\nvar withLocation = function withLocation(source, destination) {\n var isInHomeList = source.droppableId === destination.droppableId;\n var startPosition = position(source.index);\n var endPosition = position(destination.index);\n\n if (isInHomeList) {\n return \"\\n You have moved the item from position \" + startPosition + \"\\n to position \" + endPosition + \"\\n \";\n }\n\n return \"\\n You have moved the item from position \" + startPosition + \"\\n in list \" + source.droppableId + \"\\n to list \" + destination.droppableId + \"\\n in position \" + endPosition + \"\\n \";\n};\n\nvar withCombine = function withCombine(id, source, combine) {\n var inHomeList = source.droppableId === combine.droppableId;\n\n if (inHomeList) {\n return \"\\n The item \" + id + \"\\n has been combined with \" + combine.draggableId;\n }\n\n return \"\\n The item \" + id + \"\\n in list \" + source.droppableId + \"\\n has been combined with \" + combine.draggableId + \"\\n in list \" + combine.droppableId + \"\\n \";\n};\n\nvar onDragUpdate = function onDragUpdate(update) {\n var location = update.destination;\n\n if (location) {\n return withLocation(update.source, location);\n }\n\n var combine = update.combine;\n\n if (combine) {\n return withCombine(update.draggableId, update.source, combine);\n }\n\n return 'You are over an area that cannot be dropped on';\n};\n\nvar returnedToStart = function returnedToStart(source) {\n return \"\\n The item has returned to its starting position\\n of \" + position(source.index) + \"\\n\";\n};\n\nvar onDragEnd = function onDragEnd(result) {\n if (result.reason === 'CANCEL') {\n return \"\\n Movement cancelled.\\n \" + returnedToStart(result.source) + \"\\n \";\n }\n\n var location = result.destination;\n var combine = result.combine;\n\n if (location) {\n return \"\\n You have dropped the item.\\n \" + withLocation(result.source, location) + \"\\n \";\n }\n\n if (combine) {\n return \"\\n You have dropped the item.\\n \" + withCombine(result.draggableId, result.source, combine) + \"\\n \";\n }\n\n return \"\\n The item has been dropped while not over a drop area.\\n \" + returnedToStart(result.source) + \"\\n \";\n};\n\nvar preset = {\n dragHandleUsageInstructions: dragHandleUsageInstructions,\n onDragStart: onDragStart,\n onDragUpdate: onDragUpdate,\n onDragEnd: onDragEnd\n};\n\nvar origin = {\n x: 0,\n y: 0\n};\nvar add = function add(point1, point2) {\n return {\n x: point1.x + point2.x,\n y: point1.y + point2.y\n };\n};\nvar subtract = function subtract(point1, point2) {\n return {\n x: point1.x - point2.x,\n y: point1.y - point2.y\n };\n};\nvar isEqual = function isEqual(point1, point2) {\n return point1.x === point2.x && point1.y === point2.y;\n};\nvar negate = function negate(point) {\n return {\n x: point.x !== 0 ? -point.x : 0,\n y: point.y !== 0 ? -point.y : 0\n };\n};\nvar patch = function patch(line, value, otherValue) {\n var _ref;\n\n if (otherValue === void 0) {\n otherValue = 0;\n }\n\n return _ref = {}, _ref[line] = value, _ref[line === 'x' ? 'y' : 'x'] = otherValue, _ref;\n};\nvar distance = function distance(point1, point2) {\n return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\n};\nvar closest = function closest(target, points) {\n return Math.min.apply(Math, points.map(function (point) {\n return distance(target, point);\n }));\n};\nvar apply = function apply(fn) {\n return function (point) {\n return {\n x: fn(point.x),\n y: fn(point.y)\n };\n };\n};\n\nvar executeClip = (function (frame, subject) {\n var result = getRect({\n top: Math.max(subject.top, frame.top),\n right: Math.min(subject.right, frame.right),\n bottom: Math.min(subject.bottom, frame.bottom),\n left: Math.max(subject.left, frame.left)\n });\n\n if (result.width <= 0 || result.height <= 0) {\n return null;\n }\n\n return result;\n});\n\nvar offsetByPosition = function offsetByPosition(spacing, point) {\n return {\n top: spacing.top + point.y,\n left: spacing.left + point.x,\n bottom: spacing.bottom + point.y,\n right: spacing.right + point.x\n };\n};\nvar getCorners = function getCorners(spacing) {\n return [{\n x: spacing.left,\n y: spacing.top\n }, {\n x: spacing.right,\n y: spacing.top\n }, {\n x: spacing.left,\n y: spacing.bottom\n }, {\n x: spacing.right,\n y: spacing.bottom\n }];\n};\nvar noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\n\nvar scroll = function scroll(target, frame) {\n if (!frame) {\n return target;\n }\n\n return offsetByPosition(target, frame.scroll.diff.displacement);\n};\n\nvar increase = function increase(target, axis, withPlaceholder) {\n if (withPlaceholder && withPlaceholder.increasedBy) {\n var _extends2;\n\n return _extends({}, target, (_extends2 = {}, _extends2[axis.end] = target[axis.end] + withPlaceholder.increasedBy[axis.line], _extends2));\n }\n\n return target;\n};\n\nvar clip = function clip(target, frame) {\n if (frame && frame.shouldClipSubject) {\n return executeClip(frame.pageMarginBox, target);\n }\n\n return getRect(target);\n};\n\nvar getSubject = (function (_ref) {\n var page = _ref.page,\n withPlaceholder = _ref.withPlaceholder,\n axis = _ref.axis,\n frame = _ref.frame;\n var scrolled = scroll(page.marginBox, frame);\n var increased = increase(scrolled, axis, withPlaceholder);\n var clipped = clip(increased, frame);\n return {\n page: page,\n withPlaceholder: withPlaceholder,\n active: clipped\n };\n});\n\nvar scrollDroppable = (function (droppable, newScroll) {\n !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n var scrollable = droppable.frame;\n var scrollDiff = subtract(newScroll, scrollable.scroll.initial);\n var scrollDisplacement = negate(scrollDiff);\n\n var frame = _extends({}, scrollable, {\n scroll: {\n initial: scrollable.scroll.initial,\n current: newScroll,\n diff: {\n value: scrollDiff,\n displacement: scrollDisplacement\n },\n max: scrollable.scroll.max\n }\n });\n\n var subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: droppable.subject.withPlaceholder,\n axis: droppable.axis,\n frame: frame\n });\n\n var result = _extends({}, droppable, {\n frame: frame,\n subject: subject\n });\n\n return result;\n});\n\nfunction isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\nfunction values(map) {\n if (Object.values) {\n return Object.values(map);\n }\n\n return Object.keys(map).map(function (key) {\n return map[key];\n });\n}\nfunction findIndex(list, predicate) {\n if (list.findIndex) {\n return list.findIndex(predicate);\n }\n\n for (var i = 0; i < list.length; i++) {\n if (predicate(list[i])) {\n return i;\n }\n }\n\n return -1;\n}\nfunction find(list, predicate) {\n if (list.find) {\n return list.find(predicate);\n }\n\n var index = findIndex(list, predicate);\n\n if (index !== -1) {\n return list[index];\n }\n\n return undefined;\n}\nfunction toArray(list) {\n return Array.prototype.slice.call(list);\n}\n\nvar toDroppableMap = memoizeOne(function (droppables) {\n return droppables.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n});\nvar toDraggableMap = memoizeOne(function (draggables) {\n return draggables.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n});\nvar toDroppableList = memoizeOne(function (droppables) {\n return values(droppables);\n});\nvar toDraggableList = memoizeOne(function (draggables) {\n return values(draggables);\n});\n\nvar getDraggablesInsideDroppable = memoizeOne(function (droppableId, draggables) {\n var result = toDraggableList(draggables).filter(function (draggable) {\n return droppableId === draggable.descriptor.droppableId;\n }).sort(function (a, b) {\n return a.descriptor.index - b.descriptor.index;\n });\n return result;\n});\n\nfunction tryGetDestination(impact) {\n if (impact.at && impact.at.type === 'REORDER') {\n return impact.at.destination;\n }\n\n return null;\n}\nfunction tryGetCombine(impact) {\n if (impact.at && impact.at.type === 'COMBINE') {\n return impact.at.combine;\n }\n\n return null;\n}\n\nvar removeDraggableFromList = memoizeOne(function (remove, list) {\n return list.filter(function (item) {\n return item.descriptor.id !== remove.descriptor.id;\n });\n});\n\nvar moveToNextCombine = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggable = _ref.draggable,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact;\n\n if (!destination.isCombineEnabled) {\n return null;\n }\n\n var location = tryGetDestination(previousImpact);\n\n if (!location) {\n return null;\n }\n\n function getImpact(target) {\n var at = {\n type: 'COMBINE',\n combine: {\n draggableId: target,\n droppableId: destination.descriptor.id\n }\n };\n return _extends({}, previousImpact, {\n at: at\n });\n }\n\n var all = previousImpact.displaced.all;\n var closestId = all.length ? all[0] : null;\n\n if (isMovingForward) {\n return closestId ? getImpact(closestId) : null;\n }\n\n var withoutDraggable = removeDraggableFromList(draggable, insideDestination);\n\n if (!closestId) {\n if (!withoutDraggable.length) {\n return null;\n }\n\n var last = withoutDraggable[withoutDraggable.length - 1];\n return getImpact(last.descriptor.id);\n }\n\n var indexOfClosest = findIndex(withoutDraggable, function (d) {\n return d.descriptor.id === closestId;\n });\n !(indexOfClosest !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find displaced item in set') : invariant(false) : void 0;\n var proposedIndex = indexOfClosest - 1;\n\n if (proposedIndex < 0) {\n return null;\n }\n\n var before = withoutDraggable[proposedIndex];\n return getImpact(before.descriptor.id);\n});\n\nvar isHomeOf = (function (draggable, destination) {\n return draggable.descriptor.droppableId === destination.descriptor.id;\n});\n\nvar noDisplacedBy = {\n point: origin,\n value: 0\n};\nvar emptyGroups = {\n invisible: {},\n visible: {},\n all: []\n};\nvar noImpact = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy,\n at: null\n};\n\nvar isWithin = (function (lowerBound, upperBound) {\n return function (value) {\n return lowerBound <= value && value <= upperBound;\n };\n});\n\nvar isPartiallyVisibleThroughFrame = (function (frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function (subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n\n if (isContained) {\n return true;\n }\n\n var isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n var isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n var isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n\n if (isPartiallyContained) {\n return true;\n }\n\n var isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n var isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n var isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n\n if (isTargetBiggerThanFrame) {\n return true;\n }\n\n var isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n return isTargetBiggerOnOneAxis;\n };\n});\n\nvar isTotallyVisibleThroughFrame = (function (frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function (subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n return isContained;\n };\n});\n\nvar vertical = {\n direction: 'vertical',\n line: 'y',\n crossAxisLine: 'x',\n start: 'top',\n end: 'bottom',\n size: 'height',\n crossAxisStart: 'left',\n crossAxisEnd: 'right',\n crossAxisSize: 'width'\n};\nvar horizontal = {\n direction: 'horizontal',\n line: 'x',\n crossAxisLine: 'y',\n start: 'left',\n end: 'right',\n size: 'width',\n crossAxisStart: 'top',\n crossAxisEnd: 'bottom',\n crossAxisSize: 'height'\n};\n\nvar isTotallyVisibleThroughFrameOnAxis = (function (axis) {\n return function (frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function (subject) {\n if (axis === vertical) {\n return isWithinVertical(subject.top) && isWithinVertical(subject.bottom);\n }\n\n return isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n };\n };\n});\n\nvar getDroppableDisplaced = function getDroppableDisplaced(target, destination) {\n var displacement = destination.frame ? destination.frame.scroll.diff.displacement : origin;\n return offsetByPosition(target, displacement);\n};\n\nvar isVisibleInDroppable = function isVisibleInDroppable(target, destination, isVisibleThroughFrameFn) {\n if (!destination.subject.active) {\n return false;\n }\n\n return isVisibleThroughFrameFn(destination.subject.active)(target);\n};\n\nvar isVisibleInViewport = function isVisibleInViewport(target, viewport, isVisibleThroughFrameFn) {\n return isVisibleThroughFrameFn(viewport)(target);\n};\n\nvar isVisible = function isVisible(_ref) {\n var toBeDisplaced = _ref.target,\n destination = _ref.destination,\n viewport = _ref.viewport,\n withDroppableDisplacement = _ref.withDroppableDisplacement,\n isVisibleThroughFrameFn = _ref.isVisibleThroughFrameFn;\n var displacedTarget = withDroppableDisplacement ? getDroppableDisplaced(toBeDisplaced, destination) : toBeDisplaced;\n return isVisibleInDroppable(displacedTarget, destination, isVisibleThroughFrameFn) && isVisibleInViewport(displacedTarget, viewport, isVisibleThroughFrameFn);\n};\n\nvar isPartiallyVisible = function isPartiallyVisible(args) {\n return isVisible(_extends({}, args, {\n isVisibleThroughFrameFn: isPartiallyVisibleThroughFrame\n }));\n};\nvar isTotallyVisible = function isTotallyVisible(args) {\n return isVisible(_extends({}, args, {\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrame\n }));\n};\nvar isTotallyVisibleOnAxis = function isTotallyVisibleOnAxis(args) {\n return isVisible(_extends({}, args, {\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrameOnAxis(args.destination.axis)\n }));\n};\n\nvar getShouldAnimate = function getShouldAnimate(id, last, forceShouldAnimate) {\n if (typeof forceShouldAnimate === 'boolean') {\n return forceShouldAnimate;\n }\n\n if (!last) {\n return true;\n }\n\n var invisible = last.invisible,\n visible = last.visible;\n\n if (invisible[id]) {\n return false;\n }\n\n var previous = visible[id];\n return previous ? previous.shouldAnimate : true;\n};\n\nfunction getTarget(draggable, displacedBy) {\n var marginBox = draggable.page.marginBox;\n var expandBy = {\n top: displacedBy.point.y,\n right: 0,\n bottom: 0,\n left: displacedBy.point.x\n };\n return getRect(expand(marginBox, expandBy));\n}\n\nfunction getDisplacementGroups(_ref) {\n var afterDragging = _ref.afterDragging,\n destination = _ref.destination,\n displacedBy = _ref.displacedBy,\n viewport = _ref.viewport,\n forceShouldAnimate = _ref.forceShouldAnimate,\n last = _ref.last;\n return afterDragging.reduce(function process(groups, draggable) {\n var target = getTarget(draggable, displacedBy);\n var id = draggable.descriptor.id;\n groups.all.push(id);\n var isVisible = isPartiallyVisible({\n target: target,\n destination: destination,\n viewport: viewport,\n withDroppableDisplacement: true\n });\n\n if (!isVisible) {\n groups.invisible[draggable.descriptor.id] = true;\n return groups;\n }\n\n var shouldAnimate = getShouldAnimate(id, last, forceShouldAnimate);\n var displacement = {\n draggableId: id,\n shouldAnimate: shouldAnimate\n };\n groups.visible[id] = displacement;\n return groups;\n }, {\n all: [],\n visible: {},\n invisible: {}\n });\n}\n\nfunction getIndexOfLastItem(draggables, options) {\n if (!draggables.length) {\n return 0;\n }\n\n var indexOfLastItem = draggables[draggables.length - 1].descriptor.index;\n return options.inHomeList ? indexOfLastItem : indexOfLastItem + 1;\n}\n\nfunction goAtEnd(_ref) {\n var insideDestination = _ref.insideDestination,\n inHomeList = _ref.inHomeList,\n displacedBy = _ref.displacedBy,\n destination = _ref.destination;\n var newIndex = getIndexOfLastItem(insideDestination, {\n inHomeList: inHomeList\n });\n return {\n displaced: emptyGroups,\n displacedBy: displacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: newIndex\n }\n }\n };\n}\n\nfunction calculateReorderImpact(_ref2) {\n var draggable = _ref2.draggable,\n insideDestination = _ref2.insideDestination,\n destination = _ref2.destination,\n viewport = _ref2.viewport,\n displacedBy = _ref2.displacedBy,\n last = _ref2.last,\n index = _ref2.index,\n forceShouldAnimate = _ref2.forceShouldAnimate;\n var inHomeList = isHomeOf(draggable, destination);\n\n if (index == null) {\n return goAtEnd({\n insideDestination: insideDestination,\n inHomeList: inHomeList,\n displacedBy: displacedBy,\n destination: destination\n });\n }\n\n var match = find(insideDestination, function (item) {\n return item.descriptor.index === index;\n });\n\n if (!match) {\n return goAtEnd({\n insideDestination: insideDestination,\n inHomeList: inHomeList,\n displacedBy: displacedBy,\n destination: destination\n });\n }\n\n var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n var sliceFrom = insideDestination.indexOf(match);\n var impacted = withoutDragging.slice(sliceFrom);\n var displaced = getDisplacementGroups({\n afterDragging: impacted,\n destination: destination,\n displacedBy: displacedBy,\n last: last,\n viewport: viewport.frame,\n forceShouldAnimate: forceShouldAnimate\n });\n return {\n displaced: displaced,\n displacedBy: displacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: index\n }\n }\n };\n}\n\nfunction didStartAfterCritical(draggableId, afterCritical) {\n return Boolean(afterCritical.effected[draggableId]);\n}\n\nvar fromCombine = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n destination = _ref.destination,\n draggables = _ref.draggables,\n combine = _ref.combine,\n afterCritical = _ref.afterCritical;\n\n if (!destination.isCombineEnabled) {\n return null;\n }\n\n var combineId = combine.draggableId;\n var combineWith = draggables[combineId];\n var combineWithIndex = combineWith.descriptor.index;\n var didCombineWithStartAfterCritical = didStartAfterCritical(combineId, afterCritical);\n\n if (didCombineWithStartAfterCritical) {\n if (isMovingForward) {\n return combineWithIndex;\n }\n\n return combineWithIndex - 1;\n }\n\n if (isMovingForward) {\n return combineWithIndex + 1;\n }\n\n return combineWithIndex;\n});\n\nvar fromReorder = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n isInHomeList = _ref.isInHomeList,\n insideDestination = _ref.insideDestination,\n location = _ref.location;\n\n if (!insideDestination.length) {\n return null;\n }\n\n var currentIndex = location.index;\n var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n var firstIndex = insideDestination[0].descriptor.index;\n var lastIndex = insideDestination[insideDestination.length - 1].descriptor.index;\n var upperBound = isInHomeList ? lastIndex : lastIndex + 1;\n\n if (proposedIndex < firstIndex) {\n return null;\n }\n\n if (proposedIndex > upperBound) {\n return null;\n }\n\n return proposedIndex;\n});\n\nvar moveToNextIndex = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n isInHomeList = _ref.isInHomeList,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var wasAt = previousImpact.at;\n !wasAt ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot move in direction without previous impact location') : invariant(false) : void 0;\n\n if (wasAt.type === 'REORDER') {\n var _newIndex = fromReorder({\n isMovingForward: isMovingForward,\n isInHomeList: isInHomeList,\n location: wasAt.destination,\n insideDestination: insideDestination\n });\n\n if (_newIndex == null) {\n return null;\n }\n\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: _newIndex\n });\n }\n\n var newIndex = fromCombine({\n isMovingForward: isMovingForward,\n destination: destination,\n displaced: previousImpact.displaced,\n draggables: draggables,\n combine: wasAt.combine,\n afterCritical: afterCritical\n });\n\n if (newIndex == null) {\n return null;\n }\n\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: newIndex\n });\n});\n\nvar getCombinedItemDisplacement = (function (_ref) {\n var displaced = _ref.displaced,\n afterCritical = _ref.afterCritical,\n combineWith = _ref.combineWith,\n displacedBy = _ref.displacedBy;\n var isDisplaced = Boolean(displaced.visible[combineWith] || displaced.invisible[combineWith]);\n\n if (didStartAfterCritical(combineWith, afterCritical)) {\n return isDisplaced ? origin : negate(displacedBy.point);\n }\n\n return isDisplaced ? displacedBy.point : origin;\n});\n\nvar whenCombining = (function (_ref) {\n var afterCritical = _ref.afterCritical,\n impact = _ref.impact,\n draggables = _ref.draggables;\n var combine = tryGetCombine(impact);\n !combine ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n var combineWith = combine.draggableId;\n var center = draggables[combineWith].page.borderBox.center;\n var displaceBy = getCombinedItemDisplacement({\n displaced: impact.displaced,\n afterCritical: afterCritical,\n combineWith: combineWith,\n displacedBy: impact.displacedBy\n });\n return add(center, displaceBy);\n});\n\nvar distanceFromStartToBorderBoxCenter = function distanceFromStartToBorderBoxCenter(axis, box) {\n return box.margin[axis.start] + box.borderBox[axis.size] / 2;\n};\n\nvar distanceFromEndToBorderBoxCenter = function distanceFromEndToBorderBoxCenter(axis, box) {\n return box.margin[axis.end] + box.borderBox[axis.size] / 2;\n};\n\nvar getCrossAxisBorderBoxCenter = function getCrossAxisBorderBoxCenter(axis, target, isMoving) {\n return target[axis.crossAxisStart] + isMoving.margin[axis.crossAxisStart] + isMoving.borderBox[axis.crossAxisSize] / 2;\n};\n\nvar goAfter = function goAfter(_ref) {\n var axis = _ref.axis,\n moveRelativeTo = _ref.moveRelativeTo,\n isMoving = _ref.isMoving;\n return patch(axis.line, moveRelativeTo.marginBox[axis.end] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goBefore = function goBefore(_ref2) {\n var axis = _ref2.axis,\n moveRelativeTo = _ref2.moveRelativeTo,\n isMoving = _ref2.isMoving;\n return patch(axis.line, moveRelativeTo.marginBox[axis.start] - distanceFromEndToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goIntoStart = function goIntoStart(_ref3) {\n var axis = _ref3.axis,\n moveInto = _ref3.moveInto,\n isMoving = _ref3.isMoving;\n return patch(axis.line, moveInto.contentBox[axis.start] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveInto.contentBox, isMoving));\n};\n\nvar whenReordering = (function (_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppable = _ref.droppable,\n afterCritical = _ref.afterCritical;\n var insideDestination = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n var draggablePage = draggable.page;\n var axis = droppable.axis;\n\n if (!insideDestination.length) {\n return goIntoStart({\n axis: axis,\n moveInto: droppable.page,\n isMoving: draggablePage\n });\n }\n\n var displaced = impact.displaced,\n displacedBy = impact.displacedBy;\n var closestAfter = displaced.all[0];\n\n if (closestAfter) {\n var closest = draggables[closestAfter];\n\n if (didStartAfterCritical(closestAfter, afterCritical)) {\n return goBefore({\n axis: axis,\n moveRelativeTo: closest.page,\n isMoving: draggablePage\n });\n }\n\n var withDisplacement = offset(closest.page, displacedBy.point);\n return goBefore({\n axis: axis,\n moveRelativeTo: withDisplacement,\n isMoving: draggablePage\n });\n }\n\n var last = insideDestination[insideDestination.length - 1];\n\n if (last.descriptor.id === draggable.descriptor.id) {\n return draggablePage.borderBox.center;\n }\n\n if (didStartAfterCritical(last.descriptor.id, afterCritical)) {\n var page = offset(last.page, negate(afterCritical.displacedBy.point));\n return goAfter({\n axis: axis,\n moveRelativeTo: page,\n isMoving: draggablePage\n });\n }\n\n return goAfter({\n axis: axis,\n moveRelativeTo: last.page,\n isMoving: draggablePage\n });\n});\n\nvar withDroppableDisplacement = (function (droppable, point) {\n var frame = droppable.frame;\n\n if (!frame) {\n return point;\n }\n\n return add(point, frame.scroll.diff.displacement);\n});\n\nvar getResultWithoutDroppableDisplacement = function getResultWithoutDroppableDisplacement(_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n draggables = _ref.draggables,\n afterCritical = _ref.afterCritical;\n var original = draggable.page.borderBox.center;\n var at = impact.at;\n\n if (!droppable) {\n return original;\n }\n\n if (!at) {\n return original;\n }\n\n if (at.type === 'REORDER') {\n return whenReordering({\n impact: impact,\n draggable: draggable,\n draggables: draggables,\n droppable: droppable,\n afterCritical: afterCritical\n });\n }\n\n return whenCombining({\n impact: impact,\n draggables: draggables,\n afterCritical: afterCritical\n });\n};\n\nvar getPageBorderBoxCenterFromImpact = (function (args) {\n var withoutDisplacement = getResultWithoutDroppableDisplacement(args);\n var droppable = args.droppable;\n var withDisplacement = droppable ? withDroppableDisplacement(droppable, withoutDisplacement) : withoutDisplacement;\n return withDisplacement;\n});\n\nvar scrollViewport = (function (viewport, newScroll) {\n var diff = subtract(newScroll, viewport.scroll.initial);\n var displacement = negate(diff);\n var frame = getRect({\n top: newScroll.y,\n bottom: newScroll.y + viewport.frame.height,\n left: newScroll.x,\n right: newScroll.x + viewport.frame.width\n });\n var updated = {\n frame: frame,\n scroll: {\n initial: viewport.scroll.initial,\n max: viewport.scroll.max,\n current: newScroll,\n diff: {\n value: diff,\n displacement: displacement\n }\n }\n };\n return updated;\n});\n\nfunction getDraggables(ids, draggables) {\n return ids.map(function (id) {\n return draggables[id];\n });\n}\n\nfunction tryGetVisible(id, groups) {\n for (var i = 0; i < groups.length; i++) {\n var displacement = groups[i].visible[id];\n\n if (displacement) {\n return displacement;\n }\n }\n\n return null;\n}\n\nvar speculativelyIncrease = (function (_ref) {\n var impact = _ref.impact,\n viewport = _ref.viewport,\n destination = _ref.destination,\n draggables = _ref.draggables,\n maxScrollChange = _ref.maxScrollChange;\n var scrolledViewport = scrollViewport(viewport, add(viewport.scroll.current, maxScrollChange));\n var scrolledDroppable = destination.frame ? scrollDroppable(destination, add(destination.frame.scroll.current, maxScrollChange)) : destination;\n var last = impact.displaced;\n var withViewportScroll = getDisplacementGroups({\n afterDragging: getDraggables(last.all, draggables),\n destination: destination,\n displacedBy: impact.displacedBy,\n viewport: scrolledViewport.frame,\n last: last,\n forceShouldAnimate: false\n });\n var withDroppableScroll = getDisplacementGroups({\n afterDragging: getDraggables(last.all, draggables),\n destination: scrolledDroppable,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n last: last,\n forceShouldAnimate: false\n });\n var invisible = {};\n var visible = {};\n var groups = [last, withViewportScroll, withDroppableScroll];\n last.all.forEach(function (id) {\n var displacement = tryGetVisible(id, groups);\n\n if (displacement) {\n visible[id] = displacement;\n return;\n }\n\n invisible[id] = true;\n });\n\n var newImpact = _extends({}, impact, {\n displaced: {\n all: last.all,\n invisible: invisible,\n visible: visible\n }\n });\n\n return newImpact;\n});\n\nvar withViewportDisplacement = (function (viewport, point) {\n return add(viewport.scroll.diff.displacement, point);\n});\n\nvar getClientFromPageBorderBoxCenter = (function (_ref) {\n var pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n draggable = _ref.draggable,\n viewport = _ref.viewport;\n var withoutPageScrollChange = withViewportDisplacement(viewport, pageBorderBoxCenter);\n var offset = subtract(withoutPageScrollChange, draggable.page.borderBox.center);\n return add(draggable.client.borderBox.center, offset);\n});\n\nvar isTotallyVisibleInNewLocation = (function (_ref) {\n var draggable = _ref.draggable,\n destination = _ref.destination,\n newPageBorderBoxCenter = _ref.newPageBorderBoxCenter,\n viewport = _ref.viewport,\n withDroppableDisplacement = _ref.withDroppableDisplacement,\n _ref$onlyOnMainAxis = _ref.onlyOnMainAxis,\n onlyOnMainAxis = _ref$onlyOnMainAxis === void 0 ? false : _ref$onlyOnMainAxis;\n var changeNeeded = subtract(newPageBorderBoxCenter, draggable.page.borderBox.center);\n var shifted = offsetByPosition(draggable.page.borderBox, changeNeeded);\n var args = {\n target: shifted,\n destination: destination,\n withDroppableDisplacement: withDroppableDisplacement,\n viewport: viewport\n };\n return onlyOnMainAxis ? isTotallyVisibleOnAxis(args) : isTotallyVisible(args);\n});\n\nvar moveToNextPlace = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggable = _ref.draggable,\n destination = _ref.destination,\n draggables = _ref.draggables,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport,\n previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n previousClientSelection = _ref.previousClientSelection,\n afterCritical = _ref.afterCritical;\n\n if (!destination.isEnabled) {\n return null;\n }\n\n var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n var isInHomeList = isHomeOf(draggable, destination);\n var impact = moveToNextCombine({\n isMovingForward: isMovingForward,\n draggable: draggable,\n destination: destination,\n insideDestination: insideDestination,\n previousImpact: previousImpact\n }) || moveToNextIndex({\n isMovingForward: isMovingForward,\n isInHomeList: isInHomeList,\n draggable: draggable,\n draggables: draggables,\n destination: destination,\n insideDestination: insideDestination,\n previousImpact: previousImpact,\n viewport: viewport,\n afterCritical: afterCritical\n });\n\n if (!impact) {\n return null;\n }\n\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: impact,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n afterCritical: afterCritical\n });\n var isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n draggable: draggable,\n destination: destination,\n newPageBorderBoxCenter: pageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n\n if (isVisibleInNewLocation) {\n var clientSelection = getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter: pageBorderBoxCenter,\n draggable: draggable,\n viewport: viewport\n });\n return {\n clientSelection: clientSelection,\n impact: impact,\n scrollJumpRequest: null\n };\n }\n\n var distance = subtract(pageBorderBoxCenter, previousPageBorderBoxCenter);\n var cautious = speculativelyIncrease({\n impact: impact,\n viewport: viewport,\n destination: destination,\n draggables: draggables,\n maxScrollChange: distance\n });\n return {\n clientSelection: previousClientSelection,\n impact: cautious,\n scrollJumpRequest: distance\n };\n});\n\nvar getKnownActive = function getKnownActive(droppable) {\n var rect = droppable.subject.active;\n !rect ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get clipped area from droppable') : invariant(false) : void 0;\n return rect;\n};\n\nvar getBestCrossAxisDroppable = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n source = _ref.source,\n droppables = _ref.droppables,\n viewport = _ref.viewport;\n var active = source.subject.active;\n\n if (!active) {\n return null;\n }\n\n var axis = source.axis;\n var isBetweenSourceClipped = isWithin(active[axis.start], active[axis.end]);\n var candidates = toDroppableList(droppables).filter(function (droppable) {\n return droppable !== source;\n }).filter(function (droppable) {\n return droppable.isEnabled;\n }).filter(function (droppable) {\n return Boolean(droppable.subject.active);\n }).filter(function (droppable) {\n return isPartiallyVisibleThroughFrame(viewport.frame)(getKnownActive(droppable));\n }).filter(function (droppable) {\n var activeOfTarget = getKnownActive(droppable);\n\n if (isMovingForward) {\n return active[axis.crossAxisEnd] < activeOfTarget[axis.crossAxisEnd];\n }\n\n return activeOfTarget[axis.crossAxisStart] < active[axis.crossAxisStart];\n }).filter(function (droppable) {\n var activeOfTarget = getKnownActive(droppable);\n var isBetweenDestinationClipped = isWithin(activeOfTarget[axis.start], activeOfTarget[axis.end]);\n return isBetweenSourceClipped(activeOfTarget[axis.start]) || isBetweenSourceClipped(activeOfTarget[axis.end]) || isBetweenDestinationClipped(active[axis.start]) || isBetweenDestinationClipped(active[axis.end]);\n }).sort(function (a, b) {\n var first = getKnownActive(a)[axis.crossAxisStart];\n var second = getKnownActive(b)[axis.crossAxisStart];\n\n if (isMovingForward) {\n return first - second;\n }\n\n return second - first;\n }).filter(function (droppable, index, array) {\n return getKnownActive(droppable)[axis.crossAxisStart] === getKnownActive(array[0])[axis.crossAxisStart];\n });\n\n if (!candidates.length) {\n return null;\n }\n\n if (candidates.length === 1) {\n return candidates[0];\n }\n\n var contains = candidates.filter(function (droppable) {\n var isWithinDroppable = isWithin(getKnownActive(droppable)[axis.start], getKnownActive(droppable)[axis.end]);\n return isWithinDroppable(pageBorderBoxCenter[axis.line]);\n });\n\n if (contains.length === 1) {\n return contains[0];\n }\n\n if (contains.length > 1) {\n return contains.sort(function (a, b) {\n return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n })[0];\n }\n\n return candidates.sort(function (a, b) {\n var first = closest(pageBorderBoxCenter, getCorners(getKnownActive(a)));\n var second = closest(pageBorderBoxCenter, getCorners(getKnownActive(b)));\n\n if (first !== second) {\n return first - second;\n }\n\n return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n })[0];\n});\n\nvar getCurrentPageBorderBoxCenter = function getCurrentPageBorderBoxCenter(draggable, afterCritical) {\n var original = draggable.page.borderBox.center;\n return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? subtract(original, afterCritical.displacedBy.point) : original;\n};\nvar getCurrentPageBorderBox = function getCurrentPageBorderBox(draggable, afterCritical) {\n var original = draggable.page.borderBox;\n return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? offsetByPosition(original, negate(afterCritical.displacedBy.point)) : original;\n};\n\nvar getClosestDraggable = (function (_ref) {\n var pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n viewport = _ref.viewport,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n afterCritical = _ref.afterCritical;\n var sorted = insideDestination.filter(function (draggable) {\n return isTotallyVisible({\n target: getCurrentPageBorderBox(draggable, afterCritical),\n destination: destination,\n viewport: viewport.frame,\n withDroppableDisplacement: true\n });\n }).sort(function (a, b) {\n var distanceToA = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(a, afterCritical)));\n var distanceToB = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(b, afterCritical)));\n\n if (distanceToA < distanceToB) {\n return -1;\n }\n\n if (distanceToB < distanceToA) {\n return 1;\n }\n\n return a.descriptor.index - b.descriptor.index;\n });\n return sorted[0] || null;\n});\n\nvar getDisplacedBy = memoizeOne(function getDisplacedBy(axis, displaceBy) {\n var displacement = displaceBy[axis.line];\n return {\n value: displacement,\n point: patch(axis.line, displacement)\n };\n});\n\nvar getRequiredGrowthForPlaceholder = function getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables) {\n var axis = droppable.axis;\n\n if (droppable.descriptor.mode === 'virtual') {\n return patch(axis.line, placeholderSize[axis.line]);\n }\n\n var availableSpace = droppable.subject.page.contentBox[axis.size];\n var insideDroppable = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n var spaceUsed = insideDroppable.reduce(function (sum, dimension) {\n return sum + dimension.client.marginBox[axis.size];\n }, 0);\n var requiredSpace = spaceUsed + placeholderSize[axis.line];\n var needsToGrowBy = requiredSpace - availableSpace;\n\n if (needsToGrowBy <= 0) {\n return null;\n }\n\n return patch(axis.line, needsToGrowBy);\n};\n\nvar withMaxScroll = function withMaxScroll(frame, max) {\n return _extends({}, frame, {\n scroll: _extends({}, frame.scroll, {\n max: max\n })\n });\n};\n\nvar addPlaceholder = function addPlaceholder(droppable, draggable, draggables) {\n var frame = droppable.frame;\n !!isHomeOf(draggable, droppable) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should not add placeholder space to home list') : invariant(false) : void 0;\n !!droppable.subject.withPlaceholder ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot add placeholder size to a subject when it already has one') : invariant(false) : void 0;\n var placeholderSize = getDisplacedBy(droppable.axis, draggable.displaceBy).point;\n var requiredGrowth = getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables);\n var added = {\n placeholderSize: placeholderSize,\n increasedBy: requiredGrowth,\n oldFrameMaxScroll: droppable.frame ? droppable.frame.scroll.max : null\n };\n\n if (!frame) {\n var _subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: added,\n axis: droppable.axis,\n frame: droppable.frame\n });\n\n return _extends({}, droppable, {\n subject: _subject\n });\n }\n\n var maxScroll = requiredGrowth ? add(frame.scroll.max, requiredGrowth) : frame.scroll.max;\n var newFrame = withMaxScroll(frame, maxScroll);\n var subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: added,\n axis: droppable.axis,\n frame: newFrame\n });\n return _extends({}, droppable, {\n subject: subject,\n frame: newFrame\n });\n};\nvar removePlaceholder = function removePlaceholder(droppable) {\n var added = droppable.subject.withPlaceholder;\n !added ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot remove placeholder form subject when there was none') : invariant(false) : void 0;\n var frame = droppable.frame;\n\n if (!frame) {\n var _subject2 = getSubject({\n page: droppable.subject.page,\n axis: droppable.axis,\n frame: null,\n withPlaceholder: null\n });\n\n return _extends({}, droppable, {\n subject: _subject2\n });\n }\n\n var oldMaxScroll = added.oldFrameMaxScroll;\n !oldMaxScroll ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected droppable with frame to have old max frame scroll when removing placeholder') : invariant(false) : void 0;\n var newFrame = withMaxScroll(frame, oldMaxScroll);\n var subject = getSubject({\n page: droppable.subject.page,\n axis: droppable.axis,\n frame: newFrame,\n withPlaceholder: null\n });\n return _extends({}, droppable, {\n subject: subject,\n frame: newFrame\n });\n};\n\nvar moveToNewDroppable = (function (_ref) {\n var previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n moveRelativeTo = _ref.moveRelativeTo,\n insideDestination = _ref.insideDestination,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n destination = _ref.destination,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n\n if (!moveRelativeTo) {\n if (insideDestination.length) {\n return null;\n }\n\n var proposed = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: 0\n }\n }\n };\n var proposedPageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: proposed,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n afterCritical: afterCritical\n });\n var withPlaceholder = isHomeOf(draggable, destination) ? destination : addPlaceholder(destination, draggable, draggables);\n var isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n draggable: draggable,\n destination: withPlaceholder,\n newPageBorderBoxCenter: proposedPageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n return isVisibleInNewLocation ? proposed : null;\n }\n\n var isGoingBeforeTarget = Boolean(previousPageBorderBoxCenter[destination.axis.line] <= moveRelativeTo.page.borderBox.center[destination.axis.line]);\n\n var proposedIndex = function () {\n var relativeTo = moveRelativeTo.descriptor.index;\n\n if (moveRelativeTo.descriptor.id === draggable.descriptor.id) {\n return relativeTo;\n }\n\n if (isGoingBeforeTarget) {\n return relativeTo;\n }\n\n return relativeTo + 1;\n }();\n\n var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n displacedBy: displacedBy,\n last: emptyGroups,\n index: proposedIndex\n });\n});\n\nvar moveCrossAxis = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n draggable = _ref.draggable,\n isOver = _ref.isOver,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var destination = getBestCrossAxisDroppable({\n isMovingForward: isMovingForward,\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n source: isOver,\n droppables: droppables,\n viewport: viewport\n });\n\n if (!destination) {\n return null;\n }\n\n var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n var moveRelativeTo = getClosestDraggable({\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n viewport: viewport,\n destination: destination,\n insideDestination: insideDestination,\n afterCritical: afterCritical\n });\n var impact = moveToNewDroppable({\n previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n destination: destination,\n draggable: draggable,\n draggables: draggables,\n moveRelativeTo: moveRelativeTo,\n insideDestination: insideDestination,\n viewport: viewport,\n afterCritical: afterCritical\n });\n\n if (!impact) {\n return null;\n }\n\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: impact,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n afterCritical: afterCritical\n });\n var clientSelection = getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter: pageBorderBoxCenter,\n draggable: draggable,\n viewport: viewport\n });\n return {\n clientSelection: clientSelection,\n impact: impact,\n scrollJumpRequest: null\n };\n});\n\nvar whatIsDraggedOver = (function (impact) {\n var at = impact.at;\n\n if (!at) {\n return null;\n }\n\n if (at.type === 'REORDER') {\n return at.destination.droppableId;\n }\n\n return at.combine.droppableId;\n});\n\nvar getDroppableOver = function getDroppableOver(impact, droppables) {\n var id = whatIsDraggedOver(impact);\n return id ? droppables[id] : null;\n};\n\nvar moveInDirection = (function (_ref) {\n var state = _ref.state,\n type = _ref.type;\n var isActuallyOver = getDroppableOver(state.impact, state.dimensions.droppables);\n var isMainAxisMovementAllowed = Boolean(isActuallyOver);\n var home = state.dimensions.droppables[state.critical.droppable.id];\n var isOver = isActuallyOver || home;\n var direction = isOver.axis.direction;\n var isMovingOnMainAxis = direction === 'vertical' && (type === 'MOVE_UP' || type === 'MOVE_DOWN') || direction === 'horizontal' && (type === 'MOVE_LEFT' || type === 'MOVE_RIGHT');\n\n if (isMovingOnMainAxis && !isMainAxisMovementAllowed) {\n return null;\n }\n\n var isMovingForward = type === 'MOVE_DOWN' || type === 'MOVE_RIGHT';\n var draggable = state.dimensions.draggables[state.critical.draggable.id];\n var previousPageBorderBoxCenter = state.current.page.borderBoxCenter;\n var _state$dimensions = state.dimensions,\n draggables = _state$dimensions.draggables,\n droppables = _state$dimensions.droppables;\n return isMovingOnMainAxis ? moveToNextPlace({\n isMovingForward: isMovingForward,\n previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n draggable: draggable,\n destination: isOver,\n draggables: draggables,\n viewport: state.viewport,\n previousClientSelection: state.current.client.selection,\n previousImpact: state.impact,\n afterCritical: state.afterCritical\n }) : moveCrossAxis({\n isMovingForward: isMovingForward,\n previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n draggable: draggable,\n isOver: isOver,\n draggables: draggables,\n droppables: droppables,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n});\n\nfunction isMovementAllowed(state) {\n return state.phase === 'DRAGGING' || state.phase === 'COLLECTING';\n}\n\nfunction isPositionInFrame(frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function run(point) {\n return isWithinVertical(point.y) && isWithinHorizontal(point.x);\n };\n}\n\nfunction getHasOverlap(first, second) {\n return first.left < second.right && first.right > second.left && first.top < second.bottom && first.bottom > second.top;\n}\n\nfunction getFurthestAway(_ref) {\n var pageBorderBox = _ref.pageBorderBox,\n draggable = _ref.draggable,\n candidates = _ref.candidates;\n var startCenter = draggable.page.borderBox.center;\n var sorted = candidates.map(function (candidate) {\n var axis = candidate.axis;\n var target = patch(candidate.axis.line, pageBorderBox.center[axis.line], candidate.page.borderBox.center[axis.crossAxisLine]);\n return {\n id: candidate.descriptor.id,\n distance: distance(startCenter, target)\n };\n }).sort(function (a, b) {\n return b.distance - a.distance;\n });\n return sorted[0] ? sorted[0].id : null;\n}\n\nfunction getDroppableOver$1(_ref2) {\n var pageBorderBox = _ref2.pageBorderBox,\n draggable = _ref2.draggable,\n droppables = _ref2.droppables;\n var candidates = toDroppableList(droppables).filter(function (item) {\n if (!item.isEnabled) {\n return false;\n }\n\n var active = item.subject.active;\n\n if (!active) {\n return false;\n }\n\n if (!getHasOverlap(pageBorderBox, active)) {\n return false;\n }\n\n if (isPositionInFrame(active)(pageBorderBox.center)) {\n return true;\n }\n\n var axis = item.axis;\n var childCenter = active.center[axis.crossAxisLine];\n var crossAxisStart = pageBorderBox[axis.crossAxisStart];\n var crossAxisEnd = pageBorderBox[axis.crossAxisEnd];\n var isContained = isWithin(active[axis.crossAxisStart], active[axis.crossAxisEnd]);\n var isStartContained = isContained(crossAxisStart);\n var isEndContained = isContained(crossAxisEnd);\n\n if (!isStartContained && !isEndContained) {\n return true;\n }\n\n if (isStartContained) {\n return crossAxisStart < childCenter;\n }\n\n return crossAxisEnd > childCenter;\n });\n\n if (!candidates.length) {\n return null;\n }\n\n if (candidates.length === 1) {\n return candidates[0].descriptor.id;\n }\n\n return getFurthestAway({\n pageBorderBox: pageBorderBox,\n draggable: draggable,\n candidates: candidates\n });\n}\n\nvar offsetRectByPosition = function offsetRectByPosition(rect, point) {\n return getRect(offsetByPosition(rect, point));\n};\n\nvar withDroppableScroll = (function (droppable, area) {\n var frame = droppable.frame;\n\n if (!frame) {\n return area;\n }\n\n return offsetRectByPosition(area, frame.scroll.diff.value);\n});\n\nfunction getIsDisplaced(_ref) {\n var displaced = _ref.displaced,\n id = _ref.id;\n return Boolean(displaced.visible[id] || displaced.invisible[id]);\n}\n\nfunction atIndex(_ref) {\n var draggable = _ref.draggable,\n closest = _ref.closest,\n inHomeList = _ref.inHomeList;\n\n if (!closest) {\n return null;\n }\n\n if (!inHomeList) {\n return closest.descriptor.index;\n }\n\n if (closest.descriptor.index > draggable.descriptor.index) {\n return closest.descriptor.index - 1;\n }\n\n return closest.descriptor.index;\n}\n\nvar getReorderImpact = (function (_ref2) {\n var targetRect = _ref2.pageBorderBoxWithDroppableScroll,\n draggable = _ref2.draggable,\n destination = _ref2.destination,\n insideDestination = _ref2.insideDestination,\n last = _ref2.last,\n viewport = _ref2.viewport,\n afterCritical = _ref2.afterCritical;\n var axis = destination.axis;\n var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n var displacement = displacedBy.value;\n var targetStart = targetRect[axis.start];\n var targetEnd = targetRect[axis.end];\n var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n var closest = find(withoutDragging, function (child) {\n var id = child.descriptor.id;\n var childCenter = child.page.borderBox.center[axis.line];\n var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n var isDisplaced = getIsDisplaced({\n displaced: last,\n id: id\n });\n\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd <= childCenter;\n }\n\n return targetStart < childCenter - displacement;\n }\n\n if (isDisplaced) {\n return targetEnd <= childCenter + displacement;\n }\n\n return targetStart < childCenter;\n });\n var newIndex = atIndex({\n draggable: draggable,\n closest: closest,\n inHomeList: isHomeOf(draggable, destination)\n });\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n last: last,\n displacedBy: displacedBy,\n index: newIndex\n });\n});\n\nvar combineThresholdDivisor = 4;\nvar getCombineImpact = (function (_ref) {\n var draggable = _ref.draggable,\n targetRect = _ref.pageBorderBoxWithDroppableScroll,\n previousImpact = _ref.previousImpact,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n afterCritical = _ref.afterCritical;\n\n if (!destination.isCombineEnabled) {\n return null;\n }\n\n var axis = destination.axis;\n var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n var displacement = displacedBy.value;\n var targetStart = targetRect[axis.start];\n var targetEnd = targetRect[axis.end];\n var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n var combineWith = find(withoutDragging, function (child) {\n var id = child.descriptor.id;\n var childRect = child.page.borderBox;\n var childSize = childRect[axis.size];\n var threshold = childSize / combineThresholdDivisor;\n var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n var isDisplaced = getIsDisplaced({\n displaced: previousImpact.displaced,\n id: id\n });\n\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + threshold && targetEnd < childRect[axis.end] - threshold;\n }\n\n return targetStart > childRect[axis.start] - displacement + threshold && targetStart < childRect[axis.end] - displacement - threshold;\n }\n\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + displacement + threshold && targetEnd < childRect[axis.end] + displacement - threshold;\n }\n\n return targetStart > childRect[axis.start] + threshold && targetStart < childRect[axis.end] - threshold;\n });\n\n if (!combineWith) {\n return null;\n }\n\n var impact = {\n displacedBy: displacedBy,\n displaced: previousImpact.displaced,\n at: {\n type: 'COMBINE',\n combine: {\n draggableId: combineWith.descriptor.id,\n droppableId: destination.descriptor.id\n }\n }\n };\n return impact;\n});\n\nvar getDragImpact = (function (_ref) {\n var pageOffset = _ref.pageOffset,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var pageBorderBox = offsetRectByPosition(draggable.page.borderBox, pageOffset);\n var destinationId = getDroppableOver$1({\n pageBorderBox: pageBorderBox,\n draggable: draggable,\n droppables: droppables\n });\n\n if (!destinationId) {\n return noImpact;\n }\n\n var destination = droppables[destinationId];\n var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n var pageBorderBoxWithDroppableScroll = withDroppableScroll(destination, pageBorderBox);\n return getCombineImpact({\n pageBorderBoxWithDroppableScroll: pageBorderBoxWithDroppableScroll,\n draggable: draggable,\n previousImpact: previousImpact,\n destination: destination,\n insideDestination: insideDestination,\n afterCritical: afterCritical\n }) || getReorderImpact({\n pageBorderBoxWithDroppableScroll: pageBorderBoxWithDroppableScroll,\n draggable: draggable,\n destination: destination,\n insideDestination: insideDestination,\n last: previousImpact.displaced,\n viewport: viewport,\n afterCritical: afterCritical\n });\n});\n\nvar patchDroppableMap = (function (droppables, updated) {\n var _extends2;\n\n return _extends({}, droppables, (_extends2 = {}, _extends2[updated.descriptor.id] = updated, _extends2));\n});\n\nvar clearUnusedPlaceholder = function clearUnusedPlaceholder(_ref) {\n var previousImpact = _ref.previousImpact,\n impact = _ref.impact,\n droppables = _ref.droppables;\n var last = whatIsDraggedOver(previousImpact);\n var now = whatIsDraggedOver(impact);\n\n if (!last) {\n return droppables;\n }\n\n if (last === now) {\n return droppables;\n }\n\n var lastDroppable = droppables[last];\n\n if (!lastDroppable.subject.withPlaceholder) {\n return droppables;\n }\n\n var updated = removePlaceholder(lastDroppable);\n return patchDroppableMap(droppables, updated);\n};\n\nvar recomputePlaceholders = (function (_ref2) {\n var draggable = _ref2.draggable,\n draggables = _ref2.draggables,\n droppables = _ref2.droppables,\n previousImpact = _ref2.previousImpact,\n impact = _ref2.impact;\n var cleaned = clearUnusedPlaceholder({\n previousImpact: previousImpact,\n impact: impact,\n droppables: droppables\n });\n var isOver = whatIsDraggedOver(impact);\n\n if (!isOver) {\n return cleaned;\n }\n\n var droppable = droppables[isOver];\n\n if (isHomeOf(draggable, droppable)) {\n return cleaned;\n }\n\n if (droppable.subject.withPlaceholder) {\n return cleaned;\n }\n\n var patched = addPlaceholder(droppable, draggable, draggables);\n return patchDroppableMap(cleaned, patched);\n});\n\nvar update = (function (_ref) {\n var state = _ref.state,\n forcedClientSelection = _ref.clientSelection,\n forcedDimensions = _ref.dimensions,\n forcedViewport = _ref.viewport,\n forcedImpact = _ref.impact,\n scrollJumpRequest = _ref.scrollJumpRequest;\n var viewport = forcedViewport || state.viewport;\n var dimensions = forcedDimensions || state.dimensions;\n var clientSelection = forcedClientSelection || state.current.client.selection;\n var offset = subtract(clientSelection, state.initial.client.selection);\n var client = {\n offset: offset,\n selection: clientSelection,\n borderBoxCenter: add(state.initial.client.borderBoxCenter, offset)\n };\n var page = {\n selection: add(client.selection, viewport.scroll.current),\n borderBoxCenter: add(client.borderBoxCenter, viewport.scroll.current),\n offset: add(client.offset, viewport.scroll.diff.value)\n };\n var current = {\n client: client,\n page: page\n };\n\n if (state.phase === 'COLLECTING') {\n return _extends({\n phase: 'COLLECTING'\n }, state, {\n dimensions: dimensions,\n viewport: viewport,\n current: current\n });\n }\n\n var draggable = dimensions.draggables[state.critical.draggable.id];\n var newImpact = forcedImpact || getDragImpact({\n pageOffset: page.offset,\n draggable: draggable,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact: state.impact,\n viewport: viewport,\n afterCritical: state.afterCritical\n });\n var withUpdatedPlaceholders = recomputePlaceholders({\n draggable: draggable,\n impact: newImpact,\n previousImpact: state.impact,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables\n });\n\n var result = _extends({}, state, {\n current: current,\n dimensions: {\n draggables: dimensions.draggables,\n droppables: withUpdatedPlaceholders\n },\n impact: newImpact,\n viewport: viewport,\n scrollJumpRequest: scrollJumpRequest || null,\n forceShouldAnimate: scrollJumpRequest ? false : null\n });\n\n return result;\n});\n\nfunction getDraggables$1(ids, draggables) {\n return ids.map(function (id) {\n return draggables[id];\n });\n}\n\nvar recompute = (function (_ref) {\n var impact = _ref.impact,\n viewport = _ref.viewport,\n draggables = _ref.draggables,\n destination = _ref.destination,\n forceShouldAnimate = _ref.forceShouldAnimate;\n var last = impact.displaced;\n var afterDragging = getDraggables$1(last.all, draggables);\n var displaced = getDisplacementGroups({\n afterDragging: afterDragging,\n destination: destination,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n forceShouldAnimate: forceShouldAnimate,\n last: last\n });\n return _extends({}, impact, {\n displaced: displaced\n });\n});\n\nvar getClientBorderBoxCenter = (function (_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n draggables = _ref.draggables,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: impact,\n draggable: draggable,\n draggables: draggables,\n droppable: droppable,\n afterCritical: afterCritical\n });\n return getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter: pageBorderBoxCenter,\n draggable: draggable,\n viewport: viewport\n });\n});\n\nvar refreshSnap = (function (_ref) {\n var state = _ref.state,\n forcedDimensions = _ref.dimensions,\n forcedViewport = _ref.viewport;\n !(state.movementMode === 'SNAP') ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n var needsVisibilityCheck = state.impact;\n var viewport = forcedViewport || state.viewport;\n var dimensions = forcedDimensions || state.dimensions;\n var draggables = dimensions.draggables,\n droppables = dimensions.droppables;\n var draggable = draggables[state.critical.draggable.id];\n var isOver = whatIsDraggedOver(needsVisibilityCheck);\n !isOver ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must be over a destination in SNAP movement mode') : invariant(false) : void 0;\n var destination = droppables[isOver];\n var impact = recompute({\n impact: needsVisibilityCheck,\n viewport: viewport,\n destination: destination,\n draggables: draggables\n });\n var clientSelection = getClientBorderBoxCenter({\n impact: impact,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n viewport: viewport,\n afterCritical: state.afterCritical\n });\n return update({\n impact: impact,\n clientSelection: clientSelection,\n state: state,\n dimensions: dimensions,\n viewport: viewport\n });\n});\n\nvar getHomeLocation = (function (descriptor) {\n return {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n});\n\nvar getLiftEffect = (function (_ref) {\n var draggable = _ref.draggable,\n home = _ref.home,\n draggables = _ref.draggables,\n viewport = _ref.viewport;\n var displacedBy = getDisplacedBy(home.axis, draggable.displaceBy);\n var insideHome = getDraggablesInsideDroppable(home.descriptor.id, draggables);\n var rawIndex = insideHome.indexOf(draggable);\n !(rawIndex !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected draggable to be inside home list') : invariant(false) : void 0;\n var afterDragging = insideHome.slice(rawIndex + 1);\n var effected = afterDragging.reduce(function (previous, item) {\n previous[item.descriptor.id] = true;\n return previous;\n }, {});\n var afterCritical = {\n inVirtualList: home.descriptor.mode === 'virtual',\n displacedBy: displacedBy,\n effected: effected\n };\n var displaced = getDisplacementGroups({\n afterDragging: afterDragging,\n destination: home,\n displacedBy: displacedBy,\n last: null,\n viewport: viewport.frame,\n forceShouldAnimate: false\n });\n var impact = {\n displaced: displaced,\n displacedBy: displacedBy,\n at: {\n type: 'REORDER',\n destination: getHomeLocation(draggable.descriptor)\n }\n };\n return {\n impact: impact,\n afterCritical: afterCritical\n };\n});\n\nvar patchDimensionMap = (function (dimensions, updated) {\n return {\n draggables: dimensions.draggables,\n droppables: patchDroppableMap(dimensions.droppables, updated)\n };\n});\n\nvar start = function start(key) {\n if (process.env.NODE_ENV !== 'production') {\n {\n return;\n }\n }\n};\nvar finish = function finish(key) {\n if (process.env.NODE_ENV !== 'production') {\n {\n return;\n }\n }\n};\n\nvar offsetDraggable = (function (_ref) {\n var draggable = _ref.draggable,\n offset$1 = _ref.offset,\n initialWindowScroll = _ref.initialWindowScroll;\n var client = offset(draggable.client, offset$1);\n var page = withScroll(client, initialWindowScroll);\n\n var moved = _extends({}, draggable, {\n placeholder: _extends({}, draggable.placeholder, {\n client: client\n }),\n client: client,\n page: page\n });\n\n return moved;\n});\n\nvar getFrame = (function (droppable) {\n var frame = droppable.frame;\n !frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected Droppable to have a frame') : invariant(false) : void 0;\n return frame;\n});\n\nvar adjustAdditionsForScrollChanges = (function (_ref) {\n var additions = _ref.additions,\n updatedDroppables = _ref.updatedDroppables,\n viewport = _ref.viewport;\n var windowScrollChange = viewport.scroll.diff.value;\n return additions.map(function (draggable) {\n var droppableId = draggable.descriptor.droppableId;\n var modified = updatedDroppables[droppableId];\n var frame = getFrame(modified);\n var droppableScrollChange = frame.scroll.diff.value;\n var totalChange = add(windowScrollChange, droppableScrollChange);\n var moved = offsetDraggable({\n draggable: draggable,\n offset: totalChange,\n initialWindowScroll: viewport.scroll.initial\n });\n return moved;\n });\n});\n\nvar publishWhileDraggingInVirtual = (function (_ref) {\n var state = _ref.state,\n published = _ref.published;\n start();\n var withScrollChange = published.modified.map(function (update) {\n var existing = state.dimensions.droppables[update.droppableId];\n var scrolled = scrollDroppable(existing, update.scroll);\n return scrolled;\n });\n\n var droppables = _extends({}, state.dimensions.droppables, {}, toDroppableMap(withScrollChange));\n\n var updatedAdditions = toDraggableMap(adjustAdditionsForScrollChanges({\n additions: published.additions,\n updatedDroppables: droppables,\n viewport: state.viewport\n }));\n\n var draggables = _extends({}, state.dimensions.draggables, {}, updatedAdditions);\n\n published.removals.forEach(function (id) {\n delete draggables[id];\n });\n var dimensions = {\n droppables: droppables,\n draggables: draggables\n };\n var wasOverId = whatIsDraggedOver(state.impact);\n var wasOver = wasOverId ? dimensions.droppables[wasOverId] : null;\n var draggable = dimensions.draggables[state.critical.draggable.id];\n var home = dimensions.droppables[state.critical.droppable.id];\n\n var _getLiftEffect = getLiftEffect({\n draggable: draggable,\n home: home,\n draggables: draggables,\n viewport: state.viewport\n }),\n onLiftImpact = _getLiftEffect.impact,\n afterCritical = _getLiftEffect.afterCritical;\n\n var previousImpact = wasOver && wasOver.isCombineEnabled ? state.impact : onLiftImpact;\n var impact = getDragImpact({\n pageOffset: state.current.page.offset,\n draggable: dimensions.draggables[state.critical.draggable.id],\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact: previousImpact,\n viewport: state.viewport,\n afterCritical: afterCritical\n });\n finish();\n\n var draggingState = _extends({\n phase: 'DRAGGING'\n }, state, {\n phase: 'DRAGGING',\n impact: impact,\n onLiftImpact: onLiftImpact,\n dimensions: dimensions,\n afterCritical: afterCritical,\n forceShouldAnimate: false\n });\n\n if (state.phase === 'COLLECTING') {\n return draggingState;\n }\n\n var dropPending = _extends({\n phase: 'DROP_PENDING'\n }, draggingState, {\n phase: 'DROP_PENDING',\n reason: state.reason,\n isWaiting: false\n });\n\n return dropPending;\n});\n\nvar isSnapping = function isSnapping(state) {\n return state.movementMode === 'SNAP';\n};\n\nvar postDroppableChange = function postDroppableChange(state, updated, isEnabledChanging) {\n var dimensions = patchDimensionMap(state.dimensions, updated);\n\n if (!isSnapping(state) || isEnabledChanging) {\n return update({\n state: state,\n dimensions: dimensions\n });\n }\n\n return refreshSnap({\n state: state,\n dimensions: dimensions\n });\n};\n\nfunction removeScrollJumpRequest(state) {\n if (state.isDragging && state.movementMode === 'SNAP') {\n return _extends({\n phase: 'DRAGGING'\n }, state, {\n scrollJumpRequest: null\n });\n }\n\n return state;\n}\n\nvar idle = {\n phase: 'IDLE',\n completed: null,\n shouldFlush: false\n};\nvar reducer = (function (state, action) {\n if (state === void 0) {\n state = idle;\n }\n\n if (action.type === 'FLUSH') {\n return _extends({}, idle, {\n shouldFlush: true\n });\n }\n\n if (action.type === 'INITIAL_PUBLISH') {\n !(state.phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INITIAL_PUBLISH must come after a IDLE phase') : invariant(false) : void 0;\n var _action$payload = action.payload,\n critical = _action$payload.critical,\n clientSelection = _action$payload.clientSelection,\n viewport = _action$payload.viewport,\n dimensions = _action$payload.dimensions,\n movementMode = _action$payload.movementMode;\n var draggable = dimensions.draggables[critical.draggable.id];\n var home = dimensions.droppables[critical.droppable.id];\n var client = {\n selection: clientSelection,\n borderBoxCenter: draggable.client.borderBox.center,\n offset: origin\n };\n var initial = {\n client: client,\n page: {\n selection: add(client.selection, viewport.scroll.initial),\n borderBoxCenter: add(client.selection, viewport.scroll.initial),\n offset: add(client.selection, viewport.scroll.diff.value)\n }\n };\n var isWindowScrollAllowed = toDroppableList(dimensions.droppables).every(function (item) {\n return !item.isFixedOnPage;\n });\n\n var _getLiftEffect = getLiftEffect({\n draggable: draggable,\n home: home,\n draggables: dimensions.draggables,\n viewport: viewport\n }),\n impact = _getLiftEffect.impact,\n afterCritical = _getLiftEffect.afterCritical;\n\n var result = {\n phase: 'DRAGGING',\n isDragging: true,\n critical: critical,\n movementMode: movementMode,\n dimensions: dimensions,\n initial: initial,\n current: initial,\n isWindowScrollAllowed: isWindowScrollAllowed,\n impact: impact,\n afterCritical: afterCritical,\n onLiftImpact: impact,\n viewport: viewport,\n scrollJumpRequest: null,\n forceShouldAnimate: null\n };\n return result;\n }\n\n if (action.type === 'COLLECTION_STARTING') {\n if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Collection cannot start from phase \" + state.phase) : invariant(false) : void 0;\n\n var _result = _extends({\n phase: 'COLLECTING'\n }, state, {\n phase: 'COLLECTING'\n });\n\n return _result;\n }\n\n if (action.type === 'PUBLISH_WHILE_DRAGGING') {\n !(state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unexpected \" + action.type + \" received in phase \" + state.phase) : invariant(false) : void 0;\n return publishWhileDraggingInVirtual({\n state: state,\n published: action.payload\n });\n }\n\n if (action.type === 'MOVE') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : invariant(false) : void 0;\n var _clientSelection = action.payload.client;\n\n if (isEqual(_clientSelection, state.current.client.selection)) {\n return state;\n }\n\n return update({\n state: state,\n clientSelection: _clientSelection,\n impact: isSnapping(state) ? state.impact : null\n });\n }\n\n if (action.type === 'UPDATE_DROPPABLE_SCROLL') {\n if (state.phase === 'DROP_PENDING') {\n return removeScrollJumpRequest(state);\n }\n\n if (state.phase === 'COLLECTING') {\n return removeScrollJumpRequest(state);\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : invariant(false) : void 0;\n var _action$payload2 = action.payload,\n id = _action$payload2.id,\n newScroll = _action$payload2.newScroll;\n var target = state.dimensions.droppables[id];\n\n if (!target) {\n return state;\n }\n\n var scrolled = scrollDroppable(target, newScroll);\n return postDroppableChange(state, scrolled, false);\n }\n\n if (action.type === 'UPDATE_DROPPABLE_IS_ENABLED') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : invariant(false) : void 0;\n var _action$payload3 = action.payload,\n _id = _action$payload3.id,\n isEnabled = _action$payload3.isEnabled;\n var _target = state.dimensions.droppables[_id];\n !_target ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find Droppable[id: \" + _id + \"] to toggle its enabled state\") : invariant(false) : void 0;\n !(_target.isEnabled !== isEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Trying to set droppable isEnabled to \" + String(isEnabled) + \"\\n but it is already \" + String(_target.isEnabled)) : invariant(false) : void 0;\n\n var updated = _extends({}, _target, {\n isEnabled: isEnabled\n });\n\n return postDroppableChange(state, updated, true);\n }\n\n if (action.type === 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : invariant(false) : void 0;\n var _action$payload4 = action.payload,\n _id2 = _action$payload4.id,\n isCombineEnabled = _action$payload4.isCombineEnabled;\n var _target2 = state.dimensions.droppables[_id2];\n !_target2 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find Droppable[id: \" + _id2 + \"] to toggle its isCombineEnabled state\") : invariant(false) : void 0;\n !(_target2.isCombineEnabled !== isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Trying to set droppable isCombineEnabled to \" + String(isCombineEnabled) + \"\\n but it is already \" + String(_target2.isCombineEnabled)) : invariant(false) : void 0;\n\n var _updated = _extends({}, _target2, {\n isCombineEnabled: isCombineEnabled\n });\n\n return postDroppableChange(state, _updated, true);\n }\n\n if (action.type === 'MOVE_BY_WINDOW_SCROLL') {\n if (state.phase === 'DROP_PENDING' || state.phase === 'DROP_ANIMATING') {\n return state;\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot move by window in phase \" + state.phase) : invariant(false) : void 0;\n !state.isWindowScrollAllowed ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Window scrolling is currently not supported for fixed lists') : invariant(false) : void 0;\n var _newScroll = action.payload.newScroll;\n\n if (isEqual(state.viewport.scroll.current, _newScroll)) {\n return removeScrollJumpRequest(state);\n }\n\n var _viewport = scrollViewport(state.viewport, _newScroll);\n\n if (isSnapping(state)) {\n return refreshSnap({\n state: state,\n viewport: _viewport\n });\n }\n\n return update({\n state: state,\n viewport: _viewport\n });\n }\n\n if (action.type === 'UPDATE_VIEWPORT_MAX_SCROLL') {\n if (!isMovementAllowed(state)) {\n return state;\n }\n\n var maxScroll = action.payload.maxScroll;\n\n if (isEqual(maxScroll, state.viewport.scroll.max)) {\n return state;\n }\n\n var withMaxScroll = _extends({}, state.viewport, {\n scroll: _extends({}, state.viewport.scroll, {\n max: maxScroll\n })\n });\n\n return _extends({\n phase: 'DRAGGING'\n }, state, {\n viewport: withMaxScroll\n });\n }\n\n if (action.type === 'MOVE_UP' || action.type === 'MOVE_DOWN' || action.type === 'MOVE_LEFT' || action.type === 'MOVE_RIGHT') {\n if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" received while not in DRAGGING phase\") : invariant(false) : void 0;\n\n var _result2 = moveInDirection({\n state: state,\n type: action.type\n });\n\n if (!_result2) {\n return state;\n }\n\n return update({\n state: state,\n impact: _result2.impact,\n clientSelection: _result2.clientSelection,\n scrollJumpRequest: _result2.scrollJumpRequest\n });\n }\n\n if (action.type === 'DROP_PENDING') {\n var reason = action.payload.reason;\n !(state.phase === 'COLLECTING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only move into the DROP_PENDING phase from the COLLECTING phase') : invariant(false) : void 0;\n\n var newState = _extends({\n phase: 'DROP_PENDING'\n }, state, {\n phase: 'DROP_PENDING',\n isWaiting: true,\n reason: reason\n });\n\n return newState;\n }\n\n if (action.type === 'DROP_ANIMATE') {\n var _action$payload5 = action.payload,\n completed = _action$payload5.completed,\n dropDuration = _action$payload5.dropDuration,\n newHomeClientOffset = _action$payload5.newHomeClientOffset;\n !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot animate drop from phase \" + state.phase) : invariant(false) : void 0;\n var _result3 = {\n phase: 'DROP_ANIMATING',\n completed: completed,\n dropDuration: dropDuration,\n newHomeClientOffset: newHomeClientOffset,\n dimensions: state.dimensions\n };\n return _result3;\n }\n\n if (action.type === 'DROP_COMPLETE') {\n var _completed = action.payload.completed;\n return {\n phase: 'IDLE',\n completed: _completed,\n shouldFlush: false\n };\n }\n\n return state;\n});\n\nvar beforeInitialCapture = function beforeInitialCapture(args) {\n return {\n type: 'BEFORE_INITIAL_CAPTURE',\n payload: args\n };\n};\nvar lift = function lift(args) {\n return {\n type: 'LIFT',\n payload: args\n };\n};\nvar initialPublish = function initialPublish(args) {\n return {\n type: 'INITIAL_PUBLISH',\n payload: args\n };\n};\nvar publishWhileDragging = function publishWhileDragging(args) {\n return {\n type: 'PUBLISH_WHILE_DRAGGING',\n payload: args\n };\n};\nvar collectionStarting = function collectionStarting() {\n return {\n type: 'COLLECTION_STARTING',\n payload: null\n };\n};\nvar updateDroppableScroll = function updateDroppableScroll(args) {\n return {\n type: 'UPDATE_DROPPABLE_SCROLL',\n payload: args\n };\n};\nvar updateDroppableIsEnabled = function updateDroppableIsEnabled(args) {\n return {\n type: 'UPDATE_DROPPABLE_IS_ENABLED',\n payload: args\n };\n};\nvar updateDroppableIsCombineEnabled = function updateDroppableIsCombineEnabled(args) {\n return {\n type: 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED',\n payload: args\n };\n};\nvar move = function move(args) {\n return {\n type: 'MOVE',\n payload: args\n };\n};\nvar moveByWindowScroll = function moveByWindowScroll(args) {\n return {\n type: 'MOVE_BY_WINDOW_SCROLL',\n payload: args\n };\n};\nvar updateViewportMaxScroll = function updateViewportMaxScroll(args) {\n return {\n type: 'UPDATE_VIEWPORT_MAX_SCROLL',\n payload: args\n };\n};\nvar moveUp = function moveUp() {\n return {\n type: 'MOVE_UP',\n payload: null\n };\n};\nvar moveDown = function moveDown() {\n return {\n type: 'MOVE_DOWN',\n payload: null\n };\n};\nvar moveRight = function moveRight() {\n return {\n type: 'MOVE_RIGHT',\n payload: null\n };\n};\nvar moveLeft = function moveLeft() {\n return {\n type: 'MOVE_LEFT',\n payload: null\n };\n};\nvar flush = function flush() {\n return {\n type: 'FLUSH',\n payload: null\n };\n};\nvar animateDrop = function animateDrop(args) {\n return {\n type: 'DROP_ANIMATE',\n payload: args\n };\n};\nvar completeDrop = function completeDrop(args) {\n return {\n type: 'DROP_COMPLETE',\n payload: args\n };\n};\nvar drop = function drop(args) {\n return {\n type: 'DROP',\n payload: args\n };\n};\nvar dropPending = function dropPending(args) {\n return {\n type: 'DROP_PENDING',\n payload: args\n };\n};\nvar dropAnimationFinished = function dropAnimationFinished() {\n return {\n type: 'DROP_ANIMATION_FINISHED',\n payload: null\n };\n};\n\nfunction checkIndexes(insideDestination) {\n if (insideDestination.length <= 1) {\n return;\n }\n\n var indexes = insideDestination.map(function (d) {\n return d.descriptor.index;\n });\n var errors = {};\n\n for (var i = 1; i < indexes.length; i++) {\n var current = indexes[i];\n var previous = indexes[i - 1];\n\n if (current !== previous + 1) {\n errors[current] = true;\n }\n }\n\n if (!Object.keys(errors).length) {\n return;\n }\n\n var formatted = indexes.map(function (index) {\n var hasError = Boolean(errors[index]);\n return hasError ? \"[\\uD83D\\uDD25\" + index + \"]\" : \"\" + index;\n }).join(', ');\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Detected non-consecutive indexes.\\n\\n (This can cause unexpected bugs)\\n\\n \" + formatted + \"\\n \") : void 0;\n}\n\nfunction validateDimensions(critical, dimensions) {\n if (process.env.NODE_ENV !== 'production') {\n var insideDestination = getDraggablesInsideDroppable(critical.droppable.id, dimensions.draggables);\n checkIndexes(insideDestination);\n }\n}\n\nvar lift$1 = (function (marshal) {\n return function (_ref) {\n var getState = _ref.getState,\n dispatch = _ref.dispatch;\n return function (next) {\n return function (action) {\n if (action.type !== 'LIFT') {\n next(action);\n return;\n }\n\n var _action$payload = action.payload,\n id = _action$payload.id,\n clientSelection = _action$payload.clientSelection,\n movementMode = _action$payload.movementMode;\n var initial = getState();\n\n if (initial.phase === 'DROP_ANIMATING') {\n dispatch(completeDrop({\n completed: initial.completed\n }));\n }\n\n !(getState().phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase to start a drag') : invariant(false) : void 0;\n dispatch(flush());\n dispatch(beforeInitialCapture({\n draggableId: id,\n movementMode: movementMode\n }));\n var scrollOptions = {\n shouldPublishImmediately: movementMode === 'SNAP'\n };\n var request = {\n draggableId: id,\n scrollOptions: scrollOptions\n };\n\n var _marshal$startPublish = marshal.startPublishing(request),\n critical = _marshal$startPublish.critical,\n dimensions = _marshal$startPublish.dimensions,\n viewport = _marshal$startPublish.viewport;\n\n validateDimensions(critical, dimensions);\n dispatch(initialPublish({\n critical: critical,\n dimensions: dimensions,\n clientSelection: clientSelection,\n movementMode: movementMode,\n viewport: viewport\n }));\n };\n };\n };\n});\n\nvar style = (function (marshal) {\n return function () {\n return function (next) {\n return function (action) {\n if (action.type === 'INITIAL_PUBLISH') {\n marshal.dragging();\n }\n\n if (action.type === 'DROP_ANIMATE') {\n marshal.dropping(action.payload.completed.result.reason);\n }\n\n if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE') {\n marshal.resting();\n }\n\n next(action);\n };\n };\n };\n});\n\nvar curves = {\n outOfTheWay: 'cubic-bezier(0.2, 0, 0, 1)',\n drop: 'cubic-bezier(.2,1,.1,1)'\n};\nvar combine = {\n opacity: {\n drop: 0,\n combining: 0.7\n },\n scale: {\n drop: 0.75\n }\n};\nvar timings = {\n outOfTheWay: 0.2,\n minDropTime: 0.33,\n maxDropTime: 0.55\n};\nvar outOfTheWayTiming = timings.outOfTheWay + \"s \" + curves.outOfTheWay;\nvar transitions = {\n fluid: \"opacity \" + outOfTheWayTiming,\n snap: \"transform \" + outOfTheWayTiming + \", opacity \" + outOfTheWayTiming,\n drop: function drop(duration) {\n var timing = duration + \"s \" + curves.drop;\n return \"transform \" + timing + \", opacity \" + timing;\n },\n outOfTheWay: \"transform \" + outOfTheWayTiming,\n placeholder: \"height \" + outOfTheWayTiming + \", width \" + outOfTheWayTiming + \", margin \" + outOfTheWayTiming\n};\n\nvar moveTo = function moveTo(offset) {\n return isEqual(offset, origin) ? null : \"translate(\" + offset.x + \"px, \" + offset.y + \"px)\";\n};\n\nvar transforms = {\n moveTo: moveTo,\n drop: function drop(offset, isCombining) {\n var translate = moveTo(offset);\n\n if (!translate) {\n return null;\n }\n\n if (!isCombining) {\n return translate;\n }\n\n return translate + \" scale(\" + combine.scale.drop + \")\";\n }\n};\n\nvar minDropTime = timings.minDropTime,\n maxDropTime = timings.maxDropTime;\nvar dropTimeRange = maxDropTime - minDropTime;\nvar maxDropTimeAtDistance = 1500;\nvar cancelDropModifier = 0.6;\nvar getDropDuration = (function (_ref) {\n var current = _ref.current,\n destination = _ref.destination,\n reason = _ref.reason;\n var distance$1 = distance(current, destination);\n\n if (distance$1 <= 0) {\n return minDropTime;\n }\n\n if (distance$1 >= maxDropTimeAtDistance) {\n return maxDropTime;\n }\n\n var percentage = distance$1 / maxDropTimeAtDistance;\n var duration = minDropTime + dropTimeRange * percentage;\n var withDuration = reason === 'CANCEL' ? duration * cancelDropModifier : duration;\n return Number(withDuration.toFixed(2));\n});\n\nvar getNewHomeClientOffset = (function (_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n dimensions = _ref.dimensions,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var draggables = dimensions.draggables,\n droppables = dimensions.droppables;\n var droppableId = whatIsDraggedOver(impact);\n var destination = droppableId ? droppables[droppableId] : null;\n var home = droppables[draggable.descriptor.droppableId];\n var newClientCenter = getClientBorderBoxCenter({\n impact: impact,\n draggable: draggable,\n draggables: draggables,\n afterCritical: afterCritical,\n droppable: destination || home,\n viewport: viewport\n });\n var offset = subtract(newClientCenter, draggable.client.borderBox.center);\n return offset;\n});\n\nvar getDropImpact = (function (_ref) {\n var draggables = _ref.draggables,\n reason = _ref.reason,\n lastImpact = _ref.lastImpact,\n home = _ref.home,\n viewport = _ref.viewport,\n onLiftImpact = _ref.onLiftImpact;\n\n if (!lastImpact.at || reason !== 'DROP') {\n var recomputedHomeImpact = recompute({\n draggables: draggables,\n impact: onLiftImpact,\n destination: home,\n viewport: viewport,\n forceShouldAnimate: true\n });\n return {\n impact: recomputedHomeImpact,\n didDropInsideDroppable: false\n };\n }\n\n if (lastImpact.at.type === 'REORDER') {\n return {\n impact: lastImpact,\n didDropInsideDroppable: true\n };\n }\n\n var withoutMovement = _extends({}, lastImpact, {\n displaced: emptyGroups\n });\n\n return {\n impact: withoutMovement,\n didDropInsideDroppable: true\n };\n});\n\nvar drop$1 = (function (_ref) {\n var getState = _ref.getState,\n dispatch = _ref.dispatch;\n return function (next) {\n return function (action) {\n if (action.type !== 'DROP') {\n next(action);\n return;\n }\n\n var state = getState();\n var reason = action.payload.reason;\n\n if (state.phase === 'COLLECTING') {\n dispatch(dropPending({\n reason: reason\n }));\n return;\n }\n\n if (state.phase === 'IDLE') {\n return;\n }\n\n var isWaitingForDrop = state.phase === 'DROP_PENDING' && state.isWaiting;\n !!isWaitingForDrop ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A DROP action occurred while DROP_PENDING and still waiting') : invariant(false) : void 0;\n !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot drop in phase: \" + state.phase) : invariant(false) : void 0;\n var critical = state.critical;\n var dimensions = state.dimensions;\n var draggable = dimensions.draggables[state.critical.draggable.id];\n\n var _getDropImpact = getDropImpact({\n reason: reason,\n lastImpact: state.impact,\n afterCritical: state.afterCritical,\n onLiftImpact: state.onLiftImpact,\n home: state.dimensions.droppables[state.critical.droppable.id],\n viewport: state.viewport,\n draggables: state.dimensions.draggables\n }),\n impact = _getDropImpact.impact,\n didDropInsideDroppable = _getDropImpact.didDropInsideDroppable;\n\n var destination = didDropInsideDroppable ? tryGetDestination(impact) : null;\n var combine = didDropInsideDroppable ? tryGetCombine(impact) : null;\n var source = {\n index: critical.draggable.index,\n droppableId: critical.droppable.id\n };\n var result = {\n draggableId: draggable.descriptor.id,\n type: draggable.descriptor.type,\n source: source,\n reason: reason,\n mode: state.movementMode,\n destination: destination,\n combine: combine\n };\n var newHomeClientOffset = getNewHomeClientOffset({\n impact: impact,\n draggable: draggable,\n dimensions: dimensions,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n var completed = {\n critical: state.critical,\n afterCritical: state.afterCritical,\n result: result,\n impact: impact\n };\n var isAnimationRequired = !isEqual(state.current.client.offset, newHomeClientOffset) || Boolean(result.combine);\n\n if (!isAnimationRequired) {\n dispatch(completeDrop({\n completed: completed\n }));\n return;\n }\n\n var dropDuration = getDropDuration({\n current: state.current.client.offset,\n destination: newHomeClientOffset,\n reason: reason\n });\n var args = {\n newHomeClientOffset: newHomeClientOffset,\n dropDuration: dropDuration,\n completed: completed\n };\n dispatch(animateDrop(args));\n };\n };\n});\n\nvar getWindowScroll = (function () {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n});\n\nfunction getWindowScrollBinding(update) {\n return {\n eventName: 'scroll',\n options: {\n passive: true,\n capture: false\n },\n fn: function fn(event) {\n if (event.target !== window && event.target !== window.document) {\n return;\n }\n\n update();\n }\n };\n}\n\nfunction getScrollListener(_ref) {\n var onWindowScroll = _ref.onWindowScroll;\n\n function updateScroll() {\n onWindowScroll(getWindowScroll());\n }\n\n var scheduled = rafSchd(updateScroll);\n var binding = getWindowScrollBinding(scheduled);\n var unbind = noop;\n\n function isActive() {\n return unbind !== noop;\n }\n\n function start() {\n !!isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start scroll listener when already active') : invariant(false) : void 0;\n unbind = bindEvents(window, [binding]);\n }\n\n function stop() {\n !isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop scroll listener when not active') : invariant(false) : void 0;\n scheduled.cancel();\n unbind();\n unbind = noop;\n }\n\n return {\n start: start,\n stop: stop,\n isActive: isActive\n };\n}\n\nvar shouldEnd = function shouldEnd(action) {\n return action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATE' || action.type === 'FLUSH';\n};\n\nvar scrollListener = (function (store) {\n var listener = getScrollListener({\n onWindowScroll: function onWindowScroll(newScroll) {\n store.dispatch(moveByWindowScroll({\n newScroll: newScroll\n }));\n }\n });\n return function (next) {\n return function (action) {\n if (!listener.isActive() && action.type === 'INITIAL_PUBLISH') {\n listener.start();\n }\n\n if (listener.isActive() && shouldEnd(action)) {\n listener.stop();\n }\n\n next(action);\n };\n };\n});\n\nvar getExpiringAnnounce = (function (announce) {\n var wasCalled = false;\n var isExpired = false;\n var timeoutId = setTimeout(function () {\n isExpired = true;\n });\n\n var result = function result(message) {\n if (wasCalled) {\n process.env.NODE_ENV !== \"production\" ? warning('Announcement already made. Not making a second announcement') : void 0;\n return;\n }\n\n if (isExpired) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Announcements cannot be made asynchronously.\\n Default message has already been announced.\\n \") : void 0;\n return;\n }\n\n wasCalled = true;\n announce(message);\n clearTimeout(timeoutId);\n };\n\n result.wasCalled = function () {\n return wasCalled;\n };\n\n return result;\n});\n\nvar getAsyncMarshal = (function () {\n var entries = [];\n\n var execute = function execute(timerId) {\n var index = findIndex(entries, function (item) {\n return item.timerId === timerId;\n });\n !(index !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find timer') : invariant(false) : void 0;\n\n var _entries$splice = entries.splice(index, 1),\n entry = _entries$splice[0];\n\n entry.callback();\n };\n\n var add = function add(fn) {\n var timerId = setTimeout(function () {\n return execute(timerId);\n });\n var entry = {\n timerId: timerId,\n callback: fn\n };\n entries.push(entry);\n };\n\n var flush = function flush() {\n if (!entries.length) {\n return;\n }\n\n var shallow = [].concat(entries);\n entries.length = 0;\n shallow.forEach(function (entry) {\n clearTimeout(entry.timerId);\n entry.callback();\n });\n };\n\n return {\n add: add,\n flush: flush\n };\n});\n\nvar areLocationsEqual = function areLocationsEqual(first, second) {\n if (first == null && second == null) {\n return true;\n }\n\n if (first == null || second == null) {\n return false;\n }\n\n return first.droppableId === second.droppableId && first.index === second.index;\n};\nvar isCombineEqual = function isCombineEqual(first, second) {\n if (first == null && second == null) {\n return true;\n }\n\n if (first == null || second == null) {\n return false;\n }\n\n return first.draggableId === second.draggableId && first.droppableId === second.droppableId;\n};\nvar isCriticalEqual = function isCriticalEqual(first, second) {\n if (first === second) {\n return true;\n }\n\n var isDraggableEqual = first.draggable.id === second.draggable.id && first.draggable.droppableId === second.draggable.droppableId && first.draggable.type === second.draggable.type && first.draggable.index === second.draggable.index;\n var isDroppableEqual = first.droppable.id === second.droppable.id && first.droppable.type === second.droppable.type;\n return isDraggableEqual && isDroppableEqual;\n};\n\nvar withTimings = function withTimings(key, fn) {\n start();\n fn();\n finish();\n};\n\nvar getDragStart = function getDragStart(critical, mode) {\n return {\n draggableId: critical.draggable.id,\n type: critical.droppable.type,\n source: {\n droppableId: critical.droppable.id,\n index: critical.draggable.index\n },\n mode: mode\n };\n};\n\nvar execute = function execute(responder, data, announce, getDefaultMessage) {\n if (!responder) {\n announce(getDefaultMessage(data));\n return;\n }\n\n var willExpire = getExpiringAnnounce(announce);\n var provided = {\n announce: willExpire\n };\n responder(data, provided);\n\n if (!willExpire.wasCalled()) {\n announce(getDefaultMessage(data));\n }\n};\n\nvar getPublisher = (function (getResponders, announce) {\n var asyncMarshal = getAsyncMarshal();\n var dragging = null;\n\n var beforeCapture = function beforeCapture(draggableId, mode) {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeCapture as a drag start has already been published') : invariant(false) : void 0;\n withTimings('onBeforeCapture', function () {\n var fn = getResponders().onBeforeCapture;\n\n if (fn) {\n var before = {\n draggableId: draggableId,\n mode: mode\n };\n fn(before);\n }\n });\n };\n\n var beforeStart = function beforeStart(critical, mode) {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant(false) : void 0;\n withTimings('onBeforeDragStart', function () {\n var fn = getResponders().onBeforeDragStart;\n\n if (fn) {\n fn(getDragStart(critical, mode));\n }\n });\n };\n\n var start = function start(critical, mode) {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant(false) : void 0;\n var data = getDragStart(critical, mode);\n dragging = {\n mode: mode,\n lastCritical: critical,\n lastLocation: data.source,\n lastCombine: null\n };\n asyncMarshal.add(function () {\n withTimings('onDragStart', function () {\n return execute(getResponders().onDragStart, data, announce, preset.onDragStart);\n });\n });\n };\n\n var update = function update(critical, impact) {\n var location = tryGetDestination(impact);\n var combine = tryGetCombine(impact);\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragMove when onDragStart has not been called') : invariant(false) : void 0;\n var hasCriticalChanged = !isCriticalEqual(critical, dragging.lastCritical);\n\n if (hasCriticalChanged) {\n dragging.lastCritical = critical;\n }\n\n var hasLocationChanged = !areLocationsEqual(dragging.lastLocation, location);\n\n if (hasLocationChanged) {\n dragging.lastLocation = location;\n }\n\n var hasGroupingChanged = !isCombineEqual(dragging.lastCombine, combine);\n\n if (hasGroupingChanged) {\n dragging.lastCombine = combine;\n }\n\n if (!hasCriticalChanged && !hasLocationChanged && !hasGroupingChanged) {\n return;\n }\n\n var data = _extends({}, getDragStart(critical, dragging.mode), {\n combine: combine,\n destination: location\n });\n\n asyncMarshal.add(function () {\n withTimings('onDragUpdate', function () {\n return execute(getResponders().onDragUpdate, data, announce, preset.onDragUpdate);\n });\n });\n };\n\n var flush = function flush() {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only flush responders while dragging') : invariant(false) : void 0;\n asyncMarshal.flush();\n };\n\n var drop = function drop(result) {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragEnd when there is no matching onDragStart') : invariant(false) : void 0;\n dragging = null;\n withTimings('onDragEnd', function () {\n return execute(getResponders().onDragEnd, result, announce, preset.onDragEnd);\n });\n };\n\n var abort = function abort() {\n if (!dragging) {\n return;\n }\n\n var result = _extends({}, getDragStart(dragging.lastCritical, dragging.mode), {\n combine: null,\n destination: null,\n reason: 'CANCEL'\n });\n\n drop(result);\n };\n\n return {\n beforeCapture: beforeCapture,\n beforeStart: beforeStart,\n start: start,\n update: update,\n flush: flush,\n drop: drop,\n abort: abort\n };\n});\n\nvar responders = (function (getResponders, announce) {\n var publisher = getPublisher(getResponders, announce);\n return function (store) {\n return function (next) {\n return function (action) {\n if (action.type === 'BEFORE_INITIAL_CAPTURE') {\n publisher.beforeCapture(action.payload.draggableId, action.payload.movementMode);\n return;\n }\n\n if (action.type === 'INITIAL_PUBLISH') {\n var critical = action.payload.critical;\n publisher.beforeStart(critical, action.payload.movementMode);\n next(action);\n publisher.start(critical, action.payload.movementMode);\n return;\n }\n\n if (action.type === 'DROP_COMPLETE') {\n var result = action.payload.completed.result;\n publisher.flush();\n next(action);\n publisher.drop(result);\n return;\n }\n\n next(action);\n\n if (action.type === 'FLUSH') {\n publisher.abort();\n return;\n }\n\n var state = store.getState();\n\n if (state.phase === 'DRAGGING') {\n publisher.update(state.critical, state.impact);\n }\n };\n };\n };\n});\n\nvar dropAnimationFinish = (function (store) {\n return function (next) {\n return function (action) {\n if (action.type !== 'DROP_ANIMATION_FINISHED') {\n next(action);\n return;\n }\n\n var state = store.getState();\n !(state.phase === 'DROP_ANIMATING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot finish a drop animating when no drop is occurring') : invariant(false) : void 0;\n store.dispatch(completeDrop({\n completed: state.completed\n }));\n };\n };\n});\n\nvar dropAnimationFlushOnScroll = (function (store) {\n var unbind = null;\n var frameId = null;\n\n function clear() {\n if (frameId) {\n cancelAnimationFrame(frameId);\n frameId = null;\n }\n\n if (unbind) {\n unbind();\n unbind = null;\n }\n }\n\n return function (next) {\n return function (action) {\n if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATION_FINISHED') {\n clear();\n }\n\n next(action);\n\n if (action.type !== 'DROP_ANIMATE') {\n return;\n }\n\n var binding = {\n eventName: 'scroll',\n options: {\n capture: true,\n passive: false,\n once: true\n },\n fn: function flushDropAnimation() {\n var state = store.getState();\n\n if (state.phase === 'DROP_ANIMATING') {\n store.dispatch(dropAnimationFinished());\n }\n }\n };\n frameId = requestAnimationFrame(function () {\n frameId = null;\n unbind = bindEvents(window, [binding]);\n });\n };\n };\n});\n\nvar dimensionMarshalStopper = (function (marshal) {\n return function () {\n return function (next) {\n return function (action) {\n if (action.type === 'DROP_COMPLETE' || action.type === 'FLUSH' || action.type === 'DROP_ANIMATE') {\n marshal.stopPublishing();\n }\n\n next(action);\n };\n };\n };\n});\n\nvar focus = (function (marshal) {\n var isWatching = false;\n return function () {\n return function (next) {\n return function (action) {\n if (action.type === 'INITIAL_PUBLISH') {\n isWatching = true;\n marshal.tryRecordFocus(action.payload.critical.draggable.id);\n next(action);\n marshal.tryRestoreFocusRecorded();\n return;\n }\n\n next(action);\n\n if (!isWatching) {\n return;\n }\n\n if (action.type === 'FLUSH') {\n isWatching = false;\n marshal.tryRestoreFocusRecorded();\n return;\n }\n\n if (action.type === 'DROP_COMPLETE') {\n isWatching = false;\n var result = action.payload.completed.result;\n\n if (result.combine) {\n marshal.tryShiftRecord(result.draggableId, result.combine.draggableId);\n }\n\n marshal.tryRestoreFocusRecorded();\n }\n };\n };\n };\n});\n\nvar shouldStop = function shouldStop(action) {\n return action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATE' || action.type === 'FLUSH';\n};\n\nvar autoScroll = (function (autoScroller) {\n return function (store) {\n return function (next) {\n return function (action) {\n if (shouldStop(action)) {\n autoScroller.stop();\n next(action);\n return;\n }\n\n if (action.type === 'INITIAL_PUBLISH') {\n next(action);\n var state = store.getState();\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected phase to be DRAGGING after INITIAL_PUBLISH') : invariant(false) : void 0;\n autoScroller.start(state);\n return;\n }\n\n next(action);\n autoScroller.scroll(store.getState());\n };\n };\n };\n});\n\nvar pendingDrop = (function (store) {\n return function (next) {\n return function (action) {\n next(action);\n\n if (action.type !== 'PUBLISH_WHILE_DRAGGING') {\n return;\n }\n\n var postActionState = store.getState();\n\n if (postActionState.phase !== 'DROP_PENDING') {\n return;\n }\n\n if (postActionState.isWaiting) {\n return;\n }\n\n store.dispatch(drop({\n reason: postActionState.reason\n }));\n };\n };\n});\n\nvar composeEnhancers = process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : compose;\nvar createStore = (function (_ref) {\n var dimensionMarshal = _ref.dimensionMarshal,\n focusMarshal = _ref.focusMarshal,\n styleMarshal = _ref.styleMarshal,\n getResponders = _ref.getResponders,\n announce = _ref.announce,\n autoScroller = _ref.autoScroller;\n return createStore$1(reducer, composeEnhancers(applyMiddleware(style(styleMarshal), dimensionMarshalStopper(dimensionMarshal), lift$1(dimensionMarshal), drop$1, dropAnimationFinish, dropAnimationFlushOnScroll, pendingDrop, autoScroll(autoScroller), scrollListener, focus(focusMarshal), responders(getResponders, announce))));\n});\n\nvar clean$1 = function clean() {\n return {\n additions: {},\n removals: {},\n modified: {}\n };\n};\nfunction createPublisher(_ref) {\n var registry = _ref.registry,\n callbacks = _ref.callbacks;\n var staging = clean$1();\n var frameId = null;\n\n var collect = function collect() {\n if (frameId) {\n return;\n }\n\n callbacks.collectionStarting();\n frameId = requestAnimationFrame(function () {\n frameId = null;\n start();\n var _staging = staging,\n additions = _staging.additions,\n removals = _staging.removals,\n modified = _staging.modified;\n var added = Object.keys(additions).map(function (id) {\n return registry.draggable.getById(id).getDimension(origin);\n }).sort(function (a, b) {\n return a.descriptor.index - b.descriptor.index;\n });\n var updated = Object.keys(modified).map(function (id) {\n var entry = registry.droppable.getById(id);\n var scroll = entry.callbacks.getScrollWhileDragging();\n return {\n droppableId: id,\n scroll: scroll\n };\n });\n var result = {\n additions: added,\n removals: Object.keys(removals),\n modified: updated\n };\n staging = clean$1();\n finish();\n callbacks.publish(result);\n });\n };\n\n var add = function add(entry) {\n var id = entry.descriptor.id;\n staging.additions[id] = entry;\n staging.modified[entry.descriptor.droppableId] = true;\n\n if (staging.removals[id]) {\n delete staging.removals[id];\n }\n\n collect();\n };\n\n var remove = function remove(entry) {\n var descriptor = entry.descriptor;\n staging.removals[descriptor.id] = true;\n staging.modified[descriptor.droppableId] = true;\n\n if (staging.additions[descriptor.id]) {\n delete staging.additions[descriptor.id];\n }\n\n collect();\n };\n\n var stop = function stop() {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n staging = clean$1();\n };\n\n return {\n add: add,\n remove: remove,\n stop: stop\n };\n}\n\nvar getMaxScroll = (function (_ref) {\n var scrollHeight = _ref.scrollHeight,\n scrollWidth = _ref.scrollWidth,\n height = _ref.height,\n width = _ref.width;\n var maxScroll = subtract({\n x: scrollWidth,\n y: scrollHeight\n }, {\n x: width,\n y: height\n });\n var adjustedMaxScroll = {\n x: Math.max(0, maxScroll.x),\n y: Math.max(0, maxScroll.y)\n };\n return adjustedMaxScroll;\n});\n\nvar getDocumentElement = (function () {\n var doc = document.documentElement;\n !doc ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.documentElement') : invariant(false) : void 0;\n return doc;\n});\n\nvar getMaxWindowScroll = (function () {\n var doc = getDocumentElement();\n var maxScroll = getMaxScroll({\n scrollHeight: doc.scrollHeight,\n scrollWidth: doc.scrollWidth,\n width: doc.clientWidth,\n height: doc.clientHeight\n });\n return maxScroll;\n});\n\nvar getViewport = (function () {\n var scroll = getWindowScroll();\n var maxScroll = getMaxWindowScroll();\n var top = scroll.y;\n var left = scroll.x;\n var doc = getDocumentElement();\n var width = doc.clientWidth;\n var height = doc.clientHeight;\n var right = left + width;\n var bottom = top + height;\n var frame = getRect({\n top: top,\n left: left,\n right: right,\n bottom: bottom\n });\n var viewport = {\n frame: frame,\n scroll: {\n initial: scroll,\n current: scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n return viewport;\n});\n\nvar getInitialPublish = (function (_ref) {\n var critical = _ref.critical,\n scrollOptions = _ref.scrollOptions,\n registry = _ref.registry;\n start();\n var viewport = getViewport();\n var windowScroll = viewport.scroll.current;\n var home = critical.droppable;\n var droppables = registry.droppable.getAllByType(home.type).map(function (entry) {\n return entry.callbacks.getDimensionAndWatchScroll(windowScroll, scrollOptions);\n });\n var draggables = registry.draggable.getAllByType(critical.draggable.type).map(function (entry) {\n return entry.getDimension(windowScroll);\n });\n var dimensions = {\n draggables: toDraggableMap(draggables),\n droppables: toDroppableMap(droppables)\n };\n finish();\n var result = {\n dimensions: dimensions,\n critical: critical,\n viewport: viewport\n };\n return result;\n});\n\nfunction shouldPublishUpdate(registry, dragging, entry) {\n if (entry.descriptor.id === dragging.id) {\n return false;\n }\n\n if (entry.descriptor.type !== dragging.type) {\n return false;\n }\n\n var home = registry.droppable.getById(entry.descriptor.droppableId);\n\n if (home.descriptor.mode !== 'virtual') {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n You are attempting to add or remove a Draggable [id: \" + entry.descriptor.id + \"]\\n while a drag is occurring. This is only supported for virtual lists.\\n\\n See https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/patterns/virtual-lists.md\\n \") : void 0;\n return false;\n }\n\n return true;\n}\n\nvar createDimensionMarshal = (function (registry, callbacks) {\n var collection = null;\n var publisher = createPublisher({\n callbacks: {\n publish: callbacks.publishWhileDragging,\n collectionStarting: callbacks.collectionStarting\n },\n registry: registry\n });\n\n var updateDroppableIsEnabled = function updateDroppableIsEnabled(id, isEnabled) {\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update is enabled flag of Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n\n if (!collection) {\n return;\n }\n\n callbacks.updateDroppableIsEnabled({\n id: id,\n isEnabled: isEnabled\n });\n };\n\n var updateDroppableIsCombineEnabled = function updateDroppableIsCombineEnabled(id, isCombineEnabled) {\n if (!collection) {\n return;\n }\n\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update isCombineEnabled flag of Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n callbacks.updateDroppableIsCombineEnabled({\n id: id,\n isCombineEnabled: isCombineEnabled\n });\n };\n\n var updateDroppableScroll = function updateDroppableScroll(id, newScroll) {\n if (!collection) {\n return;\n }\n\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update the scroll on Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n callbacks.updateDroppableScroll({\n id: id,\n newScroll: newScroll\n });\n };\n\n var scrollDroppable = function scrollDroppable(id, change) {\n if (!collection) {\n return;\n }\n\n registry.droppable.getById(id).callbacks.scroll(change);\n };\n\n var stopPublishing = function stopPublishing() {\n if (!collection) {\n return;\n }\n\n publisher.stop();\n var home = collection.critical.droppable;\n registry.droppable.getAllByType(home.type).forEach(function (entry) {\n return entry.callbacks.dragStopped();\n });\n collection.unsubscribe();\n collection = null;\n };\n\n var subscriber = function subscriber(event) {\n !collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should only be subscribed when a collection is occurring') : invariant(false) : void 0;\n var dragging = collection.critical.draggable;\n\n if (event.type === 'ADDITION') {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.add(event.value);\n }\n }\n\n if (event.type === 'REMOVAL') {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.remove(event.value);\n }\n }\n };\n\n var startPublishing = function startPublishing(request) {\n !!collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start capturing critical dimensions as there is already a collection') : invariant(false) : void 0;\n var entry = registry.draggable.getById(request.draggableId);\n var home = registry.droppable.getById(entry.descriptor.droppableId);\n var critical = {\n draggable: entry.descriptor,\n droppable: home.descriptor\n };\n var unsubscribe = registry.subscribe(subscriber);\n collection = {\n critical: critical,\n unsubscribe: unsubscribe\n };\n return getInitialPublish({\n critical: critical,\n registry: registry,\n scrollOptions: request.scrollOptions\n });\n };\n\n var marshal = {\n updateDroppableIsEnabled: updateDroppableIsEnabled,\n updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled,\n scrollDroppable: scrollDroppable,\n updateDroppableScroll: updateDroppableScroll,\n startPublishing: startPublishing,\n stopPublishing: stopPublishing\n };\n return marshal;\n});\n\nvar canStartDrag = (function (state, id) {\n if (state.phase === 'IDLE') {\n return true;\n }\n\n if (state.phase !== 'DROP_ANIMATING') {\n return false;\n }\n\n if (state.completed.result.draggableId === id) {\n return false;\n }\n\n return state.completed.result.reason === 'DROP';\n});\n\nvar scrollWindow = (function (change) {\n window.scrollBy(change.x, change.y);\n});\n\nvar getScrollableDroppables = memoizeOne(function (droppables) {\n return toDroppableList(droppables).filter(function (droppable) {\n if (!droppable.isEnabled) {\n return false;\n }\n\n if (!droppable.frame) {\n return false;\n }\n\n return true;\n });\n});\n\nvar getScrollableDroppableOver = function getScrollableDroppableOver(target, droppables) {\n var maybe = find(getScrollableDroppables(droppables), function (droppable) {\n !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid result') : invariant(false) : void 0;\n return isPositionInFrame(droppable.frame.pageMarginBox)(target);\n });\n return maybe;\n};\n\nvar getBestScrollableDroppable = (function (_ref) {\n var center = _ref.center,\n destination = _ref.destination,\n droppables = _ref.droppables;\n\n if (destination) {\n var _dimension = droppables[destination];\n\n if (!_dimension.frame) {\n return null;\n }\n\n return _dimension;\n }\n\n var dimension = getScrollableDroppableOver(center, droppables);\n return dimension;\n});\n\nvar config = {\n startFromPercentage: 0.25,\n maxScrollAtPercentage: 0.05,\n maxPixelScroll: 28,\n ease: function ease(percentage) {\n return Math.pow(percentage, 2);\n },\n durationDampening: {\n stopDampeningAt: 1200,\n accelerateAt: 360\n }\n};\n\nvar getDistanceThresholds = (function (container, axis) {\n var startScrollingFrom = container[axis.size] * config.startFromPercentage;\n var maxScrollValueAt = container[axis.size] * config.maxScrollAtPercentage;\n var thresholds = {\n startScrollingFrom: startScrollingFrom,\n maxScrollValueAt: maxScrollValueAt\n };\n return thresholds;\n});\n\nvar getPercentage = (function (_ref) {\n var startOfRange = _ref.startOfRange,\n endOfRange = _ref.endOfRange,\n current = _ref.current;\n var range = endOfRange - startOfRange;\n\n if (range === 0) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Detected distance range of 0 in the fluid auto scroller\\n This is unexpected and would cause a divide by 0 issue.\\n Not allowing an auto scroll\\n \") : void 0;\n return 0;\n }\n\n var currentInRange = current - startOfRange;\n var percentage = currentInRange / range;\n return percentage;\n});\n\nvar minScroll = 1;\n\nvar getValueFromDistance = (function (distanceToEdge, thresholds) {\n if (distanceToEdge > thresholds.startScrollingFrom) {\n return 0;\n }\n\n if (distanceToEdge <= thresholds.maxScrollValueAt) {\n return config.maxPixelScroll;\n }\n\n if (distanceToEdge === thresholds.startScrollingFrom) {\n return minScroll;\n }\n\n var percentageFromMaxScrollValueAt = getPercentage({\n startOfRange: thresholds.maxScrollValueAt,\n endOfRange: thresholds.startScrollingFrom,\n current: distanceToEdge\n });\n var percentageFromStartScrollingFrom = 1 - percentageFromMaxScrollValueAt;\n var scroll = config.maxPixelScroll * config.ease(percentageFromStartScrollingFrom);\n return Math.ceil(scroll);\n});\n\nvar accelerateAt = config.durationDampening.accelerateAt;\nvar stopAt = config.durationDampening.stopDampeningAt;\nvar dampenValueByTime = (function (proposedScroll, dragStartTime) {\n var startOfRange = dragStartTime;\n var endOfRange = stopAt;\n var now = Date.now();\n var runTime = now - startOfRange;\n\n if (runTime >= stopAt) {\n return proposedScroll;\n }\n\n if (runTime < accelerateAt) {\n return minScroll;\n }\n\n var betweenAccelerateAtAndStopAtPercentage = getPercentage({\n startOfRange: accelerateAt,\n endOfRange: endOfRange,\n current: runTime\n });\n var scroll = proposedScroll * config.ease(betweenAccelerateAtAndStopAtPercentage);\n return Math.ceil(scroll);\n});\n\nvar getValue = (function (_ref) {\n var distanceToEdge = _ref.distanceToEdge,\n thresholds = _ref.thresholds,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var scroll = getValueFromDistance(distanceToEdge, thresholds);\n\n if (scroll === 0) {\n return 0;\n }\n\n if (!shouldUseTimeDampening) {\n return scroll;\n }\n\n return Math.max(dampenValueByTime(scroll, dragStartTime), minScroll);\n});\n\nvar getScrollOnAxis = (function (_ref) {\n var container = _ref.container,\n distanceToEdges = _ref.distanceToEdges,\n dragStartTime = _ref.dragStartTime,\n axis = _ref.axis,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var thresholds = getDistanceThresholds(container, axis);\n var isCloserToEnd = distanceToEdges[axis.end] < distanceToEdges[axis.start];\n\n if (isCloserToEnd) {\n return getValue({\n distanceToEdge: distanceToEdges[axis.end],\n thresholds: thresholds,\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n }\n\n return -1 * getValue({\n distanceToEdge: distanceToEdges[axis.start],\n thresholds: thresholds,\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n});\n\nvar adjustForSizeLimits = (function (_ref) {\n var container = _ref.container,\n subject = _ref.subject,\n proposedScroll = _ref.proposedScroll;\n var isTooBigVertically = subject.height > container.height;\n var isTooBigHorizontally = subject.width > container.width;\n\n if (!isTooBigHorizontally && !isTooBigVertically) {\n return proposedScroll;\n }\n\n if (isTooBigHorizontally && isTooBigVertically) {\n return null;\n }\n\n return {\n x: isTooBigHorizontally ? 0 : proposedScroll.x,\n y: isTooBigVertically ? 0 : proposedScroll.y\n };\n});\n\nvar clean$2 = apply(function (value) {\n return value === 0 ? 0 : value;\n});\nvar getScroll = (function (_ref) {\n var dragStartTime = _ref.dragStartTime,\n container = _ref.container,\n subject = _ref.subject,\n center = _ref.center,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var distanceToEdges = {\n top: center.y - container.top,\n right: container.right - center.x,\n bottom: container.bottom - center.y,\n left: center.x - container.left\n };\n var y = getScrollOnAxis({\n container: container,\n distanceToEdges: distanceToEdges,\n dragStartTime: dragStartTime,\n axis: vertical,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n var x = getScrollOnAxis({\n container: container,\n distanceToEdges: distanceToEdges,\n dragStartTime: dragStartTime,\n axis: horizontal,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n var required = clean$2({\n x: x,\n y: y\n });\n\n if (isEqual(required, origin)) {\n return null;\n }\n\n var limited = adjustForSizeLimits({\n container: container,\n subject: subject,\n proposedScroll: required\n });\n\n if (!limited) {\n return null;\n }\n\n return isEqual(limited, origin) ? null : limited;\n});\n\nvar smallestSigned = apply(function (value) {\n if (value === 0) {\n return 0;\n }\n\n return value > 0 ? 1 : -1;\n});\nvar getOverlap = function () {\n var getRemainder = function getRemainder(target, max) {\n if (target < 0) {\n return target;\n }\n\n if (target > max) {\n return target - max;\n }\n\n return 0;\n };\n\n return function (_ref) {\n var current = _ref.current,\n max = _ref.max,\n change = _ref.change;\n var targetScroll = add(current, change);\n var overlap = {\n x: getRemainder(targetScroll.x, max.x),\n y: getRemainder(targetScroll.y, max.y)\n };\n\n if (isEqual(overlap, origin)) {\n return null;\n }\n\n return overlap;\n };\n}();\nvar canPartiallyScroll = function canPartiallyScroll(_ref2) {\n var rawMax = _ref2.max,\n current = _ref2.current,\n change = _ref2.change;\n var max = {\n x: Math.max(current.x, rawMax.x),\n y: Math.max(current.y, rawMax.y)\n };\n var smallestChange = smallestSigned(change);\n var overlap = getOverlap({\n max: max,\n current: current,\n change: smallestChange\n });\n\n if (!overlap) {\n return true;\n }\n\n if (smallestChange.x !== 0 && overlap.x === 0) {\n return true;\n }\n\n if (smallestChange.y !== 0 && overlap.y === 0) {\n return true;\n }\n\n return false;\n};\nvar canScrollWindow = function canScrollWindow(viewport, change) {\n return canPartiallyScroll({\n current: viewport.scroll.current,\n max: viewport.scroll.max,\n change: change\n });\n};\nvar getWindowOverlap = function getWindowOverlap(viewport, change) {\n if (!canScrollWindow(viewport, change)) {\n return null;\n }\n\n var max = viewport.scroll.max;\n var current = viewport.scroll.current;\n return getOverlap({\n current: current,\n max: max,\n change: change\n });\n};\nvar canScrollDroppable = function canScrollDroppable(droppable, change) {\n var frame = droppable.frame;\n\n if (!frame) {\n return false;\n }\n\n return canPartiallyScroll({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change: change\n });\n};\nvar getDroppableOverlap = function getDroppableOverlap(droppable, change) {\n var frame = droppable.frame;\n\n if (!frame) {\n return null;\n }\n\n if (!canScrollDroppable(droppable, change)) {\n return null;\n }\n\n return getOverlap({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change: change\n });\n};\n\nvar getWindowScrollChange = (function (_ref) {\n var viewport = _ref.viewport,\n subject = _ref.subject,\n center = _ref.center,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var scroll = getScroll({\n dragStartTime: dragStartTime,\n container: viewport.frame,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n return scroll && canScrollWindow(viewport, scroll) ? scroll : null;\n});\n\nvar getDroppableScrollChange = (function (_ref) {\n var droppable = _ref.droppable,\n subject = _ref.subject,\n center = _ref.center,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var frame = droppable.frame;\n\n if (!frame) {\n return null;\n }\n\n var scroll = getScroll({\n dragStartTime: dragStartTime,\n container: frame.pageMarginBox,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n return scroll && canScrollDroppable(droppable, scroll) ? scroll : null;\n});\n\nvar scroll$1 = (function (_ref) {\n var state = _ref.state,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening,\n scrollWindow = _ref.scrollWindow,\n scrollDroppable = _ref.scrollDroppable;\n var center = state.current.page.borderBoxCenter;\n var draggable = state.dimensions.draggables[state.critical.draggable.id];\n var subject = draggable.page.marginBox;\n\n if (state.isWindowScrollAllowed) {\n var viewport = state.viewport;\n\n var _change = getWindowScrollChange({\n dragStartTime: dragStartTime,\n viewport: viewport,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n\n if (_change) {\n scrollWindow(_change);\n return;\n }\n }\n\n var droppable = getBestScrollableDroppable({\n center: center,\n destination: whatIsDraggedOver(state.impact),\n droppables: state.dimensions.droppables\n });\n\n if (!droppable) {\n return;\n }\n\n var change = getDroppableScrollChange({\n dragStartTime: dragStartTime,\n droppable: droppable,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n\n if (change) {\n scrollDroppable(droppable.descriptor.id, change);\n }\n});\n\nvar createFluidScroller = (function (_ref) {\n var scrollWindow = _ref.scrollWindow,\n scrollDroppable = _ref.scrollDroppable;\n var scheduleWindowScroll = rafSchd(scrollWindow);\n var scheduleDroppableScroll = rafSchd(scrollDroppable);\n var dragging = null;\n\n var tryScroll = function tryScroll(state) {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fluid scroll if not dragging') : invariant(false) : void 0;\n var _dragging = dragging,\n shouldUseTimeDampening = _dragging.shouldUseTimeDampening,\n dragStartTime = _dragging.dragStartTime;\n scroll$1({\n state: state,\n scrollWindow: scheduleWindowScroll,\n scrollDroppable: scheduleDroppableScroll,\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n };\n\n var start$1 = function start$1(state) {\n start();\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start auto scrolling when already started') : invariant(false) : void 0;\n var dragStartTime = Date.now();\n var wasScrollNeeded = false;\n\n var fakeScrollCallback = function fakeScrollCallback() {\n wasScrollNeeded = true;\n };\n\n scroll$1({\n state: state,\n dragStartTime: 0,\n shouldUseTimeDampening: false,\n scrollWindow: fakeScrollCallback,\n scrollDroppable: fakeScrollCallback\n });\n dragging = {\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: wasScrollNeeded\n };\n finish();\n\n if (wasScrollNeeded) {\n tryScroll(state);\n }\n };\n\n var stop = function stop() {\n if (!dragging) {\n return;\n }\n\n scheduleWindowScroll.cancel();\n scheduleDroppableScroll.cancel();\n dragging = null;\n };\n\n return {\n start: start$1,\n stop: stop,\n scroll: tryScroll\n };\n});\n\nvar createJumpScroller = (function (_ref) {\n var move = _ref.move,\n scrollDroppable = _ref.scrollDroppable,\n scrollWindow = _ref.scrollWindow;\n\n var moveByOffset = function moveByOffset(state, offset) {\n var client = add(state.current.client.selection, offset);\n move({\n client: client\n });\n };\n\n var scrollDroppableAsMuchAsItCan = function scrollDroppableAsMuchAsItCan(droppable, change) {\n if (!canScrollDroppable(droppable, change)) {\n return change;\n }\n\n var overlap = getDroppableOverlap(droppable, change);\n\n if (!overlap) {\n scrollDroppable(droppable.descriptor.id, change);\n return null;\n }\n\n var whatTheDroppableCanScroll = subtract(change, overlap);\n scrollDroppable(droppable.descriptor.id, whatTheDroppableCanScroll);\n var remainder = subtract(change, whatTheDroppableCanScroll);\n return remainder;\n };\n\n var scrollWindowAsMuchAsItCan = function scrollWindowAsMuchAsItCan(isWindowScrollAllowed, viewport, change) {\n if (!isWindowScrollAllowed) {\n return change;\n }\n\n if (!canScrollWindow(viewport, change)) {\n return change;\n }\n\n var overlap = getWindowOverlap(viewport, change);\n\n if (!overlap) {\n scrollWindow(change);\n return null;\n }\n\n var whatTheWindowCanScroll = subtract(change, overlap);\n scrollWindow(whatTheWindowCanScroll);\n var remainder = subtract(change, whatTheWindowCanScroll);\n return remainder;\n };\n\n var jumpScroller = function jumpScroller(state) {\n var request = state.scrollJumpRequest;\n\n if (!request) {\n return;\n }\n\n var destination = whatIsDraggedOver(state.impact);\n !destination ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot perform a jump scroll when there is no destination') : invariant(false) : void 0;\n var droppableRemainder = scrollDroppableAsMuchAsItCan(state.dimensions.droppables[destination], request);\n\n if (!droppableRemainder) {\n return;\n }\n\n var viewport = state.viewport;\n var windowRemainder = scrollWindowAsMuchAsItCan(state.isWindowScrollAllowed, viewport, droppableRemainder);\n\n if (!windowRemainder) {\n return;\n }\n\n moveByOffset(state, windowRemainder);\n };\n\n return jumpScroller;\n});\n\nvar createAutoScroller = (function (_ref) {\n var scrollDroppable = _ref.scrollDroppable,\n scrollWindow = _ref.scrollWindow,\n move = _ref.move;\n var fluidScroller = createFluidScroller({\n scrollWindow: scrollWindow,\n scrollDroppable: scrollDroppable\n });\n var jumpScroll = createJumpScroller({\n move: move,\n scrollWindow: scrollWindow,\n scrollDroppable: scrollDroppable\n });\n\n var scroll = function scroll(state) {\n if (state.phase !== 'DRAGGING') {\n return;\n }\n\n if (state.movementMode === 'FLUID') {\n fluidScroller.scroll(state);\n return;\n }\n\n if (!state.scrollJumpRequest) {\n return;\n }\n\n jumpScroll(state);\n };\n\n var scroller = {\n scroll: scroll,\n start: fluidScroller.start,\n stop: fluidScroller.stop\n };\n return scroller;\n});\n\nvar prefix$1 = 'data-rbd';\nvar dragHandle = function () {\n var base = prefix$1 + \"-drag-handle\";\n return {\n base: base,\n draggableId: base + \"-draggable-id\",\n contextId: base + \"-context-id\"\n };\n}();\nvar draggable = function () {\n var base = prefix$1 + \"-draggable\";\n return {\n base: base,\n contextId: base + \"-context-id\",\n id: base + \"-id\"\n };\n}();\nvar droppable = function () {\n var base = prefix$1 + \"-droppable\";\n return {\n base: base,\n contextId: base + \"-context-id\",\n id: base + \"-id\"\n };\n}();\nvar scrollContainer = {\n contextId: prefix$1 + \"-scroll-container-context-id\"\n};\n\nvar makeGetSelector = function makeGetSelector(context) {\n return function (attribute) {\n return \"[\" + attribute + \"=\\\"\" + context + \"\\\"]\";\n };\n};\n\nvar getStyles = function getStyles(rules, property) {\n return rules.map(function (rule) {\n var value = rule.styles[property];\n\n if (!value) {\n return '';\n }\n\n return rule.selector + \" { \" + value + \" }\";\n }).join(' ');\n};\n\nvar noPointerEvents = 'pointer-events: none;';\nvar getStyles$1 = (function (contextId) {\n var getSelector = makeGetSelector(contextId);\n\n var dragHandle$1 = function () {\n var grabCursor = \"\\n cursor: -webkit-grab;\\n cursor: grab;\\n \";\n return {\n selector: getSelector(dragHandle.contextId),\n styles: {\n always: \"\\n -webkit-touch-callout: none;\\n -webkit-tap-highlight-color: rgba(0,0,0,0);\\n touch-action: manipulation;\\n \",\n resting: grabCursor,\n dragging: noPointerEvents,\n dropAnimating: grabCursor\n }\n };\n }();\n\n var draggable$1 = function () {\n var transition = \"\\n transition: \" + transitions.outOfTheWay + \";\\n \";\n return {\n selector: getSelector(draggable.contextId),\n styles: {\n dragging: transition,\n dropAnimating: transition,\n userCancel: transition\n }\n };\n }();\n\n var droppable$1 = {\n selector: getSelector(droppable.contextId),\n styles: {\n always: \"overflow-anchor: none;\"\n }\n };\n var body = {\n selector: 'body',\n styles: {\n dragging: \"\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n user-select: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n overflow-anchor: none;\\n \"\n }\n };\n var rules = [draggable$1, dragHandle$1, droppable$1, body];\n return {\n always: getStyles(rules, 'always'),\n resting: getStyles(rules, 'resting'),\n dragging: getStyles(rules, 'dragging'),\n dropAnimating: getStyles(rules, 'dropAnimating'),\n userCancel: getStyles(rules, 'userCancel')\n };\n});\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\n\nvar getHead = function getHead() {\n var head = document.querySelector('head');\n !head ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find the head to append a style to') : invariant(false) : void 0;\n return head;\n};\n\nvar createStyleEl = function createStyleEl(nonce) {\n var el = document.createElement('style');\n\n if (nonce) {\n el.setAttribute('nonce', nonce);\n }\n\n el.type = 'text/css';\n return el;\n};\n\nfunction useStyleMarshal(contextId, nonce) {\n var styles = useMemo(function () {\n return getStyles$1(contextId);\n }, [contextId]);\n var alwaysRef = useRef(null);\n var dynamicRef = useRef(null);\n var setDynamicStyle = useCallback(memoizeOne(function (proposed) {\n var el = dynamicRef.current;\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant(false) : void 0;\n el.textContent = proposed;\n }), []);\n var setAlwaysStyle = useCallback(function (proposed) {\n var el = alwaysRef.current;\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant(false) : void 0;\n el.textContent = proposed;\n }, []);\n useIsomorphicLayoutEffect(function () {\n !(!alwaysRef.current && !dynamicRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'style elements already mounted') : invariant(false) : void 0;\n var always = createStyleEl(nonce);\n var dynamic = createStyleEl(nonce);\n alwaysRef.current = always;\n dynamicRef.current = dynamic;\n always.setAttribute(prefix$1 + \"-always\", contextId);\n dynamic.setAttribute(prefix$1 + \"-dynamic\", contextId);\n getHead().appendChild(always);\n getHead().appendChild(dynamic);\n setAlwaysStyle(styles.always);\n setDynamicStyle(styles.resting);\n return function () {\n var remove = function remove(ref) {\n var current = ref.current;\n !current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot unmount ref as it is not set') : invariant(false) : void 0;\n getHead().removeChild(current);\n ref.current = null;\n };\n\n remove(alwaysRef);\n remove(dynamicRef);\n };\n }, [nonce, setAlwaysStyle, setDynamicStyle, styles.always, styles.resting, contextId]);\n var dragging = useCallback(function () {\n return setDynamicStyle(styles.dragging);\n }, [setDynamicStyle, styles.dragging]);\n var dropping = useCallback(function (reason) {\n if (reason === 'DROP') {\n setDynamicStyle(styles.dropAnimating);\n return;\n }\n\n setDynamicStyle(styles.userCancel);\n }, [setDynamicStyle, styles.dropAnimating, styles.userCancel]);\n var resting = useCallback(function () {\n if (!dynamicRef.current) {\n return;\n }\n\n setDynamicStyle(styles.resting);\n }, [setDynamicStyle, styles.resting]);\n var marshal = useMemo(function () {\n return {\n dragging: dragging,\n dropping: dropping,\n resting: resting\n };\n }, [dragging, dropping, resting]);\n return marshal;\n}\n\nvar getWindowFromEl = (function (el) {\n return el && el.ownerDocument ? el.ownerDocument.defaultView : window;\n});\n\nfunction isHtmlElement(el) {\n return el instanceof getWindowFromEl(el).HTMLElement;\n}\n\nfunction findDragHandle(contextId, draggableId) {\n var selector = \"[\" + dragHandle.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n var possible = toArray(document.querySelectorAll(selector));\n\n if (!possible.length) {\n process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find any drag handles in the context \\\"\" + contextId + \"\\\"\") : void 0;\n return null;\n }\n\n var handle = find(possible, function (el) {\n return el.getAttribute(dragHandle.draggableId) === draggableId;\n });\n\n if (!handle) {\n process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find drag handle with id \\\"\" + draggableId + \"\\\" as no handle with a matching id was found\") : void 0;\n return null;\n }\n\n if (!isHtmlElement(handle)) {\n process.env.NODE_ENV !== \"production\" ? warning('drag handle needs to be a HTMLElement') : void 0;\n return null;\n }\n\n return handle;\n}\n\nfunction useFocusMarshal(contextId) {\n var entriesRef = useRef({});\n var recordRef = useRef(null);\n var restoreFocusFrameRef = useRef(null);\n var isMountedRef = useRef(false);\n var register = useCallback(function register(id, focus) {\n var entry = {\n id: id,\n focus: focus\n };\n entriesRef.current[id] = entry;\n return function unregister() {\n var entries = entriesRef.current;\n var current = entries[id];\n\n if (current !== entry) {\n delete entries[id];\n }\n };\n }, []);\n var tryGiveFocus = useCallback(function tryGiveFocus(tryGiveFocusTo) {\n var handle = findDragHandle(contextId, tryGiveFocusTo);\n\n if (handle && handle !== document.activeElement) {\n handle.focus();\n }\n }, [contextId]);\n var tryShiftRecord = useCallback(function tryShiftRecord(previous, redirectTo) {\n if (recordRef.current === previous) {\n recordRef.current = redirectTo;\n }\n }, []);\n var tryRestoreFocusRecorded = useCallback(function tryRestoreFocusRecorded() {\n if (restoreFocusFrameRef.current) {\n return;\n }\n\n if (!isMountedRef.current) {\n return;\n }\n\n restoreFocusFrameRef.current = requestAnimationFrame(function () {\n restoreFocusFrameRef.current = null;\n var record = recordRef.current;\n\n if (record) {\n tryGiveFocus(record);\n }\n });\n }, [tryGiveFocus]);\n var tryRecordFocus = useCallback(function tryRecordFocus(id) {\n recordRef.current = null;\n var focused = document.activeElement;\n\n if (!focused) {\n return;\n }\n\n if (focused.getAttribute(dragHandle.draggableId) !== id) {\n return;\n }\n\n recordRef.current = id;\n }, []);\n useIsomorphicLayoutEffect(function () {\n isMountedRef.current = true;\n return function clearFrameOnUnmount() {\n isMountedRef.current = false;\n var frameId = restoreFocusFrameRef.current;\n\n if (frameId) {\n cancelAnimationFrame(frameId);\n }\n };\n }, []);\n var marshal = useMemo(function () {\n return {\n register: register,\n tryRecordFocus: tryRecordFocus,\n tryRestoreFocusRecorded: tryRestoreFocusRecorded,\n tryShiftRecord: tryShiftRecord\n };\n }, [register, tryRecordFocus, tryRestoreFocusRecorded, tryShiftRecord]);\n return marshal;\n}\n\nfunction createRegistry() {\n var entries = {\n draggables: {},\n droppables: {}\n };\n var subscribers = [];\n\n function subscribe(cb) {\n subscribers.push(cb);\n return function unsubscribe() {\n var index = subscribers.indexOf(cb);\n\n if (index === -1) {\n return;\n }\n\n subscribers.splice(index, 1);\n };\n }\n\n function notify(event) {\n if (subscribers.length) {\n subscribers.forEach(function (cb) {\n return cb(event);\n });\n }\n }\n\n function findDraggableById(id) {\n return entries.draggables[id] || null;\n }\n\n function getDraggableById(id) {\n var entry = findDraggableById(id);\n !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find draggable entry with id [\" + id + \"]\") : invariant(false) : void 0;\n return entry;\n }\n\n var draggableAPI = {\n register: function register(entry) {\n entries.draggables[entry.descriptor.id] = entry;\n notify({\n type: 'ADDITION',\n value: entry\n });\n },\n update: function update(entry, last) {\n var current = entries.draggables[last.descriptor.id];\n\n if (!current) {\n return;\n }\n\n if (current.uniqueId !== entry.uniqueId) {\n return;\n }\n\n delete entries.draggables[last.descriptor.id];\n entries.draggables[entry.descriptor.id] = entry;\n },\n unregister: function unregister(entry) {\n var draggableId = entry.descriptor.id;\n var current = findDraggableById(draggableId);\n\n if (!current) {\n return;\n }\n\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n\n delete entries.draggables[draggableId];\n notify({\n type: 'REMOVAL',\n value: entry\n });\n },\n getById: getDraggableById,\n findById: findDraggableById,\n exists: function exists(id) {\n return Boolean(findDraggableById(id));\n },\n getAllByType: function getAllByType(type) {\n return values(entries.draggables).filter(function (entry) {\n return entry.descriptor.type === type;\n });\n }\n };\n\n function findDroppableById(id) {\n return entries.droppables[id] || null;\n }\n\n function getDroppableById(id) {\n var entry = findDroppableById(id);\n !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find droppable entry with id [\" + id + \"]\") : invariant(false) : void 0;\n return entry;\n }\n\n var droppableAPI = {\n register: function register(entry) {\n entries.droppables[entry.descriptor.id] = entry;\n },\n unregister: function unregister(entry) {\n var current = findDroppableById(entry.descriptor.id);\n\n if (!current) {\n return;\n }\n\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n\n delete entries.droppables[entry.descriptor.id];\n },\n getById: getDroppableById,\n findById: findDroppableById,\n exists: function exists(id) {\n return Boolean(findDroppableById(id));\n },\n getAllByType: function getAllByType(type) {\n return values(entries.droppables).filter(function (entry) {\n return entry.descriptor.type === type;\n });\n }\n };\n\n function clean() {\n entries.draggables = {};\n entries.droppables = {};\n subscribers.length = 0;\n }\n\n return {\n draggable: draggableAPI,\n droppable: droppableAPI,\n subscribe: subscribe,\n clean: clean\n };\n}\n\nfunction useRegistry() {\n var registry = useMemo(createRegistry, []);\n useEffect(function () {\n return function unmount() {\n requestAnimationFrame(registry.clean);\n };\n }, [registry]);\n return registry;\n}\n\nvar StoreContext = React.createContext(null);\n\nvar getBodyElement = (function () {\n var body = document.body;\n !body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.body') : invariant(false) : void 0;\n return body;\n});\n\nvar visuallyHidden = {\n position: 'absolute',\n width: '1px',\n height: '1px',\n margin: '-1px',\n border: '0',\n padding: '0',\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n 'clip-path': 'inset(100%)'\n};\n\nvar getId = function getId(contextId) {\n return \"rbd-announcement-\" + contextId;\n};\nfunction useAnnouncer(contextId) {\n var id = useMemo(function () {\n return getId(contextId);\n }, [contextId]);\n var ref = useRef(null);\n useEffect(function setup() {\n var el = document.createElement('div');\n ref.current = el;\n el.id = id;\n el.setAttribute('aria-live', 'assertive');\n el.setAttribute('aria-atomic', 'true');\n\n _extends(el.style, visuallyHidden);\n\n getBodyElement().appendChild(el);\n return function cleanup() {\n setTimeout(function remove() {\n var body = getBodyElement();\n\n if (body.contains(el)) {\n body.removeChild(el);\n }\n\n if (el === ref.current) {\n ref.current = null;\n }\n });\n };\n }, [id]);\n var announce = useCallback(function (message) {\n var el = ref.current;\n\n if (el) {\n el.textContent = message;\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n A screen reader message was trying to be announced but it was unable to do so.\\n This can occur if you unmount your in your onDragEnd.\\n Consider calling provided.announce() before the unmount so that the instruction will\\n not be lost for users relying on a screen reader.\\n\\n Message not passed to screen reader:\\n\\n \\\"\" + message + \"\\\"\\n \") : void 0;\n }, []);\n return announce;\n}\n\nvar count = 0;\nvar defaults = {\n separator: '::'\n};\nfunction reset() {\n count = 0;\n}\nfunction useUniqueId(prefix, options) {\n if (options === void 0) {\n options = defaults;\n }\n\n return useMemo(function () {\n return \"\" + prefix + options.separator + count++;\n }, [options.separator, prefix]);\n}\n\nfunction getElementId(_ref) {\n var contextId = _ref.contextId,\n uniqueId = _ref.uniqueId;\n return \"rbd-hidden-text-\" + contextId + \"-\" + uniqueId;\n}\nfunction useHiddenTextElement(_ref2) {\n var contextId = _ref2.contextId,\n text = _ref2.text;\n var uniqueId = useUniqueId('hidden-text', {\n separator: '-'\n });\n var id = useMemo(function () {\n return getElementId({\n contextId: contextId,\n uniqueId: uniqueId\n });\n }, [uniqueId, contextId]);\n useEffect(function mount() {\n var el = document.createElement('div');\n el.id = id;\n el.textContent = text;\n el.style.display = 'none';\n getBodyElement().appendChild(el);\n return function unmount() {\n var body = getBodyElement();\n\n if (body.contains(el)) {\n body.removeChild(el);\n }\n };\n }, [id, text]);\n return id;\n}\n\nvar AppContext = React.createContext(null);\n\nvar peerDependencies = {\n\treact: \"^16.8.5\",\n\t\"react-dom\": \"^16.8.5\"\n};\n\nvar semver = /(\\d+)\\.(\\d+)\\.(\\d+)/;\n\nvar getVersion = function getVersion(value) {\n var result = semver.exec(value);\n !(result != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unable to parse React version \" + value) : invariant(false) : void 0;\n var major = Number(result[1]);\n var minor = Number(result[2]);\n var patch = Number(result[3]);\n return {\n major: major,\n minor: minor,\n patch: patch,\n raw: value\n };\n};\n\nvar isSatisfied = function isSatisfied(expected, actual) {\n if (actual.major > expected.major) {\n return true;\n }\n\n if (actual.major < expected.major) {\n return false;\n }\n\n if (actual.minor > expected.minor) {\n return true;\n }\n\n if (actual.minor < expected.minor) {\n return false;\n }\n\n return actual.patch >= expected.patch;\n};\n\nvar checkReactVersion = (function (peerDepValue, actualValue) {\n var peerDep = getVersion(peerDepValue);\n var actual = getVersion(actualValue);\n\n if (isSatisfied(peerDep, actual)) {\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n React version: [\" + actual.raw + \"]\\n does not satisfy expected peer dependency version: [\" + peerDep.raw + \"]\\n\\n This can result in run time bugs, and even fatal crashes\\n \") : void 0;\n});\n\nvar suffix = \"\\n We expect a html5 doctype: \\n This is to ensure consistent browser layout and measurement\\n\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/doctype.md\\n\";\nvar checkDoctype = (function (doc) {\n var doctype = doc.doctype;\n\n if (!doctype) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n No found.\\n\\n \" + suffix + \"\\n \") : void 0;\n return;\n }\n\n if (doctype.name.toLowerCase() !== 'html') {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Unexpected found: (\" + doctype.name + \")\\n\\n \" + suffix + \"\\n \") : void 0;\n }\n\n if (doctype.publicId !== '') {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Unexpected publicId found: (\" + doctype.publicId + \")\\n A html5 doctype does not have a publicId\\n\\n \" + suffix + \"\\n \") : void 0;\n }\n});\n\nfunction useDev(useHook) {\n if (process.env.NODE_ENV !== 'production') {\n useHook();\n }\n}\n\nfunction useDevSetupWarning(fn, inputs) {\n useDev(function () {\n useEffect(function () {\n try {\n fn();\n } catch (e) {\n error(\"\\n A setup problem was encountered.\\n\\n > \" + e.message + \"\\n \");\n }\n }, inputs);\n });\n}\n\nfunction useStartupValidation() {\n useDevSetupWarning(function () {\n checkReactVersion(peerDependencies.react, React.version);\n checkDoctype(document);\n }, []);\n}\n\nfunction usePrevious(current) {\n var ref = useRef(current);\n useEffect(function () {\n ref.current = current;\n });\n return ref;\n}\n\nfunction create() {\n var lock = null;\n\n function isClaimed() {\n return Boolean(lock);\n }\n\n function isActive(value) {\n return value === lock;\n }\n\n function claim(abandon) {\n !!lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot claim lock as it is already claimed') : invariant(false) : void 0;\n var newLock = {\n abandon: abandon\n };\n lock = newLock;\n return newLock;\n }\n\n function release() {\n !lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot release lock when there is no lock') : invariant(false) : void 0;\n lock = null;\n }\n\n function tryAbandon() {\n if (lock) {\n lock.abandon();\n release();\n }\n }\n\n return {\n isClaimed: isClaimed,\n isActive: isActive,\n claim: claim,\n release: release,\n tryAbandon: tryAbandon\n };\n}\n\nvar tab = 9;\nvar enter = 13;\nvar escape = 27;\nvar space = 32;\nvar pageUp = 33;\nvar pageDown = 34;\nvar end = 35;\nvar home = 36;\nvar arrowLeft = 37;\nvar arrowUp = 38;\nvar arrowRight = 39;\nvar arrowDown = 40;\n\nvar _preventedKeys;\nvar preventedKeys = (_preventedKeys = {}, _preventedKeys[enter] = true, _preventedKeys[tab] = true, _preventedKeys);\nvar preventStandardKeyEvents = (function (event) {\n if (preventedKeys[event.keyCode]) {\n event.preventDefault();\n }\n});\n\nvar supportedEventName = function () {\n var base = 'visibilitychange';\n\n if (typeof document === 'undefined') {\n return base;\n }\n\n var candidates = [base, \"ms\" + base, \"webkit\" + base, \"moz\" + base, \"o\" + base];\n var supported = find(candidates, function (eventName) {\n return \"on\" + eventName in document;\n });\n return supported || base;\n}();\n\nvar primaryButton = 0;\nvar sloppyClickThreshold = 5;\n\nfunction isSloppyClickThresholdExceeded(original, current) {\n return Math.abs(current.x - original.x) >= sloppyClickThreshold || Math.abs(current.y - original.y) >= sloppyClickThreshold;\n}\n\nvar idle$1 = {\n type: 'IDLE'\n};\n\nfunction getCaptureBindings(_ref) {\n var cancel = _ref.cancel,\n completed = _ref.completed,\n getPhase = _ref.getPhase,\n setPhase = _ref.setPhase;\n return [{\n eventName: 'mousemove',\n fn: function fn(event) {\n var button = event.button,\n clientX = event.clientX,\n clientY = event.clientY;\n\n if (button !== primaryButton) {\n return;\n }\n\n var point = {\n x: clientX,\n y: clientY\n };\n var phase = getPhase();\n\n if (phase.type === 'DRAGGING') {\n event.preventDefault();\n phase.actions.move(point);\n return;\n }\n\n !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot be IDLE') : invariant(false) : void 0;\n var pending = phase.point;\n\n if (!isSloppyClickThresholdExceeded(pending, point)) {\n return;\n }\n\n event.preventDefault();\n var actions = phase.actions.fluidLift(point);\n setPhase({\n type: 'DRAGGING',\n actions: actions\n });\n }\n }, {\n eventName: 'mouseup',\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: 'mousedown',\n fn: function fn(event) {\n if (getPhase().type === 'DRAGGING') {\n event.preventDefault();\n }\n\n cancel();\n }\n }, {\n eventName: 'keydown',\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type === 'PENDING') {\n cancel();\n return;\n }\n\n if (event.keyCode === escape) {\n event.preventDefault();\n cancel();\n return;\n }\n\n preventStandardKeyEvents(event);\n }\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'scroll',\n options: {\n passive: true,\n capture: false\n },\n fn: function fn() {\n if (getPhase().type === 'PENDING') {\n cancel();\n }\n }\n }, {\n eventName: 'webkitmouseforcedown',\n fn: function fn(event) {\n var phase = getPhase();\n !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase') : invariant(false) : void 0;\n\n if (phase.actions.shouldRespectForcePress()) {\n cancel();\n return;\n }\n\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction useMouseSensor(api) {\n var phaseRef = useRef(idle$1);\n var unbindEventsRef = useRef(noop);\n var startCaptureBinding = useMemo(function () {\n return {\n eventName: 'mousedown',\n fn: function onMouseDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.button !== primaryButton) {\n return;\n }\n\n if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) {\n return;\n }\n\n var draggableId = api.findClosestDraggableId(event);\n\n if (!draggableId) {\n return;\n }\n\n var actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n\n if (!actions) {\n return;\n }\n\n event.preventDefault();\n var point = {\n x: event.clientX,\n y: event.clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n };\n }, [api]);\n var preventForcePressBinding = useMemo(function () {\n return {\n eventName: 'webkitmouseforcewillbegin',\n fn: function fn(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n var id = api.findClosestDraggableId(event);\n\n if (!id) {\n return;\n }\n\n var options = api.findOptionsForDraggable(id);\n\n if (!options) {\n return;\n }\n\n if (options.shouldRespectForcePress) {\n return;\n }\n\n if (!api.canGetLock(id)) {\n return;\n }\n\n event.preventDefault();\n }\n };\n }, [api]);\n var listenForCapture = useCallback(function listenForCapture() {\n var options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents(window, [preventForcePressBinding, startCaptureBinding], options);\n }, [preventForcePressBinding, startCaptureBinding]);\n var stop = useCallback(function () {\n var current = phaseRef.current;\n\n if (current.type === 'IDLE') {\n return;\n }\n\n phaseRef.current = idle$1;\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture]);\n var cancel = useCallback(function () {\n var phase = phaseRef.current;\n stop();\n\n if (phase.type === 'DRAGGING') {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n\n if (phase.type === 'PENDING') {\n phase.actions.abort();\n }\n }, [stop]);\n var bindCapturingEvents = useCallback(function bindCapturingEvents() {\n var options = {\n capture: true,\n passive: false\n };\n var bindings = getCaptureBindings({\n cancel: cancel,\n completed: stop,\n getPhase: function getPhase() {\n return phaseRef.current;\n },\n setPhase: function setPhase(phase) {\n phaseRef.current = phase;\n }\n });\n unbindEventsRef.current = bindEvents(window, bindings, options);\n }, [cancel, stop]);\n var startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n !(phaseRef.current.type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant(false) : void 0;\n phaseRef.current = {\n type: 'PENDING',\n point: point,\n actions: actions\n };\n bindCapturingEvents();\n }, [bindCapturingEvents]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\n\nvar _scrollJumpKeys;\n\nfunction noop$1() {}\n\nvar scrollJumpKeys = (_scrollJumpKeys = {}, _scrollJumpKeys[pageDown] = true, _scrollJumpKeys[pageUp] = true, _scrollJumpKeys[home] = true, _scrollJumpKeys[end] = true, _scrollJumpKeys);\n\nfunction getDraggingBindings(actions, stop) {\n function cancel() {\n stop();\n actions.cancel();\n }\n\n function drop() {\n stop();\n actions.drop();\n }\n\n return [{\n eventName: 'keydown',\n fn: function fn(event) {\n if (event.keyCode === escape) {\n event.preventDefault();\n cancel();\n return;\n }\n\n if (event.keyCode === space) {\n event.preventDefault();\n drop();\n return;\n }\n\n if (event.keyCode === arrowDown) {\n event.preventDefault();\n actions.moveDown();\n return;\n }\n\n if (event.keyCode === arrowUp) {\n event.preventDefault();\n actions.moveUp();\n return;\n }\n\n if (event.keyCode === arrowRight) {\n event.preventDefault();\n actions.moveRight();\n return;\n }\n\n if (event.keyCode === arrowLeft) {\n event.preventDefault();\n actions.moveLeft();\n return;\n }\n\n if (scrollJumpKeys[event.keyCode]) {\n event.preventDefault();\n return;\n }\n\n preventStandardKeyEvents(event);\n }\n }, {\n eventName: 'mousedown',\n fn: cancel\n }, {\n eventName: 'mouseup',\n fn: cancel\n }, {\n eventName: 'click',\n fn: cancel\n }, {\n eventName: 'touchstart',\n fn: cancel\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'wheel',\n fn: cancel,\n options: {\n passive: true\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction useKeyboardSensor(api) {\n var unbindEventsRef = useRef(noop$1);\n var startCaptureBinding = useMemo(function () {\n return {\n eventName: 'keydown',\n fn: function onKeyDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.keyCode !== space) {\n return;\n }\n\n var draggableId = api.findClosestDraggableId(event);\n\n if (!draggableId) {\n return;\n }\n\n var preDrag = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n\n if (!preDrag) {\n return;\n }\n\n event.preventDefault();\n var isCapturing = true;\n var actions = preDrag.snapLift();\n unbindEventsRef.current();\n\n function stop() {\n !isCapturing ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop capturing a keyboard drag when not capturing') : invariant(false) : void 0;\n isCapturing = false;\n unbindEventsRef.current();\n listenForCapture();\n }\n\n unbindEventsRef.current = bindEvents(window, getDraggingBindings(actions, stop), {\n capture: true,\n passive: false\n });\n }\n };\n }, [api]);\n var listenForCapture = useCallback(function tryStartCapture() {\n var options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\n\nvar idle$2 = {\n type: 'IDLE'\n};\nvar timeForLongPress = 120;\nvar forcePressThreshold = 0.15;\n\nfunction getWindowBindings(_ref) {\n var cancel = _ref.cancel,\n getPhase = _ref.getPhase;\n return [{\n eventName: 'orientationchange',\n fn: cancel\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'contextmenu',\n fn: function fn(event) {\n event.preventDefault();\n }\n }, {\n eventName: 'keydown',\n fn: function fn(event) {\n if (getPhase().type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n if (event.keyCode === escape) {\n event.preventDefault();\n }\n\n cancel();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction getHandleBindings(_ref2) {\n var cancel = _ref2.cancel,\n completed = _ref2.completed,\n getPhase = _ref2.getPhase;\n return [{\n eventName: 'touchmove',\n options: {\n capture: false\n },\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n phase.hasMoved = true;\n var _event$touches$ = event.touches[0],\n clientX = _event$touches$.clientX,\n clientY = _event$touches$.clientY;\n var point = {\n x: clientX,\n y: clientY\n };\n event.preventDefault();\n phase.actions.move(point);\n }\n }, {\n eventName: 'touchend',\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: 'touchcancel',\n fn: function fn(event) {\n if (getPhase().type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n event.preventDefault();\n cancel();\n }\n }, {\n eventName: 'touchforcechange',\n fn: function fn(event) {\n var phase = getPhase();\n !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n var touch = event.touches[0];\n\n if (!touch) {\n return;\n }\n\n var isForcePress = touch.force >= forcePressThreshold;\n\n if (!isForcePress) {\n return;\n }\n\n var shouldRespect = phase.actions.shouldRespectForcePress();\n\n if (phase.type === 'PENDING') {\n if (shouldRespect) {\n cancel();\n }\n\n return;\n }\n\n if (shouldRespect) {\n if (phase.hasMoved) {\n event.preventDefault();\n return;\n }\n\n cancel();\n return;\n }\n\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction useMouseSensor$1(api) {\n var phaseRef = useRef(idle$2);\n var unbindEventsRef = useRef(noop);\n var getPhase = useCallback(function getPhase() {\n return phaseRef.current;\n }, []);\n var setPhase = useCallback(function setPhase(phase) {\n phaseRef.current = phase;\n }, []);\n var startCaptureBinding = useMemo(function () {\n return {\n eventName: 'touchstart',\n fn: function onTouchStart(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n var draggableId = api.findClosestDraggableId(event);\n\n if (!draggableId) {\n return;\n }\n\n var actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n\n if (!actions) {\n return;\n }\n\n var touch = event.touches[0];\n var clientX = touch.clientX,\n clientY = touch.clientY;\n var point = {\n x: clientX,\n y: clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n };\n }, [api]);\n var listenForCapture = useCallback(function listenForCapture() {\n var options = {\n capture: true,\n passive: false\n };\n unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n var stop = useCallback(function () {\n var current = phaseRef.current;\n\n if (current.type === 'IDLE') {\n return;\n }\n\n if (current.type === 'PENDING') {\n clearTimeout(current.longPressTimerId);\n }\n\n setPhase(idle$2);\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture, setPhase]);\n var cancel = useCallback(function () {\n var phase = phaseRef.current;\n stop();\n\n if (phase.type === 'DRAGGING') {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n\n if (phase.type === 'PENDING') {\n phase.actions.abort();\n }\n }, [stop]);\n var bindCapturingEvents = useCallback(function bindCapturingEvents() {\n var options = {\n capture: true,\n passive: false\n };\n var args = {\n cancel: cancel,\n completed: stop,\n getPhase: getPhase\n };\n var unbindTarget = bindEvents(window, getHandleBindings(args), options);\n var unbindWindow = bindEvents(window, getWindowBindings(args), options);\n\n unbindEventsRef.current = function unbindAll() {\n unbindTarget();\n unbindWindow();\n };\n }, [cancel, getPhase, stop]);\n var startDragging = useCallback(function startDragging() {\n var phase = getPhase();\n !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot start dragging from phase \" + phase.type) : invariant(false) : void 0;\n var actions = phase.actions.fluidLift(phase.point);\n setPhase({\n type: 'DRAGGING',\n actions: actions,\n hasMoved: false\n });\n }, [getPhase, setPhase]);\n var startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n !(getPhase().type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant(false) : void 0;\n var longPressTimerId = setTimeout(startDragging, timeForLongPress);\n setPhase({\n type: 'PENDING',\n point: point,\n actions: actions,\n longPressTimerId: longPressTimerId\n });\n bindCapturingEvents();\n }, [bindCapturingEvents, getPhase, setPhase, startDragging]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n var phase = getPhase();\n\n if (phase.type === 'PENDING') {\n clearTimeout(phase.longPressTimerId);\n setPhase(idle$2);\n }\n };\n }, [getPhase, listenForCapture, setPhase]);\n useIsomorphicLayoutEffect(function webkitHack() {\n var unbind = bindEvents(window, [{\n eventName: 'touchmove',\n fn: function fn() {},\n options: {\n capture: false,\n passive: false\n }\n }]);\n return unbind;\n }, []);\n}\n\nfunction useValidateSensorHooks(sensorHooks) {\n useDev(function () {\n var previousRef = usePrevious(sensorHooks);\n useDevSetupWarning(function () {\n !(previousRef.current.length === sensorHooks.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot change the amount of sensor hooks after mounting') : invariant(false) : void 0;\n });\n });\n}\n\nvar interactiveTagNames = {\n input: true,\n button: true,\n textarea: true,\n select: true,\n option: true,\n optgroup: true,\n video: true,\n audio: true\n};\n\nfunction isAnInteractiveElement(parent, current) {\n if (current == null) {\n return false;\n }\n\n var hasAnInteractiveTag = Boolean(interactiveTagNames[current.tagName.toLowerCase()]);\n\n if (hasAnInteractiveTag) {\n return true;\n }\n\n var attribute = current.getAttribute('contenteditable');\n\n if (attribute === 'true' || attribute === '') {\n return true;\n }\n\n if (current === parent) {\n return false;\n }\n\n return isAnInteractiveElement(parent, current.parentElement);\n}\n\nfunction isEventInInteractiveElement(draggable, event) {\n var target = event.target;\n\n if (!isHtmlElement(target)) {\n return false;\n }\n\n return isAnInteractiveElement(draggable, target);\n}\n\nvar getBorderBoxCenterPosition = (function (el) {\n return getRect(el.getBoundingClientRect()).center;\n});\n\nfunction isElement(el) {\n return el instanceof getWindowFromEl(el).Element;\n}\n\nvar supportedMatchesName = function () {\n var base = 'matches';\n\n if (typeof document === 'undefined') {\n return base;\n }\n\n var candidates = [base, 'msMatchesSelector', 'webkitMatchesSelector'];\n var value = find(candidates, function (name) {\n return name in Element.prototype;\n });\n return value || base;\n}();\n\nfunction closestPonyfill(el, selector) {\n if (el == null) {\n return null;\n }\n\n if (el[supportedMatchesName](selector)) {\n return el;\n }\n\n return closestPonyfill(el.parentElement, selector);\n}\n\nfunction closest$1(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n\n return closestPonyfill(el, selector);\n}\n\nfunction getSelector(contextId) {\n return \"[\" + dragHandle.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n}\n\nfunction findClosestDragHandleFromEvent(contextId, event) {\n var target = event.target;\n\n if (!isElement(target)) {\n process.env.NODE_ENV !== \"production\" ? warning('event.target must be a Element') : void 0;\n return null;\n }\n\n var selector = getSelector(contextId);\n var handle = closest$1(target, selector);\n\n if (!handle) {\n return null;\n }\n\n if (!isHtmlElement(handle)) {\n process.env.NODE_ENV !== \"production\" ? warning('drag handle must be a HTMLElement') : void 0;\n return null;\n }\n\n return handle;\n}\n\nfunction tryGetClosestDraggableIdFromEvent(contextId, event) {\n var handle = findClosestDragHandleFromEvent(contextId, event);\n\n if (!handle) {\n return null;\n }\n\n return handle.getAttribute(dragHandle.draggableId);\n}\n\nfunction findDraggable(contextId, draggableId) {\n var selector = \"[\" + draggable.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n var possible = toArray(document.querySelectorAll(selector));\n var draggable$1 = find(possible, function (el) {\n return el.getAttribute(draggable.id) === draggableId;\n });\n\n if (!draggable$1) {\n return null;\n }\n\n if (!isHtmlElement(draggable$1)) {\n process.env.NODE_ENV !== \"production\" ? warning('Draggable element is not a HTMLElement') : void 0;\n return null;\n }\n\n return draggable$1;\n}\n\nfunction preventDefault(event) {\n event.preventDefault();\n}\n\nfunction _isActive(_ref) {\n var expected = _ref.expected,\n phase = _ref.phase,\n isLockActive = _ref.isLockActive,\n shouldWarn = _ref.shouldWarn;\n\n if (!isLockActive()) {\n if (shouldWarn) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Cannot perform action.\\n The sensor no longer has an action lock.\\n\\n Tips:\\n\\n - Throw away your action handlers when forceStop() is called\\n - Check actions.isActive() if you really need to\\n \") : void 0;\n }\n\n return false;\n }\n\n if (expected !== phase) {\n if (shouldWarn) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Cannot perform action.\\n The actions you used belong to an outdated phase\\n\\n Current phase: \" + expected + \"\\n You called an action from outdated phase: \" + phase + \"\\n\\n Tips:\\n\\n - Do not use preDragActions actions after calling preDragActions.lift()\\n \") : void 0;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction canStart(_ref2) {\n var lockAPI = _ref2.lockAPI,\n store = _ref2.store,\n registry = _ref2.registry,\n draggableId = _ref2.draggableId;\n\n if (lockAPI.isClaimed()) {\n return false;\n }\n\n var entry = registry.draggable.findById(draggableId);\n\n if (!entry) {\n process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find draggable with id: \" + draggableId) : void 0;\n return false;\n }\n\n if (!entry.options.isEnabled) {\n return false;\n }\n\n if (!canStartDrag(store.getState(), draggableId)) {\n return false;\n }\n\n return true;\n}\n\nfunction tryStart(_ref3) {\n var lockAPI = _ref3.lockAPI,\n contextId = _ref3.contextId,\n store = _ref3.store,\n registry = _ref3.registry,\n draggableId = _ref3.draggableId,\n forceSensorStop = _ref3.forceSensorStop,\n sourceEvent = _ref3.sourceEvent;\n var shouldStart = canStart({\n lockAPI: lockAPI,\n store: store,\n registry: registry,\n draggableId: draggableId\n });\n\n if (!shouldStart) {\n return null;\n }\n\n var entry = registry.draggable.getById(draggableId);\n var el = findDraggable(contextId, entry.descriptor.id);\n\n if (!el) {\n process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find draggable element with id: \" + draggableId) : void 0;\n return null;\n }\n\n if (sourceEvent && !entry.options.canDragInteractiveElements && isEventInInteractiveElement(el, sourceEvent)) {\n return null;\n }\n\n var lock = lockAPI.claim(forceSensorStop || noop);\n var phase = 'PRE_DRAG';\n\n function getShouldRespectForcePress() {\n return entry.options.shouldRespectForcePress;\n }\n\n function isLockActive() {\n return lockAPI.isActive(lock);\n }\n\n function tryDispatch(expected, getAction) {\n if (_isActive({\n expected: expected,\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: true\n })) {\n store.dispatch(getAction());\n }\n }\n\n var tryDispatchWhenDragging = tryDispatch.bind(null, 'DRAGGING');\n\n function lift$1(args) {\n function completed() {\n lockAPI.release();\n phase = 'COMPLETED';\n }\n\n if (phase !== 'PRE_DRAG') {\n completed();\n !(phase === 'PRE_DRAG') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot lift in phase \" + phase) : invariant(false) : void 0;\n }\n\n store.dispatch(lift(args.liftActionArgs));\n phase = 'DRAGGING';\n\n function finish(reason, options) {\n if (options === void 0) {\n options = {\n shouldBlockNextClick: false\n };\n }\n\n args.cleanup();\n\n if (options.shouldBlockNextClick) {\n var unbind = bindEvents(window, [{\n eventName: 'click',\n fn: preventDefault,\n options: {\n once: true,\n passive: false,\n capture: true\n }\n }]);\n setTimeout(unbind);\n }\n\n completed();\n store.dispatch(drop({\n reason: reason\n }));\n }\n\n return _extends({\n isActive: function isActive() {\n return _isActive({\n expected: 'DRAGGING',\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: false\n });\n },\n shouldRespectForcePress: getShouldRespectForcePress,\n drop: function drop(options) {\n return finish('DROP', options);\n },\n cancel: function cancel(options) {\n return finish('CANCEL', options);\n }\n }, args.actions);\n }\n\n function fluidLift(clientSelection) {\n var move$1 = rafSchd(function (client) {\n tryDispatchWhenDragging(function () {\n return move({\n client: client\n });\n });\n });\n var api = lift$1({\n liftActionArgs: {\n id: draggableId,\n clientSelection: clientSelection,\n movementMode: 'FLUID'\n },\n cleanup: function cleanup() {\n return move$1.cancel();\n },\n actions: {\n move: move$1\n }\n });\n return _extends({}, api, {\n move: move$1\n });\n }\n\n function snapLift() {\n var actions = {\n moveUp: function moveUp$1() {\n return tryDispatchWhenDragging(moveUp);\n },\n moveRight: function moveRight$1() {\n return tryDispatchWhenDragging(moveRight);\n },\n moveDown: function moveDown$1() {\n return tryDispatchWhenDragging(moveDown);\n },\n moveLeft: function moveLeft$1() {\n return tryDispatchWhenDragging(moveLeft);\n }\n };\n return lift$1({\n liftActionArgs: {\n id: draggableId,\n clientSelection: getBorderBoxCenterPosition(el),\n movementMode: 'SNAP'\n },\n cleanup: noop,\n actions: actions\n });\n }\n\n function abortPreDrag() {\n var shouldRelease = _isActive({\n expected: 'PRE_DRAG',\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: true\n });\n\n if (shouldRelease) {\n lockAPI.release();\n }\n }\n\n var preDrag = {\n isActive: function isActive() {\n return _isActive({\n expected: 'PRE_DRAG',\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: false\n });\n },\n shouldRespectForcePress: getShouldRespectForcePress,\n fluidLift: fluidLift,\n snapLift: snapLift,\n abort: abortPreDrag\n };\n return preDrag;\n}\n\nvar defaultSensors = [useMouseSensor, useKeyboardSensor, useMouseSensor$1];\nfunction useSensorMarshal(_ref4) {\n var contextId = _ref4.contextId,\n store = _ref4.store,\n registry = _ref4.registry,\n customSensors = _ref4.customSensors,\n enableDefaultSensors = _ref4.enableDefaultSensors;\n var useSensors = [].concat(enableDefaultSensors ? defaultSensors : [], customSensors || []);\n var lockAPI = useState(function () {\n return create();\n })[0];\n var tryAbandonLock = useCallback(function tryAbandonLock(previous, current) {\n if (previous.isDragging && !current.isDragging) {\n lockAPI.tryAbandon();\n }\n }, [lockAPI]);\n useIsomorphicLayoutEffect(function listenToStore() {\n var previous = store.getState();\n var unsubscribe = store.subscribe(function () {\n var current = store.getState();\n tryAbandonLock(previous, current);\n previous = current;\n });\n return unsubscribe;\n }, [lockAPI, store, tryAbandonLock]);\n useIsomorphicLayoutEffect(function () {\n return lockAPI.tryAbandon;\n }, [lockAPI.tryAbandon]);\n var canGetLock = useCallback(function (draggableId) {\n return canStart({\n lockAPI: lockAPI,\n registry: registry,\n store: store,\n draggableId: draggableId\n });\n }, [lockAPI, registry, store]);\n var tryGetLock = useCallback(function (draggableId, forceStop, options) {\n return tryStart({\n lockAPI: lockAPI,\n registry: registry,\n contextId: contextId,\n store: store,\n draggableId: draggableId,\n forceSensorStop: forceStop,\n sourceEvent: options && options.sourceEvent ? options.sourceEvent : null\n });\n }, [contextId, lockAPI, registry, store]);\n var findClosestDraggableId = useCallback(function (event) {\n return tryGetClosestDraggableIdFromEvent(contextId, event);\n }, [contextId]);\n var findOptionsForDraggable = useCallback(function (id) {\n var entry = registry.draggable.findById(id);\n return entry ? entry.options : null;\n }, [registry.draggable]);\n var tryReleaseLock = useCallback(function tryReleaseLock() {\n if (!lockAPI.isClaimed()) {\n return;\n }\n\n lockAPI.tryAbandon();\n\n if (store.getState().phase !== 'IDLE') {\n store.dispatch(flush());\n }\n }, [lockAPI, store]);\n var isLockClaimed = useCallback(lockAPI.isClaimed, [lockAPI]);\n var api = useMemo(function () {\n return {\n canGetLock: canGetLock,\n tryGetLock: tryGetLock,\n findClosestDraggableId: findClosestDraggableId,\n findOptionsForDraggable: findOptionsForDraggable,\n tryReleaseLock: tryReleaseLock,\n isLockClaimed: isLockClaimed\n };\n }, [canGetLock, tryGetLock, findClosestDraggableId, findOptionsForDraggable, tryReleaseLock, isLockClaimed]);\n useValidateSensorHooks(useSensors);\n\n for (var i = 0; i < useSensors.length; i++) {\n useSensors[i](api);\n }\n}\n\nvar createResponders = function createResponders(props) {\n return {\n onBeforeCapture: props.onBeforeCapture,\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragEnd: props.onDragEnd,\n onDragUpdate: props.onDragUpdate\n };\n};\n\nfunction getStore(lazyRef) {\n !lazyRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find store from lazy ref') : invariant(false) : void 0;\n return lazyRef.current;\n}\n\nfunction App(props) {\n var contextId = props.contextId,\n setCallbacks = props.setCallbacks,\n sensors = props.sensors,\n nonce = props.nonce,\n dragHandleUsageInstructions = props.dragHandleUsageInstructions;\n var lazyStoreRef = useRef(null);\n useStartupValidation();\n var lastPropsRef = usePrevious(props);\n var getResponders = useCallback(function () {\n return createResponders(lastPropsRef.current);\n }, [lastPropsRef]);\n var announce = useAnnouncer(contextId);\n var dragHandleUsageInstructionsId = useHiddenTextElement({\n contextId: contextId,\n text: dragHandleUsageInstructions\n });\n var styleMarshal = useStyleMarshal(contextId, nonce);\n var lazyDispatch = useCallback(function (action) {\n getStore(lazyStoreRef).dispatch(action);\n }, []);\n var marshalCallbacks = useMemo(function () {\n return bindActionCreators({\n publishWhileDragging: publishWhileDragging,\n updateDroppableScroll: updateDroppableScroll,\n updateDroppableIsEnabled: updateDroppableIsEnabled,\n updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled,\n collectionStarting: collectionStarting\n }, lazyDispatch);\n }, [lazyDispatch]);\n var registry = useRegistry();\n var dimensionMarshal = useMemo(function () {\n return createDimensionMarshal(registry, marshalCallbacks);\n }, [registry, marshalCallbacks]);\n var autoScroller = useMemo(function () {\n return createAutoScroller(_extends({\n scrollWindow: scrollWindow,\n scrollDroppable: dimensionMarshal.scrollDroppable\n }, bindActionCreators({\n move: move\n }, lazyDispatch)));\n }, [dimensionMarshal.scrollDroppable, lazyDispatch]);\n var focusMarshal = useFocusMarshal(contextId);\n var store = useMemo(function () {\n return createStore({\n announce: announce,\n autoScroller: autoScroller,\n dimensionMarshal: dimensionMarshal,\n focusMarshal: focusMarshal,\n getResponders: getResponders,\n styleMarshal: styleMarshal\n });\n }, [announce, autoScroller, dimensionMarshal, focusMarshal, getResponders, styleMarshal]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (lazyStoreRef.current && lazyStoreRef.current !== store) {\n process.env.NODE_ENV !== \"production\" ? warning('unexpected store change') : void 0;\n }\n }\n\n lazyStoreRef.current = store;\n var tryResetStore = useCallback(function () {\n var current = getStore(lazyStoreRef);\n var state = current.getState();\n\n if (state.phase !== 'IDLE') {\n current.dispatch(flush());\n }\n }, []);\n var isDragging = useCallback(function () {\n var state = getStore(lazyStoreRef).getState();\n return state.isDragging || state.phase === 'DROP_ANIMATING';\n }, []);\n var appCallbacks = useMemo(function () {\n return {\n isDragging: isDragging,\n tryAbort: tryResetStore\n };\n }, [isDragging, tryResetStore]);\n setCallbacks(appCallbacks);\n var getCanLift = useCallback(function (id) {\n return canStartDrag(getStore(lazyStoreRef).getState(), id);\n }, []);\n var getIsMovementAllowed = useCallback(function () {\n return isMovementAllowed(getStore(lazyStoreRef).getState());\n }, []);\n var appContext = useMemo(function () {\n return {\n marshal: dimensionMarshal,\n focus: focusMarshal,\n contextId: contextId,\n canLift: getCanLift,\n isMovementAllowed: getIsMovementAllowed,\n dragHandleUsageInstructionsId: dragHandleUsageInstructionsId,\n registry: registry\n };\n }, [contextId, dimensionMarshal, dragHandleUsageInstructionsId, focusMarshal, getCanLift, getIsMovementAllowed, registry]);\n useSensorMarshal({\n contextId: contextId,\n store: store,\n registry: registry,\n customSensors: sensors,\n enableDefaultSensors: props.enableDefaultSensors !== false\n });\n useEffect(function () {\n return tryResetStore;\n }, [tryResetStore]);\n return React.createElement(AppContext.Provider, {\n value: appContext\n }, React.createElement(Provider, {\n context: StoreContext,\n store: store\n }, props.children));\n}\n\nvar count$1 = 0;\nfunction reset$1() {\n count$1 = 0;\n}\nfunction useInstanceCount() {\n return useMemo(function () {\n return \"\" + count$1++;\n }, []);\n}\n\nfunction resetServerContext() {\n reset$1();\n reset();\n}\nfunction DragDropContext(props) {\n var contextId = useInstanceCount();\n var dragHandleUsageInstructions = props.dragHandleUsageInstructions || preset.dragHandleUsageInstructions;\n return React.createElement(ErrorBoundary, null, function (setCallbacks) {\n return React.createElement(App, {\n nonce: props.nonce,\n contextId: contextId,\n setCallbacks: setCallbacks,\n dragHandleUsageInstructions: dragHandleUsageInstructions,\n enableDefaultSensors: props.enableDefaultSensors,\n sensors: props.sensors,\n onBeforeCapture: props.onBeforeCapture,\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragUpdate: props.onDragUpdate,\n onDragEnd: props.onDragEnd\n }, props.children);\n });\n}\n\nvar isEqual$1 = function isEqual(base) {\n return function (value) {\n return base === value;\n };\n};\n\nvar isScroll = isEqual$1('scroll');\nvar isAuto = isEqual$1('auto');\nvar isVisible$1 = isEqual$1('visible');\n\nvar isEither = function isEither(overflow, fn) {\n return fn(overflow.overflowX) || fn(overflow.overflowY);\n};\n\nvar isBoth = function isBoth(overflow, fn) {\n return fn(overflow.overflowX) && fn(overflow.overflowY);\n};\n\nvar isElementScrollable = function isElementScrollable(el) {\n var style = window.getComputedStyle(el);\n var overflow = {\n overflowX: style.overflowX,\n overflowY: style.overflowY\n };\n return isEither(overflow, isScroll) || isEither(overflow, isAuto);\n};\n\nvar isBodyScrollable = function isBodyScrollable() {\n if (process.env.NODE_ENV === 'production') {\n return false;\n }\n\n var body = getBodyElement();\n var html = document.documentElement;\n !html ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n\n if (!isElementScrollable(body)) {\n return false;\n }\n\n var htmlStyle = window.getComputedStyle(html);\n var htmlOverflow = {\n overflowX: htmlStyle.overflowX,\n overflowY: htmlStyle.overflowY\n };\n\n if (isBoth(htmlOverflow, isVisible$1)) {\n return false;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n We have detected that your element might be a scroll container.\\n We have found no reliable way of detecting whether the element is a scroll container.\\n Under most circumstances a scroll bar will be on the element (document.documentElement)\\n\\n Because we cannot determine if the is a scroll container, and generally it is not one,\\n we will be treating the as *not* a scroll container\\n\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/how-we-detect-scroll-containers.md\\n \") : void 0;\n return false;\n};\n\nvar getClosestScrollable = function getClosestScrollable(el) {\n if (el == null) {\n return null;\n }\n\n if (el === document.body) {\n return isBodyScrollable() ? el : null;\n }\n\n if (el === document.documentElement) {\n return null;\n }\n\n if (!isElementScrollable(el)) {\n return getClosestScrollable(el.parentElement);\n }\n\n return el;\n};\n\nvar checkForNestedScrollContainers = (function (scrollable) {\n if (!scrollable) {\n return;\n }\n\n var anotherScrollParent = getClosestScrollable(scrollable.parentElement);\n\n if (!anotherScrollParent) {\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Droppable: unsupported nested scroll container detected.\\n A Droppable can only have one scroll parent (which can be itself)\\n Nested scroll containers are currently not supported.\\n\\n We hope to support nested scroll containers soon: https://github.com/atlassian/react-beautiful-dnd/issues/131\\n \") : void 0;\n});\n\nvar getScroll$1 = (function (el) {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n };\n});\n\nvar getIsFixed = function getIsFixed(el) {\n if (!el) {\n return false;\n }\n\n var style = window.getComputedStyle(el);\n\n if (style.position === 'fixed') {\n return true;\n }\n\n return getIsFixed(el.parentElement);\n};\n\nvar getEnv = (function (start) {\n var closestScrollable = getClosestScrollable(start);\n var isFixedOnPage = getIsFixed(start);\n return {\n closestScrollable: closestScrollable,\n isFixedOnPage: isFixedOnPage\n };\n});\n\nvar getDroppableDimension = (function (_ref) {\n var descriptor = _ref.descriptor,\n isEnabled = _ref.isEnabled,\n isCombineEnabled = _ref.isCombineEnabled,\n isFixedOnPage = _ref.isFixedOnPage,\n direction = _ref.direction,\n client = _ref.client,\n page = _ref.page,\n closest = _ref.closest;\n\n var frame = function () {\n if (!closest) {\n return null;\n }\n\n var scrollSize = closest.scrollSize,\n frameClient = closest.client;\n var maxScroll = getMaxScroll({\n scrollHeight: scrollSize.scrollHeight,\n scrollWidth: scrollSize.scrollWidth,\n height: frameClient.paddingBox.height,\n width: frameClient.paddingBox.width\n });\n return {\n pageMarginBox: closest.page.marginBox,\n frameClient: frameClient,\n scrollSize: scrollSize,\n shouldClipSubject: closest.shouldClipSubject,\n scroll: {\n initial: closest.scroll,\n current: closest.scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n }();\n\n var axis = direction === 'vertical' ? vertical : horizontal;\n var subject = getSubject({\n page: page,\n withPlaceholder: null,\n axis: axis,\n frame: frame\n });\n var dimension = {\n descriptor: descriptor,\n isCombineEnabled: isCombineEnabled,\n isFixedOnPage: isFixedOnPage,\n axis: axis,\n isEnabled: isEnabled,\n client: client,\n page: page,\n frame: frame,\n subject: subject\n };\n return dimension;\n});\n\nvar getClient = function getClient(targetRef, closestScrollable) {\n var base = getBox(targetRef);\n\n if (!closestScrollable) {\n return base;\n }\n\n if (targetRef !== closestScrollable) {\n return base;\n }\n\n var top = base.paddingBox.top - closestScrollable.scrollTop;\n var left = base.paddingBox.left - closestScrollable.scrollLeft;\n var bottom = top + closestScrollable.scrollHeight;\n var right = left + closestScrollable.scrollWidth;\n var paddingBox = {\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n var borderBox = expand(paddingBox, base.border);\n var client = createBox({\n borderBox: borderBox,\n margin: base.margin,\n border: base.border,\n padding: base.padding\n });\n return client;\n};\n\nvar getDimension = (function (_ref) {\n var ref = _ref.ref,\n descriptor = _ref.descriptor,\n env = _ref.env,\n windowScroll = _ref.windowScroll,\n direction = _ref.direction,\n isDropDisabled = _ref.isDropDisabled,\n isCombineEnabled = _ref.isCombineEnabled,\n shouldClipSubject = _ref.shouldClipSubject;\n var closestScrollable = env.closestScrollable;\n var client = getClient(ref, closestScrollable);\n var page = withScroll(client, windowScroll);\n\n var closest = function () {\n if (!closestScrollable) {\n return null;\n }\n\n var frameClient = getBox(closestScrollable);\n var scrollSize = {\n scrollHeight: closestScrollable.scrollHeight,\n scrollWidth: closestScrollable.scrollWidth\n };\n return {\n client: frameClient,\n page: withScroll(frameClient, windowScroll),\n scroll: getScroll$1(closestScrollable),\n scrollSize: scrollSize,\n shouldClipSubject: shouldClipSubject\n };\n }();\n\n var dimension = getDroppableDimension({\n descriptor: descriptor,\n isEnabled: !isDropDisabled,\n isCombineEnabled: isCombineEnabled,\n isFixedOnPage: env.isFixedOnPage,\n direction: direction,\n client: client,\n page: page,\n closest: closest\n });\n return dimension;\n});\n\nvar immediate = {\n passive: false\n};\nvar delayed = {\n passive: true\n};\nvar getListenerOptions = (function (options) {\n return options.shouldPublishImmediately ? immediate : delayed;\n});\n\nfunction useRequiredContext(Context) {\n var result = useContext(Context);\n !result ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find required context') : invariant(false) : void 0;\n return result;\n}\n\nvar getClosestScrollableFromDrag = function getClosestScrollableFromDrag(dragging) {\n return dragging && dragging.env.closestScrollable || null;\n};\n\nfunction useDroppablePublisher(args) {\n var whileDraggingRef = useRef(null);\n var appContext = useRequiredContext(AppContext);\n var uniqueId = useUniqueId('droppable');\n var registry = appContext.registry,\n marshal = appContext.marshal;\n var previousRef = usePrevious(args);\n var descriptor = useMemo(function () {\n return {\n id: args.droppableId,\n type: args.type,\n mode: args.mode\n };\n }, [args.droppableId, args.mode, args.type]);\n var publishedDescriptorRef = useRef(descriptor);\n var memoizedUpdateScroll = useMemo(function () {\n return memoizeOne(function (x, y) {\n !whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only update scroll when dragging') : invariant(false) : void 0;\n var scroll = {\n x: x,\n y: y\n };\n marshal.updateDroppableScroll(descriptor.id, scroll);\n });\n }, [descriptor.id, marshal]);\n var getClosestScroll = useCallback(function () {\n var dragging = whileDraggingRef.current;\n\n if (!dragging || !dragging.env.closestScrollable) {\n return origin;\n }\n\n return getScroll$1(dragging.env.closestScrollable);\n }, []);\n var updateScroll = useCallback(function () {\n var scroll = getClosestScroll();\n memoizedUpdateScroll(scroll.x, scroll.y);\n }, [getClosestScroll, memoizedUpdateScroll]);\n var scheduleScrollUpdate = useMemo(function () {\n return rafSchd(updateScroll);\n }, [updateScroll]);\n var onClosestScroll = useCallback(function () {\n var dragging = whileDraggingRef.current;\n var closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find scroll options while scrolling') : invariant(false) : void 0;\n var options = dragging.scrollOptions;\n\n if (options.shouldPublishImmediately) {\n updateScroll();\n return;\n }\n\n scheduleScrollUpdate();\n }, [scheduleScrollUpdate, updateScroll]);\n var getDimensionAndWatchScroll = useCallback(function (windowScroll, options) {\n !!whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect a droppable while a drag is occurring') : invariant(false) : void 0;\n var previous = previousRef.current;\n var ref = previous.getDroppableRef();\n !ref ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect without a droppable ref') : invariant(false) : void 0;\n var env = getEnv(ref);\n var dragging = {\n ref: ref,\n descriptor: descriptor,\n env: env,\n scrollOptions: options\n };\n whileDraggingRef.current = dragging;\n var dimension = getDimension({\n ref: ref,\n descriptor: descriptor,\n env: env,\n windowScroll: windowScroll,\n direction: previous.direction,\n isDropDisabled: previous.isDropDisabled,\n isCombineEnabled: previous.isCombineEnabled,\n shouldClipSubject: !previous.ignoreContainerClipping\n });\n var scrollable = env.closestScrollable;\n\n if (scrollable) {\n scrollable.setAttribute(scrollContainer.contextId, appContext.contextId);\n scrollable.addEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n\n if (process.env.NODE_ENV !== 'production') {\n checkForNestedScrollContainers(scrollable);\n }\n }\n\n return dimension;\n }, [appContext.contextId, descriptor, onClosestScroll, previousRef]);\n var getScrollWhileDragging = useCallback(function () {\n var dragging = whileDraggingRef.current;\n var closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only recollect Droppable client for Droppables that have a scroll container') : invariant(false) : void 0;\n return getScroll$1(closest);\n }, []);\n var dragStopped = useCallback(function () {\n var dragging = whileDraggingRef.current;\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop drag when no active drag') : invariant(false) : void 0;\n var closest = getClosestScrollableFromDrag(dragging);\n whileDraggingRef.current = null;\n\n if (!closest) {\n return;\n }\n\n scheduleScrollUpdate.cancel();\n closest.removeAttribute(scrollContainer.contextId);\n closest.removeEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n }, [onClosestScroll, scheduleScrollUpdate]);\n var scroll = useCallback(function (change) {\n var dragging = whileDraggingRef.current;\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll when there is no drag') : invariant(false) : void 0;\n var closest = getClosestScrollableFromDrag(dragging);\n !closest ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll a droppable with no closest scrollable') : invariant(false) : void 0;\n closest.scrollTop += change.y;\n closest.scrollLeft += change.x;\n }, []);\n var callbacks = useMemo(function () {\n return {\n getDimensionAndWatchScroll: getDimensionAndWatchScroll,\n getScrollWhileDragging: getScrollWhileDragging,\n dragStopped: dragStopped,\n scroll: scroll\n };\n }, [dragStopped, getDimensionAndWatchScroll, getScrollWhileDragging, scroll]);\n var entry = useMemo(function () {\n return {\n uniqueId: uniqueId,\n descriptor: descriptor,\n callbacks: callbacks\n };\n }, [callbacks, descriptor, uniqueId]);\n useIsomorphicLayoutEffect(function () {\n publishedDescriptorRef.current = entry.descriptor;\n registry.droppable.register(entry);\n return function () {\n if (whileDraggingRef.current) {\n process.env.NODE_ENV !== \"production\" ? warning('Unsupported: changing the droppableId or type of a Droppable during a drag') : void 0;\n dragStopped();\n }\n\n registry.droppable.unregister(entry);\n };\n }, [callbacks, descriptor, dragStopped, entry, marshal, registry.droppable]);\n useIsomorphicLayoutEffect(function () {\n if (!whileDraggingRef.current) {\n return;\n }\n\n marshal.updateDroppableIsEnabled(publishedDescriptorRef.current.id, !args.isDropDisabled);\n }, [args.isDropDisabled, marshal]);\n useIsomorphicLayoutEffect(function () {\n if (!whileDraggingRef.current) {\n return;\n }\n\n marshal.updateDroppableIsCombineEnabled(publishedDescriptorRef.current.id, args.isCombineEnabled);\n }, [args.isCombineEnabled, marshal]);\n}\n\nfunction noop$2() {}\n\nvar empty = {\n width: 0,\n height: 0,\n margin: noSpacing\n};\n\nvar getSize = function getSize(_ref) {\n var isAnimatingOpenOnMount = _ref.isAnimatingOpenOnMount,\n placeholder = _ref.placeholder,\n animate = _ref.animate;\n\n if (isAnimatingOpenOnMount) {\n return empty;\n }\n\n if (animate === 'close') {\n return empty;\n }\n\n return {\n height: placeholder.client.borderBox.height,\n width: placeholder.client.borderBox.width,\n margin: placeholder.client.margin\n };\n};\n\nvar getStyle = function getStyle(_ref2) {\n var isAnimatingOpenOnMount = _ref2.isAnimatingOpenOnMount,\n placeholder = _ref2.placeholder,\n animate = _ref2.animate;\n var size = getSize({\n isAnimatingOpenOnMount: isAnimatingOpenOnMount,\n placeholder: placeholder,\n animate: animate\n });\n return {\n display: placeholder.display,\n boxSizing: 'border-box',\n width: size.width,\n height: size.height,\n marginTop: size.margin.top,\n marginRight: size.margin.right,\n marginBottom: size.margin.bottom,\n marginLeft: size.margin.left,\n flexShrink: '0',\n flexGrow: '0',\n pointerEvents: 'none',\n transition: animate !== 'none' ? transitions.placeholder : null\n };\n};\n\nfunction Placeholder(props) {\n var animateOpenTimerRef = useRef(null);\n var tryClearAnimateOpenTimer = useCallback(function () {\n if (!animateOpenTimerRef.current) {\n return;\n }\n\n clearTimeout(animateOpenTimerRef.current);\n animateOpenTimerRef.current = null;\n }, []);\n var animate = props.animate,\n onTransitionEnd = props.onTransitionEnd,\n onClose = props.onClose,\n contextId = props.contextId;\n\n var _useState = useState(props.animate === 'open'),\n isAnimatingOpenOnMount = _useState[0],\n setIsAnimatingOpenOnMount = _useState[1];\n\n useEffect(function () {\n if (!isAnimatingOpenOnMount) {\n return noop$2;\n }\n\n if (animate !== 'open') {\n tryClearAnimateOpenTimer();\n setIsAnimatingOpenOnMount(false);\n return noop$2;\n }\n\n if (animateOpenTimerRef.current) {\n return noop$2;\n }\n\n animateOpenTimerRef.current = setTimeout(function () {\n animateOpenTimerRef.current = null;\n setIsAnimatingOpenOnMount(false);\n });\n return tryClearAnimateOpenTimer;\n }, [animate, isAnimatingOpenOnMount, tryClearAnimateOpenTimer]);\n var onSizeChangeEnd = useCallback(function (event) {\n if (event.propertyName !== 'height') {\n return;\n }\n\n onTransitionEnd();\n\n if (animate === 'close') {\n onClose();\n }\n }, [animate, onClose, onTransitionEnd]);\n var style = getStyle({\n isAnimatingOpenOnMount: isAnimatingOpenOnMount,\n animate: props.animate,\n placeholder: props.placeholder\n });\n return React.createElement(props.placeholder.tagName, {\n style: style,\n 'data-rbd-placeholder-context-id': contextId,\n onTransitionEnd: onSizeChangeEnd,\n ref: props.innerRef\n });\n}\n\nvar Placeholder$1 = React.memo(Placeholder);\n\nvar DroppableContext = React.createContext(null);\n\nfunction checkIsValidInnerRef(el) {\n !(el && isHtmlElement(el)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"\\n provided.innerRef has not been provided with a HTMLElement.\\n\\n You can find a guide on using the innerRef callback functions at:\\n https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/using-inner-ref.md\\n \") : invariant(false) : void 0;\n}\n\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\n\nfunction runChecks(args, checks) {\n checks.forEach(function (check) {\n return check(args);\n });\n}\n\nvar shared = [function required(_ref) {\n var props = _ref.props;\n !props.droppableId ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A Droppable requires a droppableId prop') : invariant(false) : void 0;\n !(typeof props.droppableId === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"A Droppable requires a [string] droppableId. Provided: [\" + typeof props.droppableId + \"]\") : invariant(false) : void 0;\n}, function _boolean(_ref2) {\n var props = _ref2.props;\n !isBoolean(props.isDropDisabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isDropDisabled must be a boolean') : invariant(false) : void 0;\n !isBoolean(props.isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isCombineEnabled must be a boolean') : invariant(false) : void 0;\n !isBoolean(props.ignoreContainerClipping) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ignoreContainerClipping must be a boolean') : invariant(false) : void 0;\n}, function ref(_ref3) {\n var getDroppableRef = _ref3.getDroppableRef;\n checkIsValidInnerRef(getDroppableRef());\n}];\nvar standard = [function placeholder(_ref4) {\n var props = _ref4.props,\n getPlaceholderRef = _ref4.getPlaceholderRef;\n\n if (!props.placeholder) {\n return;\n }\n\n var ref = getPlaceholderRef();\n\n if (ref) {\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Droppable setup issue [droppableId: \\\"\" + props.droppableId + \"\\\"]:\\n DroppableProvided > placeholder could not be found.\\n\\n Please be sure to add the {provided.placeholder} React Node as a child of your Droppable.\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/api/droppable.md\\n \") : void 0;\n}];\nvar virtual = [function hasClone(_ref5) {\n var props = _ref5.props;\n !props.renderClone ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must provide a clone render function (renderClone) for virtual lists') : invariant(false) : void 0;\n}, function hasNoPlaceholder(_ref6) {\n var getPlaceholderRef = _ref6.getPlaceholderRef;\n !!getPlaceholderRef() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected virtual list to not have a placeholder') : invariant(false) : void 0;\n}];\nfunction useValidation(args) {\n useDevSetupWarning(function () {\n runChecks(args, shared);\n\n if (args.props.mode === 'standard') {\n runChecks(args, standard);\n }\n\n if (args.props.mode === 'virtual') {\n runChecks(args, virtual);\n }\n });\n}\n\nvar AnimateInOut = function (_React$PureComponent) {\n _inheritsLoose(AnimateInOut, _React$PureComponent);\n\n function AnimateInOut() {\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$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;\n _this.state = {\n isVisible: Boolean(_this.props.on),\n data: _this.props.on,\n animate: _this.props.shouldAnimate && _this.props.on ? 'open' : 'none'\n };\n\n _this.onClose = function () {\n if (_this.state.animate !== 'close') {\n return;\n }\n\n _this.setState({\n isVisible: false\n });\n };\n\n return _this;\n }\n\n AnimateInOut.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (!props.shouldAnimate) {\n return {\n isVisible: Boolean(props.on),\n data: props.on,\n animate: 'none'\n };\n }\n\n if (props.on) {\n return {\n isVisible: true,\n data: props.on,\n animate: 'open'\n };\n }\n\n if (state.isVisible) {\n return {\n isVisible: true,\n data: state.data,\n animate: 'close'\n };\n }\n\n return {\n isVisible: false,\n animate: 'close',\n data: null\n };\n };\n\n var _proto = AnimateInOut.prototype;\n\n _proto.render = function render() {\n if (!this.state.isVisible) {\n return null;\n }\n\n var provided = {\n onClose: this.onClose,\n data: this.state.data,\n animate: this.state.animate\n };\n return this.props.children(provided);\n };\n\n return AnimateInOut;\n}(React.PureComponent);\n\nvar zIndexOptions = {\n dragging: 5000,\n dropAnimating: 4500\n};\n\nvar getDraggingTransition = function getDraggingTransition(shouldAnimateDragMovement, dropping) {\n if (dropping) {\n return transitions.drop(dropping.duration);\n }\n\n if (shouldAnimateDragMovement) {\n return transitions.snap;\n }\n\n return transitions.fluid;\n};\n\nvar getDraggingOpacity = function getDraggingOpacity(isCombining, isDropAnimating) {\n if (!isCombining) {\n return null;\n }\n\n return isDropAnimating ? combine.opacity.drop : combine.opacity.combining;\n};\n\nvar getShouldDraggingAnimate = function getShouldDraggingAnimate(dragging) {\n if (dragging.forceShouldAnimate != null) {\n return dragging.forceShouldAnimate;\n }\n\n return dragging.mode === 'SNAP';\n};\n\nfunction getDraggingStyle(dragging) {\n var dimension = dragging.dimension;\n var box = dimension.client;\n var offset = dragging.offset,\n combineWith = dragging.combineWith,\n dropping = dragging.dropping;\n var isCombining = Boolean(combineWith);\n var shouldAnimate = getShouldDraggingAnimate(dragging);\n var isDropAnimating = Boolean(dropping);\n var transform = isDropAnimating ? transforms.drop(offset, isCombining) : transforms.moveTo(offset);\n var style = {\n position: 'fixed',\n top: box.marginBox.top,\n left: box.marginBox.left,\n boxSizing: 'border-box',\n width: box.borderBox.width,\n height: box.borderBox.height,\n transition: getDraggingTransition(shouldAnimate, dropping),\n transform: transform,\n opacity: getDraggingOpacity(isCombining, isDropAnimating),\n zIndex: isDropAnimating ? zIndexOptions.dropAnimating : zIndexOptions.dragging,\n pointerEvents: 'none'\n };\n return style;\n}\n\nfunction getSecondaryStyle(secondary) {\n return {\n transform: transforms.moveTo(secondary.offset),\n transition: secondary.shouldAnimateDisplacement ? null : 'none'\n };\n}\n\nfunction getStyle$1(mapped) {\n return mapped.type === 'DRAGGING' ? getDraggingStyle(mapped) : getSecondaryStyle(mapped);\n}\n\nfunction getDimension$1(descriptor, el, windowScroll) {\n if (windowScroll === void 0) {\n windowScroll = origin;\n }\n\n var computedStyles = window.getComputedStyle(el);\n var borderBox = el.getBoundingClientRect();\n var client = calculateBox(borderBox, computedStyles);\n var page = withScroll(client, windowScroll);\n var placeholder = {\n client: client,\n tagName: el.tagName.toLowerCase(),\n display: computedStyles.display\n };\n var displaceBy = {\n x: client.marginBox.width,\n y: client.marginBox.height\n };\n var dimension = {\n descriptor: descriptor,\n placeholder: placeholder,\n displaceBy: displaceBy,\n client: client,\n page: page\n };\n return dimension;\n}\n\nfunction useDraggablePublisher(args) {\n var uniqueId = useUniqueId('draggable');\n var descriptor = args.descriptor,\n registry = args.registry,\n getDraggableRef = args.getDraggableRef,\n canDragInteractiveElements = args.canDragInteractiveElements,\n shouldRespectForcePress = args.shouldRespectForcePress,\n isEnabled = args.isEnabled;\n var options = useMemo(function () {\n return {\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress,\n isEnabled: isEnabled\n };\n }, [canDragInteractiveElements, isEnabled, shouldRespectForcePress]);\n var getDimension = useCallback(function (windowScroll) {\n var el = getDraggableRef();\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get dimension when no ref is set') : invariant(false) : void 0;\n return getDimension$1(descriptor, el, windowScroll);\n }, [descriptor, getDraggableRef]);\n var entry = useMemo(function () {\n return {\n uniqueId: uniqueId,\n descriptor: descriptor,\n options: options,\n getDimension: getDimension\n };\n }, [descriptor, getDimension, options, uniqueId]);\n var publishedRef = useRef(entry);\n var isFirstPublishRef = useRef(true);\n useIsomorphicLayoutEffect(function () {\n registry.draggable.register(publishedRef.current);\n return function () {\n return registry.draggable.unregister(publishedRef.current);\n };\n }, [registry.draggable]);\n useIsomorphicLayoutEffect(function () {\n if (isFirstPublishRef.current) {\n isFirstPublishRef.current = false;\n return;\n }\n\n var last = publishedRef.current;\n publishedRef.current = entry;\n registry.draggable.update(entry, last);\n }, [entry, registry.draggable]);\n}\n\nfunction useValidation$1(props, contextId, getRef) {\n useDevSetupWarning(function () {\n function prefix(id) {\n return \"Draggable[id: \" + id + \"]: \";\n }\n\n var id = props.draggableId;\n !id ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable requires a draggableId') : invariant(false) : void 0;\n !(typeof id === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Draggable requires a [string] draggableId.\\n Provided: [type: \" + typeof id + \"] (value: \" + id + \")\") : invariant(false) : void 0;\n !isInteger(props.index) ? process.env.NODE_ENV !== \"production\" ? invariant(false, prefix(id) + \" requires an integer index prop\") : invariant(false) : void 0;\n\n if (props.mapped.type === 'DRAGGING') {\n return;\n }\n\n checkIsValidInnerRef(getRef());\n\n if (props.isEnabled) {\n !findDragHandle(contextId, id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, prefix(id) + \" Unable to find drag handle\") : invariant(false) : void 0;\n }\n });\n}\nfunction useClonePropValidation(isClone) {\n useDev(function () {\n var initialRef = useRef(isClone);\n useDevSetupWarning(function () {\n !(isClone === initialRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable isClone prop value changed during component life') : invariant(false) : void 0;\n }, [isClone]);\n });\n}\n\nfunction preventHtml5Dnd(event) {\n event.preventDefault();\n}\n\nfunction Draggable(props) {\n var ref = useRef(null);\n var setRef = useCallback(function (el) {\n ref.current = el;\n }, []);\n var getRef = useCallback(function () {\n return ref.current;\n }, []);\n\n var _useRequiredContext = useRequiredContext(AppContext),\n contextId = _useRequiredContext.contextId,\n dragHandleUsageInstructionsId = _useRequiredContext.dragHandleUsageInstructionsId,\n registry = _useRequiredContext.registry;\n\n var _useRequiredContext2 = useRequiredContext(DroppableContext),\n type = _useRequiredContext2.type,\n droppableId = _useRequiredContext2.droppableId;\n\n var descriptor = useMemo(function () {\n return {\n id: props.draggableId,\n index: props.index,\n type: type,\n droppableId: droppableId\n };\n }, [props.draggableId, props.index, type, droppableId]);\n var children = props.children,\n draggableId = props.draggableId,\n isEnabled = props.isEnabled,\n shouldRespectForcePress = props.shouldRespectForcePress,\n canDragInteractiveElements = props.canDragInteractiveElements,\n isClone = props.isClone,\n mapped = props.mapped,\n dropAnimationFinishedAction = props.dropAnimationFinished;\n useValidation$1(props, contextId, getRef);\n useClonePropValidation(isClone);\n\n if (!isClone) {\n var forPublisher = useMemo(function () {\n return {\n descriptor: descriptor,\n registry: registry,\n getDraggableRef: getRef,\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress,\n isEnabled: isEnabled\n };\n }, [descriptor, registry, getRef, canDragInteractiveElements, shouldRespectForcePress, isEnabled]);\n useDraggablePublisher(forPublisher);\n }\n\n var dragHandleProps = useMemo(function () {\n return isEnabled ? {\n tabIndex: 0,\n role: 'button',\n 'aria-describedby': dragHandleUsageInstructionsId,\n 'data-rbd-drag-handle-draggable-id': draggableId,\n 'data-rbd-drag-handle-context-id': contextId,\n draggable: false,\n onDragStart: preventHtml5Dnd\n } : null;\n }, [contextId, dragHandleUsageInstructionsId, draggableId, isEnabled]);\n var onMoveEnd = useCallback(function (event) {\n if (mapped.type !== 'DRAGGING') {\n return;\n }\n\n if (!mapped.dropping) {\n return;\n }\n\n if (event.propertyName !== 'transform') {\n return;\n }\n\n dropAnimationFinishedAction();\n }, [dropAnimationFinishedAction, mapped]);\n var provided = useMemo(function () {\n var style = getStyle$1(mapped);\n var onTransitionEnd = mapped.type === 'DRAGGING' && mapped.dropping ? onMoveEnd : null;\n var result = {\n innerRef: setRef,\n draggableProps: {\n 'data-rbd-draggable-context-id': contextId,\n 'data-rbd-draggable-id': draggableId,\n style: style,\n onTransitionEnd: onTransitionEnd\n },\n dragHandleProps: dragHandleProps\n };\n return result;\n }, [contextId, dragHandleProps, draggableId, mapped, onMoveEnd, setRef]);\n var rubric = useMemo(function () {\n return {\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n };\n }, [descriptor.droppableId, descriptor.id, descriptor.index, descriptor.type]);\n return children(provided, mapped.snapshot, rubric);\n}\n\nvar isStrictEqual = (function (a, b) {\n return a === b;\n});\n\nvar whatIsDraggedOverFromResult = (function (result) {\n var combine = result.combine,\n destination = result.destination;\n\n if (destination) {\n return destination.droppableId;\n }\n\n if (combine) {\n return combine.droppableId;\n }\n\n return null;\n});\n\nvar getCombineWithFromResult = function getCombineWithFromResult(result) {\n return result.combine ? result.combine.draggableId : null;\n};\n\nvar getCombineWithFromImpact = function getCombineWithFromImpact(impact) {\n return impact.at && impact.at.type === 'COMBINE' ? impact.at.combine.draggableId : null;\n};\n\nfunction getDraggableSelector() {\n var memoizedOffset = memoizeOne(function (x, y) {\n return {\n x: x,\n y: y\n };\n });\n var getMemoizedSnapshot = memoizeOne(function (mode, isClone, draggingOver, combineWith, dropping) {\n return {\n isDragging: true,\n isClone: isClone,\n isDropAnimating: Boolean(dropping),\n dropAnimation: dropping,\n mode: mode,\n draggingOver: draggingOver,\n combineWith: combineWith,\n combineTargetFor: null\n };\n });\n var getMemoizedProps = memoizeOne(function (offset, mode, dimension, isClone, draggingOver, combineWith, forceShouldAnimate) {\n return {\n mapped: {\n type: 'DRAGGING',\n dropping: null,\n draggingOver: draggingOver,\n combineWith: combineWith,\n mode: mode,\n offset: offset,\n dimension: dimension,\n forceShouldAnimate: forceShouldAnimate,\n snapshot: getMemoizedSnapshot(mode, isClone, draggingOver, combineWith, null)\n }\n };\n });\n\n var selector = function selector(state, ownProps) {\n if (state.isDragging) {\n if (state.critical.draggable.id !== ownProps.draggableId) {\n return null;\n }\n\n var offset = state.current.client.offset;\n var dimension = state.dimensions.draggables[ownProps.draggableId];\n var draggingOver = whatIsDraggedOver(state.impact);\n var combineWith = getCombineWithFromImpact(state.impact);\n var forceShouldAnimate = state.forceShouldAnimate;\n return getMemoizedProps(memoizedOffset(offset.x, offset.y), state.movementMode, dimension, ownProps.isClone, draggingOver, combineWith, forceShouldAnimate);\n }\n\n if (state.phase === 'DROP_ANIMATING') {\n var completed = state.completed;\n\n if (completed.result.draggableId !== ownProps.draggableId) {\n return null;\n }\n\n var isClone = ownProps.isClone;\n var _dimension = state.dimensions.draggables[ownProps.draggableId];\n var result = completed.result;\n var mode = result.mode;\n\n var _draggingOver = whatIsDraggedOverFromResult(result);\n\n var _combineWith = getCombineWithFromResult(result);\n\n var duration = state.dropDuration;\n var dropping = {\n duration: duration,\n curve: curves.drop,\n moveTo: state.newHomeClientOffset,\n opacity: _combineWith ? combine.opacity.drop : null,\n scale: _combineWith ? combine.scale.drop : null\n };\n return {\n mapped: {\n type: 'DRAGGING',\n offset: state.newHomeClientOffset,\n dimension: _dimension,\n dropping: dropping,\n draggingOver: _draggingOver,\n combineWith: _combineWith,\n mode: mode,\n forceShouldAnimate: null,\n snapshot: getMemoizedSnapshot(mode, isClone, _draggingOver, _combineWith, dropping)\n }\n };\n }\n\n return null;\n };\n\n return selector;\n}\n\nfunction getSecondarySnapshot(combineTargetFor) {\n return {\n isDragging: false,\n isDropAnimating: false,\n isClone: false,\n dropAnimation: null,\n mode: null,\n draggingOver: null,\n combineTargetFor: combineTargetFor,\n combineWith: null\n };\n}\n\nvar atRest = {\n mapped: {\n type: 'SECONDARY',\n offset: origin,\n combineTargetFor: null,\n shouldAnimateDisplacement: true,\n snapshot: getSecondarySnapshot(null)\n }\n};\n\nfunction getSecondarySelector() {\n var memoizedOffset = memoizeOne(function (x, y) {\n return {\n x: x,\n y: y\n };\n });\n var getMemoizedSnapshot = memoizeOne(getSecondarySnapshot);\n var getMemoizedProps = memoizeOne(function (offset, combineTargetFor, shouldAnimateDisplacement) {\n if (combineTargetFor === void 0) {\n combineTargetFor = null;\n }\n\n return {\n mapped: {\n type: 'SECONDARY',\n offset: offset,\n combineTargetFor: combineTargetFor,\n shouldAnimateDisplacement: shouldAnimateDisplacement,\n snapshot: getMemoizedSnapshot(combineTargetFor)\n }\n };\n });\n\n var getFallback = function getFallback(combineTargetFor) {\n return combineTargetFor ? getMemoizedProps(origin, combineTargetFor, true) : null;\n };\n\n var getProps = function getProps(ownId, draggingId, impact, afterCritical) {\n var visualDisplacement = impact.displaced.visible[ownId];\n var isAfterCriticalInVirtualList = Boolean(afterCritical.inVirtualList && afterCritical.effected[ownId]);\n var combine = tryGetCombine(impact);\n var combineTargetFor = combine && combine.draggableId === ownId ? draggingId : null;\n\n if (!visualDisplacement) {\n if (!isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n\n if (impact.displaced.invisible[ownId]) {\n return null;\n }\n\n var change = negate(afterCritical.displacedBy.point);\n\n var _offset = memoizedOffset(change.x, change.y);\n\n return getMemoizedProps(_offset, combineTargetFor, true);\n }\n\n if (isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n\n var displaceBy = impact.displacedBy.point;\n var offset = memoizedOffset(displaceBy.x, displaceBy.y);\n return getMemoizedProps(offset, combineTargetFor, visualDisplacement.shouldAnimate);\n };\n\n var selector = function selector(state, ownProps) {\n if (state.isDragging) {\n if (state.critical.draggable.id === ownProps.draggableId) {\n return null;\n }\n\n return getProps(ownProps.draggableId, state.critical.draggable.id, state.impact, state.afterCritical);\n }\n\n if (state.phase === 'DROP_ANIMATING') {\n var completed = state.completed;\n\n if (completed.result.draggableId === ownProps.draggableId) {\n return null;\n }\n\n return getProps(ownProps.draggableId, completed.result.draggableId, completed.impact, completed.afterCritical);\n }\n\n return null;\n };\n\n return selector;\n}\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var draggingSelector = getDraggableSelector();\n var secondarySelector = getSecondarySelector();\n\n var selector = function selector(state, ownProps) {\n return draggingSelector(state, ownProps) || secondarySelector(state, ownProps) || atRest;\n };\n\n return selector;\n};\nvar mapDispatchToProps = {\n dropAnimationFinished: dropAnimationFinished\n};\nvar ConnectedDraggable = connect(makeMapStateToProps, mapDispatchToProps, null, {\n context: StoreContext,\n pure: true,\n areStatePropsEqual: isStrictEqual\n})(Draggable);\n\nfunction PrivateDraggable(props) {\n var droppableContext = useRequiredContext(DroppableContext);\n var isUsingCloneFor = droppableContext.isUsingCloneFor;\n\n if (isUsingCloneFor === props.draggableId && !props.isClone) {\n return null;\n }\n\n return React.createElement(ConnectedDraggable, props);\n}\nfunction PublicDraggable(props) {\n var isEnabled = typeof props.isDragDisabled === 'boolean' ? !props.isDragDisabled : true;\n var canDragInteractiveElements = Boolean(props.disableInteractiveElementBlocking);\n var shouldRespectForcePress = Boolean(props.shouldRespectForcePress);\n return React.createElement(PrivateDraggable, _extends({}, props, {\n isClone: false,\n isEnabled: isEnabled,\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress\n }));\n}\n\nfunction Droppable(props) {\n var appContext = useContext(AppContext);\n !appContext ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find app context') : invariant(false) : void 0;\n var contextId = appContext.contextId,\n isMovementAllowed = appContext.isMovementAllowed;\n var droppableRef = useRef(null);\n var placeholderRef = useRef(null);\n var children = props.children,\n droppableId = props.droppableId,\n type = props.type,\n mode = props.mode,\n direction = props.direction,\n ignoreContainerClipping = props.ignoreContainerClipping,\n isDropDisabled = props.isDropDisabled,\n isCombineEnabled = props.isCombineEnabled,\n snapshot = props.snapshot,\n useClone = props.useClone,\n updateViewportMaxScroll = props.updateViewportMaxScroll,\n getContainerForClone = props.getContainerForClone;\n var getDroppableRef = useCallback(function () {\n return droppableRef.current;\n }, []);\n var setDroppableRef = useCallback(function (value) {\n droppableRef.current = value;\n }, []);\n var getPlaceholderRef = useCallback(function () {\n return placeholderRef.current;\n }, []);\n var setPlaceholderRef = useCallback(function (value) {\n placeholderRef.current = value;\n }, []);\n useValidation({\n props: props,\n getDroppableRef: getDroppableRef,\n getPlaceholderRef: getPlaceholderRef\n });\n var onPlaceholderTransitionEnd = useCallback(function () {\n if (isMovementAllowed()) {\n updateViewportMaxScroll({\n maxScroll: getMaxWindowScroll()\n });\n }\n }, [isMovementAllowed, updateViewportMaxScroll]);\n useDroppablePublisher({\n droppableId: droppableId,\n type: type,\n mode: mode,\n direction: direction,\n isDropDisabled: isDropDisabled,\n isCombineEnabled: isCombineEnabled,\n ignoreContainerClipping: ignoreContainerClipping,\n getDroppableRef: getDroppableRef\n });\n var placeholder = React.createElement(AnimateInOut, {\n on: props.placeholder,\n shouldAnimate: props.shouldAnimatePlaceholder\n }, function (_ref) {\n var onClose = _ref.onClose,\n data = _ref.data,\n animate = _ref.animate;\n return React.createElement(Placeholder$1, {\n placeholder: data,\n onClose: onClose,\n innerRef: setPlaceholderRef,\n animate: animate,\n contextId: contextId,\n onTransitionEnd: onPlaceholderTransitionEnd\n });\n });\n var provided = useMemo(function () {\n return {\n innerRef: setDroppableRef,\n placeholder: placeholder,\n droppableProps: {\n 'data-rbd-droppable-id': droppableId,\n 'data-rbd-droppable-context-id': contextId\n }\n };\n }, [contextId, droppableId, placeholder, setDroppableRef]);\n var isUsingCloneFor = useClone ? useClone.dragging.draggableId : null;\n var droppableContext = useMemo(function () {\n return {\n droppableId: droppableId,\n type: type,\n isUsingCloneFor: isUsingCloneFor\n };\n }, [droppableId, isUsingCloneFor, type]);\n\n function getClone() {\n if (!useClone) {\n return null;\n }\n\n var dragging = useClone.dragging,\n render = useClone.render;\n var node = React.createElement(PrivateDraggable, {\n draggableId: dragging.draggableId,\n index: dragging.source.index,\n isClone: true,\n isEnabled: true,\n shouldRespectForcePress: false,\n canDragInteractiveElements: true\n }, function (draggableProvided, draggableSnapshot) {\n return render(draggableProvided, draggableSnapshot, dragging);\n });\n return ReactDOM.createPortal(node, getContainerForClone());\n }\n\n return React.createElement(DroppableContext.Provider, {\n value: droppableContext\n }, children(provided, snapshot), getClone());\n}\n\nvar isMatchingType = function isMatchingType(type, critical) {\n return type === critical.droppable.type;\n};\n\nvar getDraggable = function getDraggable(critical, dimensions) {\n return dimensions.draggables[critical.draggable.id];\n};\n\nvar makeMapStateToProps$1 = function makeMapStateToProps() {\n var idleWithAnimation = {\n placeholder: null,\n shouldAnimatePlaceholder: true,\n snapshot: {\n isDraggingOver: false,\n draggingOverWith: null,\n draggingFromThisWith: null,\n isUsingPlaceholder: false\n },\n useClone: null\n };\n\n var idleWithoutAnimation = _extends({}, idleWithAnimation, {\n shouldAnimatePlaceholder: false\n });\n\n var getDraggableRubric = memoizeOne(function (descriptor) {\n return {\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n };\n });\n var getMapProps = memoizeOne(function (id, isEnabled, isDraggingOverForConsumer, isDraggingOverForImpact, dragging, renderClone) {\n var draggableId = dragging.descriptor.id;\n var isHome = dragging.descriptor.droppableId === id;\n\n if (isHome) {\n var useClone = renderClone ? {\n render: renderClone,\n dragging: getDraggableRubric(dragging.descriptor)\n } : null;\n var _snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: isDraggingOverForConsumer ? draggableId : null,\n draggingFromThisWith: draggableId,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: false,\n snapshot: _snapshot,\n useClone: useClone\n };\n }\n\n if (!isEnabled) {\n return idleWithoutAnimation;\n }\n\n if (!isDraggingOverForImpact) {\n return idleWithAnimation;\n }\n\n var snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: draggableId,\n draggingFromThisWith: null,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: true,\n snapshot: snapshot,\n useClone: null\n };\n });\n\n var selector = function selector(state, ownProps) {\n var id = ownProps.droppableId;\n var type = ownProps.type;\n var isEnabled = !ownProps.isDropDisabled;\n var renderClone = ownProps.renderClone;\n\n if (state.isDragging) {\n var critical = state.critical;\n\n if (!isMatchingType(type, critical)) {\n return idleWithoutAnimation;\n }\n\n var dragging = getDraggable(critical, state.dimensions);\n var isDraggingOver = whatIsDraggedOver(state.impact) === id;\n return getMapProps(id, isEnabled, isDraggingOver, isDraggingOver, dragging, renderClone);\n }\n\n if (state.phase === 'DROP_ANIMATING') {\n var completed = state.completed;\n\n if (!isMatchingType(type, completed.critical)) {\n return idleWithoutAnimation;\n }\n\n var _dragging = getDraggable(completed.critical, state.dimensions);\n\n return getMapProps(id, isEnabled, whatIsDraggedOverFromResult(completed.result) === id, whatIsDraggedOver(completed.impact) === id, _dragging, renderClone);\n }\n\n if (state.phase === 'IDLE' && state.completed && !state.shouldFlush) {\n var _completed = state.completed;\n\n if (!isMatchingType(type, _completed.critical)) {\n return idleWithoutAnimation;\n }\n\n var wasOver = whatIsDraggedOver(_completed.impact) === id;\n var wasCombining = Boolean(_completed.impact.at && _completed.impact.at.type === 'COMBINE');\n var isHome = _completed.critical.droppable.id === id;\n\n if (wasOver) {\n return wasCombining ? idleWithAnimation : idleWithoutAnimation;\n }\n\n if (isHome) {\n return idleWithAnimation;\n }\n\n return idleWithoutAnimation;\n }\n\n return idleWithoutAnimation;\n };\n\n return selector;\n};\nvar mapDispatchToProps$1 = {\n updateViewportMaxScroll: updateViewportMaxScroll\n};\n\nfunction getBody() {\n !document.body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'document.body is not ready') : invariant(false) : void 0;\n return document.body;\n}\n\nvar defaultProps = {\n mode: 'standard',\n type: 'DEFAULT',\n direction: 'vertical',\n isDropDisabled: false,\n isCombineEnabled: false,\n ignoreContainerClipping: false,\n renderClone: null,\n getContainerForClone: getBody\n};\nvar ConnectedDroppable = connect(makeMapStateToProps$1, mapDispatchToProps$1, null, {\n context: StoreContext,\n pure: true,\n areStatePropsEqual: isStrictEqual\n})(Droppable);\nConnectedDroppable.defaultProps = defaultProps;\n\nexport { DragDropContext, PublicDraggable as Draggable, ConnectedDroppable as Droppable, resetServerContext };\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"align\", \"className\", \"selected\", \"typographyClassName\", \"value\", \"variant\"];\nimport * as React from 'react';\nimport Button from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\nimport { PickersToolbarText } from './PickersToolbarText';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PickersToolbarButtonRoot = styled(Button)({\n padding: 0,\n minWidth: 16,\n textTransform: 'none'\n});\nexport const PickersToolbarButton = /*#__PURE__*/React.forwardRef(function PickersToolbarButton(props, ref) {\n const {\n align,\n className,\n selected,\n typographyClassName,\n value,\n variant\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/_jsx(PickersToolbarButtonRoot, _extends({\n variant: \"text\",\n ref: ref,\n className: className\n }, other, {\n children: /*#__PURE__*/_jsx(PickersToolbarText, {\n align: align,\n className: typographyClassName,\n variant: variant,\n value: value,\n selected: selected\n })\n }));\n});","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"\n}), 'Error');\n\nexports.default = _default;","import { unstable_debounce as debounce } from '@mui/utils';\nexport default debounce;","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","export var INIT_COORDS = 'dnd-core/INIT_COORDS';\nexport var BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexport var PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexport var HOVER = 'dnd-core/HOVER';\nexport var DROP = 'dnd-core/DROP';\nexport var END_DRAG = 'dnd-core/END_DRAG';","export var strictEquality = function strictEquality(a, b) {\n return a === b;\n};\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\n\nexport function areCoordsEqual(offsetA, offsetB) {\n if (!offsetA && !offsetB) {\n return true;\n } else if (!offsetA || !offsetB) {\n return false;\n } else {\n return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n }\n}\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\n\nexport function areArraysEqual(a, b) {\n var isEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : strictEquality;\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (var i = 0; i < a.length; ++i) {\n if (!isEqual(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n}","function 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\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { INIT_COORDS, BEGIN_DRAG, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { areCoordsEqual } from '../utils/equality';\nvar initialState = {\n initialSourceClientOffset: null,\n initialClientOffset: null,\n clientOffset: null\n};\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var payload = action.payload;\n\n switch (action.type) {\n case INIT_COORDS:\n case BEGIN_DRAG:\n return {\n initialSourceClientOffset: payload.sourceClientOffset,\n initialClientOffset: payload.clientOffset,\n clientOffset: payload.clientOffset\n };\n\n case HOVER:\n if (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n return state;\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n clientOffset: payload.clientOffset\n });\n\n case END_DRAG:\n case DROP:\n return initialState;\n\n default:\n return state;\n }\n}","export var ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexport var ADD_TARGET = 'dnd-core/ADD_TARGET';\nexport var REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexport var REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nexport function addSource(sourceId) {\n return {\n type: ADD_SOURCE,\n payload: {\n sourceId: sourceId\n }\n };\n}\nexport function addTarget(targetId) {\n return {\n type: ADD_TARGET,\n payload: {\n targetId: targetId\n }\n };\n}\nexport function removeSource(sourceId) {\n return {\n type: REMOVE_SOURCE,\n payload: {\n sourceId: sourceId\n }\n };\n}\nexport function removeTarget(targetId) {\n return {\n type: REMOVE_TARGET,\n payload: {\n targetId: targetId\n }\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get(obj, path, defaultValue) {\n return path.split('.').reduce(function (a, c) {\n return a && a[c] ? a[c] : defaultValue || null;\n }, obj);\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n return items.filter(function (i) {\n return i !== item;\n });\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isString(input) {\n return typeof input === 'string';\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isObject(input) {\n return _typeof(input) === 'object';\n}\n/**\n * repalcement for _.xor\n * @param itemsA\n * @param itemsB\n */\n\nexport function xor(itemsA, itemsB) {\n var map = new Map();\n\n var insertItem = function insertItem(item) {\n map.set(item, map.has(item) ? map.get(item) + 1 : 1);\n };\n\n itemsA.forEach(insertItem);\n itemsB.forEach(insertItem);\n var result = [];\n map.forEach(function (count, key) {\n if (count === 1) {\n result.push(key);\n }\n });\n return result;\n}\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\n\nexport function intersection(itemsA, itemsB) {\n return itemsA.filter(function (t) {\n return itemsB.indexOf(t) > -1;\n });\n}","function 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\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { REMOVE_TARGET } from '../actions/registry';\nimport { without } from '../utils/js_utils';\nvar initialState = {\n itemType: null,\n item: null,\n sourceId: null,\n targetIds: [],\n dropResult: null,\n didDrop: false,\n isSourcePublic: null\n};\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var payload = action.payload;\n\n switch (action.type) {\n case BEGIN_DRAG:\n return _objectSpread(_objectSpread({}, state), {}, {\n itemType: payload.itemType,\n item: payload.item,\n sourceId: payload.sourceId,\n isSourcePublic: payload.isSourcePublic,\n dropResult: null,\n didDrop: false\n });\n\n case PUBLISH_DRAG_SOURCE:\n return _objectSpread(_objectSpread({}, state), {}, {\n isSourcePublic: true\n });\n\n case HOVER:\n return _objectSpread(_objectSpread({}, state), {}, {\n targetIds: payload.targetIds\n });\n\n case REMOVE_TARGET:\n if (state.targetIds.indexOf(payload.targetId) === -1) {\n return state;\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n targetIds: without(state.targetIds, payload.targetId)\n });\n\n case DROP:\n return _objectSpread(_objectSpread({}, state), {}, {\n dropResult: payload.dropResult,\n didDrop: true,\n targetIds: []\n });\n\n case END_DRAG:\n return _objectSpread(_objectSpread({}, state), {}, {\n itemType: null,\n item: null,\n sourceId: null,\n dropResult: null,\n didDrop: false,\n isSourcePublic: null,\n targetIds: []\n });\n\n default:\n return state;\n }\n}","import { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case ADD_SOURCE:\n case ADD_TARGET:\n return state + 1;\n\n case REMOVE_SOURCE:\n case REMOVE_TARGET:\n return state - 1;\n\n default:\n return state;\n }\n}","import { intersection } from './js_utils';\nexport var NONE = [];\nexport var ALL = [];\nNONE.__IS_NONE__ = true;\nALL.__IS_ALL__ = true;\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\n\nexport function areDirty(dirtyIds, handlerIds) {\n if (dirtyIds === NONE) {\n return false;\n }\n\n if (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n return true;\n }\n\n var commonIds = intersection(handlerIds, dirtyIds);\n return commonIds.length > 0;\n}","import { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nimport { areArraysEqual } from '../utils/equality';\nimport { NONE, ALL } from '../utils/dirtiness';\nimport { xor } from '../utils/js_utils';\nexport function reduce() {\n var _state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NONE;\n\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case HOVER:\n break;\n\n case ADD_SOURCE:\n case ADD_TARGET:\n case REMOVE_TARGET:\n case REMOVE_SOURCE:\n return NONE;\n\n case BEGIN_DRAG:\n case PUBLISH_DRAG_SOURCE:\n case END_DRAG:\n case DROP:\n default:\n return ALL;\n }\n\n var _action$payload = action.payload,\n _action$payload$targe = _action$payload.targetIds,\n targetIds = _action$payload$targe === void 0 ? [] : _action$payload$targe,\n _action$payload$prevT = _action$payload.prevTargetIds,\n prevTargetIds = _action$payload$prevT === void 0 ? [] : _action$payload$prevT;\n var result = xor(targetIds, prevTargetIds);\n var didChange = result.length > 0 || !areArraysEqual(targetIds, prevTargetIds);\n\n if (!didChange) {\n return NONE;\n } // Check the target ids at the innermost position. If they are valid, add them\n // to the result\n\n\n var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n var innermostTargetId = targetIds[targetIds.length - 1];\n\n if (prevInnermostTargetId !== innermostTargetId) {\n if (prevInnermostTargetId) {\n result.push(prevInnermostTargetId);\n }\n\n if (innermostTargetId) {\n result.push(innermostTargetId);\n }\n }\n\n return result;\n}","export function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return state + 1;\n}","function 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\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { reduce as dragOffset } from './dragOffset';\nimport { reduce as dragOperation } from './dragOperation';\nimport { reduce as refCount } from './refCount';\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds';\nimport { reduce as stateId } from './stateId';\nimport { get } from '../utils/js_utils';\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments.length > 1 ? arguments[1] : undefined;\n return {\n dirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n type: action.type,\n payload: _objectSpread(_objectSpread({}, action.payload), {}, {\n prevTargetIds: get(state, 'dragOperation.targetIds', [])\n })\n }),\n dragOffset: dragOffset(state.dragOffset, action),\n refCount: refCount(state.refCount, action),\n dragOperation: dragOperation(state.dragOperation, action),\n stateId: stateId(state.stateId)\n };\n}","import { INIT_COORDS } from '../types';\nexport function setClientOffset(clientOffset, sourceClientOffset) {\n return {\n type: INIT_COORDS,\n payload: {\n sourceClientOffset: sourceClientOffset || null,\n clientOffset: clientOffset || null\n }\n };\n}","import { invariant } from '@react-dnd/invariant';\nimport { setClientOffset } from './local/setClientOffset';\nimport { isObject } from '../../utils/js_utils';\nimport { BEGIN_DRAG, INIT_COORDS } from './types';\nvar ResetCoordinatesAction = {\n type: INIT_COORDS,\n payload: {\n clientOffset: null,\n sourceClientOffset: null\n }\n};\nexport function createBeginDrag(manager) {\n return function beginDrag() {\n var sourceIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n publishSource: true\n };\n var _options$publishSourc = options.publishSource,\n publishSource = _options$publishSourc === void 0 ? true : _options$publishSourc,\n clientOffset = options.clientOffset,\n getSourceClientOffset = options.getSourceClientOffset;\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry(); // Initialize the coordinates using the client offset\n\n manager.dispatch(setClientOffset(clientOffset));\n verifyInvariants(sourceIds, monitor, registry); // Get the draggable source\n\n var sourceId = getDraggableSource(sourceIds, monitor);\n\n if (sourceId === null) {\n manager.dispatch(ResetCoordinatesAction);\n return;\n } // Get the source client offset\n\n\n var sourceClientOffset = null;\n\n if (clientOffset) {\n if (!getSourceClientOffset) {\n throw new Error('getSourceClientOffset must be defined');\n }\n\n verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n sourceClientOffset = getSourceClientOffset(sourceId);\n } // Initialize the full coordinates\n\n\n manager.dispatch(setClientOffset(clientOffset, sourceClientOffset));\n var source = registry.getSource(sourceId);\n var item = source.beginDrag(monitor, sourceId);\n verifyItemIsObject(item);\n registry.pinSource(sourceId);\n var itemType = registry.getSourceType(sourceId);\n return {\n type: BEGIN_DRAG,\n payload: {\n itemType: itemType,\n item: item,\n sourceId: sourceId,\n clientOffset: clientOffset || null,\n sourceClientOffset: sourceClientOffset || null,\n isSourcePublic: !!publishSource\n }\n };\n };\n}\n\nfunction verifyInvariants(sourceIds, monitor, registry) {\n invariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n sourceIds.forEach(function (sourceId) {\n invariant(registry.getSource(sourceId), 'Expected sourceIds to be registered.');\n });\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n invariant(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\n\nfunction verifyItemIsObject(item) {\n invariant(isObject(item), 'Item must be an object.');\n}\n\nfunction getDraggableSource(sourceIds, monitor) {\n var sourceId = null;\n\n for (var i = sourceIds.length - 1; i >= 0; i--) {\n if (monitor.canDragSource(sourceIds[i])) {\n sourceId = sourceIds[i];\n break;\n }\n }\n\n return sourceId;\n}","import { PUBLISH_DRAG_SOURCE } from './types';\nexport function createPublishDragSource(manager) {\n return function publishDragSource() {\n var monitor = manager.getMonitor();\n\n if (monitor.isDragging()) {\n return {\n type: PUBLISH_DRAG_SOURCE\n };\n }\n };\n}","export function matchesType(targetType, draggedItemType) {\n if (draggedItemType === null) {\n return targetType === null;\n }\n\n return Array.isArray(targetType) ? targetType.some(function (t) {\n return t === draggedItemType;\n }) : targetType === draggedItemType;\n}","import { invariant } from '@react-dnd/invariant';\nimport { matchesType } from '../../utils/matchesType';\nimport { HOVER } from './types';\nexport function createHover(manager) {\n return function hover(targetIdsArg) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n clientOffset = _ref.clientOffset;\n\n verifyTargetIdsIsArray(targetIdsArg);\n var targetIds = targetIdsArg.slice(0);\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n checkInvariants(targetIds, monitor, registry);\n var draggedItemType = monitor.getItemType();\n removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n hoverAllTargets(targetIds, monitor, registry);\n return {\n type: HOVER,\n payload: {\n targetIds: targetIds,\n clientOffset: clientOffset || null\n }\n };\n };\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n invariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\n\nfunction checkInvariants(targetIds, monitor, registry) {\n invariant(monitor.isDragging(), 'Cannot call hover while not dragging.');\n invariant(!monitor.didDrop(), 'Cannot call hover after drop.');\n\n for (var i = 0; i < targetIds.length; i++) {\n var targetId = targetIds[i];\n invariant(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n var target = registry.getTarget(targetId);\n invariant(target, 'Expected targetIds to be registered.');\n }\n}\n\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n // Remove those targetIds that don't match the targetType. This\n // fixes shallow isOver which would only be non-shallow because of\n // non-matching targets.\n for (var i = targetIds.length - 1; i >= 0; i--) {\n var targetId = targetIds[i];\n var targetType = registry.getTargetType(targetId);\n\n if (!matchesType(targetType, draggedItemType)) {\n targetIds.splice(i, 1);\n }\n }\n}\n\nfunction hoverAllTargets(targetIds, monitor, registry) {\n // Finally call hover on all matching targets.\n targetIds.forEach(function (targetId) {\n var target = registry.getTarget(targetId);\n target.hover(monitor, targetId);\n });\n}","function 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\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { DROP } from './types';\nimport { isObject } from '../../utils/js_utils';\nexport function createDrop(manager) {\n return function drop() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyInvariants(monitor);\n var targetIds = getDroppableTargets(monitor); // Multiple actions are dispatched here, which is why this doesn't return an action\n\n targetIds.forEach(function (targetId, index) {\n var dropResult = determineDropResult(targetId, index, registry, monitor);\n var action = {\n type: DROP,\n payload: {\n dropResult: _objectSpread(_objectSpread({}, options), dropResult)\n }\n };\n manager.dispatch(action);\n });\n };\n}\n\nfunction verifyInvariants(monitor) {\n invariant(monitor.isDragging(), 'Cannot call drop while not dragging.');\n invariant(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\n\nfunction determineDropResult(targetId, index, registry, monitor) {\n var target = registry.getTarget(targetId);\n var dropResult = target ? target.drop(monitor, targetId) : undefined;\n verifyDropResultType(dropResult);\n\n if (typeof dropResult === 'undefined') {\n dropResult = index === 0 ? {} : monitor.getDropResult();\n }\n\n return dropResult;\n}\n\nfunction verifyDropResultType(dropResult) {\n invariant(typeof dropResult === 'undefined' || isObject(dropResult), 'Drop result must either be an object or undefined.');\n}\n\nfunction getDroppableTargets(monitor) {\n var targetIds = monitor.getTargetIds().filter(monitor.canDropOnTarget, monitor);\n targetIds.reverse();\n return targetIds;\n}","import { invariant } from '@react-dnd/invariant';\nimport { END_DRAG } from './types';\nexport function createEndDrag(manager) {\n return function endDrag() {\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyIsDragging(monitor);\n var sourceId = monitor.getSourceId();\n\n if (sourceId != null) {\n var source = registry.getSource(sourceId, true);\n source.endDrag(monitor, sourceId);\n registry.unpinSource();\n }\n\n return {\n type: END_DRAG\n };\n };\n}\n\nfunction verifyIsDragging(monitor) {\n invariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}","/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a, b) {\n return {\n x: a.x + b.x,\n y: a.y + b.y\n };\n}\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\n\nexport function subtract(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y\n };\n}\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\n\nexport function getSourceClientOffset(state) {\n var clientOffset = state.clientOffset,\n initialClientOffset = state.initialClientOffset,\n initialSourceClientOffset = state.initialSourceClientOffset;\n\n if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n return null;\n }\n\n return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\n\nexport function getDifferenceFromInitialOffset(state) {\n var clientOffset = state.clientOffset,\n initialClientOffset = state.initialClientOffset;\n\n if (!clientOffset || !initialClientOffset) {\n return null;\n }\n\n return subtract(clientOffset, initialClientOffset);\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { matchesType } from './utils/matchesType';\nimport { getSourceClientOffset as _getSourceClientOffset, getDifferenceFromInitialOffset as _getDifferenceFromInitialOffset } from './utils/coords';\nimport { areDirty } from './utils/dirtiness';\nexport var DragDropMonitorImpl = /*#__PURE__*/function () {\n function DragDropMonitorImpl(store, registry) {\n _classCallCheck(this, DragDropMonitorImpl);\n\n this.store = store;\n this.registry = registry;\n }\n\n _createClass(DragDropMonitorImpl, [{\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n handlerIds: undefined\n };\n var handlerIds = options.handlerIds;\n invariant(typeof listener === 'function', 'listener must be a function.');\n invariant(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n var prevStateId = this.store.getState().stateId;\n\n var handleChange = function handleChange() {\n var state = _this.store.getState();\n\n var currentStateId = state.stateId;\n\n try {\n var canSkipListener = currentStateId === prevStateId || currentStateId === prevStateId + 1 && !areDirty(state.dirtyHandlerIds, handlerIds);\n\n if (!canSkipListener) {\n listener();\n }\n } finally {\n prevStateId = currentStateId;\n }\n };\n\n return this.store.subscribe(handleChange);\n }\n }, {\n key: \"subscribeToOffsetChange\",\n value: function subscribeToOffsetChange(listener) {\n var _this2 = this;\n\n invariant(typeof listener === 'function', 'listener must be a function.');\n var previousState = this.store.getState().dragOffset;\n\n var handleChange = function handleChange() {\n var nextState = _this2.store.getState().dragOffset;\n\n if (nextState === previousState) {\n return;\n }\n\n previousState = nextState;\n listener();\n };\n\n return this.store.subscribe(handleChange);\n }\n }, {\n key: \"canDragSource\",\n value: function canDragSource(sourceId) {\n if (!sourceId) {\n return false;\n }\n\n var source = this.registry.getSource(sourceId);\n invariant(source, 'Expected to find a valid source.');\n\n if (this.isDragging()) {\n return false;\n }\n\n return source.canDrag(this, sourceId);\n }\n }, {\n key: \"canDropOnTarget\",\n value: function canDropOnTarget(targetId) {\n // undefined on initial render\n if (!targetId) {\n return false;\n }\n\n var target = this.registry.getTarget(targetId);\n invariant(target, 'Expected to find a valid target.');\n\n if (!this.isDragging() || this.didDrop()) {\n return false;\n }\n\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n return matchesType(targetType, draggedItemType) && target.canDrop(this, targetId);\n }\n }, {\n key: \"isDragging\",\n value: function isDragging() {\n return Boolean(this.getItemType());\n }\n }, {\n key: \"isDraggingSource\",\n value: function isDraggingSource(sourceId) {\n // undefined on initial render\n if (!sourceId) {\n return false;\n }\n\n var source = this.registry.getSource(sourceId, true);\n invariant(source, 'Expected to find a valid source.');\n\n if (!this.isDragging() || !this.isSourcePublic()) {\n return false;\n }\n\n var sourceType = this.registry.getSourceType(sourceId);\n var draggedItemType = this.getItemType();\n\n if (sourceType !== draggedItemType) {\n return false;\n }\n\n return source.isDragging(this, sourceId);\n }\n }, {\n key: \"isOverTarget\",\n value: function isOverTarget(targetId) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n shallow: false\n };\n\n // undefined on initial render\n if (!targetId) {\n return false;\n }\n\n var shallow = options.shallow;\n\n if (!this.isDragging()) {\n return false;\n }\n\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n\n if (draggedItemType && !matchesType(targetType, draggedItemType)) {\n return false;\n }\n\n var targetIds = this.getTargetIds();\n\n if (!targetIds.length) {\n return false;\n }\n\n var index = targetIds.indexOf(targetId);\n\n if (shallow) {\n return index === targetIds.length - 1;\n } else {\n return index > -1;\n }\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.store.getState().dragOperation.itemType;\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.store.getState().dragOperation.item;\n }\n }, {\n key: \"getSourceId\",\n value: function getSourceId() {\n return this.store.getState().dragOperation.sourceId;\n }\n }, {\n key: \"getTargetIds\",\n value: function getTargetIds() {\n return this.store.getState().dragOperation.targetIds;\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.store.getState().dragOperation.dropResult;\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.store.getState().dragOperation.didDrop;\n }\n }, {\n key: \"isSourcePublic\",\n value: function isSourcePublic() {\n return Boolean(this.store.getState().dragOperation.isSourcePublic);\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.store.getState().dragOffset.initialClientOffset;\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.store.getState().dragOffset.initialSourceClientOffset;\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.store.getState().dragOffset.clientOffset;\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return _getSourceClientOffset(this.store.getState().dragOffset);\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return _getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n }\n }]);\n\n return DragDropMonitorImpl;\n}();","export var HandlerRole;\n\n(function (HandlerRole) {\n HandlerRole[\"SOURCE\"] = \"SOURCE\";\n HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole || (HandlerRole = {}));","var nextUniqueId = 0;\nexport function getNextUniqueId() {\n return nextUniqueId++;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { invariant } from '@react-dnd/invariant';\nexport function validateSourceContract(source) {\n invariant(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n invariant(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n invariant(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexport function validateTargetContract(target) {\n invariant(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n invariant(typeof target.hover === 'function', 'Expected hover to be a function.');\n invariant(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexport function validateType(type, allowArray) {\n if (allowArray && Array.isArray(type)) {\n type.forEach(function (t) {\n return validateType(t, false);\n });\n return;\n }\n\n invariant(typeof type === 'string' || _typeof(type) === 'symbol', allowArray ? 'Type can only be a string, a symbol, or an array of either.' : 'Type can only be a string or a symbol.');\n}","import { rawAsap } from './raw'; // rawAsap provides everything we need except exception management.\n// RawTasks are recycled to reduce GC churn.\n\nvar freeTasks = []; // We queue errors to ensure they are thrown in right order (FIFO).\n// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\nvar pendingErrors = [];\nvar requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError);\n\nfunction throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n}\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\n\n\nexport function asap(task) {\n var rawTask;\n\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n\n rawTask.task = task;\n rawAsap(rawTask);\n} // We wrap tasks with recyclable task objects. A task object implements\n// `call`, just like a function.\n\nvar RawTask =\n/** @class */\nfunction () {\n function RawTask() {}\n\n RawTask.prototype.call = function () {\n try {\n this.task.call();\n } catch (error) {\n if (asap.onerror) {\n // This hook exists purely for testing purposes.\n // Its name will be periodically randomized to break any code that\n // depends on its existence.\n asap.onerror(error);\n } else {\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n pendingErrors.push(error);\n requestErrorThrow();\n }\n } finally {\n this.task = null;\n freeTasks[freeTasks.length] = this;\n }\n };\n\n return RawTask;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { addSource as _addSource, addTarget as _addTarget, removeSource as _removeSource, removeTarget as _removeTarget } from './actions/registry';\nimport { getNextUniqueId } from './utils/getNextUniqueId';\nimport { HandlerRole } from './interfaces';\nimport { validateSourceContract, validateTargetContract, validateType } from './contracts';\nimport { asap } from '@react-dnd/asap';\n\nfunction getNextHandlerId(role) {\n var id = getNextUniqueId().toString();\n\n switch (role) {\n case HandlerRole.SOURCE:\n return \"S\".concat(id);\n\n case HandlerRole.TARGET:\n return \"T\".concat(id);\n\n default:\n throw new Error(\"Unknown Handler Role: \".concat(role));\n }\n}\n\nfunction parseRoleFromHandlerId(handlerId) {\n switch (handlerId[0]) {\n case 'S':\n return HandlerRole.SOURCE;\n\n case 'T':\n return HandlerRole.TARGET;\n\n default:\n invariant(false, \"Cannot parse handler ID: \".concat(handlerId));\n }\n}\n\nfunction mapContainsValue(map, searchValue) {\n var entries = map.entries();\n var isDone = false;\n\n do {\n var _entries$next = entries.next(),\n done = _entries$next.done,\n _entries$next$value = _slicedToArray(_entries$next.value, 2),\n value = _entries$next$value[1];\n\n if (value === searchValue) {\n return true;\n }\n\n isDone = !!done;\n } while (!isDone);\n\n return false;\n}\n\nexport var HandlerRegistryImpl = /*#__PURE__*/function () {\n function HandlerRegistryImpl(store) {\n _classCallCheck(this, HandlerRegistryImpl);\n\n this.types = new Map();\n this.dragSources = new Map();\n this.dropTargets = new Map();\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n this.store = store;\n }\n\n _createClass(HandlerRegistryImpl, [{\n key: \"addSource\",\n value: function addSource(type, source) {\n validateType(type);\n validateSourceContract(source);\n var sourceId = this.addHandler(HandlerRole.SOURCE, type, source);\n this.store.dispatch(_addSource(sourceId));\n return sourceId;\n }\n }, {\n key: \"addTarget\",\n value: function addTarget(type, target) {\n validateType(type, true);\n validateTargetContract(target);\n var targetId = this.addHandler(HandlerRole.TARGET, type, target);\n this.store.dispatch(_addTarget(targetId));\n return targetId;\n }\n }, {\n key: \"containsHandler\",\n value: function containsHandler(handler) {\n return mapContainsValue(this.dragSources, handler) || mapContainsValue(this.dropTargets, handler);\n }\n }, {\n key: \"getSource\",\n value: function getSource(sourceId) {\n var includePinned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n var isPinned = includePinned && sourceId === this.pinnedSourceId;\n var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n return source;\n }\n }, {\n key: \"getTarget\",\n value: function getTarget(targetId) {\n invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.dropTargets.get(targetId);\n }\n }, {\n key: \"getSourceType\",\n value: function getSourceType(sourceId) {\n invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n return this.types.get(sourceId);\n }\n }, {\n key: \"getTargetType\",\n value: function getTargetType(targetId) {\n invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.types.get(targetId);\n }\n }, {\n key: \"isSourceId\",\n value: function isSourceId(handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === HandlerRole.SOURCE;\n }\n }, {\n key: \"isTargetId\",\n value: function isTargetId(handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === HandlerRole.TARGET;\n }\n }, {\n key: \"removeSource\",\n value: function removeSource(sourceId) {\n var _this = this;\n\n invariant(this.getSource(sourceId), 'Expected an existing source.');\n this.store.dispatch(_removeSource(sourceId));\n asap(function () {\n _this.dragSources.delete(sourceId);\n\n _this.types.delete(sourceId);\n });\n }\n }, {\n key: \"removeTarget\",\n value: function removeTarget(targetId) {\n invariant(this.getTarget(targetId), 'Expected an existing target.');\n this.store.dispatch(_removeTarget(targetId));\n this.dropTargets.delete(targetId);\n this.types.delete(targetId);\n }\n }, {\n key: \"pinSource\",\n value: function pinSource(sourceId) {\n var source = this.getSource(sourceId);\n invariant(source, 'Expected an existing source.');\n this.pinnedSourceId = sourceId;\n this.pinnedSource = source;\n }\n }, {\n key: \"unpinSource\",\n value: function unpinSource() {\n invariant(this.pinnedSource, 'No source is pinned at the time.');\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n }\n }, {\n key: \"addHandler\",\n value: function addHandler(role, type, handler) {\n var id = getNextHandlerId(role);\n this.types.set(id, type);\n\n if (role === HandlerRole.SOURCE) {\n this.dragSources.set(id, handler);\n } else if (role === HandlerRole.TARGET) {\n this.dropTargets.set(id, handler);\n }\n\n return id;\n }\n }]);\n\n return HandlerRegistryImpl;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { createStore } from 'redux';\nimport { reduce } from './reducers';\nimport { createDragDropActions } from './actions/dragDrop';\nimport { DragDropMonitorImpl } from './DragDropMonitorImpl';\nimport { HandlerRegistryImpl } from './HandlerRegistryImpl';\n\nfunction makeStoreInstance(debugMode) {\n // TODO: if we ever make a react-native version of this,\n // we'll need to consider how to pull off dev-tooling\n var reduxDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__;\n return createStore(reduce, debugMode && reduxDevTools && reduxDevTools({\n name: 'dnd-core',\n instanceId: 'dnd-core'\n }));\n}\n\nexport var DragDropManagerImpl = /*#__PURE__*/function () {\n function DragDropManagerImpl() {\n var _this = this;\n\n var debugMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n _classCallCheck(this, DragDropManagerImpl);\n\n this.isSetUp = false;\n\n this.handleRefCountChange = function () {\n var shouldSetUp = _this.store.getState().refCount > 0;\n\n if (_this.backend) {\n if (shouldSetUp && !_this.isSetUp) {\n _this.backend.setup();\n\n _this.isSetUp = true;\n } else if (!shouldSetUp && _this.isSetUp) {\n _this.backend.teardown();\n\n _this.isSetUp = false;\n }\n }\n };\n\n var store = makeStoreInstance(debugMode);\n this.store = store;\n this.monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store));\n store.subscribe(this.handleRefCountChange);\n }\n\n _createClass(DragDropManagerImpl, [{\n key: \"receiveBackend\",\n value: function receiveBackend(backend) {\n this.backend = backend;\n }\n }, {\n key: \"getMonitor\",\n value: function getMonitor() {\n return this.monitor;\n }\n }, {\n key: \"getBackend\",\n value: function getBackend() {\n return this.backend;\n }\n }, {\n key: \"getRegistry\",\n value: function getRegistry() {\n return this.monitor.registry;\n }\n }, {\n key: \"getActions\",\n value: function getActions() {\n /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n var manager = this;\n var dispatch = this.store.dispatch;\n\n function bindActionCreator(actionCreator) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var action = actionCreator.apply(manager, args);\n\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n\n var actions = createDragDropActions(this);\n return Object.keys(actions).reduce(function (boundActions, key) {\n var action = actions[key];\n boundActions[key] = bindActionCreator(action);\n return boundActions;\n }, {});\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(action) {\n this.store.dispatch(action);\n }\n }]);\n\n return DragDropManagerImpl;\n}();","import { createBeginDrag } from './beginDrag';\nimport { createPublishDragSource } from './publishDragSource';\nimport { createHover } from './hover';\nimport { createDrop } from './drop';\nimport { createEndDrag } from './endDrag';\nexport * from './types';\nexport function createDragDropActions(manager) {\n return {\n beginDrag: createBeginDrag(manager),\n publishDragSource: createPublishDragSource(manager),\n hover: createHover(manager),\n drop: createDrop(manager),\n endDrag: createEndDrag(manager)\n };\n}","import { DragDropManagerImpl } from './DragDropManagerImpl';\nexport function createDragDropManager(backendFactory, globalContext, backendOptions, debugMode) {\n var manager = new DragDropManagerImpl(debugMode);\n var backend = backendFactory(manager, globalContext, backendOptions);\n manager.receiveBackend(backend);\n return manager;\n}","import * as React from 'react';\nimport { createDragDropManager } from 'dnd-core';\n/**\n * Create the React Context\n */\n\nexport var DndContext = React.createContext({\n dragDropManager: undefined\n});\n/**\n * Creates the context object we're providing\n * @param backend\n * @param context\n */\n\nexport function createDndContext(backend, context, options, debugMode) {\n return {\n dragDropManager: createDragDropManager(backend, context, options, debugMode)\n };\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 { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getMenuItemUtilityClass(slot) {\n return generateUtilityClass('MuiMenuItem', slot);\n}\nconst menuItemClasses = generateUtilityClasses('MuiMenuItem', ['root', 'focusVisible', 'dense', 'disabled', 'divider', 'gutters', 'selected']);\nexport default menuItemClasses;","/**\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 headers If true - return headers/footers, if false - return simple templates.\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","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex } from '@syncfusion/ej2-base';\nimport { Point } from '@syncfusion/ej2-drawings';\nimport { Size } from '@syncfusion/ej2-drawings';\n/**\n * The `PdfBounds` is base for annotation bounds.\n *\n * @hidden\n */\nvar PdfBounds = /** @class */ (function (_super) {\n __extends(PdfBounds, _super);\n function PdfBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"y\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"height\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"bottom\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Point)\n ], PdfBounds.prototype, \"location\", void 0);\n __decorate([\n Complex(new Size(0, 0), Size)\n ], PdfBounds.prototype, \"size\", void 0);\n return PdfBounds;\n}(ChildProperty));\nexport { PdfBounds };\n/**\n * The `PdfFont` is base for annotation Text styles.\n *\n * @hidden\n */\nvar PdfFont = /** @class */ (function (_super) {\n __extends(PdfFont, _super);\n function PdfFont() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], PdfFont.prototype, \"isBold\", void 0);\n __decorate([\n Property(false)\n ], PdfFont.prototype, \"isItalic\", void 0);\n __decorate([\n Property(false)\n ], PdfFont.prototype, \"isUnderline\", void 0);\n __decorate([\n Property(false)\n ], PdfFont.prototype, \"isStrikeout\", void 0);\n return PdfFont;\n}(ChildProperty));\nexport { PdfFont };\n/**\n * Defines the common behavior of PdfAnnotationBase\n *\n * @hidden\n */\nvar PdfAnnotationBase = /** @class */ (function (_super) {\n __extends(PdfAnnotationBase, _super);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function PdfAnnotationBase(parent, propName, defaultValue, isArray) {\n return _super.call(this, parent, propName, defaultValue, isArray) || this;\n }\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"id\", void 0);\n __decorate([\n Property('Rectangle')\n ], PdfAnnotationBase.prototype, \"shapeAnnotationType\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"formFieldAnnotationType\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"measureType\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"author\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"modifiedDate\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"subject\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"notes\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isCommentLock\", void 0);\n __decorate([\n Property('black')\n ], PdfAnnotationBase.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PdfAnnotationBase.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PdfAnnotationBase.prototype, \"stampFillColor\", void 0);\n __decorate([\n Property('black')\n ], PdfAnnotationBase.prototype, \"stampStrokeColor\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"data\", void 0);\n __decorate([\n Property(1)\n ], PdfAnnotationBase.prototype, \"opacity\", void 0);\n __decorate([\n Property(1)\n ], PdfAnnotationBase.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"borderStyle\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"borderDashArray\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"rotateAngle\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isCloudShape\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"cloudIntensity\", void 0);\n __decorate([\n Property(40)\n ], PdfAnnotationBase.prototype, \"leaderHeight\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"lineHeadStart\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"lineHeadEnd\", void 0);\n __decorate([\n Property([])\n ], PdfAnnotationBase.prototype, \"vertexPoints\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"sourcePoint\", void 0);\n __decorate([\n Property('None')\n ], PdfAnnotationBase.prototype, \"sourceDecoraterShapes\", void 0);\n __decorate([\n Property('None')\n ], PdfAnnotationBase.prototype, \"taregetDecoraterShapes\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"targetPoint\", void 0);\n __decorate([\n Property([])\n ], PdfAnnotationBase.prototype, \"segments\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, PdfBounds)\n ], PdfAnnotationBase.prototype, \"bounds\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"pageIndex\", void 0);\n __decorate([\n Property(-1)\n ], PdfAnnotationBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"wrapper\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isDynamicStamp\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"dynamicText\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"annotName\", void 0);\n __decorate([\n Property({})\n ], PdfAnnotationBase.prototype, \"review\", void 0);\n __decorate([\n Property([])\n ], PdfAnnotationBase.prototype, \"comments\", void 0);\n __decorate([\n Property('#000')\n ], PdfAnnotationBase.prototype, \"fontColor\", void 0);\n __decorate([\n Property(16)\n ], PdfAnnotationBase.prototype, \"fontSize\", void 0);\n __decorate([\n Property('Helvetica')\n ], PdfAnnotationBase.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('None')\n ], PdfAnnotationBase.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"enableShapeLabel\", void 0);\n __decorate([\n Property('label')\n ], PdfAnnotationBase.prototype, \"labelContent\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PdfAnnotationBase.prototype, \"labelFillColor\", void 0);\n __decorate([\n Property(15)\n ], PdfAnnotationBase.prototype, \"labelMaxLength\", void 0);\n __decorate([\n Property(1)\n ], PdfAnnotationBase.prototype, \"labelOpacity\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PdfAnnotationBase.prototype, \"labelBorderColor\", void 0);\n __decorate([\n Property('left')\n ], PdfAnnotationBase.prototype, \"textAlign\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"signatureName\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isLock\", void 0);\n __decorate([\n Property('UI Drawn Annotation')\n ], PdfAnnotationBase.prototype, \"annotationAddMode\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"annotationSettings\", void 0);\n __decorate([\n Property(16)\n ], PdfAnnotationBase.prototype, \"previousFontSize\", void 0);\n __decorate([\n Complex({ isBold: false, isItalic: false, isStrikeout: false, isUnderline: false }, PdfFont)\n ], PdfAnnotationBase.prototype, \"font\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, PdfBounds)\n ], PdfAnnotationBase.prototype, \"labelBounds\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], PdfAnnotationBase.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], PdfAnnotationBase.prototype, \"isPrint\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isReadonly\", void 0);\n return PdfAnnotationBase;\n}(ChildProperty));\nexport { PdfAnnotationBase };\n/**\n * Defines the common behavior of PdfFormFieldBase\n *\n * @hidden\n */\nvar PdfFormFieldBase = /** @class */ (function (_super) {\n __extends(PdfFormFieldBase, _super);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function PdfFormFieldBase(parent, propName, defaultValue, isArray) {\n return _super.call(this, parent, propName, defaultValue, isArray) || this;\n }\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"signatureType\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], PdfFormFieldBase.prototype, \"formFieldAnnotationType\", void 0);\n __decorate([\n Property('#daeaf7ff')\n ], PdfFormFieldBase.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('black')\n ], PdfFormFieldBase.prototype, \"color\", void 0);\n __decorate([\n Property('#303030')\n ], PdfFormFieldBase.prototype, \"borderColor\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"tooltip\", void 0);\n __decorate([\n Property(1)\n ], PdfFormFieldBase.prototype, \"opacity\", void 0);\n __decorate([\n Property(1)\n ], PdfFormFieldBase.prototype, \"thickness\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"rotateAngle\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, PdfBounds)\n ], PdfFormFieldBase.prototype, \"bounds\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"pageIndex\", void 0);\n __decorate([\n Property(1)\n ], PdfFormFieldBase.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(-1)\n ], PdfFormFieldBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], PdfFormFieldBase.prototype, \"wrapper\", void 0);\n __decorate([\n Property(16)\n ], PdfFormFieldBase.prototype, \"fontSize\", void 0);\n __decorate([\n Property('Helvetica')\n ], PdfFormFieldBase.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('None')\n ], PdfFormFieldBase.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('left')\n ], PdfFormFieldBase.prototype, \"alignment\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"maxLength\", void 0);\n __decorate([\n Property('visible')\n ], PdfFormFieldBase.prototype, \"visibility\", void 0);\n __decorate([\n Property(true)\n ], PdfFormFieldBase.prototype, \"isPrint\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isReadonly\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isChecked\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isSelected\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isMultiline\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"options\", void 0);\n __decorate([\n Property()\n ], PdfFormFieldBase.prototype, \"signatureIndicatorSettings\", void 0);\n __decorate([\n Complex({ isBold: false, isItalic: false, isStrikeout: false, isUnderline: false }, PdfFont)\n ], PdfFormFieldBase.prototype, \"font\", void 0);\n __decorate([\n Property()\n ], PdfFormFieldBase.prototype, \"selectedIndex\", void 0);\n return PdfFormFieldBase;\n}(ChildProperty));\nexport { PdfFormFieldBase };\n/**\n * @hidden\n */\nvar ZOrderPageTable = /** @class */ (function () {\n function ZOrderPageTable() {\n this.pageIdTemp = 0;\n this.zIndexTemp = -1;\n this.childNodesTemp = [];\n this.objects = [];\n this.zIndexTemp = -1;\n this.pageIdTemp = 0;\n }\n Object.defineProperty(ZOrderPageTable.prototype, \"pageId\", {\n /**\n * @private\n * @returns {number} - Returns the page Id.\n */\n get: function () {\n return this.pageIdTemp;\n },\n /**\n * @private\n * @param {number} offset - The page offset value.\n */\n set: function (offset) {\n this.pageIdTemp = offset;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZOrderPageTable.prototype, \"zIndex\", {\n /**\n * @private\n * @returns {number} - Returns the z-index value.\n */\n get: function () {\n return this.zIndexTemp;\n },\n /**\n * @private\n * @param {number} offset - The page offset value.\n */\n set: function (offset) {\n this.zIndexTemp = offset;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZOrderPageTable.prototype, \"objects\", {\n /**\n * @private\n * @returns {PdfAnnotationBaseModel[]} - Returns the annotation childNodes.\n */\n get: function () {\n return this.childNodesTemp;\n },\n /**\n * @private\n * @param {PdfAnnotationBaseModel[]} childNodes - Specified the annotation child nodes.\n */\n set: function (childNodes) {\n this.childNodesTemp = childNodes;\n },\n enumerable: true,\n configurable: true\n });\n return ZOrderPageTable;\n}());\nexport { ZOrderPageTable };\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"align\", \"className\", \"component\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_extendSxProp as extendSxProp } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getTypographyUtilityClass } from './typographyClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n align,\n gutterBottom,\n noWrap,\n paragraph,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, ownerState.align !== 'inherit' && `align${capitalize(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph']\n };\n return composeClasses(slots, getTypographyUtilityClass, classes);\n};\n\nexport const TypographyRoot = styled('span', {\n name: 'MuiTypography',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n margin: 0\n}, ownerState.variant && theme.typography[ownerState.variant], ownerState.align !== 'inherit' && {\n textAlign: ownerState.align\n}, ownerState.noWrap && {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n}, ownerState.gutterBottom && {\n marginBottom: '0.35em'\n}, ownerState.paragraph && {\n marginBottom: 16\n}));\nconst defaultVariantMapping = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n subtitle1: 'h6',\n subtitle2: 'h6',\n body1: 'p',\n body2: 'p',\n inherit: 'p'\n}; // TODO v6: deprecate these color values in v5.x and remove the transformation in v6\n\nconst colorTransformations = {\n primary: 'primary.main',\n textPrimary: 'text.primary',\n secondary: 'secondary.main',\n textSecondary: 'text.secondary',\n error: 'error.main'\n};\n\nconst transformDeprecatedColors = color => {\n return colorTransformations[color] || color;\n};\n\nconst Typography = /*#__PURE__*/React.forwardRef(function Typography(inProps, ref) {\n const themeProps = useThemeProps({\n props: inProps,\n name: 'MuiTypography'\n });\n const color = transformDeprecatedColors(themeProps.color);\n const props = extendSxProp(_extends({}, themeProps, {\n color\n }));\n\n const {\n align = 'inherit',\n className,\n component,\n gutterBottom = false,\n noWrap = false,\n paragraph = false,\n variant = 'body1',\n variantMapping = defaultVariantMapping\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n align,\n color,\n className,\n component,\n gutterBottom,\n noWrap,\n paragraph,\n variant,\n variantMapping\n });\n\n const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TypographyRoot, _extends({\n as: Component,\n ref: ref,\n ownerState: ownerState,\n className: clsx(classes.root, className)\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Set the text-align on the component.\n * @default 'inherit'\n */\n align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, the text will have a bottom margin.\n * @default false\n */\n gutterBottom: PropTypes.bool,\n\n /**\n * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n *\n * Note that text overflow can only happen with block or inline-block level elements\n * (the element needs to have a width in order to overflow).\n * @default false\n */\n noWrap: PropTypes.bool,\n\n /**\n * If `true`, the element will be a paragraph element.\n * @default false\n */\n paragraph: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * Applies the theme typography styles.\n * @default 'body1'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string]),\n\n /**\n * The component maps the variant prop to a range of different HTML element types.\n * For instance, subtitle1 to `
`.\n * If you wish to change that mapping, you can provide your own.\n * Alternatively, you can use the `component` prop.\n * @default {\n * h1: 'h1',\n * h2: 'h2',\n * h3: 'h3',\n * h4: 'h4',\n * h5: 'h5',\n * h6: 'h6',\n * subtitle1: 'h6',\n * subtitle2: 'h6',\n * body1: 'p',\n * body2: 'p',\n * inherit: 'p',\n * }\n */\n variantMapping: PropTypes\n /* @typescript-to-proptypes-ignore */\n .object\n} : void 0;\nexport default Typography;","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 - 1; 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","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getListItemTextUtilityClass(slot) {\n return generateUtilityClass('MuiListItemText', slot);\n}\nconst listItemTextClasses = generateUtilityClasses('MuiListItemText', ['root', 'multiline', 'dense', 'inset', 'primary', 'secondary']);\nexport default listItemTextClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getButtonUtilityClass(slot) {\n return generateUtilityClass('MuiButton', slot);\n}\nconst buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);\nexport default buttonClasses;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nconst Tablelvl2Context = /*#__PURE__*/React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\n\nexport default Tablelvl2Context;","import { generateUtilityClasses, generateUtilityClass } from '@mui/base';\nexport function getFormControlLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormControlLabel', slot);\n}\nconst formControlLabelClasses = generateUtilityClasses('MuiFormControlLabel', ['root', 'labelPlacementStart', 'labelPlacementTop', 'labelPlacementBottom', 'disabled', 'label']);\nexport default formControlLabelClasses;","export default function formControlState({\n props,\n states,\n muiFormControl\n}) {\n return states.reduce((acc, state) => {\n acc[state] = props[state];\n\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n\n return acc;\n }, {});\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getSelectUtilityClasses(slot) {\n return generateUtilityClass('MuiSelect', slot);\n}\nconst selectClasses = generateUtilityClasses('MuiSelect', ['select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'focused', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput']);\nexport default selectClasses;","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function (value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n\n};\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","import * as React from 'react';\nimport { useValidation } from './useValidation';\nimport { useLocalizationContext } from '../useUtils';\nexport const validateDate = ({\n props,\n value,\n adapter\n}) => {\n const now = adapter.utils.date();\n const date = adapter.utils.date(value);\n const {\n shouldDisableDate,\n minDate = adapter.defaultDates.minDate,\n maxDate = adapter.defaultDates.maxDate,\n disableFuture,\n disablePast\n } = props;\n\n if (date === null) {\n return null;\n }\n\n switch (true) {\n case !adapter.utils.isValid(value):\n return 'invalidDate';\n\n case Boolean(shouldDisableDate && shouldDisableDate(date)):\n return 'shouldDisableDate';\n\n case Boolean(disableFuture && adapter.utils.isAfterDay(date, now)):\n return 'disableFuture';\n\n case Boolean(disablePast && adapter.utils.isBeforeDay(date, now)):\n return 'disablePast';\n\n case Boolean(minDate && adapter.utils.isBeforeDay(date, minDate)):\n return 'minDate';\n\n case Boolean(maxDate && adapter.utils.isAfterDay(date, maxDate)):\n return 'maxDate';\n\n default:\n return null;\n }\n};\nexport const useIsDayDisabled = ({\n shouldDisableDate,\n minDate,\n maxDate,\n disableFuture,\n disablePast\n}) => {\n const adapter = useLocalizationContext();\n return React.useCallback(day => validateDate({\n adapter,\n value: day,\n props: {\n shouldDisableDate,\n minDate,\n maxDate,\n disableFuture,\n disablePast\n }\n }) !== null, [adapter, shouldDisableDate, minDate, maxDate, disableFuture, disablePast]);\n};\n\nconst isSameDateError = (a, b) => a === b;\n\nexport const useDateValidation = props => useValidation(props, validateDate, isSameDateError);","/**\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","/**\n * Dictionary class\n * @private\n * @hidden\n */\nvar TemporaryDictionary = /** @class */ (function () {\n function TemporaryDictionary() {\n /**\n * @hidden\n * @private\n */\n this.mKeys = [];\n /**\n * @hidden\n * @private\n */\n this.mValues = [];\n }\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.size = function () {\n return this.mKeys.length;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.add = function (key, value) {\n if (key === undefined || key === null || value === undefined || value === null) {\n throw new ReferenceError('Provided key or value is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n return 1;\n }\n else {\n throw new RangeError('An item with the same key has already been added.');\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.keys = function () {\n return this.mKeys;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.values = function () {\n return this.mValues;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.getValue = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n return this.mValues[index];\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.setValue = function (key, value) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n }\n else {\n this.mValues[index] = value;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.remove = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n this.mKeys.splice(index, 1);\n this.mValues.splice(index, 1);\n return true;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.containsKey = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n return false;\n }\n return true;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.clear = function () {\n this.mKeys = [];\n this.mValues = [];\n };\n return TemporaryDictionary;\n}());\nexport { TemporaryDictionary };\n","import { deepmerge } from '@mui/utils';\n\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n\n });\n}\n\nexport default merge;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","export const findClosestEnabledDate = ({\n date,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n isDateDisabled,\n utils\n}) => {\n const today = utils.startOfDay(utils.date());\n\n if (disablePast && utils.isBefore(minDate, today)) {\n minDate = today;\n }\n\n if (disableFuture && utils.isAfter(maxDate, today)) {\n maxDate = today;\n }\n\n let forward = date;\n let backward = date;\n\n if (utils.isBefore(date, minDate)) {\n forward = utils.date(minDate);\n backward = null;\n }\n\n if (utils.isAfter(date, maxDate)) {\n if (backward) {\n backward = utils.date(maxDate);\n }\n\n forward = null;\n }\n\n while (forward || backward) {\n if (forward && utils.isAfter(forward, maxDate)) {\n forward = null;\n }\n\n if (backward && utils.isBefore(backward, minDate)) {\n backward = null;\n }\n\n if (forward) {\n if (!isDateDisabled(forward)) {\n return forward;\n }\n\n forward = utils.addDays(forward, 1);\n }\n\n if (backward) {\n if (!isDateDisabled(backward)) {\n return backward;\n }\n\n backward = utils.addDays(backward, -1);\n }\n }\n\n return null;\n};\nexport const parsePickerInputValue = (utils, value) => {\n const parsedValue = utils.date(value);\n return utils.isValid(parsedValue) ? parsedValue : null;\n};","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom (blob, opts) {\n if (typeof opts === 'undefined') opts = { autoBom: false }\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = { autoBom: !opts }\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })\n }\n return blob\n}\n\nfunction download (url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled (url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {}\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click (node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = _global.saveAs || (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs () { /* noop */ }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs (blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n var a = document.createElement('a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\n setTimeout(function () { click(a) }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs (blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () { click(a) })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs (blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\n }\n }\n)\n\n_global.saveAs = saveAs.saveAs = saveAs\n\nif (typeof module !== 'undefined') {\n module.exports = saveAs;\n}\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\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 { DrawingElement } from '../elements/drawing-element';\nimport { Size } from '../../primitives/size';\nimport { Rect } from '../../primitives/rect';\nimport { rotatePoint, getOffset } from '../../utility/base-util';\n/**\n * Container module is used to group related objects\n */\nvar Container = /** @class */ (function (_super) {\n __extends(Container, _super);\n function Container() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n //private members \n _this.desiredBounds = undefined;\n /** @private */\n _this.measureChildren = true;\n /** @private */\n _this.prevRotateAngle = 0;\n return _this;\n }\n /**\n * returns whether the container has child elements or not\n */\n Container.prototype.hasChildren = function () {\n if (this.children !== undefined && this.children.length > 0) {\n return true;\n }\n return false;\n };\n /**\n * Measures the minimum space that the container requires\n *\n * @param availableSize\n */\n Container.prototype.measure = function (availableSize) {\n // measure the element and find the desired size\n this.desiredBounds = undefined;\n var desired = undefined;\n var child;\n var center = { x: 0, y: 0 };\n var y;\n var x;\n var childBounds;\n if (this.hasChildren()) {\n //Measuring the children\n for (var i = 0; i < this.children.length; i++) {\n child = this.children[i];\n if (child.horizontalAlignment === 'Stretch' && !availableSize.width) {\n availableSize.width = child.bounds.width;\n }\n if (child.verticalAlignment === 'Stretch' && !availableSize.height) {\n availableSize.height = child.bounds.height;\n }\n var force = child.horizontalAlignment === 'Stretch' || child.verticalAlignment === 'Stretch';\n if (this.measureChildren || force || (child instanceof Container && child.measureChildren !== undefined)) {\n child.measure(availableSize);\n }\n childBounds = this.GetChildrenBounds(child);\n if (child.horizontalAlignment !== 'Stretch' && child.verticalAlignment !== 'Stretch') {\n if (this.desiredBounds === undefined) {\n this.desiredBounds = childBounds;\n }\n else {\n this.desiredBounds.uniteRect(childBounds);\n }\n }\n else if (this.actualSize && !this.actualSize.width && !this.actualSize.height &&\n !child.preventContainer && child.horizontalAlignment === 'Stretch' && child.verticalAlignment === 'Stretch') {\n if (this.desiredBounds === undefined) {\n this.desiredBounds = child.bounds;\n }\n else {\n this.desiredBounds.uniteRect(child.bounds);\n }\n }\n }\n if (this.desiredBounds !== undefined && this.rotateAngle !== 0) {\n var offsetPt = {\n x: this.desiredBounds.x + this.desiredBounds.width * this.pivot.x,\n y: this.desiredBounds.y + this.desiredBounds.height * this.pivot.y\n };\n var newPoint = rotatePoint(this.rotateAngle, undefined, undefined, offsetPt);\n this.desiredBounds.x = newPoint.x - this.desiredBounds.width * this.pivot.x;\n this.desiredBounds.y = newPoint.y - this.desiredBounds.height * this.pivot.y;\n }\n if (this.desiredBounds) {\n desired = new Size(this.desiredBounds.width, this.desiredBounds.height);\n }\n }\n desired = this.validateDesiredSize(desired, availableSize);\n this.stretchChildren(desired);\n this.desiredSize = desired;\n return desired;\n };\n /**\n * Arranges the container and its children\n * @param desiredSize\n */\n Container.prototype.arrange = function (desiredSize) {\n var child;\n var bounds;\n var childBounds = this.desiredBounds;\n if (childBounds) {\n var x = this.offsetX;\n var y = this.offsetY;\n this.offsetX = childBounds.x + childBounds.width * this.pivot.x;\n this.offsetY = childBounds.y + childBounds.height * this.pivot.y;\n // container has rotateAngle\n if (this.hasChildren()) {\n //Measuring the children\n for (var i = 0; i < this.children.length; i++) {\n child = this.children[i];\n var arrange = false;\n if (child.horizontalAlignment === 'Stretch') {\n child.offsetX = this.offsetX;\n child.parentTransform = this.parentTransform + this.rotateAngle;\n arrange = true;\n }\n if (child.verticalAlignment === 'Stretch') {\n child.offsetY = this.offsetY;\n child.parentTransform = this.parentTransform + this.rotateAngle;\n arrange = true;\n }\n if (arrange || this.measureChildren || (child instanceof Container && child.measureChildren !== undefined)) {\n child.arrange(child.desiredSize);\n }\n }\n }\n }\n this.actualSize = desiredSize;\n this.updateBounds();\n this.prevRotateAngle = this.rotateAngle;\n return desiredSize;\n };\n //protected methods\n /**\n * Stretches the child elements based on the size of the container\n * @param size\n */\n Container.prototype.stretchChildren = function (size) {\n if (this.hasChildren()) {\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if (child.horizontalAlignment === 'Stretch' || child.desiredSize.width === undefined) {\n child.desiredSize.width = size.width - child.margin.left - child.margin.right;\n }\n if (child.verticalAlignment === 'Stretch' || child.desiredSize.height === undefined) {\n child.desiredSize.height = size.height - child.margin.top - child.margin.bottom;\n }\n if (child instanceof Container) {\n child.stretchChildren(child.desiredSize);\n }\n }\n }\n };\n /**\n * Finds the offset of the child element with respect to the container\n * @param child\n * @param center\n */\n Container.prototype.findChildOffsetFromCenter = function (child, center) {\n var topLeft = { x: center.x - child.desiredSize.width / 2, y: center.y - child.desiredSize.height / 2 };\n var offset = getOffset(topLeft, child);\n //Rotate based on child rotate angle\n offset = rotatePoint(child.rotateAngle, center.x, center.y, offset);\n //Rotate based on parent pivot\n offset = rotatePoint(this.rotateAngle + this.parentTransform, this.offsetX, this.offsetY, offset);\n child.offsetX = offset.x;\n child.offsetY = offset.y;\n };\n //private methods - check its need\n Container.prototype.GetChildrenBounds = function (child) {\n var childBounds;\n var childSize;\n childSize = child.desiredSize.clone();\n var diffAngle = child.rotateAngle - this.rotateAngle;\n var refPoint = { x: child.offsetX, y: child.offsetY };\n var left = refPoint.x - childSize.width * child.pivot.x;\n var top = refPoint.y - childSize.height * child.pivot.y;\n var right = left + childSize.width;\n var bottom = top + childSize.height;\n var topLeft = { x: left, y: top };\n var topRight = { x: right, y: top };\n var bottomLeft = { x: left, y: bottom };\n var bottomRight = { x: right, y: bottom };\n topLeft = rotatePoint(child.rotateAngle, child.offsetX, child.offsetY, topLeft);\n topRight = rotatePoint(child.rotateAngle, child.offsetX, child.offsetY, topRight);\n bottomLeft = rotatePoint(child.rotateAngle, child.offsetX, child.offsetY, bottomLeft);\n bottomRight = rotatePoint(child.rotateAngle, child.offsetX, child.offsetY, bottomRight);\n if (this.rotateAngle !== 0) {\n topLeft = rotatePoint(-this.rotateAngle, undefined, undefined, topLeft);\n topRight = rotatePoint(-this.rotateAngle, undefined, undefined, topRight);\n bottomLeft = rotatePoint(-this.rotateAngle, undefined, undefined, bottomLeft);\n bottomRight = rotatePoint(-this.rotateAngle, undefined, undefined, bottomRight);\n }\n return Rect.toBounds([topLeft, topRight, bottomLeft, bottomRight]);\n };\n return Container;\n}(DrawingElement));\nexport { Container };\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\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","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","export { default } from './Checkbox';\nexport { default as checkboxClasses } from './checkboxClasses';\nexport * from './checkboxClasses';","export { default } from './InputLabel';\nexport { default as inputLabelClasses } from './inputLabelClasses';\nexport * from './inputLabelClasses';","export { default } from './Select';\nexport { default as selectClasses } from './selectClasses';\nexport * from './selectClasses';","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","import { unstable_useId as useId } from '@mui/utils';\nexport default useId;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getGridUtilityClass(slot) {\n return generateUtilityClass('MuiGrid', slot);\n}\nconst SPACINGS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nconst DIRECTIONS = ['column-reverse', 'column', 'row-reverse', 'row'];\nconst WRAPS = ['nowrap', 'wrap-reverse', 'wrap'];\nconst GRID_SIZES = ['auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\nconst gridClasses = generateUtilityClasses('MuiGrid', ['root', 'container', 'item', 'zeroMinWidth', // spacings\n...SPACINGS.map(spacing => `spacing-xs-${spacing}`), // direction values\n...DIRECTIONS.map(direction => `direction-xs-${direction}`), // wrap values\n...WRAPS.map(wrap => `wrap-xs-${wrap}`), // grid sizes for all breakpoints\n...GRID_SIZES.map(size => `grid-xs-${size}`), ...GRID_SIZES.map(size => `grid-sm-${size}`), ...GRID_SIZES.map(size => `grid-md-${size}`), ...GRID_SIZES.map(size => `grid-lg-${size}`), ...GRID_SIZES.map(size => `grid-xl-${size}`)]);\nexport default gridClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getCheckboxUtilityClass(slot) {\n return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);\nexport default checkboxClasses;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"\n}), 'Menu');\n\nexports.default = _default;","/**\n * PdfTemplate.ts class for EJ2-PDF\n */\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PointF, SizeF, RectangleF } from './../../drawing/pdf-drawing';\nimport { GetResourceEventHandler } from './../pdf-graphics';\n/**\n * Represents `Pdf Template` object.\n * @private\n */\nvar PdfTemplate = /** @class */ (function () {\n function PdfTemplate(arg1, arg2) {\n /**\n * Initialize an instance for `DictionaryProperties` class.\n * @private\n * @hidden\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the transformation 'is performed'.\n * @default true\n * @private\n */\n this.writeTransformation = true;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.content = new PdfStream();\n var tempSize = new SizeF(arg1.width, arg1.height);\n this.setSize(tempSize);\n this.initialize();\n }\n else {\n this.content = new PdfStream();\n this.setSize(new SizeF(arg1, arg2));\n this.initialize();\n }\n }\n Object.defineProperty(PdfTemplate.prototype, \"size\", {\n //Properties\n /**\n * Gets the size of the 'PdfTemplate'.\n */\n get: function () {\n return this.templateSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"width\", {\n /**\n * Gets the width of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"height\", {\n /**\n * Gets the height of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"graphics\", {\n /**\n * Gets the `graphics` of the 'PdfTemplate'.\n */\n get: function () {\n if (this.pdfGraphics == null || typeof this.pdfGraphics === 'undefined') {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.content);\n this.pdfGraphics = g;\n // if(this.writeTransformation) {\n // Transform co-ordinates to Top/Left.\n this.pdfGraphics.initializeCoordinates();\n // }\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @private\n */\n PdfTemplate.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.content.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n // Public methods\n /**\n * `Initialize` the type and subtype of the template.\n * @private\n */\n PdfTemplate.prototype.initialize = function () {\n this.addType();\n this.addSubType();\n };\n /**\n * `Adds type key`.\n * @private\n */\n PdfTemplate.prototype.addType = function () {\n var value = new PdfName(this.dictionaryProperties.xObject);\n this.content.items.setValue(this.dictionaryProperties.type, value);\n };\n /**\n * `Adds SubType key`.\n * @private\n */\n PdfTemplate.prototype.addSubType = function () {\n var value = new PdfName(this.dictionaryProperties.form);\n this.content.items.setValue(this.dictionaryProperties.subtype, value);\n };\n PdfTemplate.prototype.reset = function (size) {\n if (typeof size === 'undefined') {\n if (this.resources != null) {\n this.resources = null;\n this.content.remove(this.dictionaryProperties.resources);\n }\n if (this.graphics != null) {\n this.graphics.reset(this.size);\n }\n }\n else {\n this.setSize(size);\n this.reset();\n }\n };\n /**\n * `Set the size` of the 'PdfTemplate'.\n * @private\n */\n PdfTemplate.prototype.setSize = function (size) {\n var rect = new RectangleF(new PointF(0, 0), size);\n var val = PdfArray.fromRectangle(rect);\n this.content.items.setValue(this.dictionaryProperties.bBox, val);\n this.templateSize = size;\n };\n Object.defineProperty(PdfTemplate.prototype, \"element\", {\n // /**\n // * Returns the value of current graphics.\n // * @private\n // */\n // public GetGraphics(g : PdfGraphics) : PdfGraphics {\n // if (this.graphics == null || typeof this.graphics === 'undefined') {\n // this.graphics = g;\n // this.graphics.Size = this.Size;\n // this.graphics.StreamWriter = new PdfStreamWriter(this.content)\n // this.graphics.Initialize();\n // if(this.writeTransformation) {\n // this.graphics.InitializeCoordinates();\n // }\n // }\n // return this.graphics;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `content stream` of 'PdfTemplate' class.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplate;\n}());\nexport { PdfTemplate };\n","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInMinute = 60000;\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInHour = 3600000;\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInSecond = 1000;\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minTime = -maxTime;\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minutesInHour = 60;\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInQuarter = 3;\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInYear = 12;\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var quartersInYear = 4;\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInHour = 3600;\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMinute = 60;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/material';\nimport { Pen, Calendar, Clock } from './icons';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const pickersToolbarClasses = generateUtilityClasses('MuiPickersToolbar', ['root', 'content', 'penIconButton', 'penIconButtonLandscape']);\nconst PickersToolbarRoot = styled('div', {\n name: 'MuiPickersToolbar',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n padding: theme.spacing(2, 3)\n}, ownerState.isLandscape && {\n height: 'auto',\n maxWidth: 160,\n padding: 16,\n justifyContent: 'flex-start',\n flexWrap: 'wrap'\n}));\nconst PickersToolbarContent = styled(Grid, {\n name: 'MuiPickersToolbar',\n slot: 'Content',\n overridesResolver: (props, styles) => styles.content\n})({\n flex: 1\n});\nconst PickersToolbarPenIconButton = styled(IconButton, {\n name: 'MuiPickersToolbar',\n slot: 'PenIconButton',\n overridesResolver: (props, styles) => styles.penIconButton\n})({});\n\nconst getViewTypeIcon = viewType => viewType === 'clock' ? /*#__PURE__*/_jsx(Clock, {\n color: \"inherit\"\n}) : /*#__PURE__*/_jsx(Calendar, {\n color: \"inherit\"\n});\n\nfunction defaultGetKeyboardInputSwitchingButtonText(isKeyboardInputOpen, viewType) {\n return isKeyboardInputOpen ? `text input view is open, go to ${viewType} view` : `${viewType} view is open, go to text input view`;\n}\n\nexport const PickersToolbar = /*#__PURE__*/React.forwardRef(function PickersToolbar(props, ref) {\n const {\n children,\n className,\n getMobileKeyboardInputViewButtonText = defaultGetKeyboardInputSwitchingButtonText,\n isLandscape,\n isMobileKeyboardViewOpen,\n landscapeDirection = 'column',\n toggleMobileKeyboardView,\n toolbarTitle,\n viewType = 'calendar'\n } = props;\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersToolbarRoot, {\n ref: ref,\n className: clsx(pickersToolbarClasses.root, className),\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n variant: \"overline\",\n children: toolbarTitle\n }), /*#__PURE__*/_jsxs(PickersToolbarContent, {\n container: true,\n justifyContent: \"space-between\",\n className: pickersToolbarClasses.content,\n ownerState: ownerState,\n direction: isLandscape ? landscapeDirection : 'row',\n alignItems: isLandscape ? 'flex-start' : 'flex-end',\n children: [children, /*#__PURE__*/_jsx(PickersToolbarPenIconButton, {\n onClick: toggleMobileKeyboardView,\n className: clsx(pickersToolbarClasses.penIconButton, isLandscape && pickersToolbarClasses.penIconButtonLandscape),\n ownerState: ownerState,\n color: \"inherit\",\n \"aria-label\": getMobileKeyboardInputViewButtonText(isMobileKeyboardViewOpen, viewType),\n children: isMobileKeyboardViewOpen ? getViewTypeIcon(viewType) : /*#__PURE__*/_jsx(Pen, {\n color: \"inherit\"\n })\n })]\n })]\n });\n});","export const getMeridiem = (date, utils) => {\n if (!date) {\n return null;\n }\n\n return utils.getHours(date) >= 12 ? 'pm' : 'am';\n};\nexport const convertValueToMeridiem = (value, meridiem, ampm) => {\n if (ampm) {\n const currentMeridiem = value >= 12 ? 'pm' : 'am';\n\n if (currentMeridiem !== meridiem) {\n return meridiem === 'am' ? value - 12 : value + 12;\n }\n }\n\n return value;\n};\nexport const convertToMeridiem = (time, meridiem, ampm, utils) => {\n const newHoursAmount = convertValueToMeridiem(utils.getHours(time), meridiem, ampm);\n return utils.setHours(time, newHoursAmount);\n};\nexport const getSecondsInDay = (date, utils) => {\n return utils.getHours(date) * 3600 + utils.getMinutes(date) * 60 + utils.getSeconds(date);\n};\nexport const createIsAfterIgnoreDatePart = (disableIgnoringDatePartForTimeValidation = false, utils) => (dateLeft, dateRight) => {\n if (disableIgnoringDatePartForTimeValidation) {\n return utils.isAfter(dateLeft, dateRight);\n }\n\n return getSecondsInDay(dateLeft, utils) > getSecondsInDay(dateRight, utils);\n};","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\n\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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};\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","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","import { unstable_useIsFocusVisible as useIsFocusVisible } from '@mui/utils';\nexport default useIsFocusVisible;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTableRowUtilityClass(slot) {\n return generateUtilityClass('MuiTableRow', slot);\n}\nconst tableRowClasses = generateUtilityClasses('MuiTableRow', ['root', 'selected', 'hover', 'head', 'footer']);\nexport default tableRowClasses;","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}","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\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};\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};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\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;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\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 if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","import createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","/**\n * Based on Kendo UI Core expression code \n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX)\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m14.06 9.02.92.92L5.92 19H5v-.92l9.06-9.06M17.66 3c-.25 0-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29zm-3.6 3.19L3 17.25V21h3.75L17.81 9.94l-3.75-3.75z\"\n}), 'EditOutlined');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zM9 6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9V6zm9 14H6V10h12v10zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z\"\n}), 'LockOutlined');\n\nexports.default = _default;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nconst FormControlContext = /*#__PURE__*/React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\n\nexport default FormControlContext;","export function registerTarget(type, target, manager) {\n var registry = manager.getRegistry();\n var targetId = registry.addTarget(type, target);\n return [targetId, function () {\n return registry.removeTarget(targetId);\n }];\n}\nexport function registerSource(type, source, manager) {\n var registry = manager.getRegistry();\n var sourceId = registry.addSource(type, source);\n return [sourceId, function () {\n return registry.removeSource(sourceId);\n }];\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m12 5.69 5 4.5V18h-2v-6H9v6H7v-7.81l5-4.5M12 3 2 12h3v8h6v-6h2v6h6v-8h3L12 3z\"\n}), 'HomeOutlined');\n\nexports.default = _default;","import { RotateTransform, ElementAction } from '../../enum/enum';\nimport { Size } from '../../primitives/size';\nimport { Rect } from '../../primitives/rect';\nimport { getBounds } from '../../utility/base-util';\n/**\n * DiagramElement module defines the basic unit of diagram\n */\nvar DrawingElement = /** @class */ (function () {\n function DrawingElement() {\n /**\n * Sets/Gets the reference point of the element\n * ```html\n *
\n * ```\n * ```typescript\n * let stackPanel: StackPanel = new StackPanel();\n * stackPanel.offsetX = 300; stackPanel.offsetY = 200;\n * stackPanel.width = 100; stackPanel.height = 100;\n * stackPanel.style.fill = 'red';\n * stackPanel.pivot = { x: 0.5, y: 0.5 };\n * let diagram: Diagram = new Diagram({\n * ...\n * basicElements: [stackPanel],\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\n this.pivot = { x: 0.5, y: 0.5 };\n this.rotateValue = { x: 0, y: 0, angle: 0 };\n /**\n * Sets or gets whether the content of the element needs to be measured\n */\n this.isDirt = true;\n /**\n * Sets/Gets the x-coordinate of the element\n */\n this.offsetX = 0;\n /**\n * Sets/Gets the y-coordinate of the element\n */\n this.offsetY = 0;\n /**\n * Set the corner of the element\n */\n this.cornerRadius = 0;\n /**\n * Sets/Gets the minimum height of the element\n */\n this.minHeight = undefined;\n /**\n * Sets/Gets the minimum width of the element\n */\n this.minWidth = undefined;\n /**\n * Sets/Gets the maximum width of the element\n */\n this.maxWidth = undefined;\n /**\n * Sets/Gets the maximum height of the element\n */\n this.maxHeight = undefined;\n /**\n * Sets/Gets the width of the element\n */\n this.width = undefined;\n /**\n * Sets/Gets the height of the element\n */\n this.height = undefined;\n /**\n * Sets/Gets how the element has to be horizontally arranged with respect to its immediate parent\n * * Stretch - Stretches the diagram element throughout its immediate parent\n * * Left - Aligns the diagram element at the left of its immediate parent\n * * Right - Aligns the diagram element at the right of its immediate parent\n * * Center - Aligns the diagram element at the center of its immediate parent\n * * Auto - Aligns the diagram element based on the characteristics of its immediate parent\n */\n this.horizontalAlignment = 'Auto';\n /**\n * Sets/Gets how the element has to be vertically arranged with respect to its immediate parent\n * * Stretch - Stretches the diagram element throughout its immediate parent\n * * Top - Aligns the diagram element at the top of its immediate parent\n * * Bottom - Aligns the diagram element at the bottom of its immediate parent\n * * Center - Aligns the diagram element at the center of its immediate parent\n * * Auto - Aligns the diagram element based on the characteristics of its immediate parent\n */\n this.verticalAlignment = 'Auto';\n /**\n * Sets or gets whether the content of the element to be visible\n */\n this.visible = true;\n /**\n * Sets/Gets the rotate angle of the element\n */\n this.rotateAngle = 0;\n /**\n * Sets/Gets the margin of the element\n */\n this.margin = { left: 0, right: 0, top: 0, bottom: 0 };\n /**\n * Sets whether the element has to be aligned with respect to a point/with respect to its immediate parent\n * * Point - Diagram elements will be aligned with respect to a point\n * * Object - Diagram elements will be aligned with respect to its immediate parent\n */\n this.relativeMode = 'Point';\n /**\n * Sets whether the element has to be transformed based on its parent or not\n * * Self - Sets the transform type as Self\n * * Parent - Sets the transform type as Parent\n */\n /** @private */\n this.transform = RotateTransform.Self | RotateTransform.Parent;\n /**\n * Sets the style of the element\n */\n this.style = { fill: 'white', strokeColor: 'black', opacity: 1, strokeWidth: 1 };\n /**\n * Gets the minimum size that is required by the element\n */\n this.desiredSize = new Size();\n /**\n * Gets the size that the element will be rendered\n */\n this.actualSize = new Size();\n /**\n * Gets the rotate angle that is set to the immediate parent of the element\n */\n this.parentTransform = 0;\n /** @private */\n this.preventContainer = false;\n /**\n * Gets/Sets the boundary of the element\n */\n this.bounds = new Rect(0, 0, 0, 0);\n /**\n * Defines whether the element has to be measured or not\n */\n this.staticSize = false;\n /**\n * check whether the element is rect or not\n */\n /** @private */\n this.isRectElement = false;\n /** @private */\n this.isCalculateDesiredSize = true;\n /**\n * Defines whether the element is group or port\n */\n /** @private */\n this.elementActions = ElementAction.None;\n //private variables\n this.position = undefined;\n this.unitMode = undefined;\n /** @private */\n this.float = false;\n this.floatingBounds = undefined;\n }\n // public constructor() {\n // this.id = randomId();\n // }\n /**\n * Sets the offset of the element with respect to its parent\n * @param x\n * @param y\n * @param mode\n */\n DrawingElement.prototype.setOffsetWithRespectToBounds = function (x, y, mode) {\n this.unitMode = mode;\n this.position = { x: x, y: y };\n };\n /**\n * Gets the position of the element with respect to its parent\n * @param size\n */\n DrawingElement.prototype.getAbsolutePosition = function (size) {\n if (this.position !== undefined) {\n if (this.unitMode === 'Absolute') {\n return this.position;\n }\n else {\n return {\n x: this.position.x * size.width, y: this.position.y * size.height\n };\n }\n }\n return undefined;\n };\n Object.defineProperty(DrawingElement.prototype, \"outerBounds\", {\n get: function () {\n return this.floatingBounds || this.bounds;\n },\n /**\n * used to set the outer bounds value\n * @private\n */\n set: function (bounds) {\n this.floatingBounds = bounds;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Measures the minimum space that the element requires\n * @param availableSize\n */\n DrawingElement.prototype.measure = function (availableSize) {\n var width = this.width !== undefined ? this.width : (availableSize.width || 0) - this.margin.left - this.margin.right;\n var height = this.height !== undefined ? this.height : (availableSize.height || 0) - this.margin.top - this.margin.bottom;\n this.desiredSize = new Size(width, height);\n if (this.isCalculateDesiredSize) {\n this.desiredSize = this.validateDesiredSize(this.desiredSize, availableSize);\n }\n return this.desiredSize;\n };\n /**\n * Arranges the element\n * @param desiredSize\n */\n DrawingElement.prototype.arrange = function (desiredSize) {\n this.actualSize = desiredSize;\n this.updateBounds();\n return this.actualSize;\n };\n /**\n * Updates the bounds of the element\n */\n DrawingElement.prototype.updateBounds = function () {\n this.bounds = getBounds(this);\n };\n /**\n * Validates the size of the element with respect to its minimum and maximum size\n * @param desiredSize\n * @param availableSize\n */\n DrawingElement.prototype.validateDesiredSize = function (desiredSize, availableSize) {\n //Empty canvas\n if (this.isRectElement && !this.width && !this.minWidth && !this.maxWidth) {\n desiredSize.width = 50;\n }\n if (this.isRectElement && !this.height && !this.minHeight && !this.maxHeight) {\n desiredSize.height = 50;\n }\n if (desiredSize === undefined || this.width !== undefined &&\n this.height !== undefined) {\n desiredSize = desiredSize || new Size();\n desiredSize.width = this.width === undefined ? (availableSize.width || 0)\n - this.margin.left - this.margin.right : this.width;\n desiredSize.height = this.height === undefined ? (availableSize.height || 0)\n - this.margin.top - this.margin.bottom : this.height;\n }\n //Considering min values\n if (this.minWidth !== undefined) {\n desiredSize.width = Math.max(desiredSize.width, this.minWidth);\n }\n if (this.minHeight !== undefined) {\n desiredSize.height = Math.max(desiredSize.height, this.minHeight);\n }\n //Considering max values\n if (this.maxWidth !== undefined) {\n desiredSize.width = Math.min(desiredSize.width, this.maxWidth);\n }\n if (this.maxHeight !== undefined) {\n desiredSize.height = Math.min(desiredSize.height, this.maxHeight);\n }\n return desiredSize;\n };\n return DrawingElement;\n}());\nexport { DrawingElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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-explicit-any */\nimport { append, prepend, createElement, extend, EventHandler, closest, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setStyleAttribute, remove } from '@syncfusion/ej2-base';\nimport { EventBase } from './event-base';\nimport * as cls from '../base/css-constant';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\nvar EVENT_GAP = 0;\n/**\n * Month view events render\n */\nvar MonthEvent = /** @class */ (function (_super) {\n __extends(MonthEvent, _super);\n function MonthEvent(parent) {\n var _this = _super.call(this, parent) || this;\n _this.renderedEvents = [];\n _this.monthHeaderHeight = 0;\n _this.moreIndicatorHeight = 19;\n _this.renderType = 'day';\n _this.element = _this.parent.activeView.getPanel();\n _this.fields = _this.parent.eventFields;\n _this.maxHeight = _this.parent.eventSettings.enableMaxHeight && !_this.parent.eventSettings.enableIndicator\n && !_this.parent.rowAutoHeight;\n _this.withIndicator = _this.parent.eventSettings.enableMaxHeight && _this.parent.eventSettings.enableIndicator\n && !_this.parent.rowAutoHeight;\n _this.maxOrIndicator = (_this.maxHeight || _this.withIndicator);\n _this.moreIndicatorHeight =\n (_this.parent.rowAutoHeight && _this.parent.eventSettings.ignoreWhitespace) ? 0 : _this.moreIndicatorHeight;\n _this.addEventListener();\n return _this;\n }\n MonthEvent.prototype.removeEventWrapper = function (appElement) {\n if (appElement.length > 0) {\n appElement = (this.parent.currentView === 'Month') ? appElement : [appElement[0]];\n for (var _i = 0, appElement_1 = appElement; _i < appElement_1.length; _i++) {\n var wrap = appElement_1[_i];\n if (!wrap.classList.contains('e-more-indicator') && wrap.parentElement && wrap.parentElement.parentNode) {\n remove(wrap.parentElement);\n }\n }\n }\n };\n MonthEvent.prototype.renderAppointments = function () {\n if (this.parent.dragAndDropModule) {\n this.parent.dragAndDropModule.setDragArea();\n }\n var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (this.parent.rowAutoHeight) {\n this.parent.uiStateValues.top = conWrap.scrollTop;\n this.parent.uiStateValues.left = conWrap.scrollLeft;\n }\n var appointmentWrapper = [].slice.call(this.element.querySelectorAll('.' + cls.APPOINTMENT_WRAPPER_CLASS));\n if (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) {\n for (var i = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; i < len; i++) {\n var appElement = [].slice.call(this.element.querySelectorAll('.e-appointment-wrapper ' + '[data-group-index=\"' +\n this.parent.crudModule.crudObj.sourceEvent[i].groupIndex + '\"]'));\n this.removeEventWrapper(appElement);\n if (this.parent.crudModule.crudObj.targetEvent[i] && this.parent.crudModule.crudObj.sourceEvent[i].groupIndex !==\n this.parent.crudModule.crudObj.targetEvent[i].groupIndex) {\n var ele = [].slice.call(this.element.querySelectorAll('.e-appointment-wrapper ' + '[data-group-index=\"' +\n this.parent.crudModule.crudObj.targetEvent[i].groupIndex + '\"]'));\n this.removeEventWrapper(ele);\n }\n }\n }\n else {\n for (var _i = 0, appointmentWrapper_1 = appointmentWrapper; _i < appointmentWrapper_1.length; _i++) {\n var wrap = appointmentWrapper_1[_i];\n remove(wrap);\n }\n }\n this.removeHeightProperty(cls.CONTENT_TABLE_CLASS);\n if (!this.element.querySelector('.' + cls.WORK_CELLS_CLASS)) {\n return;\n }\n if (this.parent.currentView === 'Month') {\n var wrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n var cellTd = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);\n cellTd.appendChild(wrapper);\n this.monthHeaderHeight = wrapper.offsetTop - cellTd.offsetTop;\n cellTd.removeChild(wrapper);\n }\n this.eventHeight = util.getElementHeightFromClass(this.element, cls.APPOINTMENT_CLASS);\n var scrollTop = conWrap.scrollTop;\n if (this.parent.rowAutoHeight && this.parent.virtualScrollModule && !isNullOrUndefined(this.parent.currentAction)) {\n conWrap.scrollTop = conWrap.scrollTop - 1;\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.renderResourceEvents();\n if (this.parent.virtualScrollModule) {\n this.parent.virtualScrollModule.updateFocusedWorkCell();\n }\n }\n else {\n this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays);\n }\n if (this.parent.rowAutoHeight) {\n this.updateBlockElements();\n var data = {\n cssProperties: this.parent.getCssProperties(),\n module: this.parent.getModuleName(),\n isPreventScrollUpdate: true,\n scrollPosition: { left: this.parent.uiStateValues.left, top: this.parent.uiStateValues.top }\n };\n if (this.parent.virtualScrollModule) {\n if (this.parent.currentAction) {\n conWrap.scrollTop = scrollTop;\n this.parent.currentAction = null;\n }\n else {\n this.parent.virtualScrollModule.updateVirtualScrollHeight();\n }\n }\n if (!this.parent.enablePersistence) {\n this.parent.notify(events.contentReady, {});\n }\n this.parent.notify(events.scrollUiUpdate, data);\n if (this.parent.currentView === 'Month' && this.parent.showWeekNumber) {\n var totalCells_1 = [].slice.call(this.parent.element.querySelectorAll('.e-content-wrap table tr td:first-child'));\n var weekNumberCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.WEEK_NUMBER_CLASS));\n weekNumberCells.forEach(function (cell, i) {\n var height = totalCells_1[i].offsetHeight;\n setStyleAttribute(cell, { 'height': height + 'px' });\n });\n this.parent.element.querySelector('.' + cls.WEEK_NUMBER_WRAPPER_CLASS).scrollTop =\n this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS).scrollTop;\n }\n }\n this.parent.renderTemplates();\n };\n MonthEvent.prototype.renderEventsHandler = function (dateRender, workDays, resData) {\n this.renderedEvents = [];\n var eventsList;\n var blockList;\n var resIndex = 0;\n if (resData) {\n resIndex = resData.groupIndex;\n this.cssClass = resData.cssClass;\n this.groupOrder = resData.groupOrder;\n eventsList = this.parent.eventBase.filterEventsByResource(resData, this.parent.eventsProcessed);\n blockList = this.parent.eventBase.filterEventsByResource(resData, this.parent.blockProcessed);\n this.workCells = [].slice.call(this.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS + '[data-group-index=\"' + resIndex + '\"]'));\n }\n else {\n eventsList = this.parent.eventsProcessed;\n blockList = this.parent.blockProcessed;\n this.workCells = [].slice.call(this.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n }\n this.sortByDateTime(eventsList);\n this.sortByDateTime(blockList);\n if (this.parent.currentView === 'Month' && this.parent.rowAutoHeight && this.parent.activeViewOptions.group.resources.length === 0) {\n var totalCells = [].slice.call(this.parent.element.querySelectorAll('.e-content-wrap table tr td:first-child'));\n var height_1 = this.parent.height === 'auto' ? (this.parent.element.querySelector('.e-content-wrap').clientHeight +\n this.parent.element.querySelector('.e-date-header-wrap').clientHeight) / totalCells.length\n : this.parent.element.querySelector('.e-schedule-table').clientHeight / totalCells.length;\n totalCells.forEach(function (cell) {\n setStyleAttribute(cell, { 'height': height_1 + 'px' });\n });\n }\n var cellDetail = this.workCells[this.parent.activeView.isTimelineView() ?\n 0 : this.workCells.length - 1].getBoundingClientRect();\n this.cellWidth = cellDetail.width;\n this.cellHeight = cellDetail.height;\n this.dateRender = dateRender;\n var filteredDates = this.getRenderedDates(dateRender);\n this.getSlotDates(workDays || this.parent.activeViewOptions.workDays);\n this.processBlockEvents(blockList, resIndex, resData);\n for (var _i = 0, eventsList_1 = eventsList; _i < eventsList_1.length; _i++) {\n var event_1 = eventsList_1[_i];\n if (this.parent.resourceBase && !resData) {\n this.cssClass = this.parent.resourceBase.getCssClass(event_1);\n }\n var spannedEvents = this.splitEvent(event_1, filteredDates || this.dateRender);\n for (var _a = 0, spannedEvents_1 = spannedEvents; _a < spannedEvents_1.length; _a++) {\n var event_2 = spannedEvents_1[_a];\n if (this.maxHeight) {\n var sDate = this.parent.currentView === 'Month' ? event_2[this.fields.startTime] :\n this.getStartTime(event_2, event_2.data);\n if (this.getIndex(sDate) > 0) {\n continue;\n }\n }\n this.updateIndicatorIcon(event_2);\n this.renderEvents(event_2, resIndex, eventsList);\n }\n }\n this.cssClass = null;\n this.groupOrder = null;\n };\n MonthEvent.prototype.processBlockEvents = function (blockEvents, resIndex, resData) {\n for (var _i = 0, blockEvents_1 = blockEvents; _i < blockEvents_1.length; _i++) {\n var event_3 = blockEvents_1[_i];\n if (this.parent.resourceBase && !resData) {\n this.cssClass = this.parent.resourceBase.getCssClass(event_3);\n }\n var blockSpannedList = [];\n if (this.renderType === 'day' && !event_3[this.fields.isAllDay]) {\n var temp = extend({}, event_3, null, true);\n var isSameDate = this.isSameDate(temp[this.fields.startTime], temp[this.fields.endTime]);\n temp.isBlockIcon = isSameDate;\n if (!isSameDate && util.getDateInMs(temp[this.fields.startTime]) > 0) {\n var e = extend({}, event_3, null, true);\n e[this.fields.endTime] = util.addDays(util.resetTime(new Date(event_3[this.fields.startTime] + '')), 1);\n e.isBlockIcon = true;\n temp[this.fields.startTime] = e[this.fields.endTime];\n blockSpannedList.push(e);\n }\n isSameDate = this.isSameDate(temp[this.fields.startTime], temp[this.fields.endTime]);\n if (!isSameDate && util.getDateInMs(temp[this.fields.endTime]) > 0) {\n var e = extend({}, event_3, null, true);\n e[this.fields.startTime] = util.resetTime(new Date(event_3[this.fields.endTime] + ''));\n e.isBlockIcon = true;\n blockSpannedList.push(e);\n temp[this.fields.endTime] = e[this.fields.startTime];\n }\n blockSpannedList.push(temp);\n }\n else {\n blockSpannedList.push(event_3);\n }\n for (var _a = 0, blockSpannedList_1 = blockSpannedList; _a < blockSpannedList_1.length; _a++) {\n var blockEvent = blockSpannedList_1[_a];\n var spannedEvents = this.splitEvent(blockEvent, this.dateRender);\n for (var _b = 0, spannedEvents_2 = spannedEvents; _b < spannedEvents_2.length; _b++) {\n var event_4 = spannedEvents_2[_b];\n this.renderBlockEvents(event_4, resIndex, !!blockEvent.isBlockIcon);\n }\n }\n }\n };\n MonthEvent.prototype.isSameDate = function (start, end) {\n return new Date(+start).setHours(0, 0, 0, 0) === new Date(+end).setHours(0, 0, 0, 0);\n };\n MonthEvent.prototype.renderBlockEvents = function (event, resIndex, isIcon) {\n var eventData = event.data;\n var startTime = this.getStartTime(event, eventData);\n var endTime = this.getEndTime(event, eventData);\n var day = this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(startTime.getTime())));\n if (day < 0 || startTime > endTime) {\n return;\n }\n var cellTd = this.getCellTd(day);\n var position = this.getPosition(startTime, endTime, event[this.fields.isAllDay], day);\n if (!isIcon) {\n var diffInDays = eventData.count;\n var appWidth = this.getEventWidth(startTime, endTime, event[this.fields.isAllDay], diffInDays);\n appWidth = (appWidth <= 0) ? this.cellWidth : appWidth;\n var appLeft = (this.parent.enableRtl) ? 0 : position;\n var appRight = (this.parent.enableRtl) ? position : 0;\n var appHeight = this.cellHeight - this.monthHeaderHeight;\n var appTop = this.getRowTop(resIndex);\n var blockElement = this.createBlockAppointmentElement(event, resIndex);\n setStyleAttribute(blockElement, {\n 'width': appWidth + 'px', 'height': appHeight + 'px', 'left': appLeft + 'px',\n 'right': appRight + 'px', 'top': appTop + 'px'\n });\n this.renderEventElement(event, blockElement, cellTd);\n }\n else {\n this.renderBlockIndicator(cellTd, position, resIndex);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MonthEvent.prototype.renderBlockIndicator = function (cellTd, position, resIndex) {\n var blockIndicator = createElement('div', { className: 'e-icons ' + cls.BLOCK_INDICATOR_CLASS });\n if (isNullOrUndefined(cellTd.querySelector('.' + cls.BLOCK_INDICATOR_CLASS))) {\n cellTd.appendChild(blockIndicator);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MonthEvent.prototype.getStartTime = function (event, eventData) {\n return event[this.fields.startTime];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MonthEvent.prototype.getEndTime = function (event, eventData) {\n return event[this.fields.endTime];\n };\n MonthEvent.prototype.getCellTd = function (day) {\n return this.workCells[day];\n };\n MonthEvent.prototype.getEventWidth = function (startDate, endDate, isAllDay, count) {\n return count * this.cellWidth - 1;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MonthEvent.prototype.getPosition = function (startTime, endTime, isAllDay, day) {\n return 0;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MonthEvent.prototype.getRowTop = function (resIndex) {\n return 0;\n };\n MonthEvent.prototype.updateIndicatorIcon = function (event) {\n if (this.parent.currentView.indexOf('Timeline') === -1 || this.parent.currentView === 'TimelineMonth'\n || event[this.fields.isAllDay]) {\n return;\n }\n var cloneData = event.data;\n var start = this.parent.activeView.getStartHour();\n var end = this.parent.activeView.getEndHour();\n var startHour = util.getStartEndHours(event[this.fields.startTime], start, end);\n var endHour = util.getStartEndHours(event[this.fields.endTime], start, end);\n var actualStartTime = cloneData[this.fields.startTime];\n var actualEndTime = cloneData[this.fields.endTime];\n cloneData.isLeft = cloneData.isLeft || actualStartTime.getTime() < startHour.startHour.getTime();\n cloneData.isRight = cloneData.isRight || actualEndTime.getTime() > endHour.endHour.getTime();\n if (util.resetTime(actualStartTime).getTime() !== util.resetTime(actualEndTime).getTime()) {\n var actualStartHour = startHour.startHour;\n var actualEndHour = endHour.endHour;\n var startTime = new Date(util.resetTime(actualStartTime));\n startTime.setHours(actualEndHour.getHours(), actualEndHour.getMinutes(), actualEndHour.getSeconds());\n cloneData.isLeft = cloneData.isLeft || actualStartTime.getTime() >= (actualStartHour.getDate() === startHour.endHour.getDate() ?\n startTime.getTime() : util.addDays(startTime, 1).getTime());\n if (actualEndTime.getTime() !== util.resetTime(actualEndTime).getTime()) {\n var endTime = new Date(util.resetTime(actualEndTime));\n cloneData.isRight = cloneData.isRight || actualEndTime.getTime() <=\n endTime.setHours(actualStartHour.getHours(), actualStartHour.getMinutes(), actualStartHour.getSeconds());\n }\n }\n };\n MonthEvent.prototype.renderResourceEvents = function () {\n var resources = this.parent.uiStateValues.isGroupAdaptive ?\n [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] :\n this.parent.resourceBase.lastResourceLevel;\n if (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) {\n for (var i = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; i < len; i++) {\n var sourceRes = this.parent.crudModule.crudObj.sourceEvent[i];\n this.renderEventsHandler(sourceRes.renderDates, sourceRes.workDays, sourceRes);\n if (this.parent.crudModule.crudObj.sourceEvent[i].groupIndex !==\n this.parent.crudModule.crudObj.targetEvent[i].groupIndex) {\n var target = this.parent.crudModule.crudObj.targetEvent[i];\n this.renderEventsHandler(target.renderDates, target.workDays, target);\n }\n }\n this.parent.crudModule.crudObj.isCrudAction = false;\n }\n else {\n for (var _i = 0, resources_1 = resources; _i < resources_1.length; _i++) {\n var slotData = resources_1[_i];\n this.renderEventsHandler(slotData.renderDates, slotData.workDays, slotData);\n }\n }\n };\n MonthEvent.prototype.getSlotDates = function (workDays) {\n this.slots = [];\n var dates = this.dateRender.map(function (date) { return +date; });\n var noOfDays = this.parent.activeViewOptions.showWeekend ? util.WEEK_LENGTH : workDays.length;\n while (dates.length > 0) {\n this.slots.push(dates.splice(0, noOfDays));\n }\n };\n MonthEvent.prototype.createAppointmentElement = function (record, resIndex, isCloneElement) {\n if (isCloneElement === void 0) { isCloneElement = false; }\n var eventSubject = (record[this.fields.subject] || this.parent.eventSettings.fields.subject.default ||\n this.parent.localeObj.getConstant('addTitle'));\n var newRecord = extend({}, record, record.data, true);\n var attrs = {\n 'data-id': 'Appointment_' + record[this.fields.id],\n 'role': 'button', 'tabindex': '0',\n 'aria-readonly': this.parent.eventBase.getReadonlyAttribute(record), 'aria-selected': 'false', 'aria-grabbed': 'true',\n 'aria-label': this.parent.getAnnouncementString(newRecord, eventSubject)\n };\n if (!isCloneElement) {\n attrs['data-guid'] = record.Guid;\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n attrs['data-group-index'] = resIndex.toString();\n }\n var appointmentWrapper = createElement('div', { className: cls.APPOINTMENT_CLASS, attrs: attrs });\n if (!isNullOrUndefined(this.cssClass)) {\n addClass([appointmentWrapper], this.cssClass);\n }\n if (record[this.fields.isReadonly]) {\n addClass([appointmentWrapper], 'e-read-only');\n }\n var appointmentDetails = createElement('div', { className: cls.APPOINTMENT_DETAILS });\n appointmentWrapper.appendChild(appointmentDetails);\n var templateElement;\n var eventData = record.data;\n var eventObj = this.getEventData(record);\n if (!isNullOrUndefined(this.parent.activeViewOptions.eventTemplate)) {\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.eventTemplateName;\n var templateId = scheduleId + viewName + 'eventTemplate';\n var eventTemplate = 'eventTemplate' + (this.parent.activeViewOptions.group.resources.length > 0 ? '_' + resIndex : '');\n templateElement = this.parent.getAppointmentTemplate()(eventObj, this.parent, eventTemplate, templateId, false);\n }\n else {\n var eventLocation = (record[this.fields.location] || this.parent.eventSettings.fields.location.default || '');\n var appointmentSubject = createElement('div', {\n className: cls.SUBJECT_CLASS,\n innerHTML: (eventSubject + (eventLocation ? '; ' + eventLocation : ''))\n });\n var appointmentStartTime = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(eventData[this.fields.startTime])\n });\n var appointmentEndTime = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(eventData[this.fields.endTime])\n });\n if (this.parent.currentView === 'Month') {\n if (record[this.fields.isAllDay]) {\n templateElement = [appointmentSubject];\n addClass([appointmentSubject], 'e-text-center');\n }\n else if (eventData.count <= 1 && !eventData.isLeft && !eventData.isRight) {\n templateElement = [appointmentStartTime, appointmentSubject];\n }\n else {\n templateElement = [];\n addClass([appointmentSubject], 'e-text-center');\n if (!eventData.isLeft) {\n templateElement.push(appointmentStartTime);\n }\n templateElement.push(appointmentSubject);\n if (!eventData.isRight) {\n templateElement.push(appointmentEndTime);\n }\n }\n }\n else {\n var innerElement = void 0;\n if (record[this.fields.isAllDay]) {\n var allDayString = createElement('div', {\n className: cls.APPOINTMENT_TIME, innerHTML: this.parent.localeObj.getConstant('allDay')\n });\n innerElement = [appointmentSubject, allDayString];\n }\n else {\n var timeString = this.parent.getTimeString(eventData[this.fields.startTime])\n + ' - ' + this.parent.getTimeString(eventData[this.fields.endTime]);\n var appTime = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''), innerHTML: timeString\n });\n var appLocation = createElement('div', { className: cls.LOCATION_CLASS, innerHTML: eventLocation });\n innerElement = [appointmentSubject, appTime, appLocation];\n }\n var wrap = createElement('div', { className: 'e-inner-wrap' });\n append(innerElement, wrap);\n templateElement = [wrap];\n }\n }\n append(templateElement, appointmentDetails);\n this.appendEventIcons(record, appointmentDetails);\n this.renderResizeHandler(appointmentWrapper, record.data, record[this.fields.isReadonly]);\n return appointmentWrapper;\n };\n MonthEvent.prototype.appendEventIcons = function (record, appointmentDetails) {\n var eventData = record.data;\n if (!isNullOrUndefined(record[this.fields.recurrenceRule]) || !isNullOrUndefined(record[this.fields.recurrenceID])) {\n var iconClass = (record[this.fields.id] === record[this.fields.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n appointmentDetails.appendChild(createElement('div', {\n className: cls.ICON + ' ' + iconClass + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : '')\n }));\n }\n if (eventData.isLeft) {\n var iconLeft = createElement('div', {\n className: cls.EVENT_INDICATOR_CLASS + ' ' + cls.ICON + ' ' + cls.EVENT_ICON_LEFT_CLASS\n });\n prepend([iconLeft], appointmentDetails);\n }\n if (eventData.isRight) {\n var iconRight = createElement('div', {\n className: cls.EVENT_INDICATOR_CLASS + ' ' + cls.ICON + ' ' + cls.EVENT_ICON_RIGHT_CLASS\n });\n append([iconRight], appointmentDetails);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MonthEvent.prototype.renderEvents = function (event, resIndex, eventsList) {\n var startTime = event[this.fields.startTime];\n var endTime = event[this.fields.endTime];\n var day = this.parent.getIndexOfDate(this.dateRender, util.resetTime(startTime));\n if (day < 0) {\n return;\n }\n if ((startTime.getTime() < this.parent.minDate.getTime()) || (endTime.getTime() > this.parent.maxDate.getTime())) {\n return;\n }\n var overlapCount = this.getIndex(startTime);\n event.Index = overlapCount;\n var appHeight = this.eventHeight;\n this.renderedEvents.push(extend({}, event, null, true));\n var diffInDays = event.data.count;\n if (startTime.getTime() <= endTime.getTime()) {\n var appWidth = (diffInDays * this.cellWidth) - 5;\n var cellTd = this.workCells[day];\n var appTop = (overlapCount * (appHeight + EVENT_GAP));\n var height = this.monthHeaderHeight + ((overlapCount + 1) * (appHeight + EVENT_GAP)) + this.moreIndicatorHeight;\n var enableAppRender = this.maxOrIndicator ? overlapCount < 1 ? true : false : this.cellHeight > height;\n if (this.parent.rowAutoHeight || enableAppRender) {\n var appointmentElement = void 0;\n if (this.inlineValue) {\n appointmentElement = this.parent.inlineModule.createInlineAppointmentElement();\n }\n else {\n appointmentElement = this.createAppointmentElement(event, resIndex);\n }\n this.applyResourceColor(appointmentElement, event, 'backgroundColor', this.groupOrder);\n this.wireAppointmentEvents(appointmentElement, event);\n setStyleAttribute(appointmentElement, { 'width': appWidth + 'px', 'top': appTop + 'px' });\n this.renderEventElement(event, appointmentElement, cellTd);\n if (this.parent.rowAutoHeight) {\n var firstChild = cellTd.parentElement.firstElementChild;\n this.updateCellHeight(firstChild, height);\n }\n }\n else {\n for (var i = 0; i < diffInDays; i++) {\n var cellTd_1 = this.workCells[day + i];\n if (cellTd_1 && isNullOrUndefined(cellTd_1.querySelector('.' + cls.MORE_INDICATOR_CLASS))) {\n var startDate = new Date(this.dateRender[day + i].getTime());\n var endDate = util.addDays(this.dateRender[day + i], 1);\n var groupIndex = cellTd_1.getAttribute('data-group-index');\n var filterEvents = this.getFilteredEvents(startDate, endDate, groupIndex);\n var appArea = this.cellHeight - this.monthHeaderHeight - this.moreIndicatorHeight;\n appHeight = this.withIndicator ? appArea : appHeight;\n var renderedAppCount = Math.floor(appArea / (appHeight + EVENT_GAP));\n var count = (filterEvents.length - renderedAppCount) <= 0 ? 1 : (filterEvents.length - renderedAppCount);\n var moreIndicatorElement = this.getMoreIndicatorElement(count, startDate, endDate);\n if (!isNullOrUndefined(groupIndex)) {\n moreIndicatorElement.setAttribute('data-group-index', groupIndex);\n }\n moreIndicatorElement.style.top = appArea + 'px';\n moreIndicatorElement.style.width = this.cellWidth - 2 + 'px';\n this.renderElement(cellTd_1, moreIndicatorElement);\n EventHandler.add(moreIndicatorElement, 'click', this.moreIndicatorClick, this);\n }\n }\n }\n }\n };\n MonthEvent.prototype.updateCellHeight = function (cell, height) {\n if ((height > cell.offsetHeight)) {\n setStyleAttribute(cell, { 'height': height + 'px' });\n }\n };\n MonthEvent.prototype.updateBlockElements = function () {\n var blockElement = [].slice.call(this.element.querySelectorAll('.' + cls.BLOCK_APPOINTMENT_CLASS));\n for (var _i = 0, blockElement_1 = blockElement; _i < blockElement_1.length; _i++) {\n var element = blockElement_1[_i];\n var target = closest(element, 'tr');\n this.monthHeaderHeight = element.offsetParent.offsetTop - target.offsetTop;\n element.style.height = ((target.offsetHeight - 1) - this.monthHeaderHeight) + 'px';\n var firstChild = target.firstElementChild;\n var width = Math.round(element.offsetWidth / firstChild.offsetWidth);\n element.style.width = (firstChild.offsetWidth * width) + 'px';\n }\n };\n // eslint-disable-next-line max-len\n MonthEvent.prototype.getFilteredEvents = function (startDate, endDate, groupIndex, eventsList) {\n var filteredEvents;\n if (isNullOrUndefined(groupIndex)) {\n filteredEvents = this.filterEvents(startDate, endDate);\n }\n else {\n var data = this.parent.resourceBase.lastResourceLevel[parseInt(groupIndex, 10)];\n filteredEvents = this.filterEvents(startDate, endDate, isNullOrUndefined(eventsList) ? undefined : eventsList, data);\n }\n return filteredEvents;\n };\n MonthEvent.prototype.getOverlapEvents = function (date, appointments) {\n var appointmentsList = [];\n for (var _i = 0, appointments_1 = appointments; _i < appointments_1.length; _i++) {\n var app = appointments_1[_i];\n var dateTime = util.resetTime(date).getTime();\n if ((util.resetTime(app[this.fields.startTime]).getTime() <= dateTime) &&\n (util.resetTime(app[this.fields.endTime]).getTime() >= dateTime)) {\n appointmentsList.push(app);\n }\n }\n return appointmentsList;\n };\n MonthEvent.prototype.getIndex = function (date) {\n var appIndex = -1;\n var appointments = this.renderedEvents;\n if (appointments.length > 0) {\n var appointmentsList = this.getOverlapEvents(date, appointments);\n var appLevel = appointmentsList.map(function (obj) { return obj.Index; });\n appIndex = (appLevel.length > 0) ? this.getSmallestMissingNumber(appLevel) : 0;\n }\n return (appIndex === -1) ? 0 : appIndex;\n };\n MonthEvent.prototype.moreIndicatorClick = function (event) {\n var _this = this;\n var target = closest(event.target, '.' + cls.MORE_INDICATOR_CLASS);\n var startDate = new Date(parseInt(target.getAttribute('data-start-date'), 10));\n var endDate = new Date(parseInt(target.getAttribute('data-end-date'), 10));\n var groupIndex = target.getAttribute('data-group-index');\n var moreArgs = {\n cancel: false, event: event, element: target, isPopupOpen: true,\n startTime: startDate, endTime: endDate, viewName: this.parent.getNavigateView()\n };\n if (groupIndex) {\n moreArgs.groupIndex = parseInt(groupIndex, 10);\n }\n this.parent.trigger(events.moreEventsClick, moreArgs, function (clickArgs) {\n if (!clickArgs.cancel) {\n if (clickArgs.isPopupOpen) {\n var filteredEvents = _this.getFilteredEvents(startDate, endDate, groupIndex);\n var moreArgs_1 = { date: startDate, event: filteredEvents, element: event.target };\n _this.parent.quickPopup.moreEventClick(moreArgs_1, endDate, groupIndex);\n }\n else {\n _this.parent.setProperties({ selectedDate: startDate }, true);\n _this.parent.changeView(clickArgs.viewName, event);\n }\n }\n });\n };\n MonthEvent.prototype.renderEventElement = function (event, appointmentElement, cellTd) {\n var _this = this;\n var eventType = appointmentElement.classList.contains(cls.BLOCK_APPOINTMENT_CLASS) ? 'blockEvent' : 'event';\n var isAppointment = appointmentElement.classList.contains(cls.APPOINTMENT_CLASS);\n var eventObj = this.getEventData(event);\n var args = { data: eventObj, element: appointmentElement, cancel: false, type: eventType };\n this.parent.trigger(events.eventRendered, args, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.renderedEvents.pop();\n }\n else {\n _this.renderElement(cellTd, appointmentElement, isAppointment);\n }\n });\n };\n MonthEvent.prototype.getEventData = function (event) {\n var eventObj = extend({}, event, null, true);\n eventObj[this.fields.startTime] = event.data[this.fields.startTime];\n eventObj[this.fields.endTime] = event.data[this.fields.endTime];\n return eventObj;\n };\n MonthEvent.prototype.renderElement = function (cellTd, element, isAppointment) {\n if (isAppointment === void 0) { isAppointment = false; }\n if (this.maxOrIndicator && isAppointment) {\n this.setMaxEventHeight(element, cellTd);\n }\n var wrapperEle = cellTd.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (wrapperEle) {\n wrapperEle.appendChild(element);\n }\n else {\n var wrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper.appendChild(element);\n cellTd.appendChild(wrapper);\n }\n };\n MonthEvent.prototype.getMoreIndicatorElement = function (count, startDate, endDate) {\n var moreIndicatorElement = createElement('div', {\n className: cls.MORE_INDICATOR_CLASS,\n innerHTML: '+' + this.parent.globalize.formatNumber(count) + ' ' + (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more')),\n attrs: {\n 'tabindex': '0',\n 'data-start-date': startDate.getTime().toString(),\n 'data-end-date': endDate.getTime().toString(),\n 'role': 'list'\n }\n });\n return moreIndicatorElement;\n };\n MonthEvent.prototype.removeHeightProperty = function (selector) {\n var rows = [].slice.call(this.element.querySelectorAll('.' + selector + ' tbody tr'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n row.firstElementChild.style.height = '';\n }\n };\n MonthEvent.prototype.setMaxEventHeight = function (event, cell) {\n var headerHeight = util.getOuterHeight(cell.querySelector('.' + cls.DATE_HEADER_CLASS));\n var height = (cell.offsetHeight - headerHeight) - (this.maxHeight ? 0 : this.moreIndicatorHeight);\n setStyleAttribute(event, { 'height': height + 'px', 'align-items': 'center' });\n };\n MonthEvent.prototype.destroy = function () {\n this.element = null;\n this.fields = null;\n this.maxHeight = null;\n this.withIndicator = null;\n this.maxOrIndicator = null;\n this.moreIndicatorHeight = null;\n this.removeEventListener();\n _super.prototype.destroy.call(this);\n };\n return MonthEvent;\n}(EventBase));\nexport { MonthEvent };\n","import { createElement, append, prepend, isNullOrUndefined, getValue, getDefaultDateObject, cldrData, addClass, setStyleAttribute, formatUnit, EventHandler, remove } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\nimport * as event from '../base/constant';\nimport * as util from '../base/util';\n/**\n * view base\n */\nvar ViewBase = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {Schedule} parent Accepts the schedule instance\n */\n function ViewBase(parent) {\n this.parent = parent;\n }\n ViewBase.prototype.isTimelineView = function () {\n return this.parent.currentView.indexOf('Timeline') !== -1;\n };\n ViewBase.prototype.getContentRows = function () {\n return [];\n };\n ViewBase.prototype.refreshHeader = function () {\n // Method to refresh the date header\n };\n ViewBase.prototype.refreshResourceHeader = function () {\n remove(this.element.querySelector('tbody').lastElementChild.firstElementChild);\n var resTd = createElement('td');\n resTd.appendChild(this.parent.resourceBase.createResourceColumn());\n prepend([resTd], this.element.querySelector('tbody').lastElementChild);\n this.parent.notify(event.contentReady, {});\n };\n ViewBase.prototype.getDayName = function (date) {\n return this.parent.getDayNames('abbreviated')[date.getDay()];\n };\n ViewBase.prototype.getDate = function (date) {\n return this.parent.globalize.formatDate(date, { format: 'd', calendar: this.parent.getCalendarMode() });\n };\n ViewBase.prototype.getTime = function (date) {\n if (this.parent.isAdaptive) {\n if (this.parent.activeViewOptions.timeFormat === 'HH:mm' || this.parent.activeViewOptions.timeFormat === 'HH.mm') {\n return this.parent.globalize.formatDate(date, { format: 'H', calendar: this.parent.getCalendarMode() });\n }\n return this.parent.globalize.formatDate(date, { skeleton: 'h', calendar: this.parent.getCalendarMode() });\n }\n return this.parent.getTimeString(date);\n };\n ViewBase.prototype.getTimelineDate = function (date) {\n var text = this.parent.globalize.formatDate(date, { skeleton: 'MMMd', calendar: this.parent.getCalendarMode() }) + ', ' +\n this.parent.getDayNames('wide')[date.getDay()];\n return util.capitalizeFirstWord(text, 'multiple');\n };\n ViewBase.prototype.createEventTable = function (trCount) {\n var eventTable = createElement('div', { className: cls.EVENT_TABLE_CLASS });\n append(this.getEventRows(trCount), eventTable);\n return eventTable;\n };\n ViewBase.prototype.getEventRows = function (trCount) {\n var eventRows = [];\n var eventContainer;\n for (var row = 0; row < trCount; row++) {\n eventContainer = createElement('div', { className: cls.APPOINTMENT_CONTAINER_CLASS });\n if (this.parent.resourceBase && !this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.renderedResources) {\n eventContainer.setAttribute('data-group-index', this.parent.resourceBase.renderedResources[row].groupIndex.toString());\n }\n eventRows.push(eventContainer);\n }\n return eventRows;\n };\n ViewBase.prototype.collapseRows = function (wrap) {\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n this.parent.resourceBase.hideResourceRows(wrap.querySelector('tbody'));\n this.parent.resourceBase.hideResourceRows(wrap.querySelector('.' + cls.EVENT_TABLE_CLASS));\n }\n };\n ViewBase.prototype.createTableLayout = function (className) {\n var clsName = className || '';\n var table = createElement('table', { className: cls.SCHEDULE_TABLE_CLASS + ' ' + clsName, attrs: { role: 'table' } });\n var tbody = createElement('tbody');\n table.appendChild(tbody);\n return table;\n };\n ViewBase.prototype.createColGroup = function (table, lastRow) {\n var length = lastRow.length;\n if (lastRow[0] && lastRow[0].colSpan) {\n length = lastRow.map(function (value) { return value.colSpan; }).reduce(function (prev, next) { return prev + next; });\n }\n var colGroupEle = createElement('colgroup');\n for (var i = 0; i < length; i++) {\n colGroupEle.appendChild(createElement('col'));\n }\n prepend([colGroupEle], table);\n };\n ViewBase.prototype.getScrollXIndent = function (content) {\n return content.offsetHeight - content.clientHeight > 0 ? util.getScrollBarWidth() : 0;\n };\n ViewBase.prototype.scrollTopPanel = function (target) {\n this.getDatesHeaderElement().firstElementChild.scrollLeft = target.scrollLeft;\n };\n ViewBase.prototype.scrollHeaderLabels = function (target) {\n var headerTable = this.element.querySelector('.e-date-header-wrap table');\n var colWidth = headerTable.offsetWidth / headerTable.querySelectorAll('colgroup col').length;\n var applyLeft = function (headerCells, isRtl) {\n var currentCell;\n var tdLeft = 0;\n var colSpan = 0;\n var hiddenLeft = isRtl ? -(target.scrollLeft) : target.scrollLeft;\n for (var _i = 0, headerCells_2 = headerCells; _i < headerCells_2.length; _i++) {\n var cell = headerCells_2[_i];\n colSpan += parseInt(cell.getAttribute('colSpan'), 10);\n if (colSpan > Math.floor(hiddenLeft / colWidth)) {\n currentCell = cell;\n break;\n }\n tdLeft += cell.offsetWidth;\n }\n if (!isNullOrUndefined(currentCell)) {\n currentCell.children[0].style[isRtl ? 'right' : 'left'] = (hiddenLeft - tdLeft) + 'px';\n }\n };\n var classNames = ['.e-header-year-cell', '.e-header-month-cell', '.e-header-week-cell', '.e-header-cells'];\n for (var _i = 0, classNames_1 = classNames; _i < classNames_1.length; _i++) {\n var className = classNames_1[_i];\n var headerCells = [].slice.call(this.element.querySelectorAll(className));\n if (headerCells.length > 0) {\n for (var _a = 0, headerCells_1 = headerCells; _a < headerCells_1.length; _a++) {\n var element = headerCells_1[_a];\n element.children[0].style[this.parent.enableRtl ? 'right' : 'left'] = '';\n }\n applyLeft(headerCells, this.parent.enableRtl);\n }\n }\n };\n ViewBase.prototype.addAttributes = function (td, element) {\n if (td.template) {\n append(td.template, element);\n }\n if (td.colSpan) {\n element.setAttribute('colspan', td.colSpan.toString());\n }\n if (td.className) {\n addClass([element], td.className);\n }\n };\n ViewBase.prototype.getHeaderBarHeight = function () {\n var headerBarHeight = 2;\n if (this.parent.headerModule) {\n headerBarHeight += util.getOuterHeight(this.parent.headerModule.getHeaderElement());\n }\n if (this.parent.uiStateValues.isGroupAdaptive) {\n var resHeader = this.parent.element.querySelector('.' + cls.RESOURCE_HEADER_TOOLBAR);\n if (resHeader) {\n headerBarHeight += resHeader.offsetHeight;\n }\n }\n return headerBarHeight;\n };\n ViewBase.prototype.renderPanel = function (type) {\n if (type === cls.PREVIOUS_PANEL_CLASS) {\n prepend([this.element], this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS));\n }\n else {\n this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS).appendChild(this.element);\n }\n };\n ViewBase.prototype.setPanel = function (panel) {\n this.element = panel;\n };\n ViewBase.prototype.getPanel = function () {\n return this.element;\n };\n ViewBase.prototype.getDatesHeaderElement = function () {\n return this.element.querySelector('.' + cls.DATE_HEADER_CONTAINER_CLASS);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ViewBase.prototype.getDateSlots = function (renderDates, workDays) {\n return []; // Here getDateSlots only need in vertical and month views\n };\n ViewBase.prototype.generateColumnLevels = function () {\n return []; // Here generateColumnLevels only need in vertical and month views\n };\n ViewBase.prototype.getColumnLevels = function () {\n return this.colLevels;\n };\n ViewBase.prototype.highlightCurrentTime = function () {\n // Here showTimeIndicator functionalities\n };\n ViewBase.prototype.startDate = function () {\n return this.renderDates[0];\n };\n ViewBase.prototype.endDate = function () {\n return util.addDays(this.renderDates[this.renderDates.length - 1], 1);\n };\n ViewBase.prototype.getStartHour = function () {\n var startHour = this.parent.getStartEndTime(this.parent.activeViewOptions.startHour);\n if (isNullOrUndefined(startHour)) {\n startHour = new Date(2000, 0, 0, 0);\n }\n return startHour;\n };\n ViewBase.prototype.getEndHour = function () {\n var endHour = this.parent.getStartEndTime(this.parent.activeViewOptions.endHour);\n if (isNullOrUndefined(endHour)) {\n endHour = new Date(2000, 0, 0, 0);\n }\n return endHour;\n };\n ViewBase.prototype.isCurrentDate = function (date) {\n return date.setHours(0, 0, 0, 0) === this.parent.getCurrentTime().setHours(0, 0, 0, 0);\n };\n ViewBase.prototype.isCurrentMonth = function (date) {\n if (this.parent.activeViewOptions.displayDate || this.parent.activeViewOptions.numberOfWeeks > 0) {\n return this.parent.activeView.getStartDate().getTime() <= this.parent.getCurrentTime().getTime() &&\n this.parent.activeView.getEndDate().getTime() >= this.parent.getCurrentTime().getTime();\n }\n return date.getFullYear() ===\n this.parent.getCurrentTime().getFullYear() && date.getMonth() === this.parent.getCurrentTime().getMonth();\n };\n ViewBase.prototype.isWorkDay = function (date, workDays) {\n if (workDays === void 0) { workDays = this.parent.activeViewOptions.workDays; }\n if (workDays.indexOf(date.getDay()) >= 0) {\n return true;\n }\n return false;\n };\n ViewBase.prototype.isWorkHour = function (date, startHour, endHour, workDays) {\n if (isNullOrUndefined(startHour) || isNullOrUndefined(endHour)) {\n return false;\n }\n startHour.setMilliseconds(0);\n endHour.setMilliseconds(0);\n return !(util.getDateInMs(date) < util.getDateInMs(startHour) || util.getDateInMs(date) >= util.getDateInMs(endHour) ||\n !this.isWorkDay(date, workDays));\n };\n ViewBase.prototype.getRenderDates = function (workDays) {\n var renderDates = [];\n // Due to same code for vertical and time line, week & work week views, if condition has used\n if (this.parent.currentView === 'Week' || this.parent.currentView === 'TimelineWeek') {\n var selectedDate = util.resetTime(this.parent.selectedDate);\n var start = util.getWeekFirstDate(selectedDate, this.parent.activeViewOptions.firstDayOfWeek);\n for (var i = 0, length_1 = util.WEEK_LENGTH * this.parent.activeViewOptions.interval; i < length_1; i++) {\n if (this.parent.activeViewOptions.showWeekend) {\n renderDates.push(start);\n }\n else {\n if (this.isWorkDay(start, workDays)) {\n renderDates.push(start);\n }\n }\n start = util.addDays(start, 1);\n }\n }\n else if (this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'TimelineWorkWeek') {\n var start = util.getWeekFirstDate(util.resetTime(this.parent.selectedDate), this.parent.activeViewOptions.firstDayOfWeek);\n for (var i = 0, length_2 = util.WEEK_LENGTH * this.parent.activeViewOptions.interval; i < length_2; i++) {\n if (this.isWorkDay(start, workDays)) {\n renderDates.push(start);\n }\n start = util.addDays(start, 1);\n }\n }\n else {\n var dayCount = this.parent.currentView === 'Agenda' ? this.parent.agendaDaysCount :\n this.parent.activeViewOptions.interval;\n var start = util.resetTime(this.parent.selectedDate);\n do {\n if (this.parent.activeViewOptions.showWeekend) {\n renderDates.push(start);\n }\n else {\n if (this.isWorkDay(start, workDays)) {\n renderDates.push(start);\n }\n }\n start = util.addDays(start, 1);\n } while (dayCount !== renderDates.length);\n }\n if (!workDays) {\n this.renderDates = renderDates;\n }\n if (this.parent.headerModule) {\n this.parent.headerModule.previousNextIconHandler();\n }\n return renderDates;\n };\n ViewBase.prototype.getNextPreviousDate = function (type) {\n if (this.parent.currentView === 'Day' || this.parent.currentView === 'TimelineDay') {\n if (this.parent.activeViewOptions.showWeekend) {\n var daysCount = this.parent.activeViewOptions.interval;\n return util.addDays(this.parent.selectedDate, type === 'next' ? daysCount : -daysCount);\n }\n else {\n var date = void 0;\n if (type === 'next') {\n date = util.addDays(this.renderDates.slice(-1)[0], 1);\n while (!this.isWorkDay(date)) {\n date = util.addDays(date, 1);\n }\n }\n else {\n date = util.addDays(this.renderDates[0], -1);\n var count = 0;\n do {\n if (this.isWorkDay(date)) {\n count += 1;\n }\n if (this.parent.activeViewOptions.interval !== count) {\n date = util.addDays(date, -1);\n }\n } while (this.parent.activeViewOptions.interval !== count);\n }\n return date;\n }\n }\n var weekLength = type === 'next' ? util.WEEK_LENGTH : -util.WEEK_LENGTH;\n return util.addDays(this.parent.selectedDate, weekLength * this.parent.activeViewOptions.interval);\n };\n ViewBase.prototype.getLabelText = function (view) {\n var viewStr = view.charAt(0).toLowerCase() + view.substring(1);\n return this.parent.localeObj.getConstant(viewStr) + ' of ' + util.capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { skeleton: 'long', calendar: this.parent.getCalendarMode() }), 'single');\n };\n ViewBase.prototype.getDateRangeText = function () {\n if (this.parent.isAdaptive) {\n var formatDate = (this.parent.activeViewOptions.dateFormat) ? this.parent.activeViewOptions.dateFormat : 'MMMM y';\n return util.capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { format: formatDate, calendar: this.parent.getCalendarMode() }), 'single');\n }\n return this.formatDateRange(this.renderDates[0], this.renderDates[this.renderDates.length - 1]);\n };\n ViewBase.prototype.formatDateRange = function (startDate, endDate) {\n var globalize = this.parent.globalize;\n var mode = this.parent.getCalendarMode();\n if (startDate === endDate) {\n endDate = null;\n }\n if (!isNullOrUndefined(this.parent.activeViewOptions.dateFormat)) {\n var text = '';\n if (!endDate) {\n text = globalize.formatDate(startDate, { format: this.parent.activeViewOptions.dateFormat, calendar: mode });\n return util.capitalizeFirstWord(text, 'multiple');\n }\n text = (globalize.formatDate(startDate, { format: this.parent.activeViewOptions.dateFormat, calendar: mode }) +\n ' - ' + globalize.formatDate(endDate, { format: this.parent.activeViewOptions.dateFormat, calendar: mode }));\n return util.capitalizeFirstWord(text, 'multiple');\n }\n var formattedStr;\n var longDateFormat;\n if (this.parent.locale === 'en' || this.parent.locale === 'en-US') {\n longDateFormat = getValue('dateFormats.long', getDefaultDateObject(mode));\n }\n else {\n longDateFormat = getValue('main.' + '' + this.parent.locale + '.dates.calendars.' + mode + '.dateFormats.long', cldrData);\n }\n if (!endDate) {\n return util.capitalizeFirstWord(globalize.formatDate(startDate, { format: longDateFormat, calendar: mode }), 'single');\n }\n var dateFormat = longDateFormat.trim().toLocaleLowerCase();\n if (dateFormat.substr(0, 1) === 'd') {\n if (startDate.getFullYear() === endDate.getFullYear()) {\n if (startDate.getMonth() === endDate.getMonth()) {\n formattedStr = globalize.formatDate(startDate, { format: 'dd', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'dd MMMM yyyy', calendar: mode });\n }\n else {\n formattedStr = globalize.formatDate(startDate, { format: 'dd MMM', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'dd MMM yyyy', calendar: mode });\n }\n }\n else {\n formattedStr = globalize.formatDate(startDate, { format: 'dd MMM yyyy', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'dd MMM yyyy', calendar: mode });\n }\n }\n else if (dateFormat.substr(0, 1) === 'm') {\n if (startDate.getFullYear() === endDate.getFullYear()) {\n if (startDate.getMonth() === endDate.getMonth()) {\n formattedStr = globalize.formatDate(startDate, { format: 'MMMM dd', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'dd, yyyy', calendar: mode });\n }\n else {\n formattedStr = globalize.formatDate(startDate, { format: 'MMM dd', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'MMM dd, yyyy', calendar: mode });\n }\n }\n else {\n formattedStr = globalize.\n formatDate(startDate, { format: 'MMM dd, yyyy', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'MMM dd, yyyy', calendar: mode });\n }\n }\n else {\n formattedStr = globalize.formatDate(startDate, { format: longDateFormat, calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: longDateFormat, calendar: mode });\n }\n return util.capitalizeFirstWord(formattedStr, 'multiple');\n };\n ViewBase.prototype.getMobileDateElement = function (date, className) {\n var wrap = createElement('div', {\n className: className,\n innerHTML: '
' + this.parent.globalize.formatDate(date, { format: 'd', calendar: this.parent.getCalendarMode() }) + '
' + '
' +\n util.capitalizeFirstWord(this.parent.globalize.formatDate(date, { format: 'E', calendar: this.parent.getCalendarMode() }), 'single') + '
'\n });\n return wrap;\n };\n ViewBase.prototype.setResourceHeaderContent = function (tdElement, tdData, className) {\n if (className === void 0) { className = cls.TEXT_ELLIPSIS; }\n if (this.parent.activeViewOptions.resourceHeaderTemplate) {\n var data = { resource: tdData.resource, resourceData: tdData.resourceData };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.resourceHeaderTemplateName;\n var templateId = scheduleId + viewName + 'resourceHeaderTemplate';\n var quickTemplate = [].slice.call(this.parent.getResourceHeaderTemplate()(data, this.parent, 'resourceHeaderTemplate', templateId, false));\n append(quickTemplate, tdElement);\n }\n else {\n tdElement.appendChild(createElement('div', {\n className: className, innerHTML: tdData.resourceData[tdData.resource.textField]\n }));\n }\n };\n ViewBase.prototype.renderResourceMobileLayout = function () {\n if (this.parent.resourceBase.lastResourceLevel && this.parent.resourceBase.lastResourceLevel.length <= 0) {\n return;\n }\n this.parent.resourceBase.renderResourceHeader();\n this.parent.resourceBase.renderResourceTree();\n };\n ViewBase.prototype.addAutoHeightClass = function (element) {\n if (!this.parent.uiStateValues.isGroupAdaptive && this.parent.rowAutoHeight && this.isTimelineView()\n && this.parent.activeViewOptions.group.resources.length > 0) {\n addClass([element], cls.AUTO_HEIGHT);\n }\n };\n ViewBase.prototype.getColElements = function () {\n return [].slice.call(this.element.querySelectorAll('.' + cls.CONTENT_WRAP_CLASS + ' col, .' + cls.DATE_HEADER_WRAP_CLASS + ' col'));\n };\n ViewBase.prototype.setColWidth = function (content) {\n if (this.isTimelineView()) {\n var colElements = this.getColElements();\n var contentBody = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n var colWidth_1 = (contentBody.getBoundingClientRect().width / (colElements.length / 2));\n colElements.forEach(function (col) { return setStyleAttribute(col, { 'width': formatUnit(colWidth_1) }); });\n if (content.offsetHeight !== content.clientHeight) {\n var resourceColumn = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n if (!isNullOrUndefined(resourceColumn)) {\n setStyleAttribute(resourceColumn, { 'height': formatUnit(content.clientHeight) });\n }\n }\n var cssClass = \".\" + cls.HEADER_CELLS_CLASS + \",.\" + cls.TIME_SLOT_CLASS + \",.\" + cls.HEADER_WEEK_CELLS_CLASS + \",.\" + cls.HEADER_MONTH_CELLS_CLASS + \",.\" + cls.HEADER_YEAR_CELLS_CLASS;\n var headerCellElements = [].slice.call(this.element.querySelectorAll(cssClass));\n headerCellElements.forEach(function (ele) {\n var colSpan = isNullOrUndefined(ele.getAttribute('colspan')) ? '1' : ele.getAttribute('colspan');\n var headerCellColSpan = parseInt(colSpan, 10);\n setStyleAttribute(ele, { 'width': formatUnit(colWidth_1 * headerCellColSpan) });\n });\n }\n };\n ViewBase.prototype.resetColWidth = function () {\n var colElements = this.getColElements();\n for (var _i = 0, colElements_1 = colElements; _i < colElements_1.length; _i++) {\n var col = colElements_1[_i];\n col.style.width = '';\n }\n };\n ViewBase.prototype.getContentAreaElement = function () {\n return this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n };\n ViewBase.prototype.wireExpandCollapseIconEvents = function () {\n if (this.parent.resourceBase && this.parent.resourceBase.resourceCollection.length > 1) {\n var treeIcons = [].slice.call(this.element.querySelectorAll('.' + cls.RESOURCE_TREE_ICON_CLASS));\n for (var _i = 0, treeIcons_1 = treeIcons; _i < treeIcons_1.length; _i++) {\n var icon = treeIcons_1[_i];\n EventHandler.clearEvents(icon);\n EventHandler.add(icon, 'click', this.parent.resourceBase.onTreeIconClick, this.parent.resourceBase);\n }\n }\n };\n ViewBase.prototype.scrollToDate = function (scrollDate) {\n if (['Month', 'TimelineMonth'].indexOf(this.parent.currentView) === -1 || isNullOrUndefined(scrollDate)) {\n return;\n }\n var scrollWrap = this.getContentAreaElement();\n var tdDate = new Date(util.resetTime(new Date(+scrollDate)).getTime()).getTime();\n var dateElement = scrollWrap.querySelector(\".\" + cls.WORK_CELLS_CLASS + \"[data-date=\\\"\" + tdDate + \"\\\"]\");\n if (this.parent.currentView === 'Month' && dateElement) {\n scrollWrap.scrollTop = dateElement.offsetTop;\n }\n if (this.parent.currentView === 'TimelineMonth' && dateElement) {\n if (!this.parent.enableRtl) {\n scrollWrap.scrollLeft = dateElement.offsetLeft;\n }\n else {\n scrollWrap.scrollLeft = -(this.parent.getContentTable().offsetWidth - dateElement.offsetLeft - dateElement.offsetWidth);\n }\n }\n };\n ViewBase.prototype.setPersistence = function () {\n if (this.parent.enablePersistence) {\n var contentWrap = this.element.querySelector('.e-content-wrap');\n if (!isNullOrUndefined(contentWrap)) {\n this.parent.scrollLeft = contentWrap.scrollLeft;\n this.parent.scrollTop = contentWrap.scrollTop;\n }\n }\n };\n ViewBase.prototype.retainScrollPosition = function () {\n if (this.parent.enablePersistence) {\n var conWrap = this.parent.element.querySelector('.e-content-wrap');\n if (!isNullOrUndefined(conWrap) && !isNullOrUndefined(this.parent.scrollLeft) && !isNullOrUndefined(this.parent.scrollTop)) {\n conWrap.scrollTop = this.parent.scrollTop;\n conWrap.scrollLeft = this.parent.scrollLeft;\n }\n }\n };\n ViewBase.prototype.getViewStartDate = function () {\n var startDate = this.renderDates[0];\n if (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.resourceBase.lastResourceLevel.length > 0) {\n startDate = this.parent.resourceBase.getResourceRenderDates()[0];\n }\n return startDate;\n };\n ViewBase.prototype.getViewEndDate = function () {\n var endDate = util.addDays(this.renderDates[this.renderDates.length - 1], 1);\n if (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.resourceBase.lastResourceLevel.length > 0) {\n endDate = util.addDays(this.parent.resourceBase.getResourceRenderDates().slice(-1)[0], 1);\n }\n return endDate;\n };\n ViewBase.prototype.destroy = function () {\n if (this.element && this.element.parentNode) {\n remove(this.element);\n }\n this.element = null;\n this.renderDates = null;\n this.colLevels = null;\n };\n return ViewBase;\n}());\nexport { ViewBase };\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar 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};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function (dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import { useReducer, useRef, useLayoutEffect, useEffect } from 'react';\n\nconst useRifm = props => {\n const [, refresh] = useReducer(c => c + 1, 0);\n const valueRef = useRef(null);\n const {\n replace,\n append\n } = props;\n const userValue = replace ? replace(props.format(props.value)) : props.format(props.value); // state of delete button see comments below about inputType support\n\n const isDeleleteButtonDownRef = useRef(false);\n\n const onChange = evt => {\n if (process.env.NODE_ENV !== 'production') {\n if (evt.target.type === 'number') {\n console.error('Rifm does not support input type=number, use type=tel instead.');\n return;\n }\n\n if (evt.target.type === 'date') {\n console.error('Rifm does not support input type=date.');\n return;\n }\n }\n\n const eventValue = evt.target.value;\n valueRef.current = [eventValue, // eventValue\n evt.target, // input\n eventValue.length > userValue.length, // isSizeIncreaseOperation\n isDeleleteButtonDownRef.current, // isDeleleteButtonDown\n userValue === props.format(eventValue) // isNoOperation\n ];\n\n if (process.env.NODE_ENV !== 'production') {\n const formattedEventValue = props.format(eventValue);\n\n if (eventValue !== formattedEventValue && eventValue.toLowerCase() === formattedEventValue.toLowerCase()) {\n console.warn('Case enforcement does not work with format. Please use replace={value => value.toLowerCase()} instead');\n }\n } // The main trick is to update underlying input with non formatted value (= eventValue)\n // that allows us to calculate right cursor position after formatting (see getCursorPosition)\n // then we format new value and call props.onChange with masked/formatted value\n // and finally we are able to set cursor position into right place\n\n\n refresh();\n }; // React prints warn on server in non production mode about useLayoutEffect usage\n // in both cases it's noop\n\n\n if (process.env.NODE_ENV === 'production' || typeof window !== 'undefined') {\n useLayoutEffect(() => {\n if (valueRef.current == null) return;\n let [eventValue, input, isSizeIncreaseOperation, isDeleleteButtonDown, // No operation means that value itself hasn't been changed, BTW cursor, selection etc can be changed\n isNoOperation] = valueRef.current;\n valueRef.current = null; // this usually occurs on deleting special symbols like ' here 123'123.00\n // in case of isDeleleteButtonDown cursor should move differently vs backspace\n\n const deleteWasNoOp = isDeleleteButtonDown && isNoOperation;\n const valueAfterSelectionStart = eventValue.slice(input.selectionStart);\n const acceptedCharIndexAfterDelete = valueAfterSelectionStart.search(props.accept || /\\d/g);\n const charsToSkipAfterDelete = acceptedCharIndexAfterDelete !== -1 ? acceptedCharIndexAfterDelete : 0; // Create string from only accepted symbols\n\n const clean = str => (str.match(props.accept || /\\d/g) || []).join('');\n\n const valueBeforeSelectionStart = clean(eventValue.substr(0, input.selectionStart)); // trying to find cursor position in formatted value having knowledge about valueBeforeSelectionStart\n // This works because we assume that format doesn't change the order of accepted symbols.\n // Imagine we have formatter which adds ' symbol between numbers, and by default we refuse all non numeric symbols\n // for example we had input = 1'2|'4 (| means cursor position) then user entered '3' symbol\n // inputValue = 1'23'|4 so valueBeforeSelectionStart = 123 and formatted value = 1'2'3'4\n // calling getCursorPosition(\"1'2'3'4\") will give us position after 3, 1'2'3|'4\n // so for formatting just this function to determine cursor position after formatting is enough\n // with masking we need to do some additional checks see `mask` below\n\n const getCursorPosition = val => {\n let start = 0;\n let cleanPos = 0;\n\n for (let i = 0; i !== valueBeforeSelectionStart.length; ++i) {\n let newPos = val.indexOf(valueBeforeSelectionStart[i], start) + 1;\n let newCleanPos = clean(val).indexOf(valueBeforeSelectionStart[i], cleanPos) + 1; // this skips position change if accepted symbols order was broken\n // For example fixes edge case with fixed point numbers:\n // You have '0|.00', then press 1, it becomes 01|.00 and after format 1.00, this breaks our assumption\n // that order of accepted symbols is not changed after format,\n // so here we don't update start position if other accepted symbols was inbetween current and new position\n\n if (newCleanPos - cleanPos > 1) {\n newPos = start;\n newCleanPos = cleanPos;\n }\n\n cleanPos = Math.max(newCleanPos, cleanPos);\n start = Math.max(start, newPos);\n }\n\n return start;\n }; // Masking part, for masks if size of mask is above some value\n // we need to replace symbols instead of do nothing as like in format\n\n\n if (props.mask === true && isSizeIncreaseOperation && !isNoOperation) {\n let start = getCursorPosition(eventValue);\n const c = clean(eventValue.substr(start))[0];\n start = eventValue.indexOf(c, start);\n eventValue = `${eventValue.substr(0, start)}${eventValue.substr(start + 1)}`;\n }\n\n let formattedValue = props.format(eventValue);\n\n if (append != null && // cursor at the end\n input.selectionStart === eventValue.length && !isNoOperation) {\n if (isSizeIncreaseOperation) {\n formattedValue = append(formattedValue);\n } else {\n // If after delete last char is special character and we use append\n // delete it too\n // was: \"12-3|\" backspace pressed, then should be \"12|\"\n if (clean(formattedValue.slice(-1)) === '') {\n formattedValue = formattedValue.slice(0, -1);\n }\n }\n }\n\n const replacedValue = replace ? replace(formattedValue) : formattedValue;\n\n if (userValue === replacedValue) {\n // if nothing changed for formatted value, just refresh so userValue will be used at render\n refresh();\n } else {\n props.onChange(replacedValue);\n }\n\n return () => {\n let start = getCursorPosition(formattedValue); // Visually improves working with masked values,\n // like cursor jumping over refused symbols\n // as an example date mask: was \"5|1-24-3\" then user pressed \"6\"\n // it becomes \"56-|12-43\" with this code, and \"56|-12-43\" without\n\n if (props.mask != null && (isSizeIncreaseOperation || isDeleleteButtonDown && !deleteWasNoOp)) {\n while (formattedValue[start] && clean(formattedValue[start]) === '') {\n start += 1;\n }\n }\n\n input.selectionStart = input.selectionEnd = start + (deleteWasNoOp ? 1 + charsToSkipAfterDelete : 0);\n };\n });\n }\n\n useEffect(() => {\n // until https://developer.mozilla.org/en-US/docs/Web/API/InputEvent/inputType will be supported\n // by all major browsers (now supported by: +chrome, +safari, ?edge, !firefox)\n // there is no way I found to distinguish in onChange\n // backspace or delete was called in some situations\n // firefox track https://bugzilla.mozilla.org/show_bug.cgi?id=1447239\n const handleKeyDown = evt => {\n if (evt.code === 'Delete') {\n isDeleleteButtonDownRef.current = true;\n }\n };\n\n const handleKeyUp = evt => {\n if (evt.code === 'Delete') {\n isDeleleteButtonDownRef.current = false;\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n return {\n value: valueRef.current != null ? valueRef.current[0] : userValue,\n onChange\n };\n};\nconst Rifm = props => {\n const renderProps = useRifm(props);\n return props.children(renderProps);\n};\n\nexport { Rifm, useRifm };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"components\", \"disableOpenPicker\", \"getOpenDialogAriaText\", \"InputAdornmentProps\", \"InputProps\", \"inputRef\", \"openPicker\", \"OpenPickerButtonProps\", \"renderInput\"];\nimport * as React from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport { useLocaleText, useUtils } from '../hooks/useUtils';\nimport { Calendar } from './icons';\nimport { useMaskedInput } from '../hooks/useMaskedInput';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const KeyboardDateInput = /*#__PURE__*/React.forwardRef(function KeyboardDateInput(props, ref) {\n const {\n components = {},\n disableOpenPicker,\n getOpenDialogAriaText: getOpenDialogAriaTextProp,\n InputAdornmentProps,\n InputProps,\n inputRef,\n openPicker,\n OpenPickerButtonProps,\n renderInput\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const localeText = useLocaleText();\n const getOpenDialogAriaText = getOpenDialogAriaTextProp != null ? getOpenDialogAriaTextProp : localeText.openDatePickerDialogue;\n const utils = useUtils();\n const textFieldProps = useMaskedInput(other);\n const adornmentPosition = (InputAdornmentProps == null ? void 0 : InputAdornmentProps.position) || 'end';\n const OpenPickerIcon = components.OpenPickerIcon || Calendar;\n return renderInput(_extends({\n ref,\n inputRef\n }, textFieldProps, {\n InputProps: _extends({}, InputProps, {\n [`${adornmentPosition}Adornment`]: disableOpenPicker ? undefined : /*#__PURE__*/_jsx(InputAdornment, _extends({\n position: adornmentPosition\n }, InputAdornmentProps, {\n children: /*#__PURE__*/_jsx(IconButton, _extends({\n edge: adornmentPosition,\n disabled: other.disabled || other.readOnly,\n \"aria-label\": getOpenDialogAriaText(other.rawValue, utils)\n }, OpenPickerButtonProps, {\n onClick: openPicker,\n children: /*#__PURE__*/_jsx(OpenPickerIcon, {})\n }))\n }))\n })\n }));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useRifm } from 'rifm';\nimport { useUtils } from './useUtils';\nimport { maskedDateFormatter, getDisplayDate, checkMaskIsValidForCurrentFormat, getMaskFromCurrentFormat } from '../utils/text-field-helper';\nexport const useMaskedInput = ({\n acceptRegex = /[\\d]/gi,\n disabled,\n disableMaskedInput,\n ignoreInvalidInputs,\n inputFormat,\n inputProps,\n label,\n mask,\n onChange,\n rawValue,\n readOnly,\n rifmFormatter,\n TextFieldProps,\n validationError\n}) => {\n const utils = useUtils();\n const formatHelperText = utils.getFormatHelperText(inputFormat);\n const {\n shouldUseMaskedInput,\n maskToUse\n } = React.useMemo(() => {\n // formatting of dates is a quite slow thing, so do not make useless .format calls\n if (disableMaskedInput) {\n return {\n shouldUseMaskedInput: false,\n maskToUse: ''\n };\n }\n\n const computedMaskToUse = getMaskFromCurrentFormat(mask, inputFormat, acceptRegex, utils);\n return {\n shouldUseMaskedInput: checkMaskIsValidForCurrentFormat(computedMaskToUse, inputFormat, acceptRegex, utils),\n maskToUse: computedMaskToUse\n };\n }, [acceptRegex, disableMaskedInput, inputFormat, mask, utils]);\n const formatter = React.useMemo(() => shouldUseMaskedInput && maskToUse ? maskedDateFormatter(maskToUse, acceptRegex) : st => st, [acceptRegex, maskToUse, shouldUseMaskedInput]); // TODO: Implement with controlled vs uncontrolled `rawValue`\n\n const parsedValue = rawValue === null ? null : utils.date(rawValue); // Track the value of the input\n\n const [innerInputValue, setInnerInputValue] = React.useState(parsedValue); // control the input text\n\n const [innerDisplayedInputValue, setInnerDisplayedInputValue] = React.useState(getDisplayDate(utils, rawValue, inputFormat)); // Inspired from autocomplete: https://github.com/mui/material-ui/blob/2c89d036dc2e16f100528f161600dffc83241768/packages/mui-base/src/AutocompleteUnstyled/useAutocomplete.js#L185:L201\n\n const prevRawValue = React.useRef();\n React.useEffect(() => {\n const rawValueChange = rawValue !== prevRawValue.current;\n prevRawValue.current = rawValue;\n\n if (!rawValueChange) {\n return;\n }\n\n const newParsedValue = rawValue === null ? null : utils.date(rawValue);\n const isAcceptedValue = rawValue === null || utils.isValid(newParsedValue);\n\n if (!isAcceptedValue || utils.isEqual(innerInputValue, newParsedValue)) {\n return;\n } // When dev set a new valid value, we trust them\n\n\n const newDisplayDate = getDisplayDate(utils, rawValue, inputFormat);\n setInnerInputValue(newParsedValue);\n setInnerDisplayedInputValue(newDisplayDate);\n }, [utils, rawValue, inputFormat, innerInputValue]);\n\n const handleChange = text => {\n const finalString = text === '' || text === mask ? '' : text;\n setInnerDisplayedInputValue(finalString);\n const date = finalString === null ? null : utils.parse(finalString, inputFormat);\n\n if (ignoreInvalidInputs && !utils.isValid(date)) {\n return;\n }\n\n setInnerInputValue(date);\n onChange(date, finalString || undefined);\n };\n\n const rifmProps = useRifm({\n value: innerDisplayedInputValue,\n onChange: handleChange,\n format: rifmFormatter || formatter\n });\n const inputStateArgs = shouldUseMaskedInput ? rifmProps : {\n value: innerDisplayedInputValue,\n onChange: event => {\n handleChange(event.currentTarget.value);\n }\n };\n return _extends({\n label,\n disabled,\n error: validationError,\n inputProps: _extends({}, inputStateArgs, {\n disabled,\n placeholder: formatHelperText,\n readOnly,\n type: shouldUseMaskedInput ? 'tel' : 'text'\n }, inputProps)\n }, TextFieldProps);\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE]);\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","// JavaScript Expression Parser (JSEP) 0.3.5\n// JSEP may be freely distributed under the MIT License\n// https://ericsmekens.github.io/jsep/\n\n/*global module: true, exports: true, console: true */\n(function (root) {\n\t'use strict';\n\t// Node Types\n\t// ----------\n\n\t// This is the full set of types that any JSEP node can be.\n\t// Store them here to save space when minified\n\tvar COMPOUND = 'Compound',\n\t\tIDENTIFIER = 'Identifier',\n\t\tMEMBER_EXP = 'MemberExpression',\n\t\tLITERAL = 'Literal',\n\t\tTHIS_EXP = 'ThisExpression',\n\t\tCALL_EXP = 'CallExpression',\n\t\tUNARY_EXP = 'UnaryExpression',\n\t\tBINARY_EXP = 'BinaryExpression',\n\t\tLOGICAL_EXP = 'LogicalExpression',\n\t\tCONDITIONAL_EXP = 'ConditionalExpression',\n\t\tARRAY_EXP = 'ArrayExpression',\n\n\t\tPERIOD_CODE = 46, // '.'\n\t\tCOMMA_CODE = 44, // ','\n\t\tSQUOTE_CODE = 39, // single quote\n\t\tDQUOTE_CODE = 34, // double quotes\n\t\tOPAREN_CODE = 40, // (\n\t\tCPAREN_CODE = 41, // )\n\t\tOBRACK_CODE = 91, // [\n\t\tCBRACK_CODE = 93, // ]\n\t\tQUMARK_CODE = 63, // ?\n\t\tSEMCOL_CODE = 59, // ;\n\t\tCOLON_CODE = 58, // :\n\n\t\tthrowError = function(message, index) {\n\t\t\tvar error = new Error(message + ' at character ' + index);\n\t\t\terror.index = index;\n\t\t\terror.description = message;\n\t\t\tthrow error;\n\t\t},\n\n\t// Operations\n\t// ----------\n\n\t// Set `t` to `true` to save space (when minified, not gzipped)\n\t\tt = true,\n\t// Use a quickly-accessible map to store all of the unary operators\n\t// Values are set to `true` (it really doesn't matter)\n\t\tunary_ops = {'-': t, '!': t, '~': t, '+': t},\n\t// Also use a map for the binary operations but set their values to their\n\t// binary precedence for quick reference:\n\t// see [Order of operations](http://en.wikipedia.org/wiki/Order_of_operations#Programming_language)\n\t\tbinary_ops = {\n\t\t\t'||': 1, '&&': 2, '|': 3, '^': 4, '&': 5,\n\t\t\t'==': 6, '!=': 6, '===': 6, '!==': 6,\n\t\t\t'<': 7, '>': 7, '<=': 7, '>=': 7,\n\t\t\t'<<':8, '>>': 8, '>>>': 8,\n\t\t\t'+': 9, '-': 9,\n\t\t\t'*': 10, '/': 10, '%': 10\n\t\t},\n\t// Get return the longest key length of any object\n\t\tgetMaxKeyLen = function(obj) {\n\t\t\tvar max_len = 0, len;\n\t\t\tfor(var key in obj) {\n\t\t\t\tif((len = key.length) > max_len && obj.hasOwnProperty(key)) {\n\t\t\t\t\tmax_len = len;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn max_len;\n\t\t},\n\t\tmax_unop_len = getMaxKeyLen(unary_ops),\n\t\tmax_binop_len = getMaxKeyLen(binary_ops),\n\t// Literals\n\t// ----------\n\t// Store the values to return for the various literals we may encounter\n\t\tliterals = {\n\t\t\t'true': true,\n\t\t\t'false': false,\n\t\t\t'null': null\n\t\t},\n\t// Except for `this`, which is special. This could be changed to something like `'self'` as well\n\t\tthis_str = 'this',\n\t// Returns the precedence of a binary operator or `0` if it isn't a binary operator\n\t\tbinaryPrecedence = function(op_val) {\n\t\t\treturn binary_ops[op_val] || 0;\n\t\t},\n\t// Utility function (gets called from multiple places)\n\t// Also note that `a && b` and `a || b` are *logical* expressions, not binary expressions\n\t\tcreateBinaryExpression = function (operator, left, right) {\n\t\t\tvar type = (operator === '||' || operator === '&&') ? LOGICAL_EXP : BINARY_EXP;\n\t\t\treturn {\n\t\t\t\ttype: type,\n\t\t\t\toperator: operator,\n\t\t\t\tleft: left,\n\t\t\t\tright: right\n\t\t\t};\n\t\t},\n\t\t// `ch` is a character code in the next three functions\n\t\tisDecimalDigit = function(ch) {\n\t\t\treturn (ch >= 48 && ch <= 57); // 0...9\n\t\t},\n\t\tisIdentifierStart = function(ch) {\n\t\t\treturn (ch === 36) || (ch === 95) || // `$` and `_`\n\t\t\t\t\t(ch >= 65 && ch <= 90) || // A...Z\n\t\t\t\t\t(ch >= 97 && ch <= 122) || // a...z\n (ch >= 128 && !binary_ops[String.fromCharCode(ch)]); // any non-ASCII that is not an operator\n\t\t},\n\t\tisIdentifierPart = function(ch) {\n\t\t\treturn (ch === 36) || (ch === 95) || // `$` and `_`\n\t\t\t\t\t(ch >= 65 && ch <= 90) || // A...Z\n\t\t\t\t\t(ch >= 97 && ch <= 122) || // a...z\n\t\t\t\t\t(ch >= 48 && ch <= 57) || // 0...9\n (ch >= 128 && !binary_ops[String.fromCharCode(ch)]); // any non-ASCII that is not an operator\n\t\t},\n\n\t\t// Parsing\n\t\t// -------\n\t\t// `expr` is a string with the passed in expression\n\t\tjsep = function(expr) {\n\t\t\t// `index` stores the character number we are currently at while `length` is a constant\n\t\t\t// All of the gobbles below will modify `index` as we move along\n\t\t\tvar index = 0,\n\t\t\t\tcharAtFunc = expr.charAt,\n\t\t\t\tcharCodeAtFunc = expr.charCodeAt,\n\t\t\t\texprI = function(i) { return charAtFunc.call(expr, i); },\n\t\t\t\texprICode = function(i) { return charCodeAtFunc.call(expr, i); },\n\t\t\t\tlength = expr.length,\n\n\t\t\t\t// Push `index` up to the next non-space character\n\t\t\t\tgobbleSpaces = function() {\n\t\t\t\t\tvar ch = exprICode(index);\n\t\t\t\t\t// space or tab\n\t\t\t\t\twhile(ch === 32 || ch === 9 || ch === 10 || ch === 13) {\n\t\t\t\t\t\tch = exprICode(++index);\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t// The main parsing function. Much of this code is dedicated to ternary expressions\n\t\t\t\tgobbleExpression = function() {\n\t\t\t\t\tvar test = gobbleBinaryExpression(),\n\t\t\t\t\t\tconsequent, alternate;\n\t\t\t\t\tgobbleSpaces();\n\t\t\t\t\tif(exprICode(index) === QUMARK_CODE) {\n\t\t\t\t\t\t// Ternary expression: test ? consequent : alternate\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tconsequent = gobbleExpression();\n\t\t\t\t\t\tif(!consequent) {\n\t\t\t\t\t\t\tthrowError('Expected expression', index);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgobbleSpaces();\n\t\t\t\t\t\tif(exprICode(index) === COLON_CODE) {\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\talternate = gobbleExpression();\n\t\t\t\t\t\t\tif(!alternate) {\n\t\t\t\t\t\t\t\tthrowError('Expected expression', index);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttype: CONDITIONAL_EXP,\n\t\t\t\t\t\t\t\ttest: test,\n\t\t\t\t\t\t\t\tconsequent: consequent,\n\t\t\t\t\t\t\t\talternate: alternate\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrowError('Expected :', index);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn test;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t// Search for the operation portion of the string (e.g. `+`, `===`)\n\t\t\t\t// Start by taking the longest possible binary operations (3 characters: `===`, `!==`, `>>>`)\n\t\t\t\t// and move down from 3 to 2 to 1 character until a matching binary operation is found\n\t\t\t\t// then, return that binary operation\n\t\t\t\tgobbleBinaryOp = function() {\n\t\t\t\t\tgobbleSpaces();\n\t\t\t\t\tvar biop, to_check = expr.substr(index, max_binop_len), tc_len = to_check.length;\n\t\t\t\t\twhile(tc_len > 0) {\n\t\t\t\t\t\t// Don't accept a binary op when it is an identifier.\n\t\t\t\t\t\t// Binary ops that start with a identifier-valid character must be followed\n\t\t\t\t\t\t// by a non identifier-part valid character\n\t\t\t\t\t\tif(binary_ops.hasOwnProperty(to_check) && (\n\t\t\t\t\t\t\t!isIdentifierStart(exprICode(index)) ||\n\t\t\t\t\t\t\t(index+to_check.length< expr.length && !isIdentifierPart(exprICode(index+to_check.length)))\n\t\t\t\t\t\t)) {\n\t\t\t\t\t\t\tindex += tc_len;\n\t\t\t\t\t\t\treturn to_check;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tto_check = to_check.substr(0, --tc_len);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\n\t\t\t\t// This function is responsible for gobbling an individual expression,\n\t\t\t\t// e.g. `1`, `1+2`, `a+(b*2)-Math.sqrt(2)`\n\t\t\t\tgobbleBinaryExpression = function() {\n\t\t\t\t\tvar ch_i, node, biop, prec, stack, biop_info, left, right, i, cur_biop;\n\n\t\t\t\t\t// First, try to get the leftmost thing\n\t\t\t\t\t// Then, check to see if there's a binary operator operating on that leftmost thing\n\t\t\t\t\tleft = gobbleToken();\n\t\t\t\t\tbiop = gobbleBinaryOp();\n\n\t\t\t\t\t// If there wasn't a binary operator, just return the leftmost node\n\t\t\t\t\tif(!biop) {\n\t\t\t\t\t\treturn left;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Otherwise, we need to start a stack to properly place the binary operations in their\n\t\t\t\t\t// precedence structure\n\t\t\t\t\tbiop_info = { value: biop, prec: binaryPrecedence(biop)};\n\n\t\t\t\t\tright = gobbleToken();\n\t\t\t\t\tif(!right) {\n\t\t\t\t\t\tthrowError(\"Expected expression after \" + biop, index);\n\t\t\t\t\t}\n\t\t\t\t\tstack = [left, biop_info, right];\n\n\t\t\t\t\t// Properly deal with precedence using [recursive descent](http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm)\n\t\t\t\t\twhile((biop = gobbleBinaryOp())) {\n\t\t\t\t\t\tprec = binaryPrecedence(biop);\n\n\t\t\t\t\t\tif(prec === 0) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbiop_info = { value: biop, prec: prec };\n\n\t\t\t\t\t\tcur_biop = biop;\n\t\t\t\t\t\t// Reduce: make a binary expression from the three topmost entries.\n\t\t\t\t\t\twhile ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {\n\t\t\t\t\t\t\tright = stack.pop();\n\t\t\t\t\t\t\tbiop = stack.pop().value;\n\t\t\t\t\t\t\tleft = stack.pop();\n\t\t\t\t\t\t\tnode = createBinaryExpression(biop, left, right);\n\t\t\t\t\t\t\tstack.push(node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnode = gobbleToken();\n\t\t\t\t\t\tif(!node) {\n\t\t\t\t\t\t\tthrowError(\"Expected expression after \" + cur_biop, index);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstack.push(biop_info, node);\n\t\t\t\t\t}\n\n\t\t\t\t\ti = stack.length - 1;\n\t\t\t\t\tnode = stack[i];\n\t\t\t\t\twhile(i > 1) {\n\t\t\t\t\t\tnode = createBinaryExpression(stack[i - 1].value, stack[i - 2], node);\n\t\t\t\t\t\ti -= 2;\n\t\t\t\t\t}\n\t\t\t\t\treturn node;\n\t\t\t\t},\n\n\t\t\t\t// An individual part of a binary expression:\n\t\t\t\t// e.g. `foo.bar(baz)`, `1`, `\"abc\"`, `(a % 2)` (because it's in parenthesis)\n\t\t\t\tgobbleToken = function() {\n\t\t\t\t\tvar ch, to_check, tc_len;\n\n\t\t\t\t\tgobbleSpaces();\n\t\t\t\t\tch = exprICode(index);\n\n\t\t\t\t\tif(isDecimalDigit(ch) || ch === PERIOD_CODE) {\n\t\t\t\t\t\t// Char code 46 is a dot `.` which can start off a numeric literal\n\t\t\t\t\t\treturn gobbleNumericLiteral();\n\t\t\t\t\t} else if(ch === SQUOTE_CODE || ch === DQUOTE_CODE) {\n\t\t\t\t\t\t// Single or double quotes\n\t\t\t\t\t\treturn gobbleStringLiteral();\n\t\t\t\t\t} else if (ch === OBRACK_CODE) {\n\t\t\t\t\t\treturn gobbleArray();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tto_check = expr.substr(index, max_unop_len);\n\t\t\t\t\t\ttc_len = to_check.length;\n\t\t\t\t\t\twhile(tc_len > 0) {\n\t\t\t\t\t\t// Don't accept an unary op when it is an identifier.\n\t\t\t\t\t\t// Unary ops that start with a identifier-valid character must be followed\n\t\t\t\t\t\t// by a non identifier-part valid character\n\t\t\t\t\t\t\tif(unary_ops.hasOwnProperty(to_check) && (\n\t\t\t\t\t\t\t\t!isIdentifierStart(exprICode(index)) ||\n\t\t\t\t\t\t\t\t(index+to_check.length < expr.length && !isIdentifierPart(exprICode(index+to_check.length)))\n\t\t\t\t\t\t\t)) {\n\t\t\t\t\t\t\t\tindex += tc_len;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttype: UNARY_EXP,\n\t\t\t\t\t\t\t\t\toperator: to_check,\n\t\t\t\t\t\t\t\t\targument: gobbleToken(),\n\t\t\t\t\t\t\t\t\tprefix: true\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tto_check = to_check.substr(0, --tc_len);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (isIdentifierStart(ch) || ch === OPAREN_CODE) { // open parenthesis\n\t\t\t\t\t\t\t// `foo`, `bar.baz`\n\t\t\t\t\t\t\treturn gobbleVariable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\t// Parse simple numeric literals: `12`, `3.4`, `.5`. Do this by using a string to\n\t\t\t\t// keep track of everything in the numeric literal and then calling `parseFloat` on that string\n\t\t\t\tgobbleNumericLiteral = function() {\n\t\t\t\t\tvar number = '', ch, chCode;\n\t\t\t\t\twhile(isDecimalDigit(exprICode(index))) {\n\t\t\t\t\t\tnumber += exprI(index++);\n\t\t\t\t\t}\n\n\t\t\t\t\tif(exprICode(index) === PERIOD_CODE) { // can start with a decimal marker\n\t\t\t\t\t\tnumber += exprI(index++);\n\n\t\t\t\t\t\twhile(isDecimalDigit(exprICode(index))) {\n\t\t\t\t\t\t\tnumber += exprI(index++);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tch = exprI(index);\n\t\t\t\t\tif(ch === 'e' || ch === 'E') { // exponent marker\n\t\t\t\t\t\tnumber += exprI(index++);\n\t\t\t\t\t\tch = exprI(index);\n\t\t\t\t\t\tif(ch === '+' || ch === '-') { // exponent sign\n\t\t\t\t\t\t\tnumber += exprI(index++);\n\t\t\t\t\t\t}\n\t\t\t\t\t\twhile(isDecimalDigit(exprICode(index))) { //exponent itself\n\t\t\t\t\t\t\tnumber += exprI(index++);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(!isDecimalDigit(exprICode(index-1)) ) {\n\t\t\t\t\t\t\tthrowError('Expected exponent (' + number + exprI(index) + ')', index);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\n\t\t\t\t\tchCode = exprICode(index);\n\t\t\t\t\t// Check to make sure this isn't a variable name that start with a number (123abc)\n\t\t\t\t\tif(isIdentifierStart(chCode)) {\n\t\t\t\t\t\tthrowError('Variable names cannot start with a number (' +\n\t\t\t\t\t\t\t\t\tnumber + exprI(index) + ')', index);\n\t\t\t\t\t} else if(chCode === PERIOD_CODE) {\n\t\t\t\t\t\tthrowError('Unexpected period', index);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: LITERAL,\n\t\t\t\t\t\tvalue: parseFloat(number),\n\t\t\t\t\t\traw: number\n\t\t\t\t\t};\n\t\t\t\t},\n\n\t\t\t\t// Parses a string literal, staring with single or double quotes with basic support for escape codes\n\t\t\t\t// e.g. `\"hello world\"`, `'this is\\nJSEP'`\n\t\t\t\tgobbleStringLiteral = function() {\n\t\t\t\t\tvar str = '', quote = exprI(index++), closed = false, ch;\n\n\t\t\t\t\twhile(index < length) {\n\t\t\t\t\t\tch = exprI(index++);\n\t\t\t\t\t\tif(ch === quote) {\n\t\t\t\t\t\t\tclosed = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if(ch === '\\\\') {\n\t\t\t\t\t\t\t// Check for all of the common escape codes\n\t\t\t\t\t\t\tch = exprI(index++);\n\t\t\t\t\t\t\tswitch(ch) {\n\t\t\t\t\t\t\t\tcase 'n': str += '\\n'; break;\n\t\t\t\t\t\t\t\tcase 'r': str += '\\r'; break;\n\t\t\t\t\t\t\t\tcase 't': str += '\\t'; break;\n\t\t\t\t\t\t\t\tcase 'b': str += '\\b'; break;\n\t\t\t\t\t\t\t\tcase 'f': str += '\\f'; break;\n\t\t\t\t\t\t\t\tcase 'v': str += '\\x0B'; break;\n\t\t\t\t\t\t\t\tdefault : str += ch;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstr += ch;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!closed) {\n\t\t\t\t\t\tthrowError('Unclosed quote after \"'+str+'\"', index);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: LITERAL,\n\t\t\t\t\t\tvalue: str,\n\t\t\t\t\t\traw: quote + str + quote\n\t\t\t\t\t};\n\t\t\t\t},\n\n\t\t\t\t// Gobbles only identifiers\n\t\t\t\t// e.g.: `foo`, `_value`, `$x1`\n\t\t\t\t// Also, this function checks if that identifier is a literal:\n\t\t\t\t// (e.g. `true`, `false`, `null`) or `this`\n\t\t\t\tgobbleIdentifier = function() {\n\t\t\t\t\tvar ch = exprICode(index), start = index, identifier;\n\n\t\t\t\t\tif(isIdentifierStart(ch)) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrowError('Unexpected ' + exprI(index), index);\n\t\t\t\t\t}\n\n\t\t\t\t\twhile(index < length) {\n\t\t\t\t\t\tch = exprICode(index);\n\t\t\t\t\t\tif(isIdentifierPart(ch)) {\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tidentifier = expr.slice(start, index);\n\n\t\t\t\t\tif(literals.hasOwnProperty(identifier)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: LITERAL,\n\t\t\t\t\t\t\tvalue: literals[identifier],\n\t\t\t\t\t\t\traw: identifier\n\t\t\t\t\t\t};\n\t\t\t\t\t} else if(identifier === this_str) {\n\t\t\t\t\t\treturn { type: THIS_EXP };\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: IDENTIFIER,\n\t\t\t\t\t\t\tname: identifier\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t// Gobbles a list of arguments within the context of a function call\n\t\t\t\t// or array literal. This function also assumes that the opening character\n\t\t\t\t// `(` or `[` has already been gobbled, and gobbles expressions and commas\n\t\t\t\t// until the terminator character `)` or `]` is encountered.\n\t\t\t\t// e.g. `foo(bar, baz)`, `my_func()`, or `[bar, baz]`\n\t\t\t\tgobbleArguments = function(termination) {\n\t\t\t\t\tvar ch_i, args = [], node, closed = false;\n\t\t\t\t\tvar separator_count = 0;\n\t\t\t\t\twhile(index < length) {\n\t\t\t\t\t\tgobbleSpaces();\n\t\t\t\t\t\tch_i = exprICode(index);\n\t\t\t\t\t\tif(ch_i === termination) { // done parsing\n\t\t\t\t\t\t\tclosed = true;\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\tif(termination === CPAREN_CODE && separator_count && separator_count >= args.length){\n\t\t\t\t\t\t\t\tthrowError('Unexpected token ' + String.fromCharCode(termination), index);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if (ch_i === COMMA_CODE) { // between expressions\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\tseparator_count++;\n\t\t\t\t\t\t\tif(separator_count !== args.length) { // missing argument\n\t\t\t\t\t\t\t\tif(termination === CPAREN_CODE) {\n\t\t\t\t\t\t\t\t\tthrowError('Unexpected token ,', index);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if(termination === CBRACK_CODE) {\n\t\t\t\t\t\t\t\t\tfor(var arg = args.length; arg< separator_count; arg++) {\n\t\t\t\t\t\t\t\t\t\targs.push(null);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode = gobbleExpression();\n\t\t\t\t\t\t\tif(!node || node.type === COMPOUND) {\n\t\t\t\t\t\t\t\tthrowError('Expected comma', index);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targs.push(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!closed) {\n\t\t\t\t\t\tthrowError('Expected ' + String.fromCharCode(termination), index);\n\t\t\t\t\t}\n\t\t\t\t\treturn args;\n\t\t\t\t},\n\n\t\t\t\t// Gobble a non-literal variable name. This variable name may include properties\n\t\t\t\t// e.g. `foo`, `bar.baz`, `foo['bar'].baz`\n\t\t\t\t// It also gobbles function calls:\n\t\t\t\t// e.g. `Math.acos(obj.angle)`\n\t\t\t\tgobbleVariable = function() {\n\t\t\t\t\tvar ch_i, node;\n\t\t\t\t\tch_i = exprICode(index);\n\n\t\t\t\t\tif(ch_i === OPAREN_CODE) {\n\t\t\t\t\t\tnode = gobbleGroup();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnode = gobbleIdentifier();\n\t\t\t\t\t}\n\t\t\t\t\tgobbleSpaces();\n\t\t\t\t\tch_i = exprICode(index);\n\t\t\t\t\twhile(ch_i === PERIOD_CODE || ch_i === OBRACK_CODE || ch_i === OPAREN_CODE) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tif(ch_i === PERIOD_CODE) {\n\t\t\t\t\t\t\tgobbleSpaces();\n\t\t\t\t\t\t\tnode = {\n\t\t\t\t\t\t\t\ttype: MEMBER_EXP,\n\t\t\t\t\t\t\t\tcomputed: false,\n\t\t\t\t\t\t\t\tobject: node,\n\t\t\t\t\t\t\t\tproperty: gobbleIdentifier()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if(ch_i === OBRACK_CODE) {\n\t\t\t\t\t\t\tnode = {\n\t\t\t\t\t\t\t\ttype: MEMBER_EXP,\n\t\t\t\t\t\t\t\tcomputed: true,\n\t\t\t\t\t\t\t\tobject: node,\n\t\t\t\t\t\t\t\tproperty: gobbleExpression()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tgobbleSpaces();\n\t\t\t\t\t\t\tch_i = exprICode(index);\n\t\t\t\t\t\t\tif(ch_i !== CBRACK_CODE) {\n\t\t\t\t\t\t\t\tthrowError('Unclosed [', index);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t} else if(ch_i === OPAREN_CODE) {\n\t\t\t\t\t\t\t// A function call is being made; gobble all the arguments\n\t\t\t\t\t\t\tnode = {\n\t\t\t\t\t\t\t\ttype: CALL_EXP,\n\t\t\t\t\t\t\t\t'arguments': gobbleArguments(CPAREN_CODE),\n\t\t\t\t\t\t\t\tcallee: node\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgobbleSpaces();\n\t\t\t\t\t\tch_i = exprICode(index);\n\t\t\t\t\t}\n\t\t\t\t\treturn node;\n\t\t\t\t},\n\n\t\t\t\t// Responsible for parsing a group of things within parentheses `()`\n\t\t\t\t// This function assumes that it needs to gobble the opening parenthesis\n\t\t\t\t// and then tries to gobble everything within that parenthesis, assuming\n\t\t\t\t// that the next thing it should see is the close parenthesis. If not,\n\t\t\t\t// then the expression probably doesn't have a `)`\n\t\t\t\tgobbleGroup = function() {\n\t\t\t\t\tindex++;\n\t\t\t\t\tvar node = gobbleExpression();\n\t\t\t\t\tgobbleSpaces();\n\t\t\t\t\tif(exprICode(index) === CPAREN_CODE) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrowError('Unclosed (', index);\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t// Responsible for parsing Array literals `[1, 2, 3]`\n\t\t\t\t// This function assumes that it needs to gobble the opening bracket\n\t\t\t\t// and then tries to gobble the expressions as arguments.\n\t\t\t\tgobbleArray = function() {\n\t\t\t\t\tindex++;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: ARRAY_EXP,\n\t\t\t\t\t\telements: gobbleArguments(CBRACK_CODE)\n\t\t\t\t\t};\n\t\t\t\t},\n\n\t\t\t\tnodes = [], ch_i, node;\n\n\t\t\twhile(index < length) {\n\t\t\t\tch_i = exprICode(index);\n\n\t\t\t\t// Expressions can be separated by semicolons, commas, or just inferred without any\n\t\t\t\t// separators\n\t\t\t\tif(ch_i === SEMCOL_CODE || ch_i === COMMA_CODE) {\n\t\t\t\t\tindex++; // ignore separators\n\t\t\t\t} else {\n\t\t\t\t\t// Try to gobble each expression individually\n\t\t\t\t\tif((node = gobbleExpression())) {\n\t\t\t\t\t\tnodes.push(node);\n\t\t\t\t\t// If we weren't able to find a binary expression and are out of room, then\n\t\t\t\t\t// the expression passed in probably has too much\n\t\t\t\t\t} else if(index < length) {\n\t\t\t\t\t\tthrowError('Unexpected \"' + exprI(index) + '\"', index);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If there's only one expression just try returning the expression\n\t\t\tif(nodes.length === 1) {\n\t\t\t\treturn nodes[0];\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\ttype: COMPOUND,\n\t\t\t\t\tbody: nodes\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\n\t// To be filled in by the template\n\tjsep.version = '0.3.5';\n\tjsep.toString = function() { return 'JavaScript Expression Parser (JSEP) v' + jsep.version; };\n\n\t/**\n\t * @method jsep.addUnaryOp\n\t * @param {string} op_name The name of the unary op to add\n\t * @return jsep\n\t */\n\tjsep.addUnaryOp = function(op_name) {\n\t\tmax_unop_len = Math.max(op_name.length, max_unop_len);\n\t\tunary_ops[op_name] = t; return this;\n\t};\n\n\t/**\n\t * @method jsep.addBinaryOp\n\t * @param {string} op_name The name of the binary op to add\n\t * @param {number} precedence The precedence of the binary op (can be a float)\n\t * @return jsep\n\t */\n\tjsep.addBinaryOp = function(op_name, precedence) {\n\t\tmax_binop_len = Math.max(op_name.length, max_binop_len);\n\t\tbinary_ops[op_name] = precedence;\n\t\treturn this;\n\t};\n\n\t/**\n\t * @method jsep.addLiteral\n\t * @param {string} literal_name The name of the literal to add\n\t * @param {*} literal_value The value of the literal\n\t * @return jsep\n\t */\n\tjsep.addLiteral = function(literal_name, literal_value) {\n\t\tliterals[literal_name] = literal_value;\n\t\treturn this;\n\t};\n\n\t/**\n\t * @method jsep.removeUnaryOp\n\t * @param {string} op_name The name of the unary op to remove\n\t * @return jsep\n\t */\n\tjsep.removeUnaryOp = function(op_name) {\n\t\tdelete unary_ops[op_name];\n\t\tif(op_name.length === max_unop_len) {\n\t\t\tmax_unop_len = getMaxKeyLen(unary_ops);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * @method jsep.removeAllUnaryOps\n\t * @return jsep\n\t */\n\tjsep.removeAllUnaryOps = function() {\n\t\tunary_ops = {};\n\t\tmax_unop_len = 0;\n\n\t\treturn this;\n\t};\n\n\t/**\n\t * @method jsep.removeBinaryOp\n\t * @param {string} op_name The name of the binary op to remove\n\t * @return jsep\n\t */\n\tjsep.removeBinaryOp = function(op_name) {\n\t\tdelete binary_ops[op_name];\n\t\tif(op_name.length === max_binop_len) {\n\t\t\tmax_binop_len = getMaxKeyLen(binary_ops);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * @method jsep.removeAllBinaryOps\n\t * @return jsep\n\t */\n\tjsep.removeAllBinaryOps = function() {\n\t\tbinary_ops = {};\n\t\tmax_binop_len = 0;\n\n\t\treturn this;\n\t};\n\n\t/**\n\t * @method jsep.removeLiteral\n\t * @param {string} literal_name The name of the literal to remove\n\t * @return jsep\n\t */\n\tjsep.removeLiteral = function(literal_name) {\n\t\tdelete literals[literal_name];\n\t\treturn this;\n\t};\n\n\t/**\n\t * @method jsep.removeAllLiterals\n\t * @return jsep\n\t */\n\tjsep.removeAllLiterals = function() {\n\t\tliterals = {};\n\n\t\treturn this;\n\t};\n\n\t// In desktop environments, have a way to restore the old value for `jsep`\n\tif (typeof exports === 'undefined') {\n\t\tvar old_jsep = root.jsep;\n\t\t// The star of the show! It's a function!\n\t\troot.jsep = jsep;\n\t\t// And a courteous function willing to move out of the way for other similarly-named objects!\n\t\tjsep.noConflict = function() {\n\t\t\tif(root.jsep === jsep) {\n\t\t\t\troot.jsep = old_jsep;\n\t\t\t}\n\t\t\treturn jsep;\n\t\t};\n\t} else {\n\t\t// In Node.JS environments\n\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\texports = module.exports = jsep;\n\t\t} else {\n\t\t\texports.parse = jsep;\n\t\t}\n\t}\n}(this));\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","/* 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","/**\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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM7.07 18.28c.43-.9 3.05-1.78 4.93-1.78s4.51.88 4.93 1.78C15.57 19.36 13.86 20 12 20s-3.57-.64-4.93-1.72zm11.29-1.45c-1.43-1.74-4.9-2.33-6.36-2.33s-4.93.59-6.36 2.33C4.62 15.49 4 13.82 4 12c0-4.41 3.59-8 8-8s8 3.59 8 8c0 1.82-.62 3.49-1.64 4.83zM12 6c-1.94 0-3.5 1.56-3.5 3.5S10.06 13 12 13s3.5-1.56 3.5-3.5S13.94 6 12 6zm0 5c-.83 0-1.5-.67-1.5-1.5S11.17 8 12 8s1.5.67 1.5 1.5S12.83 11 12 11z\"\n}), 'AccountCircleOutlined');\n\nexports.default = _default;","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","export const getDisplayDate = (utils, rawValue, inputFormat) => {\n const date = utils.date(rawValue);\n const isEmpty = rawValue === null;\n\n if (isEmpty) {\n return '';\n }\n\n return utils.isValid(date) ? utils.formatByString( // TODO: should `isValid` narrow `TDate | null` to `NonNullable`?\n // Either we allow `TDate | null` to be valid and guard against calling `formatByString` with `null`.\n // Or we ensure `formatByString` is callable with `null`.\n date, inputFormat) : '';\n};\nconst MASK_USER_INPUT_SYMBOL = '_';\nconst staticDateWith2DigitTokens = '2019-11-21T22:30:00.000';\nconst staticDateWith1DigitTokens = '2019-01-01T09:00:00.000';\nexport function getMaskFromCurrentFormat(mask, format, acceptRegex, utils) {\n if (mask) {\n return mask;\n }\n\n const formattedDateWith1Digit = utils.formatByString(utils.date(staticDateWith1DigitTokens), format);\n const inferredFormatPatternWith1Digits = formattedDateWith1Digit.replace(acceptRegex, MASK_USER_INPUT_SYMBOL);\n const inferredFormatPatternWith2Digits = utils.formatByString(utils.date(staticDateWith2DigitTokens), format).replace(acceptRegex, '_');\n\n if (inferredFormatPatternWith1Digits === inferredFormatPatternWith2Digits) {\n return inferredFormatPatternWith1Digits;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.warn([`Mask does not support numbers with variable length such as 'M'.`, `Either use numbers with fix length or disable mask feature with 'disableMaskedInput' prop`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n }\n\n return '';\n}\nexport function checkMaskIsValidForCurrentFormat(mask, format, acceptRegex, utils) {\n if (!mask) {\n return false;\n }\n\n const formattedDateWith1Digit = utils.formatByString(utils.date(staticDateWith1DigitTokens), format);\n const inferredFormatPatternWith1Digits = formattedDateWith1Digit.replace(acceptRegex, MASK_USER_INPUT_SYMBOL);\n const inferredFormatPatternWith2Digits = utils.formatByString(utils.date(staticDateWith2DigitTokens), format).replace(acceptRegex, '_');\n const isMaskValid = inferredFormatPatternWith2Digits === inferredFormatPatternWith1Digits && mask === inferredFormatPatternWith2Digits;\n\n if (!isMaskValid && utils.lib !== 'luxon' && process.env.NODE_ENV !== 'production') {\n if (format.includes('MMM')) {\n console.warn([`Mask does not support literals such as 'MMM'.`, `Either use numbers with fix length or disable mask feature with 'disableMaskedInput' prop`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n } else if (inferredFormatPatternWith2Digits && inferredFormatPatternWith2Digits !== inferredFormatPatternWith1Digits) {\n console.warn([`Mask does not support numbers with variable length such as 'M'.`, `Either use numbers with fix length or disable mask feature with 'disableMaskedInput' prop`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n } else if (mask) {\n console.warn([`The mask \"${mask}\" you passed is not valid for the format used ${format}.`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n }\n }\n\n return isMaskValid;\n}\nexport const maskedDateFormatter = (mask, acceptRegexp) => value => {\n let outputCharIndex = 0;\n return value.split('').map((char, inputCharIndex) => {\n acceptRegexp.lastIndex = 0;\n\n if (outputCharIndex > mask.length - 1) {\n return '';\n }\n\n const maskChar = mask[outputCharIndex];\n const nextMaskChar = mask[outputCharIndex + 1];\n const acceptedChar = acceptRegexp.test(char) ? char : '';\n const formattedChar = maskChar === MASK_USER_INPUT_SYMBOL ? acceptedChar : maskChar + acceptedChar;\n outputCharIndex += formattedChar.length;\n const isLastCharacter = inputCharIndex === value.length - 1;\n\n if (isLastCharacter && nextMaskChar && nextMaskChar !== MASK_USER_INPUT_SYMBOL) {\n // when cursor at the end of mask part (e.g. month) prerender next symbol \"21\" -> \"21/\"\n return formattedChar ? formattedChar + nextMaskChar : '';\n }\n\n return formattedChar;\n }).join('');\n};","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColorSpace } from './../enum';\nimport { PdfColor } from './../pdf-color';\nimport { PdfBrush } from './pdf-brush';\nimport { PdfDictionary } from '../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from '../../primitives/pdf-name';\nimport { PdfNumber } from '../../primitives/pdf-number';\nimport { PdfReferenceHolder } from '../../primitives/pdf-reference';\n/**\n * `PdfGradientBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfGradientBrush = /** @class */ (function (_super) {\n __extends(PdfGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfGradientBrush(shading) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the background color.\n * @private\n */\n _this.mbackground = new PdfColor(255, 255, 255);\n /**\n * Local variable to store the stroking color.\n * @private\n */\n _this.mbStroking = false;\n /**\n * Local variable to store the function.\n * @private\n */\n _this.mfunction = null;\n /**\n * Local variable to store the DictionaryProperties.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.mpatternDictionary = new PdfDictionary();\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.type, new PdfName(_this.dictionaryProperties.pattern));\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.patternType, new PdfNumber(2));\n _this.shading = shading;\n _this.colorSpace = PdfColorSpace.Rgb;\n return _this;\n }\n Object.defineProperty(PdfGradientBrush.prototype, \"background\", {\n //Properties\n /**\n * Gets or sets the background color of the brush.\n * @public\n */\n get: function () {\n return this.mbackground;\n },\n set: function (value) {\n this.mbackground = value;\n var sh = this.shading;\n if (value.isEmpty) {\n sh.remove(this.dictionaryProperties.background);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.background, value.toArray(this.colorSpace));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"antiAlias\", {\n /**\n * Gets or sets a value indicating whether use anti aliasing algorithm.\n * @public\n */\n get: function () {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n return aa.value;\n },\n set: function (value) {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa == null && typeof aa === 'undefined')) {\n aa = new PdfBoolean(value);\n sh.items.setValue(this.dictionaryProperties.antiAlias, aa);\n }\n else {\n aa.value = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"function\", {\n /**\n * Gets or sets the function of the brush.\n * @protected\n */\n get: function () {\n return this.mfunction;\n },\n set: function (value) {\n this.mfunction = value;\n if (value != null && typeof value !== 'undefined') {\n this.shading.items.setValue(this.dictionaryProperties.function, new PdfReferenceHolder(this.mfunction));\n }\n else {\n this.shading.remove(this.dictionaryProperties.function);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"bBox\", {\n /**\n * Gets or sets the boundary box of the brush.\n * @protected\n */\n get: function () {\n var sh = this.shading;\n var box = (sh.items.getValue(this.dictionaryProperties.bBox));\n return box;\n },\n set: function (value) {\n var sh = this.shading;\n if (value == null && typeof value === 'undefined') {\n sh.remove(this.dictionaryProperties.bBox);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.bBox, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"colorSpace\", {\n /**\n * Gets or sets the color space of the brush.\n * @public\n */\n get: function () {\n return this.mcolorSpace;\n },\n set: function (value) {\n var colorSpace = this.shading.items.getValue(this.dictionaryProperties.colorSpace);\n if ((value !== this.mcolorSpace) || (colorSpace == null)) {\n this.mcolorSpace = value;\n var csValue = this.colorSpaceToDeviceName(value);\n this.shading.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(csValue));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfGradientBrush is stroking.\n * @public\n */\n get: function () {\n return this.mbStroking;\n },\n set: function (value) {\n this.mbStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"patternDictionary\", {\n /**\n * Gets the pattern dictionary.\n * @protected\n */\n get: function () {\n if (this.mpatternDictionary == null) {\n this.mpatternDictionary = new PdfDictionary();\n }\n return this.mpatternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"shading\", {\n /**\n * Gets or sets the shading dictionary.\n * @protected\n */\n get: function () {\n return this.mshading;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Shading');\n }\n if (value !== this.mshading) {\n this.mshading = value;\n this.patternDictionary.items.setValue(this.dictionaryProperties.shading, new PdfReferenceHolder(this.mshading));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"matrix\", {\n /**\n * Gets or sets the transformation matrix.\n * @public\n */\n get: function () {\n return this.mmatrix;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Matrix');\n }\n if (value !== this.mmatrix) {\n this.mmatrix = value.clone();\n var m = new PdfArray(this.mmatrix.matrix.elements);\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.matrix, m);\n }\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush.\n * @param streamWriter The stream writer.\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGradientBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush instanceof PdfGradientBrush) {\n if ((this.colorSpace !== currentColorSpace)) {\n this.colorSpace = currentColorSpace;\n this.resetFunction();\n }\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mbStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mbStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfGradientBrush.prototype.resetChanges = function (streamWriter) {\n // Unable reset.\n };\n //Implementation\n /**\n * Converts colorspace enum to a PDF name.\n * @param colorSpace The color space enum value.\n */\n PdfGradientBrush.prototype.colorSpaceToDeviceName = function (colorSpace) {\n var result;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n result = 'DeviceRGB';\n break;\n }\n return result;\n };\n /**\n * Resets the pattern dictionary.\n * @param dictionary A new pattern dictionary.\n */\n PdfGradientBrush.prototype.resetPatternDictionary = function (dictionary) {\n this.mpatternDictionary = dictionary;\n };\n /**\n * Clones the anti aliasing value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneAntiAliasingValue = function (brush) {\n if ((brush == null)) {\n throw new Error('ArgumentNullException : brush');\n }\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa != null)) {\n brush.shading.items.setValue(this.dictionaryProperties.antiAlias, new PdfBoolean(aa.value));\n }\n };\n /**\n * Clones the background value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneBackgroundValue = function (brush) {\n var background = this.background;\n if (!background.isEmpty) {\n brush.background = background;\n }\n };\n Object.defineProperty(PdfGradientBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.patternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGradientBrush;\n}(PdfBrush));\nexport { PdfGradientBrush };\n","/**\n * enum module defines the public enumerations\n */\n/**\n * Defines the container/canvas transform\n * Self - Sets the transform type as Self\n * Parent - Sets the transform type as Parent\n */\nexport var RotateTransform;\n(function (RotateTransform) {\n /** Self - Sets the transform type as Self */\n RotateTransform[RotateTransform[\"Self\"] = 1] = \"Self\";\n /** Parent - Sets the transform type as Parent */\n RotateTransform[RotateTransform[\"Parent\"] = 2] = \"Parent\";\n})(RotateTransform || (RotateTransform = {}));\n/** Enables/Disables The element actions\n * None - Diables all element actions are none\n * ElementIsPort - Enable element action is port\n * ElementIsGroup - Enable element action as Group\n * @private\n */\nexport var ElementAction;\n(function (ElementAction) {\n /** Disables all element actions are none */\n ElementAction[ElementAction[\"None\"] = 0] = \"None\";\n /** Enable the element action is Port */\n ElementAction[ElementAction[\"ElementIsPort\"] = 2] = \"ElementIsPort\";\n /** Enable the element action as Group */\n ElementAction[ElementAction[\"ElementIsGroup\"] = 4] = \"ElementIsGroup\";\n})(ElementAction || (ElementAction = {}));\n/**\n * Defines the constraints to enable/disable certain features of connector.\n * * None - Interaction of the connectors cannot be done.\n * * Select - Selects the connector.\n * * Delete - Delete the connector.\n * * Drag - Drag the connector.\n * * DragSourceEnd - Drag the source end of the connector.\n * * DragTargetEnd - Drag the target end of the connector.\n * * DragSegmentThump - Drag the segment thumb of the connector.\n * * AllowDrop - Allow to drop a node.\n * * Bridging - Creates bridge on intersection of two connectors.\n * * BridgeObstacle -\n * * InheritBridging - Creates bridge on intersection of two connectors.\n * * PointerEvents - Sets the pointer events.\n * * Tooltip - Displays a tooltip for the connectors.\n * * InheritToolTip - Displays a tooltip for the connectors.\n * * Interaction - Features of the connector used for interaction.\n * * ReadOnly - Enables ReadOnly\n * * Default - Default features of the connector.\n * @aspNumberEnum\n * @IgnoreSingular\n */\nexport var ConnectorConstraints;\n(function (ConnectorConstraints) {\n /** Disable all connector Constraints. */\n ConnectorConstraints[ConnectorConstraints[\"None\"] = 1] = \"None\";\n /** Enables connector to be selected. */\n ConnectorConstraints[ConnectorConstraints[\"Select\"] = 2] = \"Select\";\n /** Enables connector to be Deleted. */\n ConnectorConstraints[ConnectorConstraints[\"Delete\"] = 4] = \"Delete\";\n /** Enables connector to be Dragged. */\n ConnectorConstraints[ConnectorConstraints[\"Drag\"] = 8] = \"Drag\";\n /** Enables connectors source end to be selected. */\n ConnectorConstraints[ConnectorConstraints[\"DragSourceEnd\"] = 16] = \"DragSourceEnd\";\n /** Enables connectors target end to be selected. */\n ConnectorConstraints[ConnectorConstraints[\"DragTargetEnd\"] = 32] = \"DragTargetEnd\";\n /** Enables control point and end point of every segment in a connector for editing. */\n ConnectorConstraints[ConnectorConstraints[\"DragSegmentThumb\"] = 64] = \"DragSegmentThumb\";\n /** Enables AllowDrop constraints to the connector. */\n ConnectorConstraints[ConnectorConstraints[\"AllowDrop\"] = 128] = \"AllowDrop\";\n /** Enables bridging to the connector. */\n ConnectorConstraints[ConnectorConstraints[\"Bridging\"] = 256] = \"Bridging\";\n /** Enables or Disables Bridge Obstacles with overlapping of connectors. */\n ConnectorConstraints[ConnectorConstraints[\"BridgeObstacle\"] = 512] = \"BridgeObstacle\";\n /** Enables bridging to the connector. */\n ConnectorConstraints[ConnectorConstraints[\"InheritBridging\"] = 1024] = \"InheritBridging\";\n /** Used to set the pointer events. */\n ConnectorConstraints[ConnectorConstraints[\"PointerEvents\"] = 2048] = \"PointerEvents\";\n /** Enables or disables tool tip for the connectors */\n ConnectorConstraints[ConnectorConstraints[\"Tooltip\"] = 4096] = \"Tooltip\";\n /** Enables or disables tool tip for the connectors */\n ConnectorConstraints[ConnectorConstraints[\"InheritTooltip\"] = 8192] = \"InheritTooltip\";\n /** Enables Interaction. */\n ConnectorConstraints[ConnectorConstraints[\"Interaction\"] = 4218] = \"Interaction\";\n /** Enables ReadOnly */\n ConnectorConstraints[ConnectorConstraints[\"ReadOnly\"] = 16384] = \"ReadOnly\";\n /** Enables all constraints. */\n ConnectorConstraints[ConnectorConstraints[\"Default\"] = 11838] = \"Default\";\n})(ConnectorConstraints || (ConnectorConstraints = {}));\n/** Enables/Disables the handles of the selector\n * Rotate - Enable Rotate Thumb\n * ConnectorSource - Enable Connector source point\n * ConnectorTarget - Enable Connector target point\n * ResizeNorthEast - Enable ResizeNorthEast Resize\n * ResizeEast - Enable ResizeEast Resize\n * ResizeSouthEast - Enable ResizeSouthEast Resize\n * ResizeSouth - Enable ResizeSouth Resize\n * ResizeSouthWest - Enable ResizeSouthWest Resize\n * ResizeWest - Enable ResizeWest Resize\n * ResizeNorthWest - Enable ResizeNorthWest Resize\n * ResizeNorth - Enable ResizeNorth Resize\n * Default - Enables all constraints\n * @private\n */\nexport var ThumbsConstraints;\n(function (ThumbsConstraints) {\n /** Enable Rotate Thumb */\n ThumbsConstraints[ThumbsConstraints[\"Rotate\"] = 2] = \"Rotate\";\n /** Enable Connector source point */\n ThumbsConstraints[ThumbsConstraints[\"ConnectorSource\"] = 4] = \"ConnectorSource\";\n /** Enable Connector target point */\n ThumbsConstraints[ThumbsConstraints[\"ConnectorTarget\"] = 8] = \"ConnectorTarget\";\n /** Enable ResizeNorthEast Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeNorthEast\"] = 16] = \"ResizeNorthEast\";\n /** Enable ResizeEast Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeEast\"] = 32] = \"ResizeEast\";\n /** Enable ResizeSouthEast Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeSouthEast\"] = 64] = \"ResizeSouthEast\";\n /** Enable ResizeSouth Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeSouth\"] = 128] = \"ResizeSouth\";\n /** Enable ResizeSouthWest Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeSouthWest\"] = 256] = \"ResizeSouthWest\";\n /** Enable ResizeWest Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeWest\"] = 512] = \"ResizeWest\";\n /** Enable ResizeNorthWest Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeNorthWest\"] = 1024] = \"ResizeNorthWest\";\n /** Enable ResizeNorth Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeNorth\"] = 2048] = \"ResizeNorth\";\n /** Enables all constraints */\n ThumbsConstraints[ThumbsConstraints[\"Default\"] = 4094] = \"Default\";\n})(ThumbsConstraints || (ThumbsConstraints = {}));\n/**\n * Defines the visibility of the selector handles\n * None - Hides all the selector elements\n * ConnectorSourceThumb - Shows/hides the source thumb of the connector\n * ConnectorTargetThumb - Shows/hides the target thumb of the connector\n * ResizeSouthEast - Shows/hides the bottom right resize handle of the selector\n * ResizeSouthWest - Shows/hides the bottom left resize handle of the selector\n * ResizeNorthEast - Shows/hides the top right resize handle of the selector\n * ResizeNorthWest - Shows/hides the top left resize handle of the selector\n * ResizeEast - Shows/hides the middle right resize handle of the selector\n * ResizeWest - Shows/hides the middle left resize handle of the selector\n * ResizeSouth - Shows/hides the bottom center resize handle of the selector\n * ResizeNorth - Shows/hides the top center resize handle of the selector\n * Rotate - Shows/hides the rotate handle of the selector\n * UserHandles - Shows/hides the user handles of the selector\n * Resize - Shows/hides all resize handles of the selector\n * @aspNumberEnum\n * @IgnoreSingular\n */\nexport var SelectorConstraints;\n(function (SelectorConstraints) {\n /** Hides all the selector elements */\n SelectorConstraints[SelectorConstraints[\"None\"] = 1] = \"None\";\n /** Shows/hides the source thumb of the connector */\n SelectorConstraints[SelectorConstraints[\"ConnectorSourceThumb\"] = 2] = \"ConnectorSourceThumb\";\n /** Shows/hides the target thumb of the connector */\n SelectorConstraints[SelectorConstraints[\"ConnectorTargetThumb\"] = 4] = \"ConnectorTargetThumb\";\n /** Shows/hides the bottom right resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeSouthEast\"] = 8] = \"ResizeSouthEast\";\n /** Shows/hides the bottom left resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeSouthWest\"] = 16] = \"ResizeSouthWest\";\n /** Shows/hides the top right resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeNorthEast\"] = 32] = \"ResizeNorthEast\";\n /** Shows/hides the top left resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeNorthWest\"] = 64] = \"ResizeNorthWest\";\n /** Shows/hides the middle right resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeEast\"] = 128] = \"ResizeEast\";\n /** Shows/hides the middle left resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeWest\"] = 256] = \"ResizeWest\";\n /** Shows/hides the bottom center resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeSouth\"] = 512] = \"ResizeSouth\";\n /** Shows/hides the top center resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeNorth\"] = 1024] = \"ResizeNorth\";\n /** Shows/hides the rotate handle of the selector */\n SelectorConstraints[SelectorConstraints[\"Rotate\"] = 2048] = \"Rotate\";\n /** Shows/hides the user handles of the selector */\n SelectorConstraints[SelectorConstraints[\"UserHandle\"] = 4096] = \"UserHandle\";\n /** Shows/hides the default tooltip of nodes and connectors */\n SelectorConstraints[SelectorConstraints[\"ToolTip\"] = 8192] = \"ToolTip\";\n /** Shows/hides all resize handles of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeAll\"] = 2046] = \"ResizeAll\";\n /** Shows all handles of the selector */\n SelectorConstraints[SelectorConstraints[\"All\"] = 16382] = \"All\";\n})(SelectorConstraints || (SelectorConstraints = {}));\n/** @private */\nexport var NoOfSegments;\n(function (NoOfSegments) {\n NoOfSegments[NoOfSegments[\"Zero\"] = 0] = \"Zero\";\n NoOfSegments[NoOfSegments[\"One\"] = 1] = \"One\";\n NoOfSegments[NoOfSegments[\"Two\"] = 2] = \"Two\";\n NoOfSegments[NoOfSegments[\"Three\"] = 3] = \"Three\";\n NoOfSegments[NoOfSegments[\"Four\"] = 4] = \"Four\";\n NoOfSegments[NoOfSegments[\"Five\"] = 5] = \"Five\";\n})(NoOfSegments || (NoOfSegments = {}));\n","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","module.exports = {};\n","export { default } from './MenuItem';\nexport * from './menuItemClasses';\nexport { default as menuItemClasses } from './menuItemClasses';","import { createElement, useContext, useRef, useLayoutEffect, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-699e6908.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-699e6908.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.7.0\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.cjs.js\": \"./dist/emotion-react.browser.cjs.js\",\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"mitchellhamilton \",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.13.10\",\n\t\t\"@emotion/cache\": \"^11.6.0\",\n\t\t\"@emotion/serialize\": \"^1.0.2\",\n\t\t\"@emotion/sheet\": \"^1.1.0\",\n\t\t\"@emotion/utils\": \"^1.0.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.2.5\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\t\"@babel/core\": \"^7.0.0\",\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@babel/core\": {\n\t\t\toptional: true\n\t\t},\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@babel/core\": \"^7.13.10\",\n\t\t\"@emotion/css\": \"11.5.0\",\n\t\t\"@emotion/css-prettifier\": \"1.0.0\",\n\t\t\"@emotion/server\": \"11.4.0\",\n\t\t\"@emotion/styled\": \"11.6.0\",\n\t\t\"@types/react\": \"^16.9.11\",\n\t\tdtslint: \"^0.3.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\"\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = useRef();\n useLayoutEffect(function () {\n var key = cache.key + \"-global\";\n var sheet = new StyleSheet({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useLayoutEffect(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Noop = function Noop() {\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n\n {\n insertStyles(cache, serialized, false);\n }\n\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n\n\n return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727 for some reason Jest evaluates modules twice if some consuming module gets mocked with jest.mock\n\n var isJest = typeof jest !== 'undefined';\n\n if (isBrowser && !isJest) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getIconButtonUtilityClass(slot) {\n return generateUtilityClass('MuiIconButton', slot);\n}\nconst iconButtonClasses = generateUtilityClasses('MuiIconButton', ['root', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'edgeStart', 'edgeEnd', 'sizeSmall', 'sizeMedium', 'sizeLarge']);\nexport default iconButtonClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTableCellUtilityClass(slot) {\n return generateUtilityClass('MuiTableCell', slot);\n}\nconst tableCellClasses = generateUtilityClasses('MuiTableCell', ['root', 'head', 'body', 'footer', 'sizeSmall', 'sizeMedium', 'paddingCheckbox', 'paddingNone', 'alignLeft', 'alignCenter', 'alignRight', 'alignJustify', 'stickyHeader']);\nexport default tableCellClasses;","import { unstable_ownerWindow as ownerWindow } from '@mui/utils';\nexport default ownerWindow;","import createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\n\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\n\nexport default useTheme;","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nexport function hasValue(value) {\n return value != null && !(Array.isArray(value) && value.length === 0);\n} // Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n// True when any number or string with length.\n\nexport function isFilled(obj, SSR = false) {\n return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n} // Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n// True when adorned at the start.\n\nexport function isAdornedStart(obj) {\n return obj.startAdornment;\n}","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import * as React from 'react';\nimport { useUtils } from './useUtils';\nimport { getMeridiem, convertToMeridiem } from '../utils/time-utils';\nexport function useNextMonthDisabled(month, {\n disableFuture,\n maxDate\n}) {\n const utils = useUtils();\n return React.useMemo(() => {\n const now = utils.date();\n const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);\n return !utils.isAfter(lastEnabledMonth, month);\n }, [disableFuture, maxDate, month, utils]);\n}\nexport function usePreviousMonthDisabled(month, {\n disablePast,\n minDate\n}) {\n const utils = useUtils();\n return React.useMemo(() => {\n const now = utils.date();\n const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);\n return !utils.isBefore(firstEnabledMonth, month);\n }, [disablePast, minDate, month, utils]);\n}\nexport function useMeridiemMode(date, ampm, onChange) {\n const utils = useUtils();\n const meridiemMode = getMeridiem(date, utils);\n const handleMeridiemChange = React.useCallback(mode => {\n const timeWithMeridiem = date == null ? null : convertToMeridiem(date, mode, Boolean(ampm), utils);\n onChange(timeWithMeridiem, 'partial');\n }, [ampm, date, onChange, utils]);\n return {\n meridiemMode,\n handleMeridiemChange\n };\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { 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', 'aria-label': '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 this.chkAllBox.id = 'checkbox-' + column.uid;\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 if (cell.className) {\n node.classList.add(cell.className);\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 e-rowdragdropcell',\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.isCaptionCollapse) {\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 + gObj.groupSettings.columns.length).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) && !isNullOrUndefined(args) && 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.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n 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 Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes) {\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 };\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 this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes);\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 selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n 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 if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\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: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n 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: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n 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, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[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))) && !this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n 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' && this.selectedRowState[pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0)\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 && chkBox) {\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.isAllSelected = function () {\n var data = this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = data[i][this.primaryKey];\n if (!this.selectedRowState[pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = true;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !this.parent.getDataModule().isRemote() && (this.parent.searchSettings.key.length\n || this.parent.filterSettings.columns.length)) {\n checkToSelectAll = this.isAllSelected();\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 { 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 this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd) {\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 if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr), this);\n }\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 if (_this.parent.getFrozenRightColumnsCount()) {\n addClass(_this.parent.getContent().querySelector('.e-frozen-right-content').querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\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 && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n }\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 Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n 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.isAutoFitColumns = 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 if (this.refreshing) {\n this.trigger('created');\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.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 if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\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 (this.isReact || this.isVue) {\n this.destroyTemplate(['template']);\n }\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 if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n 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 rows = _this.getDataRows();\n var indent = _this.getIndentCount();\n var cellIndex = _this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = _this.getRowObjectFromUID(rows[j].getAttribute('data-uid'));\n if (rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index)) {\n var cell = rowsObj[cells][cellIndex];\n var cellRenderer = new CellRenderer(_this, _this.serviceLocator);\n var td = _this.getCellFromIndex(j, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[rowIdx] });\n }\n }\n });\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n var cell = rowsObj[j][cells][cellIndex];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this, this.serviceLocator);\n var td = parentsUntil(this.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\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 * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @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 * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @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 var col = this.getColumns()[parseInt(element.getAttribute(literals.ariaColIndex), 10)];\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\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' && !((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n parentsUntil(relatedTarget, 'e-input-group'))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization) {\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 * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\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 if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @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 || rows[i].isAggregateRow) && 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.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates) {\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.4.56')\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","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 _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\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n\n function Router() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Router);\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 match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n\n\n invariant(children == null || React.Children.count(children) === 1, \"A may have only one child element\");\n\n // Do this here so we can setState when a changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a .\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change \");\n };\n\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n\n Router.prototype.render = function render() {\n var children = this.props.children;\n\n return children ? React.Children.only(children) : null;\n };\n\n return Router;\n}(React.Component);\n\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Router;","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\n/**\n * This action type will be dispatched when your history\n * receives a location change.\n */\nexport var LOCATION_CHANGE = '@@router/LOCATION_CHANGE';\n\nvar initialState = {\n location: null\n\n /**\n * This reducer will update the state with the most recent location history\n * has transitioned to. This may not be in sync with the router, particularly\n * if you have asynchronously-loaded routes, so reading from and relying on\n * this state is discouraged.\n */\n};export function routerReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n type = _ref.type,\n payload = _ref.payload;\n\n if (type === LOCATION_CHANGE) {\n return _extends({}, state, { location: payload });\n }\n\n return state;\n}","function _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\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Router } from 'react-router';\n\nimport { LOCATION_CHANGE } from './reducer';\n\nvar ConnectedRouter = function (_Component) {\n _inherits(ConnectedRouter, _Component);\n\n function ConnectedRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, ConnectedRouter);\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.handleLocationChange = function (location) {\n _this.store.dispatch({\n type: LOCATION_CHANGE,\n payload: location\n });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n ConnectedRouter.prototype.componentWillMount = function componentWillMount() {\n var _props = this.props,\n propsStore = _props.store,\n history = _props.history;\n\n this.store = propsStore || this.context.store;\n this.handleLocationChange(history.location);\n };\n\n ConnectedRouter.prototype.componentDidMount = function componentDidMount() {\n var history = this.props.history;\n\n this.unsubscribeFromHistory = history.listen(this.handleLocationChange);\n };\n\n ConnectedRouter.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribeFromHistory) this.unsubscribeFromHistory();\n };\n\n ConnectedRouter.prototype.render = function render() {\n return React.createElement(Router, this.props);\n };\n\n return ConnectedRouter;\n}(Component);\n\nConnectedRouter.propTypes = {\n store: PropTypes.object,\n history: PropTypes.object,\n children: PropTypes.node\n};\nConnectedRouter.contextTypes = {\n store: PropTypes.object\n};\n\n\nexport default ConnectedRouter;","\n/**\n * This action type will be dispatched by the history actions below.\n * If you're writing a middleware to watch for navigation events, be sure to\n * look for actions of this type.\n */\nexport var CALL_HISTORY_METHOD = '@@router/CALL_HISTORY_METHOD';\n\nfunction updateLocation(method) {\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return {\n type: CALL_HISTORY_METHOD,\n payload: { method: method, args: args }\n };\n };\n}\n\n/**\n * These actions correspond to the history API.\n * The associated routerMiddleware will capture these events before they get to\n * your reducer and reissue them as the matching function on your history.\n */\nexport var push = updateLocation('push');\nexport var replace = updateLocation('replace');\nexport var go = updateLocation('go');\nexport var goBack = updateLocation('goBack');\nexport var goForward = updateLocation('goForward');\n\nexport var routerActions = { push: push, replace: replace, go: go, goBack: goBack, goForward: goForward };","import { CALL_HISTORY_METHOD } from './actions';\n\n/**\n * This middleware captures CALL_HISTORY_METHOD actions to redirect to the\n * provided history object. This will prevent these actions from reaching your\n * reducer or any middleware that comes after this one.\n */\nexport default function routerMiddleware(history) {\n return function () {\n return function (next) {\n return function (action) {\n if (action.type !== CALL_HISTORY_METHOD) {\n return next(action);\n }\n\n var _action$payload = action.payload,\n method = _action$payload.method,\n args = _action$payload.args;\n\n history[method].apply(history, args);\n };\n };\n };\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 isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\nexport default isBrowser;\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\n\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupContext = /*#__PURE__*/React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ButtonGroupContext.displayName = 'ButtonGroupContext';\n}\n\nexport default ButtonGroupContext;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"color\", \"component\", \"className\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"endIcon\", \"focusVisibleClassName\", \"fullWidth\", \"size\", \"startIcon\", \"type\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { internal_resolveProps as resolveProps } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport buttonClasses, { getButtonUtilityClass } from './buttonClasses';\nimport ButtonGroupContext from '../ButtonGroup/ButtonGroupContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n color,\n disableElevation,\n fullWidth,\n size,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, `${variant}${capitalize(color)}`, `size${capitalize(size)}`, `${variant}Size${capitalize(size)}`, color === 'inherit' && 'colorInherit', disableElevation && 'disableElevation', fullWidth && 'fullWidth'],\n label: ['label'],\n startIcon: ['startIcon', `iconSize${capitalize(size)}`],\n endIcon: ['endIcon', `iconSize${capitalize(size)}`]\n };\n const composedClasses = composeClasses(slots, getButtonUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\n\nconst commonIconStyles = ownerState => _extends({}, ownerState.size === 'small' && {\n '& > *:nth-of-type(1)': {\n fontSize: 18\n }\n}, ownerState.size === 'medium' && {\n '& > *:nth-of-type(1)': {\n fontSize: 20\n }\n}, ownerState.size === 'large' && {\n '& > *:nth-of-type(1)': {\n fontSize: 22\n }\n});\n\nconst ButtonRoot = styled(ButtonBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color)}`], styles[`size${capitalize(ownerState.size)}`], styles[`${ownerState.variant}Size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, ownerState.disableElevation && styles.disableElevation, ownerState.fullWidth && styles.fullWidth];\n }\n})(({\n theme,\n ownerState\n}) => _extends({}, theme.typography.button, {\n minWidth: 64,\n padding: '6px 16px',\n borderRadius: theme.shape.borderRadius,\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color', 'color'], {\n duration: theme.transitions.duration.short\n }),\n '&:hover': _extends({\n textDecoration: 'none',\n backgroundColor: alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n backgroundColor: alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n border: `1px solid ${theme.palette[ownerState.color].main}`,\n backgroundColor: alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }, ownerState.variant === 'contained' && {\n backgroundColor: theme.palette.grey.A100,\n boxShadow: theme.shadows[4],\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n boxShadow: theme.shadows[2],\n backgroundColor: theme.palette.grey[300]\n }\n }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n backgroundColor: theme.palette[ownerState.color].dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.palette[ownerState.color].main\n }\n }),\n '&:active': _extends({}, ownerState.variant === 'contained' && {\n boxShadow: theme.shadows[8]\n }),\n [`&.${buttonClasses.focusVisible}`]: _extends({}, ownerState.variant === 'contained' && {\n boxShadow: theme.shadows[6]\n }),\n [`&.${buttonClasses.disabled}`]: _extends({\n color: theme.palette.action.disabled\n }, ownerState.variant === 'outlined' && {\n border: `1px solid ${theme.palette.action.disabledBackground}`\n }, ownerState.variant === 'outlined' && ownerState.color === 'secondary' && {\n border: `1px solid ${theme.palette.action.disabled}`\n }, ownerState.variant === 'contained' && {\n color: theme.palette.action.disabled,\n boxShadow: theme.shadows[0],\n backgroundColor: theme.palette.action.disabledBackground\n })\n}, ownerState.variant === 'text' && {\n padding: '6px 8px'\n}, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n color: theme.palette[ownerState.color].main\n}, ownerState.variant === 'outlined' && {\n padding: '5px 15px',\n border: `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`\n}, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n color: theme.palette[ownerState.color].main,\n border: `1px solid ${alpha(theme.palette[ownerState.color].main, 0.5)}`\n}, ownerState.variant === 'contained' && {\n color: theme.palette.getContrastText(theme.palette.grey[300]),\n backgroundColor: theme.palette.grey[300],\n boxShadow: theme.shadows[2]\n}, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n color: theme.palette[ownerState.color].contrastText,\n backgroundColor: theme.palette[ownerState.color].main\n}, ownerState.color === 'inherit' && {\n color: 'inherit',\n borderColor: 'currentColor'\n}, ownerState.size === 'small' && ownerState.variant === 'text' && {\n padding: '4px 5px',\n fontSize: theme.typography.pxToRem(13)\n}, ownerState.size === 'large' && ownerState.variant === 'text' && {\n padding: '8px 11px',\n fontSize: theme.typography.pxToRem(15)\n}, ownerState.size === 'small' && ownerState.variant === 'outlined' && {\n padding: '3px 9px',\n fontSize: theme.typography.pxToRem(13)\n}, ownerState.size === 'large' && ownerState.variant === 'outlined' && {\n padding: '7px 21px',\n fontSize: theme.typography.pxToRem(15)\n}, ownerState.size === 'small' && ownerState.variant === 'contained' && {\n padding: '4px 10px',\n fontSize: theme.typography.pxToRem(13)\n}, ownerState.size === 'large' && ownerState.variant === 'contained' && {\n padding: '8px 22px',\n fontSize: theme.typography.pxToRem(15)\n}, ownerState.fullWidth && {\n width: '100%'\n}), ({\n ownerState\n}) => ownerState.disableElevation && {\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none'\n },\n [`&.${buttonClasses.focusVisible}`]: {\n boxShadow: 'none'\n },\n '&:active': {\n boxShadow: 'none'\n },\n [`&.${buttonClasses.disabled}`]: {\n boxShadow: 'none'\n }\n});\nconst ButtonStartIcon = styled('span', {\n name: 'MuiButton',\n slot: 'StartIcon',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.startIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inherit',\n marginRight: 8,\n marginLeft: -4\n}, ownerState.size === 'small' && {\n marginLeft: -2\n}, commonIconStyles(ownerState)));\nconst ButtonEndIcon = styled('span', {\n name: 'MuiButton',\n slot: 'EndIcon',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.endIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inherit',\n marginRight: -4,\n marginLeft: 8\n}, ownerState.size === 'small' && {\n marginRight: -2\n}, commonIconStyles(ownerState)));\nconst Button = /*#__PURE__*/React.forwardRef(function Button(inProps, ref) {\n // props priority: `inProps` > `contextProps` > `themeDefaultProps`\n const contextProps = React.useContext(ButtonGroupContext);\n const resolvedProps = resolveProps(contextProps, inProps);\n const props = useThemeProps({\n props: resolvedProps,\n name: 'MuiButton'\n });\n\n const {\n children,\n color = 'primary',\n component = 'button',\n className,\n disabled = false,\n disableElevation = false,\n disableFocusRipple = false,\n endIcon: endIconProp,\n focusVisibleClassName,\n fullWidth = false,\n size = 'medium',\n startIcon: startIconProp,\n type,\n variant = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n color,\n component,\n disabled,\n disableElevation,\n disableFocusRipple,\n fullWidth,\n size,\n type,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n\n const startIcon = startIconProp && /*#__PURE__*/_jsx(ButtonStartIcon, {\n className: classes.startIcon,\n ownerState: ownerState,\n children: startIconProp\n });\n\n const endIcon = endIconProp && /*#__PURE__*/_jsx(ButtonEndIcon, {\n className: classes.endIcon,\n ownerState: ownerState,\n children: endIconProp\n });\n\n return /*#__PURE__*/_jsxs(ButtonRoot, _extends({\n ownerState: ownerState,\n className: clsx(className, contextProps.className),\n component: component,\n disabled: disabled,\n focusRipple: !disableFocusRipple,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n ref: ref,\n type: type\n }, other, {\n classes: classes,\n children: [startIcon, children, endIcon]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Button.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'primary'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning']), PropTypes.string]),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, no elevation is used.\n * @default false\n */\n disableElevation: PropTypes.bool,\n\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect is disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n * @default false\n */\n disableRipple: PropTypes.bool,\n\n /**\n * Element placed after the children.\n */\n endIcon: PropTypes.node,\n\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * If `true`, the button will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n\n /**\n * The URL to link to when the button is clicked.\n * If defined, an `a` element will be used as the root node.\n */\n href: PropTypes.string,\n\n /**\n * The size of the component.\n * `small` is equivalent to the dense button styling.\n * @default 'medium'\n */\n size: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n\n /**\n * Element placed before the children.\n */\n startIcon: PropTypes.node,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * @ignore\n */\n type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string]),\n\n /**\n * The variant to use.\n * @default 'text'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['contained', 'outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default Button;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getListItemButtonUtilityClass(slot) {\n return generateUtilityClass('MuiListItemButton', slot);\n}\nconst listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);\nexport default listItemButtonClasses;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\"\n}), 'ExpandLess');\n\nexports.default = _default;","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = true;\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!has(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","export { default } from './FormControlLabel';\nexport { default as formControlLabelClasses } from './formControlLabelClasses';\nexport * from './formControlLabelClasses';","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTypographyUtilityClass(slot) {\n return generateUtilityClass('MuiTypography', slot);\n}\nconst typographyClasses = generateUtilityClasses('MuiTypography', ['root', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'inherit', 'button', 'caption', 'overline', 'alignLeft', 'alignRight', 'alignCenter', 'alignJustify', 'noWrap', 'gutterBottom', 'paragraph']);\nexport default typographyClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getPaperUtilityClass(slot) {\n return generateUtilityClass('MuiPaper', slot);\n}\nconst paperClasses = generateUtilityClasses('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);\nexport default paperClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTableUtilityClass(slot) {\n return generateUtilityClass('MuiTable', slot);\n}\nconst tableClasses = generateUtilityClasses('MuiTable', ['root', 'stickyHeader']);\nexport default tableClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTableBodyUtilityClass(slot) {\n return generateUtilityClass('MuiTableBody', slot);\n}\nconst tableBodyClasses = generateUtilityClasses('MuiTableBody', ['root']);\nexport default tableBodyClasses;","import { generateUtilityClasses, generateUtilityClass } from '@mui/base';\nexport function getFormControlUtilityClasses(slot) {\n return generateUtilityClass('MuiFormControl', slot);\n}\nconst formControlClasses = generateUtilityClasses('MuiFormControl', ['root', 'marginNone', 'marginNormal', 'marginDense', 'fullWidth', 'disabled']);\nexport default formControlClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getFormGroupUtilityClass(slot) {\n return generateUtilityClass('MuiFormGroup', slot);\n}\nconst formGroupClasses = generateUtilityClasses('MuiFormGroup', ['root', 'row']);\nexport default formGroupClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getInputLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getPopoverUtilityClass(slot) {\n return generateUtilityClass('MuiPopover', slot);\n}\nconst popoverClasses = generateUtilityClasses('MuiPopover', ['root', 'paper']);\nexport default popoverClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTextFieldUtilityClass(slot) {\n return generateUtilityClass('MuiTextField', slot);\n}\nconst textFieldClasses = generateUtilityClasses('MuiTextField', ['root']);\nexport default textFieldClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getToolbarUtilityClass(slot) {\n return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTableHeadUtilityClass(slot) {\n return generateUtilityClass('MuiTableHead', slot);\n}\nconst tableHeadClasses = generateUtilityClasses('MuiTableHead', ['root']);\nexport default tableHeadClasses;","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 baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.breakpointKeys = void 0;\nexports.default = createBreakpoints;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nconst breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl']; // Keep in mind that @media is inclusive by the CSS specification.\n\nexports.breakpointKeys = breakpointKeys;\n\nfunction createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n\n },\n unit = 'px',\n step = 5\n } = breakpoints,\n other = (0, _objectWithoutPropertiesLoose2.default)(breakpoints, _excluded);\n const keys = Object.keys(values);\n\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n\n return up(key);\n }\n\n return (0, _extends2.default)({\n keys,\n values,\n up,\n down,\n between,\n only,\n unit\n }, other);\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}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckCircle');\n\nexports.default = _default;","'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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 13H5v-2h14v2z\"\n}), 'Remove');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'Visibility');\n\nexports.default = _default;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z\"\n}), 'DateRange');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M7.41 15.41 12 10.83l4.59 4.58L18 14l-6-6-6 6z\"\n}), 'KeyboardArrowUp');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"\n}), 'KeyboardArrowDown');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\"\n}), 'Link');\n\nexports.default = _default;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nconst TreeViewContext = /*#__PURE__*/React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n TreeViewContext.displayName = 'TreeViewContext';\n}\n\nexport default TreeViewContext;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\n\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import * as React from 'react';\nimport { useLocalizationContext } from '../useUtils';\nexport function useValidation(props, validate, isSameError) {\n const {\n value,\n onError\n } = props;\n const adapter = useLocalizationContext();\n const previousValidationErrorRef = React.useRef(null);\n const validationError = validate({\n adapter,\n value,\n props\n });\n React.useEffect(() => {\n if (onError && !isSameError(validationError, previousValidationErrorRef.current)) {\n onError(validationError, value);\n }\n\n previousValidationErrorRef.current = validationError;\n }, [isSameError, onError, previousValidationErrorRef, validationError, value]);\n return validationError;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { onSpaceOrEnter } from '../utils/utils';\nimport { useLocaleText, useUtils } from '../hooks/useUtils';\nimport { getDisplayDate } from '../utils/text-field-helper';\n// TODO: why is this called \"Pure*\" when it's not memoized? Does \"Pure\" mean \"readonly\"?\nexport const PureDateInput = /*#__PURE__*/React.forwardRef(function PureDateInput(props, ref) {\n const {\n disabled,\n getOpenDialogAriaText: getOpenDialogAriaTextProp,\n inputFormat,\n InputProps,\n inputRef,\n label,\n openPicker: onOpen,\n rawValue,\n renderInput,\n TextFieldProps = {},\n validationError\n } = props;\n const localeText = useLocaleText(); // The prop can not be deprecated\n // Default is \"Choose date, ...\", but time pickers override it with \"Choose time, ...\"\n\n const getOpenDialogAriaText = getOpenDialogAriaTextProp != null ? getOpenDialogAriaTextProp : localeText.openDatePickerDialogue;\n const utils = useUtils();\n const PureDateInputProps = React.useMemo(() => _extends({}, InputProps, {\n readOnly: true\n }), [InputProps]);\n const inputValue = getDisplayDate(utils, rawValue, inputFormat);\n return renderInput(_extends({\n label,\n disabled,\n ref,\n inputRef,\n error: validationError,\n InputProps: PureDateInputProps,\n inputProps: _extends({\n disabled,\n readOnly: true,\n 'aria-readonly': true,\n 'aria-label': getOpenDialogAriaText(rawValue, utils),\n value: inputValue\n }, !props.readOnly && {\n onClick: onOpen\n }, {\n onKeyDown: onSpaceOrEnter(onOpen)\n })\n }, TextFieldProps));\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.allowPaging && gObj.pagerModule &&\n gObj.pagerModule.pagerObj.isAllPage && !this.dataManager.dataSource.offline ? null :\n 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","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 if (contentrows[0].cells[colIdx].isTemplate) {\n needFullRefresh = true;\n }\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","import { createIsAfterIgnoreDatePart } from '../../utils/time-utils';\nimport { useValidation } from './useValidation';\nexport const validateTime = ({\n adapter,\n value,\n props\n}) => {\n const {\n minTime,\n maxTime,\n minutesStep,\n shouldDisableTime,\n disableIgnoringDatePartForTimeValidation\n } = props;\n const date = adapter.utils.date(value);\n const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, adapter.utils);\n\n if (value === null) {\n return null;\n }\n\n switch (true) {\n case !adapter.utils.isValid(value):\n return 'invalidDate';\n\n case Boolean(minTime && isAfter(minTime, date)):\n return 'minTime';\n\n case Boolean(maxTime && isAfter(date, maxTime)):\n return 'maxTime';\n\n case Boolean(shouldDisableTime && shouldDisableTime(adapter.utils.getHours(date), 'hours')):\n return 'shouldDisableTime-hours';\n\n case Boolean(shouldDisableTime && shouldDisableTime(adapter.utils.getMinutes(date), 'minutes')):\n return 'shouldDisableTime-minutes';\n\n case Boolean(shouldDisableTime && shouldDisableTime(adapter.utils.getSeconds(date), 'seconds')):\n return 'shouldDisableTime-seconds';\n\n case Boolean(minutesStep && adapter.utils.getMinutes(date) % minutesStep !== 0):\n return 'minutesStep';\n\n default:\n return null;\n }\n};\n\nconst isSameTimeError = (a, b) => a === b;\n\nexport const useTimeValidation = props => useValidation(props, validateTime, isSameTimeError);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"selected\", \"value\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/material';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst classes = generateUtilityClasses('PrivatePickersToolbarText', ['selected']);\nconst PickersToolbarTextRoot = styled(Typography)(({\n theme\n}) => ({\n transition: theme.transitions.create('color'),\n color: theme.palette.text.secondary,\n [`&.${classes.selected}`]: {\n color: theme.palette.text.primary\n }\n}));\nexport const PickersToolbarText = /*#__PURE__*/React.forwardRef(function PickersToolbarText(props, ref) {\n const {\n className,\n selected,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/_jsx(PickersToolbarTextRoot, _extends({\n ref: ref,\n className: clsx(className, selected && classes.selected),\n component: \"span\"\n }, other, {\n children: value\n }));\n});","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-len */\nimport { isNullOrUndefined, closest, extend, EventHandler } from '@syncfusion/ej2-base';\nimport { createElement, prepend, append, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { generate, getDateFromRecurrenceDateString } from '../../recurrence-editor/date-generator';\nimport * as util from '../base/util';\nimport * as cls from '../base/css-constant';\nimport * as event from '../base/constant';\n/**\n * EventBase for appointment rendering\n */\nvar EventBase = /** @class */ (function () {\n /**\n * Constructor for EventBase\n *\n * @param {Schedule} parent Accepts the schedule instance\n */\n function EventBase(parent) {\n this.slots = [];\n this.isDoubleTapped = false;\n this.parent = parent;\n }\n EventBase.prototype.processData = function (events, timeZonePropChanged, oldTimezone) {\n var _this = this;\n var start = this.parent.activeView.startDate();\n var end = this.parent.activeView.endDate();\n var fields = this.parent.eventFields;\n var processed = [];\n var temp = 1;\n var generateID = false;\n var resourceCollection = this.parent.resourceBase ? this.parent.resourceBase.resourceCollection : [];\n if (events.length > 0 && isNullOrUndefined(events[0][fields.id])) {\n generateID = true;\n }\n var _loop_1 = function (event_1) {\n if (generateID) {\n event_1[fields.id] = temp++;\n }\n event_1 = this_1.updateEventDateTime(event_1);\n if (timeZonePropChanged) {\n this_1.processTimezoneChange(event_1, oldTimezone);\n }\n else if (!this_1.parent.isPrinting && !this_1.parent.uiStateValues.isResize) {\n event_1 = this_1.processTimezone(event_1);\n }\n for (var level = 0; level < resourceCollection.length; level++) {\n if (event_1[resourceCollection[level].field] === null || event_1[resourceCollection[level].field] === 0) {\n event_1[resourceCollection[level].field] = undefined;\n }\n }\n if (!isNullOrUndefined(event_1[fields.recurrenceRule]) && event_1[fields.recurrenceRule] === '') {\n event_1[fields.recurrenceRule] = null;\n }\n if (!isNullOrUndefined(event_1[fields.recurrenceRule]) && isNullOrUndefined(event_1[fields.recurrenceID]) &&\n !(this_1.parent.crudModule && this_1.parent.crudModule.crudObj.isCrudAction)) {\n processed = processed.concat(this_1.generateOccurrence(event_1, null, oldTimezone, true));\n }\n else {\n if (this_1.parent.crudModule && this_1.parent.crudModule.crudObj.isCrudAction) {\n if (!isNullOrUndefined(event_1[fields.recurrenceRule]) && isNullOrUndefined(event_1[fields.recurrenceID])) {\n var recurrenceEvent = this_1.generateOccurrence(event_1, null, oldTimezone, true);\n var _loop_2 = function (occurrence) {\n var app = this_1.parent.eventsProcessed.filter(function (data) {\n return data[fields.startTime].getTime() - occurrence[fields.startTime].getTime() === 0 &&\n data[fields.id] === occurrence[fields.id];\n });\n occurrence.Guid = (app.length > 0) ? app[0].Guid : this_1.generateGuid();\n processed.push(occurrence);\n };\n for (var _i = 0, recurrenceEvent_1 = recurrenceEvent; _i < recurrenceEvent_1.length; _i++) {\n var occurrence = recurrenceEvent_1[_i];\n _loop_2(occurrence);\n }\n }\n else {\n var app = this_1.parent.eventsProcessed.filter(function (data) {\n return data[_this.parent.eventFields.id] === event_1[_this.parent.eventFields.id];\n });\n event_1.Guid = (app.length > 0) ? app[0].Guid : this_1.generateGuid();\n processed.push(event_1);\n }\n }\n else {\n event_1.Guid = this_1.generateGuid();\n processed.push(event_1);\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {\n var event_1 = events_1[_i];\n _loop_1(event_1);\n }\n this.parent.eventsProcessed = [];\n var eventData = processed.filter(function (data) {\n return !data[_this.parent.eventFields.isBlock];\n });\n this.parent.eventsProcessed = this.filterEvents(start, end, eventData);\n var blockData = processed.filter(function (data) {\n return data[_this.parent.eventFields.isBlock];\n });\n for (var _a = 0, blockData_1 = blockData; _a < blockData_1.length; _a++) {\n var eventObj = blockData_1[_a];\n if (eventObj[fields.isAllDay]) {\n var isDifferentDate = util.resetTime(new Date(eventObj[fields.startTime].getTime())) <\n util.resetTime(new Date(eventObj[fields.endTime].getTime()));\n if (!isDifferentDate) {\n eventObj[fields.startTime] = util.resetTime(eventObj[fields.startTime]);\n eventObj[fields.endTime] = util.addDays(util.resetTime(eventObj[fields.endTime]), 1);\n }\n }\n }\n this.parent.blockProcessed = blockData;\n return eventData;\n };\n EventBase.prototype.updateEventDateTime = function (eventData) {\n if (typeof eventData[this.parent.eventFields.startTime] === 'string') {\n eventData[this.parent.eventFields.startTime] = util.getDateFromString(eventData[this.parent.eventFields.startTime]);\n }\n if (typeof eventData[this.parent.eventFields.endTime] === 'string') {\n eventData[this.parent.eventFields.endTime] = util.getDateFromString(eventData[this.parent.eventFields.endTime]);\n }\n return eventData;\n };\n EventBase.prototype.getProcessedEvents = function (eventCollection) {\n if (eventCollection === void 0) { eventCollection = this.parent.eventsData; }\n var processed = [];\n for (var _i = 0, eventCollection_1 = eventCollection; _i < eventCollection_1.length; _i++) {\n var event_2 = eventCollection_1[_i];\n if (!isNullOrUndefined(event_2[this.parent.eventFields.recurrenceRule]) &&\n isNullOrUndefined(event_2[this.parent.eventFields.recurrenceID])) {\n processed = processed.concat(this.generateOccurrence(event_2));\n }\n else {\n processed.push(event_2);\n }\n }\n return processed;\n };\n EventBase.prototype.timezonePropertyChange = function (oldTimezone) {\n var data = this.parent.eventsData.concat(this.parent.blockData);\n var processed = this.processData(data, true, oldTimezone);\n this.parent.notify(event.dataReady, { processedData: processed });\n };\n EventBase.prototype.timezoneConvert = function (eventData) {\n var fields = this.parent.eventFields;\n eventData[fields.startTimezone] = eventData[fields.startTimezone] || eventData[fields.endTimezone];\n eventData[fields.endTimezone] = eventData[fields.endTimezone] || eventData[fields.startTimezone];\n if (this.parent.timezone) {\n var startTz = eventData[fields.startTimezone];\n var endTz = eventData[fields.endTimezone];\n eventData[fields.startTime] = this.parent.tzModule.convert(eventData[fields.startTime], this.parent.timezone, startTz);\n eventData[fields.endTime] = this.parent.tzModule.convert(eventData[fields.endTime], this.parent.timezone, endTz);\n }\n };\n EventBase.prototype.processTimezoneChange = function (event, oldTimezone) {\n var fields = this.parent.eventFields;\n if (event[fields.isAllDay]) {\n return;\n }\n if (oldTimezone && this.parent.timezone) {\n event[fields.startTime] = this.parent.tzModule.convert(event[fields.startTime], oldTimezone, this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.convert(event[fields.endTime], oldTimezone, this.parent.timezone);\n }\n else if (!oldTimezone && this.parent.timezone) {\n event[fields.startTime] = this.parent.tzModule.add(event[fields.startTime], this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.add(event[fields.endTime], this.parent.timezone);\n }\n else if (oldTimezone && !this.parent.timezone) {\n event[fields.startTime] = this.parent.tzModule.remove(event[fields.startTime], oldTimezone);\n event[fields.endTime] = this.parent.tzModule.remove(event[fields.endTime], oldTimezone);\n }\n };\n EventBase.prototype.processTimezone = function (event, isReverse) {\n if (isReverse === void 0) { isReverse = false; }\n var fields = this.parent.eventFields;\n if (event[fields.startTimezone] || event[fields.endTimezone]) {\n var startTimezone = event[fields.startTimezone] || event[fields.endTimezone];\n var endTimezone = event[fields.endTimezone] || event[fields.startTimezone];\n if (isReverse) {\n if (this.parent.timezone) {\n event[fields.startTime] = this.parent.tzModule.convert(event[fields.startTime], startTimezone, this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.convert(event[fields.endTime], endTimezone, this.parent.timezone);\n event[fields.startTime] = this.parent.tzModule.remove(event[fields.startTime], this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.remove(event[fields.endTime], this.parent.timezone);\n }\n else {\n event[fields.startTime] = this.parent.tzModule.remove(event[fields.startTime], startTimezone);\n event[fields.endTime] = this.parent.tzModule.remove(event[fields.endTime], endTimezone);\n }\n }\n else {\n event[fields.startTime] = this.parent.tzModule.add(event[fields.startTime], startTimezone);\n event[fields.endTime] = this.parent.tzModule.add(event[fields.endTime], endTimezone);\n if (this.parent.timezone) {\n event[fields.startTime] = this.parent.tzModule.convert(event[fields.startTime], startTimezone, this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.convert(event[fields.endTime], endTimezone, this.parent.timezone);\n }\n }\n }\n else if (this.parent.timezone) {\n if (isReverse) {\n event[fields.startTime] = this.parent.tzModule.remove(event[fields.startTime], this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.remove(event[fields.endTime], this.parent.timezone);\n }\n else {\n event[fields.startTime] = this.parent.tzModule.add(event[fields.startTime], this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.add(event[fields.endTime], this.parent.timezone);\n }\n }\n return event;\n };\n EventBase.prototype.filterBlockEvents = function (eventObj) {\n var fields = this.parent.eventFields;\n var eStart = eventObj[fields.startTime];\n var eEnd = eventObj[fields.endTime];\n var resourceData;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var data = this.getGroupIndexFromEvent(eventObj);\n resourceData = this.parent.resourceBase.lastResourceLevel[data];\n }\n var blockEvents = extend([], this.parent.blockProcessed, null, true);\n for (var _i = 0, blockEvents_1 = blockEvents; _i < blockEvents_1.length; _i++) {\n var eventObj_1 = blockEvents_1[_i];\n if (eventObj_1[fields.isAllDay]) {\n var isDifferentTime = eventObj_1[fields.endTime].getTime() >\n util.resetTime(new Date(eventObj_1[fields.endTime].getTime())).getTime();\n if (isDifferentTime) {\n eventObj_1[fields.startTime] = util.resetTime(eventObj_1[fields.startTime]);\n eventObj_1[fields.endTime] = util.addDays(util.resetTime(eventObj_1[fields.endTime]), 1);\n }\n }\n }\n return this.filterEvents(eStart, eEnd, blockEvents, resourceData);\n };\n EventBase.prototype.filterEvents = function (startDate, endDate, appointments, resourceTdData) {\n if (appointments === void 0) { appointments = this.parent.eventsProcessed; }\n var fieldMapping = this.parent.eventFields;\n var predicate = new Predicate(fieldMapping.startTime, 'greaterthanorequal', startDate).\n and(new Predicate(fieldMapping.endTime, 'greaterthanorequal', startDate)).\n and(new Predicate(fieldMapping.startTime, 'lessthan', endDate)).\n or(new Predicate(fieldMapping.startTime, 'lessthanorequal', startDate).\n and(new Predicate(fieldMapping.endTime, 'greaterthan', startDate)));\n var filter = new DataManager({ json: appointments }).executeLocal(new Query().where(predicate));\n if (resourceTdData) {\n filter = this.filterEventsByResource(resourceTdData, filter);\n }\n return this.sortByTime(filter);\n };\n EventBase.prototype.filterEventsByRange = function (eventCollection, startDate, endDate) {\n var _this = this;\n var filteredEvents = [];\n if (startDate && endDate) {\n filteredEvents = this.filterEvents(startDate, endDate, eventCollection);\n }\n else if (startDate && !endDate) {\n filteredEvents = eventCollection.filter(function (e) { return e[_this.parent.eventFields.startTime] >= startDate; });\n }\n else if (!startDate && endDate) {\n filteredEvents = eventCollection.filter(function (e) { return e[_this.parent.eventFields.endTime] <= endDate; });\n }\n else {\n filteredEvents = eventCollection;\n }\n return this.sortByTime(filteredEvents);\n };\n EventBase.prototype.filterEventsByResource = function (resourceTdData, appointments) {\n if (appointments === void 0) { appointments = this.parent.eventsProcessed; }\n var predicate = {};\n var resourceCollection = this.parent.resourceBase.resourceCollection;\n for (var level = 0; level < resourceCollection.length; level++) {\n predicate[resourceCollection[level].field] = resourceTdData.groupOrder[level];\n }\n var keys = Object.keys(predicate);\n var filteredCollection = appointments.filter(function (eventObj) { return keys.every(function (key) {\n if (eventObj[key] instanceof Array) {\n return eventObj[key].indexOf(predicate[key]) > -1;\n }\n else {\n return eventObj[key] === predicate[key];\n }\n }); });\n return filteredCollection;\n };\n EventBase.prototype.sortByTime = function (appointmentsCollection) {\n if (this.parent.eventSettings.sortComparer) {\n appointmentsCollection = this.parent.eventSettings.sortComparer.call(this.parent, appointmentsCollection);\n }\n else {\n var fieldMappings_1 = this.parent.eventFields;\n appointmentsCollection.sort(function (a, b) {\n var d1 = a[fieldMappings_1.startTime];\n var d2 = b[fieldMappings_1.startTime];\n return d1.getTime() - d2.getTime();\n });\n }\n return appointmentsCollection;\n };\n EventBase.prototype.sortByDateTime = function (appointments) {\n if (this.parent.eventSettings.sortComparer) {\n appointments = this.parent.eventSettings.sortComparer.call(this.parent, appointments);\n }\n else {\n var fieldMapping_1 = this.parent.eventFields;\n appointments.sort(function (object1, object2) {\n var d3 = object1[fieldMapping_1.startTime];\n var d4 = object2[fieldMapping_1.startTime];\n var d5 = object1[fieldMapping_1.endTime];\n var d6 = object2[fieldMapping_1.endTime];\n var d1 = d5.getTime() - d3.getTime();\n var d2 = d6.getTime() - d4.getTime();\n return (d3.getTime() - d4.getTime() || d2 - d1);\n });\n }\n return appointments;\n };\n EventBase.prototype.getSmallestMissingNumber = function (array) {\n var large = Math.max.apply(Math, array);\n for (var i = 0; i < large; i++) {\n if (array.indexOf(i) === -1) {\n return i;\n }\n }\n return large + 1;\n };\n EventBase.prototype.splitEventByDay = function (event) {\n var eventFields = this.parent.eventFields;\n var data = [];\n var eventStartTime = event[eventFields.startTime];\n var eventEndTime = event[eventFields.endTime];\n var isDifferentDate = util.resetTime(new Date(eventStartTime.getTime())) <\n util.resetTime(new Date(eventEndTime.getTime()));\n if (isDifferentDate) {\n var start = new Date(eventStartTime.getTime());\n var end = util.addDays(util.resetTime(new Date(eventStartTime.getTime())), 1);\n var endDate = (eventEndTime.getHours() === 0 && eventEndTime.getMinutes() === 0) ?\n eventEndTime : util.addDays(eventEndTime, 1);\n var index = 1;\n var eventLength = util.getDaysCount(eventStartTime.getTime(), endDate.getTime());\n while (end <= eventEndTime && start.getTime() !== end.getTime()) {\n var app = extend({}, event);\n app[eventFields.startTime] = start;\n app[eventFields.endTime] = end;\n app.data = { index: index, count: eventLength };\n app.Guid = this.generateGuid();\n app.isSpanned = true;\n data.push(app);\n start = end;\n if ((util.resetTime(new Date(start.getTime())).getTime() === util.resetTime(new Date(eventEndTime.getTime())).getTime())\n && !(end.getTime() === eventEndTime.getTime())) {\n end = new Date(start.getTime());\n end = new Date(end.setHours(eventEndTime.getHours(), eventEndTime.getMinutes(), eventEndTime.getSeconds()));\n }\n else {\n end = util.addDays(util.resetTime(new Date(start.getTime())), 1);\n }\n index++;\n }\n }\n else {\n data.push(event);\n }\n return data;\n };\n EventBase.prototype.splitEvent = function (event, dateRender) {\n var fields = this.parent.eventFields;\n var start = util.resetTime(event[fields.startTime]).getTime();\n var end = util.resetTime(event[fields.endTime]).getTime();\n if (util.getDateInMs(event[fields.endTime]) <= 0) {\n var temp = util.addDays(util.resetTime(event[fields.endTime]), -1).getTime();\n end = start > temp ? start : temp;\n }\n var orgStart = start;\n var orgEnd = end;\n var ranges = [];\n if (start !== end) {\n if (start < dateRender[0].getTime()) {\n start = dateRender[0].getTime();\n }\n if (end > dateRender[dateRender.length - 1].getTime()) {\n end = dateRender[dateRender.length - 1].getTime();\n }\n var cStart = start;\n for (var level = 0; level < this.slots.length; level++) {\n var slot = this.slots[level];\n if (this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'TimelineWorkWeek'\n || this.parent.activeViewOptions.group.byDate || this.parent.activeViewOptions.showWeekend) {\n var slotDates = [];\n for (var _i = 0, slot_1 = slot; _i < slot_1.length; _i++) {\n var s = slot_1[_i];\n slotDates.push(new Date(s));\n }\n var renderedDates = this.getRenderedDates(slotDates);\n if (!isNullOrUndefined(renderedDates) && renderedDates.length > 0) {\n slot = [];\n for (var _a = 0, renderedDates_1 = renderedDates; _a < renderedDates_1.length; _a++) {\n var date = renderedDates_1[_a];\n slot.push(date.getTime());\n }\n }\n }\n if (typeof (slot) === 'number') {\n var temp = slot;\n slot = [];\n slot.push(temp);\n }\n var firstSlot = slot[0];\n cStart = (cStart <= firstSlot && end >= firstSlot) ? firstSlot : cStart;\n if (cStart > end || firstSlot > end) {\n break;\n }\n if (!this.parent.activeViewOptions.group.byDate && this.parent.activeViewOptions.showWeekend &&\n this.parent.currentView !== 'WorkWeek' && this.parent.currentView !== 'TimelineWorkWeek') {\n var startIndex = slot.indexOf(cStart);\n if (startIndex !== -1) {\n var endIndex = slot.indexOf(end);\n var hasBreak = endIndex !== -1;\n endIndex = hasBreak ? endIndex : slot.length - 1;\n var count = ((endIndex - startIndex) + 1);\n var isLeft = (slot[startIndex] !== orgStart);\n var isRight = (slot[endIndex] !== orgEnd);\n ranges.push(this.cloneEventObject(event, slot[startIndex], slot[endIndex], count, isLeft, isRight));\n if (hasBreak) {\n break;\n }\n }\n }\n else {\n if (this.dateInRange(cStart, slot[0], slot[slot.length - 1])) {\n var availSlot = [];\n for (var i = 0; i < slot.length; i++) {\n if (this.dateInRange(slot[i], orgStart, orgEnd)) {\n availSlot.push(slot[i]);\n }\n }\n if (availSlot.length > 0) {\n if (!this.parent.activeViewOptions.group.byDate) {\n var isLeft = (availSlot[0] !== orgStart);\n var isRight = (availSlot[availSlot.length - 1] !== orgEnd);\n ranges.push(this.cloneEventObject(event, availSlot[0], availSlot[availSlot.length - 1], availSlot.length, isLeft, isRight));\n }\n else {\n for (var _b = 0, availSlot_1 = availSlot; _b < availSlot_1.length; _b++) {\n var slot_2 = availSlot_1[_b];\n ranges.push(this.cloneEventObject(event, slot_2, slot_2, 1, (slot_2 !== orgStart), (slot_2 !== orgEnd)));\n }\n }\n }\n }\n }\n }\n }\n else {\n ranges.push(this.cloneEventObject(event, start, end, 1, false, false));\n }\n return ranges;\n };\n EventBase.prototype.cloneEventObject = function (event, start, end, count, isLeft, isRight) {\n var fields = this.parent.eventFields;\n var e = extend({}, event, null, true);\n var data = { count: count, isLeft: isLeft, isRight: isRight };\n data[fields.startTime] = event[fields.startTime];\n data[fields.endTime] = event[fields.endTime];\n e.data = data;\n e[fields.startTime] = new Date(start);\n e[fields.endTime] = new Date(end);\n return e;\n };\n EventBase.prototype.dateInRange = function (date, start, end) {\n return start <= date && date <= end;\n };\n EventBase.prototype.getSelectedEventElements = function (target) {\n this.removeSelectedAppointmentClass();\n if (this.parent.selectedElements.length <= 0) {\n this.parent.selectedElements.push(target);\n }\n else {\n var isAlreadySelected = this.parent.selectedElements.filter(function (element) {\n return element.getAttribute('data-guid') === target.getAttribute('data-guid');\n });\n if (isAlreadySelected.length <= 0) {\n var elementSelector = 'div[data-guid=\"' + target.getAttribute('data-guid') + '\"]';\n var focusElements = [].slice.call(this.parent.element.querySelectorAll(elementSelector));\n for (var _i = 0, focusElements_1 = focusElements; _i < focusElements_1.length; _i++) {\n var element = focusElements_1[_i];\n this.parent.selectedElements.push(element);\n }\n }\n else {\n var selectedElements = this.parent.selectedElements.filter(function (element) {\n return element.getAttribute('data-guid') !== target.getAttribute('data-guid');\n });\n this.parent.selectedElements = selectedElements;\n }\n }\n if (target && this.parent.selectedElements.length > 0) {\n this.addSelectedAppointments(this.parent.selectedElements);\n }\n return this.parent.selectedElements;\n };\n EventBase.prototype.getSelectedEvents = function () {\n var _this = this;\n var eventSelect = [];\n var elementSelect = [];\n var selectAppointments = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_BORDER));\n selectAppointments.filter(function (element) {\n var isAlreadyAdded = eventSelect.filter(function (event) {\n return event.Guid === element.getAttribute('data-guid');\n });\n if (isAlreadyAdded.length === 0) {\n eventSelect.push(_this.getEventByGuid(element.getAttribute('data-guid')));\n }\n elementSelect.push(element);\n });\n return {\n event: eventSelect.length > 1 ? eventSelect : eventSelect[0],\n element: elementSelect.length > 1 ? elementSelect : elementSelect[0]\n };\n };\n EventBase.prototype.removeSelectedAppointmentClass = function () {\n var selectedAppointments = this.getSelectedAppointments();\n for (var _i = 0, selectedAppointments_1 = selectedAppointments; _i < selectedAppointments_1.length; _i++) {\n var appointment = selectedAppointments_1[_i];\n appointment.setAttribute('aria-selected', 'false');\n }\n removeClass(selectedAppointments, cls.APPOINTMENT_BORDER);\n if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n removeClass(selectedAppointments, cls.AGENDA_SELECTED_CELL);\n }\n };\n EventBase.prototype.addSelectedAppointments = function (cells) {\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n cell.setAttribute('aria-selected', 'true');\n }\n if (this.parent.currentView !== 'MonthAgenda') {\n this.parent.removeSelectedClass();\n }\n addClass(cells, cls.APPOINTMENT_BORDER);\n };\n EventBase.prototype.getSelectedAppointments = function () {\n return [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_BORDER + ',.' + cls.APPOINTMENT_CLASS + ':focus'));\n };\n EventBase.prototype.focusElement = function (isFocused) {\n if (this.parent.eventWindow.dialogObject && this.parent.eventWindow.dialogObject.visible) {\n return;\n }\n var activeEle = document.activeElement;\n var selectedCell = this.parent.getSelectedElements();\n if (selectedCell.length > 0 && ((activeEle && (this.parent.element.contains(activeEle) ||\n selectedCell.indexOf(activeEle) !== -1)) || isFocused)) {\n if (this.parent.keyboardInteractionModule) {\n var target = ((!isNullOrUndefined(this.parent.activeCellsData) &&\n this.parent.activeCellsData.element) || selectedCell[selectedCell.length - 1]);\n this.parent.keyboardInteractionModule.selectCells(target instanceof Array, target);\n }\n return;\n }\n var selectedAppointments = this.getSelectedAppointments();\n if (selectedAppointments.length > 0) {\n selectedAppointments[selectedAppointments.length - 1].focus();\n return;\n }\n };\n EventBase.prototype.selectWorkCellByTime = function (eventsData) {\n var target;\n if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n return target;\n }\n if (eventsData.length > 0) {\n var selectedObject = eventsData[eventsData.length - 1];\n var eventStartTime = selectedObject[this.parent.eventFields.startTime];\n var nearestTime = new Date(+eventStartTime).setMinutes(0, 0, 0);\n var isAllDay = this.isAllDayAppointment(selectedObject);\n if (this.parent.currentView === 'Month' || isAllDay) {\n nearestTime = new Date(+eventStartTime).setHours(0, 0, 0, 0);\n }\n var targetArea = void 0;\n if (isAllDay && ['Day', 'Week', 'WorkWeek'].indexOf(this.parent.currentView) !== -1) {\n targetArea = this.parent.getAllDayRow();\n }\n else {\n targetArea = this.parent.getContentTable();\n }\n var queryString = '[data-date=\"' + new Date(nearestTime).getTime() + '\"]';\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n queryString += '[data-group-index=\"' + this.getGroupIndexFromEvent(selectedObject) + '\"]';\n }\n target = targetArea.querySelector(queryString);\n if (target) {\n this.parent.activeCellsData = this.parent.getCellDetails(target);\n if (this.parent.keyboardInteractionModule) {\n this.parent.keyboardInteractionModule.selectCells(false, target);\n }\n return target;\n }\n }\n return target;\n };\n EventBase.prototype.getGroupIndexFromEvent = function (eventData) {\n var levelIndex;\n var resource;\n var levelName;\n var idField;\n for (var i = this.parent.resourceBase.resourceCollection.length - 1; i >= 0; i--) {\n var resourceData = eventData[this.parent.resourceBase.resourceCollection[i].field];\n if (!isNullOrUndefined(resourceData)) {\n resource = this.parent.resourceBase.resourceCollection[i];\n levelIndex = i;\n levelName = resource.name;\n idField = resource.field;\n break;\n }\n }\n if (isNullOrUndefined(levelName) && isNullOrUndefined(levelIndex)) {\n levelName = this.parent.resourceCollection.slice(-1)[0].name;\n levelIndex = this.parent.resourceCollection.length - 1;\n idField = this.parent.resourceCollection.slice(-1)[0].field;\n resource = this.parent.resourceCollection.filter(function (e, index) {\n if (e.name === levelName) {\n levelIndex = index;\n return e;\n }\n return null;\n })[0];\n }\n var id = ((eventData[idField] instanceof Array) ?\n eventData[idField][0] : eventData[idField]);\n if (levelIndex > 0) {\n var parentField = this.parent.resourceCollection[levelIndex - 1].field;\n return this.parent.resourceBase.getIndexFromResourceId(id, levelName, resource, eventData, parentField);\n }\n else {\n return this.parent.resourceBase.getIndexFromResourceId(id, levelName, resource);\n }\n };\n EventBase.prototype.isAllDayAppointment = function (event) {\n var fieldMapping = this.parent.eventFields;\n var isAllDay = event[fieldMapping.isAllDay];\n var isFullDay = ((event[fieldMapping.endTime].getTime() - event[fieldMapping.startTime].getTime())\n / util.MS_PER_DAY) >= 1;\n return (isAllDay || (this.parent.eventSettings.spannedEventPlacement !== 'TimeSlot' && isFullDay)) ? true : false;\n };\n EventBase.prototype.addEventListener = function () {\n this.parent.on(event.documentClick, this.appointmentBorderRemove, this);\n };\n EventBase.prototype.removeEventListener = function () {\n this.parent.off(event.documentClick, this.appointmentBorderRemove);\n };\n EventBase.prototype.appointmentBorderRemove = function (event) {\n var element = event.event.target;\n if (closest(element, '.' + cls.APPOINTMENT_CLASS)) {\n if (this.parent.currentView !== 'MonthAgenda') {\n this.parent.removeSelectedClass();\n }\n }\n else if (!closest(element, '.' + cls.POPUP_OPEN)) {\n this.removeSelectedAppointmentClass();\n }\n };\n EventBase.prototype.wireAppointmentEvents = function (element, event, isPreventCrud) {\n if (isPreventCrud === void 0) { isPreventCrud = false; }\n var isReadOnly = (!isNullOrUndefined(event)) ? event[this.parent.eventFields.isReadonly] : false;\n EventHandler.add(element, 'click', this.eventClick, this);\n if (!this.parent.isAdaptive && !this.parent.activeViewOptions.readonly && !isReadOnly) {\n EventHandler.add(element, 'touchstart', this.eventTouchClick, this);\n EventHandler.add(element, 'dblclick', this.eventDoubleClick, this);\n }\n if (!this.parent.activeViewOptions.readonly && !isReadOnly && !isPreventCrud) {\n if (this.parent.resizeModule) {\n this.parent.resizeModule.wireResizeEvent(element);\n }\n if (this.parent.dragAndDropModule) {\n this.parent.dragAndDropModule.wireDragEvent(element);\n }\n }\n };\n EventBase.prototype.eventTouchClick = function (e) {\n var _this = this;\n setTimeout(function () { return _this.isDoubleTapped = false; }, 250);\n e.preventDefault();\n if (this.isDoubleTapped) {\n this.eventDoubleClick(e);\n }\n else if (!this.isDoubleTapped) {\n this.isDoubleTapped = true;\n this.eventClick(e);\n }\n };\n EventBase.prototype.renderResizeHandler = function (element, spanEvent, isReadOnly) {\n if (!this.parent.resizeModule || !this.parent.allowResizing || this.parent.activeViewOptions.readonly || isReadOnly) {\n return;\n }\n for (var _i = 0, _a = Object.keys(spanEvent); _i < _a.length; _i++) {\n var resizeEdge = _a[_i];\n var resizeHandler = createElement('div', { className: cls.EVENT_RESIZE_CLASS });\n switch (resizeEdge) {\n case 'isLeft':\n if (!spanEvent.isLeft) {\n resizeHandler.appendChild(createElement('div', { className: 'e-left-right-resize' }));\n addClass([resizeHandler], this.parent.enableRtl ? cls.RIGHT_RESIZE_HANDLER : cls.LEFT_RESIZE_HANDLER);\n prepend([resizeHandler], element);\n }\n break;\n case 'isRight':\n if (!spanEvent.isRight) {\n resizeHandler.appendChild(createElement('div', { className: 'e-left-right-resize' }));\n addClass([resizeHandler], this.parent.enableRtl ? cls.LEFT_RESIZE_HANDLER : cls.RIGHT_RESIZE_HANDLER);\n append([resizeHandler], element);\n }\n break;\n case 'isTop':\n if (!spanEvent.isTop) {\n resizeHandler.appendChild(createElement('div', { className: 'e-top-bottom-resize' }));\n addClass([resizeHandler], cls.TOP_RESIZE_HANDLER);\n prepend([resizeHandler], element);\n }\n break;\n case 'isBottom':\n if (!spanEvent.isBottom) {\n resizeHandler.appendChild(createElement('div', { className: 'e-top-bottom-resize' }));\n addClass([resizeHandler], cls.BOTTOM_RESIZE_HANDLER);\n append([resizeHandler], element);\n }\n break;\n }\n }\n };\n EventBase.prototype.eventClick = function (eventData) {\n var _this = this;\n var target = eventData.target;\n if (target.classList.contains(cls.DRAG_CLONE_CLASS) || target.classList.contains(cls.RESIZE_CLONE_CLASS) ||\n target.classList.contains(cls.INLINE_SUBJECT_CLASS)) {\n return;\n }\n if ((eventData.ctrlKey || eventData.metaKey) && eventData.which === 1 && this.parent.keyboardInteractionModule) {\n this.parent.quickPopup.quickPopup.hide();\n this.parent.selectedElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_BORDER));\n var target_1 = closest(eventData.target, '.' + cls.APPOINTMENT_CLASS);\n this.getSelectedEventElements(target_1);\n this.activeEventData(eventData, false);\n var selectArgs = {\n data: this.parent.activeEventData.event,\n element: this.parent.activeEventData.element,\n event: eventData, requestType: 'eventSelect'\n };\n this.parent.trigger(event.select, selectArgs);\n var args = extend(this.parent.activeEventData, { cancel: false, originalEvent: eventData });\n this.parent.trigger(event.eventClick, args);\n }\n else {\n this.removeSelectedAppointmentClass();\n this.activeEventData(eventData, true);\n var selectEventArgs = {\n data: this.parent.activeEventData.event,\n element: this.parent.activeEventData.element,\n event: eventData, requestType: 'eventSelect'\n };\n this.parent.trigger(event.select, selectEventArgs);\n var args = extend(this.parent.activeEventData, { cancel: false, originalEvent: eventData });\n this.parent.trigger(event.eventClick, args, function (eventClickArgs) {\n if (eventClickArgs.cancel) {\n _this.removeSelectedAppointmentClass();\n if (_this.parent.quickPopup) {\n _this.parent.quickPopup.quickPopupHide();\n }\n }\n else {\n if (_this.parent.currentView === 'Agenda' || _this.parent.currentView === 'MonthAgenda') {\n addClass([_this.parent.activeEventData.element], cls.AGENDA_SELECTED_CELL);\n }\n if (_this.parent.allowInline) {\n var inlineArgs = {\n data: eventClickArgs.event,\n element: eventClickArgs.element,\n type: 'Event'\n };\n _this.parent.notify(event.inlineClick, inlineArgs);\n }\n else {\n _this.parent.notify(event.eventClick, eventClickArgs);\n }\n }\n });\n }\n };\n EventBase.prototype.eventDoubleClick = function (e) {\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide(true);\n }\n if (e.type === 'touchstart') {\n this.activeEventData(e, true);\n }\n this.removeSelectedAppointmentClass();\n if (this.parent.activeEventData.element.classList.contains(cls.INLINE_APPOINTMENT_CLASS) ||\n this.parent.activeEventData.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS)) {\n return;\n }\n if (!isNullOrUndefined(this.parent.activeEventData.event) &&\n isNullOrUndefined(this.parent.activeEventData.event[this.parent.eventFields.recurrenceID])) {\n this.parent.eventWindow.openEditor(this.parent.activeEventData.event, 'Save');\n }\n else {\n this.parent.currentAction = 'EditOccurrence';\n this.parent.quickPopup.openRecurrenceAlert();\n }\n };\n EventBase.prototype.getEventByGuid = function (guid) {\n return this.parent.eventsProcessed.filter(function (data) { return data.Guid === guid; })[0];\n };\n EventBase.prototype.getEventById = function (id) {\n var _this = this;\n return this.parent.eventsData.filter(function (data) {\n return data[_this.parent.eventFields.id] === id;\n })[0];\n };\n EventBase.prototype.generateGuid = function () {\n return 'xyxxxxyx-xxxy-yxxx-xyxx-xxyxxxxyyxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = (c === 'x') ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n EventBase.prototype.getEventIDType = function () {\n if (this.parent.eventsData.length !== 0) {\n return typeof (this.parent.eventsData[0][this.parent.eventFields.id]);\n }\n if (this.parent.blockData.length !== 0) {\n return typeof (this.parent.blockData[0][this.parent.eventFields.id]);\n }\n return 'string';\n };\n EventBase.prototype.getEventMaxID = function (resourceId) {\n var _this = this;\n if (this.parent.eventsData.length < 1 && this.parent.blockData.length < 1) {\n return 1;\n }\n var eventId;\n var idType = this.getEventIDType();\n if (idType === 'string') {\n eventId = this.generateGuid();\n }\n if (idType === 'number') {\n var datas = this.parent.eventsData.concat(this.parent.blockData);\n var maxId = Math.max.apply(Math, datas.map(function (event) { return event[_this.parent.eventFields.id]; }));\n maxId = isNullOrUndefined(resourceId) ? maxId : maxId + resourceId;\n eventId = maxId + 1;\n }\n return eventId;\n };\n EventBase.prototype.activeEventData = function (eventData, isMultiple) {\n var _this = this;\n var target = closest(eventData.target, '.' + cls.APPOINTMENT_CLASS);\n var guid = target.getAttribute('data-guid');\n if (isMultiple) {\n this.addSelectedAppointments([].slice.call(this.parent.element.querySelectorAll('div[data-guid=\"' + guid + '\"]')));\n target.focus();\n }\n var eventObject = this.getEventByGuid(guid);\n if (eventObject && eventObject.isSpanned) {\n eventObject = this.parent.eventsData.filter(function (obj) {\n return obj[_this.parent.eventFields.id] === eventObject[_this.parent.eventFields.id];\n })[0];\n }\n this.parent.activeEventData = { event: eventObject, element: target };\n };\n EventBase.prototype.generateOccurrence = function (event, viewDate, oldTimezone, isMaxCount) {\n var startDate = event[this.parent.eventFields.startTime];\n var endDate = event[this.parent.eventFields.endTime];\n var eventRule = event[this.parent.eventFields.recurrenceRule];\n var duration = endDate.getTime() - startDate.getTime();\n viewDate = new Date((viewDate || this.parent.activeView.startDate()).getTime() - duration);\n var exception = event[this.parent.eventFields.recurrenceException];\n var maxCount;\n if (this.parent.currentView !== 'Agenda' && isMaxCount) {\n maxCount = util.getDateCount(this.parent.activeView.startDate(), this.parent.activeView.endDate()) + 1;\n }\n var newTimezone = this.parent.timezone || this.parent.tzModule.getLocalTimezoneName();\n var firstDay = this.parent.activeViewOptions.firstDayOfWeek;\n var calendarMode = this.parent.calendarMode;\n var dates = generate(startDate, eventRule, exception, firstDay, maxCount, viewDate, calendarMode, oldTimezone, newTimezone);\n if (this.parent.currentView === 'Agenda' && eventRule.indexOf('COUNT') === -1 && eventRule.indexOf('UNTIL') === -1) {\n if (isNullOrUndefined(event.generatedDates)) {\n event.generatedDates = { start: new Date(dates[0]), end: new Date(dates[dates.length - 1]) };\n }\n else {\n if (dates[0] < event.generatedDates.start.getTime()) {\n event.generatedDates.start = new Date(dates[0]);\n }\n if (dates[dates.length - 1] > event.generatedDates.end.getTime()) {\n event.generatedDates.end = new Date(dates[dates.length - 1]);\n }\n }\n }\n var occurrenceCollection = [];\n for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) {\n var date = dates_1[_i];\n var clonedObject = extend({}, event, null, true);\n clonedObject[this.parent.eventFields.startTime] = new Date(date);\n clonedObject[this.parent.eventFields.endTime] = new Date(new Date(date).setMilliseconds(duration));\n clonedObject[this.parent.eventFields.recurrenceID] = clonedObject[this.parent.eventFields.id];\n delete clonedObject[this.parent.eventFields.recurrenceException];\n delete clonedObject[this.parent.eventFields.followingID];\n clonedObject.Guid = this.generateGuid();\n occurrenceCollection.push(clonedObject);\n }\n return occurrenceCollection;\n };\n EventBase.prototype.getParentEvent = function (eventObj, isParent) {\n if (isParent === void 0) { isParent = false; }\n var parentEvent;\n do {\n eventObj = this.getFollowingEvent(eventObj);\n if (eventObj) {\n parentEvent = extend({}, eventObj, null, true);\n }\n } while (eventObj && isParent);\n if (isParent && parentEvent) {\n var collection = this.getEventCollections(parentEvent);\n var followObj = collection.follow.slice(-1)[0];\n if (collection.occurrence.length > 0 && !parentEvent[this.parent.eventFields.recurrenceException]) {\n followObj = collection.occurrence.slice(-1)[0];\n }\n if (followObj) {\n parentEvent[this.parent.eventFields.recurrenceRule] = followObj[this.parent.eventFields.recurrenceRule];\n }\n }\n return parentEvent;\n };\n EventBase.prototype.getEventCollections = function (parentObj, childObj) {\n var followingCollection = [];\n var occurrenceCollection = [];\n var followingEvent = parentObj;\n do {\n followingEvent = this.getFollowingEvent(followingEvent, true);\n if (followingEvent) {\n followingCollection.push(followingEvent);\n }\n occurrenceCollection = occurrenceCollection.concat(this.getOccurrenceEvent(followingEvent || parentObj));\n } while (followingEvent);\n var collections = {};\n if (childObj) {\n var fields_1 = this.parent.eventFields;\n collections = {\n follow: followingCollection.filter(function (eventData) {\n return eventData[fields_1.startTime] >= childObj[fields_1.startTime];\n }),\n occurrence: occurrenceCollection.filter(function (eventData) {\n return eventData[fields_1.startTime] >= childObj[fields_1.startTime];\n })\n };\n }\n else {\n collections = { follow: followingCollection, occurrence: occurrenceCollection };\n }\n return collections;\n };\n EventBase.prototype.getFollowingEvent = function (parentObj, isReverse) {\n var fields = this.parent.eventFields;\n var fieldValue;\n if (isReverse) {\n fieldValue = parentObj[fields.id];\n }\n else {\n fieldValue = (parentObj[fields.recurrenceID] || parentObj[fields.followingID]);\n }\n var parentApp = this.parent.eventsData.filter(function (data) {\n return data[isReverse ? fields.followingID : fields.id] === fieldValue;\n });\n return parentApp.shift();\n };\n EventBase.prototype.isFollowingEvent = function (parentObj, childObj) {\n var parentStart = parentObj[this.parent.eventFields.startTime];\n var childStart = childObj[this.parent.eventFields.startTime];\n return parentStart.getHours() === childStart.getHours() && parentStart.getMinutes() === childStart.getMinutes() &&\n parentStart.getSeconds() === childStart.getSeconds();\n };\n EventBase.prototype.getOccurrenceEvent = function (eventObj, isGuid, isFollowing) {\n if (isGuid === void 0) { isGuid = false; }\n if (isFollowing === void 0) { isFollowing = false; }\n var idField = isGuid ? 'Guid' : (isFollowing) ? this.parent.eventFields.followingID : this.parent.eventFields.recurrenceID;\n var fieldKey = isGuid ? 'Guid' : this.parent.eventFields.id;\n var dataSource = isGuid ? this.parent.eventsProcessed : this.parent.eventsData;\n return dataSource.filter(function (data) { return data[idField] === eventObj[fieldKey]; });\n };\n EventBase.prototype.getOccurrencesByID = function (id) {\n var fields = this.parent.eventFields;\n var occurrenceCollection = [];\n var parentObject = this.parent.eventsData.filter(function (obj) { return obj[fields.id] === id; });\n for (var _i = 0, parentObject_1 = parentObject; _i < parentObject_1.length; _i++) {\n var event_3 = parentObject_1[_i];\n if (!isNullOrUndefined(event_3[fields.recurrenceRule])) {\n occurrenceCollection = occurrenceCollection.concat(this.generateOccurrence(event_3));\n }\n }\n return occurrenceCollection;\n };\n EventBase.prototype.getOccurrencesByRange = function (startTime, endTime) {\n var fields = this.parent.eventFields;\n var occurrenceCollection = [];\n for (var _i = 0, _a = this.parent.eventsData; _i < _a.length; _i++) {\n var event_4 = _a[_i];\n if (!isNullOrUndefined(event_4[fields.recurrenceRule])) {\n occurrenceCollection = occurrenceCollection.concat(this.generateOccurrence(event_4));\n }\n }\n var filter = occurrenceCollection.filter(function (obj) {\n return obj[fields.startTime] >= startTime && obj[fields.endTime] <= endTime && !isNullOrUndefined(obj[fields.recurrenceID]);\n });\n return filter;\n };\n EventBase.prototype.getDeletedOccurrences = function (recurrenceData) {\n var fields = this.parent.eventFields;\n var parentObject;\n var deletedOccurrences = [];\n if (typeof recurrenceData === 'string' || typeof recurrenceData === 'number') {\n parentObject = this.parent.eventsData.filter(function (obj) {\n return obj[fields.id] === recurrenceData;\n })[0];\n }\n else {\n parentObject = extend({}, recurrenceData, null, true);\n }\n if (parentObject[fields.recurrenceException]) {\n var exDateString_1 = parentObject[fields.recurrenceException].split(',');\n var _loop_3 = function (i, len) {\n var edited = this_2.parent.eventsData.filter(function (eventObj) {\n return eventObj[fields.recurrenceID] === parentObject[fields.id] && eventObj[fields.recurrenceException] === exDateString_1[i];\n });\n if (edited.length === 0) {\n var exDate = getDateFromRecurrenceDateString(exDateString_1[i]);\n var childObject = extend({}, recurrenceData, null, true);\n childObject[fields.recurrenceID] = parentObject[fields.id];\n delete childObject[fields.followingID];\n childObject[fields.recurrenceException] = exDateString_1[i];\n var startDate = new Date(exDate.getTime());\n var time = parentObject[fields.endTime].getTime() - parentObject[fields.startTime].getTime();\n var endDate = new Date(startDate.getTime());\n endDate.setMilliseconds(time);\n childObject[fields.startTime] = new Date(startDate.getTime());\n childObject[fields.endTime] = new Date(endDate.getTime());\n deletedOccurrences.push(childObject);\n }\n };\n var this_2 = this;\n for (var i = 0, len = exDateString_1.length; i < len; i++) {\n _loop_3(i, len);\n }\n }\n return deletedOccurrences;\n };\n EventBase.prototype.applyResourceColor = function (element, data, type, index, alpha) {\n if (!this.parent.resourceBase) {\n return;\n }\n var alphaColor = function (color, alpha) {\n color = color.replace('#', '');\n var r = parseInt(color.substring(0, color.length / 3), 16);\n var g = parseInt(color.substring(color.length / 3, 2 * color.length / 3), 16);\n var b = parseInt(color.substring(2 * color.length / 3, 3 * color.length / 3), 16);\n return \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + alpha + \")\";\n };\n // index refers groupOrder\n var color = this.parent.resourceBase.getResourceColor(data, index);\n if (color) {\n element.style[type] = !isNullOrUndefined(alpha) ? alphaColor(color, alpha) : color;\n }\n };\n EventBase.prototype.createBlockAppointmentElement = function (record, resIndex) {\n var eventSubject = (record[this.parent.eventFields.subject] || this.parent.eventSettings.fields.subject.default);\n var appointmentWrapper = createElement('div', {\n className: cls.BLOCK_APPOINTMENT_CLASS,\n attrs: {\n 'data-id': 'Appointment_' + record[this.parent.eventFields.id],\n 'aria-readonly': 'true', 'aria-selected': 'false'\n }\n });\n var templateElement;\n if (!isNullOrUndefined(this.parent.activeViewOptions.eventTemplate)) {\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.eventTemplateName;\n var templateId = scheduleId + viewName + 'eventTemplate';\n var templateName = 'eventTemplate' + (this.parent.activeViewOptions.group.resources.length > 0 &&\n this.parent.currentView.indexOf('Year') === -1 ? '_' + resIndex : '');\n templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false);\n }\n else {\n var appointmentSubject = createElement('div', {\n className: cls.SUBJECT_CLASS, innerHTML: eventSubject\n });\n templateElement = [appointmentSubject];\n }\n append(templateElement, appointmentWrapper);\n this.setWrapperAttributes(appointmentWrapper, resIndex);\n return appointmentWrapper;\n };\n EventBase.prototype.setWrapperAttributes = function (appointmentWrapper, resIndex) {\n if (!isNullOrUndefined(this.cssClass)) {\n addClass([appointmentWrapper], this.cssClass);\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n appointmentWrapper.setAttribute('data-group-index', resIndex.toString());\n }\n };\n EventBase.prototype.getReadonlyAttribute = function (event) {\n return (event[this.parent.eventFields.isReadonly] || this.parent.readonly).toString();\n };\n EventBase.prototype.isBlockRange = function (eventData) {\n var eventCollection = (eventData instanceof Array) ? eventData : [eventData];\n var isBlockAlert = false;\n var fields = this.parent.eventFields;\n for (var _i = 0, _a = eventCollection; _i < _a.length; _i++) {\n var event_5 = _a[_i];\n var dataCol = [];\n if (!isNullOrUndefined(event_5[fields.recurrenceRule]) &&\n (isNullOrUndefined(event_5[fields.recurrenceID]) || event_5[fields.id] === event_5[fields.recurrenceID])) {\n dataCol = this.generateOccurrence(event_5);\n }\n else {\n dataCol.push(event_5);\n }\n for (var _b = 0, dataCol_1 = dataCol; _b < dataCol_1.length; _b++) {\n var data = dataCol_1[_b];\n var filterBlockEvents = this.filterBlockEvents(data);\n if (filterBlockEvents.length > 0) {\n isBlockAlert = true;\n break;\n }\n }\n }\n this.parent.uiStateValues.isBlock = isBlockAlert;\n return isBlockAlert;\n };\n EventBase.prototype.getFilterEventsList = function (dataSource, query) {\n return new DataManager(dataSource).executeLocal(new Query().where(query));\n };\n EventBase.prototype.getSeriesEvents = function (parentEvent, startTime) {\n var fields = this.parent.eventFields;\n startTime = isNullOrUndefined(startTime) ? parentEvent[fields.startTime] : startTime;\n var deleteFutureEditEvents;\n var futureEvents;\n var deleteFutureEditEventList = [];\n var delId = parentEvent[fields.id];\n var followingId = parentEvent[fields.followingID];\n var deleteFutureEvent;\n var startTimeQuery = this.parent.currentAction === 'EditSeries' ? 'greaterthan' : 'greaterthanorequal';\n do {\n deleteFutureEvent = ((new Predicate(fields.followingID, 'equal', delId))).\n and(new Predicate(fields.startTime, startTimeQuery, startTime));\n futureEvents = this.getFilterEventsList(this.parent.eventsData, deleteFutureEvent);\n deleteFutureEditEvents = futureEvents.slice(-1)[0];\n if (!isNullOrUndefined(deleteFutureEditEvents) && deleteFutureEditEvents[fields.id] !== followingId) {\n deleteFutureEditEventList.push(deleteFutureEditEvents);\n delId = deleteFutureEditEvents[fields.id];\n followingId = deleteFutureEditEvents[fields.followingID];\n }\n else {\n followingId = null;\n }\n } while (futureEvents.length === 1 && !isNullOrUndefined(deleteFutureEditEvents[fields.followingID]));\n return deleteFutureEditEventList;\n };\n EventBase.prototype.getEditedOccurrences = function (deleteFutureEditEventList, startTime) {\n var fields = this.parent.eventFields;\n var deleteRecurrenceEventList = [];\n var delEditedEvents;\n for (var _i = 0, deleteFutureEditEventList_1 = deleteFutureEditEventList; _i < deleteFutureEditEventList_1.length; _i++) {\n var event_6 = deleteFutureEditEventList_1[_i];\n var delEventQuery = new Predicate(fields.recurrenceID, 'equal', event_6[fields.id]).\n or(new Predicate(fields.recurrenceID, 'equal', event_6[fields.followingID]).\n and(new Predicate(fields.recurrenceID, 'notequal', undefined)).\n and(new Predicate(fields.recurrenceID, 'notequal', null)));\n if (this.parent.currentAction === 'EditFollowingEvents' || this.parent.currentAction === 'DeleteFollowingEvents') {\n delEventQuery = delEventQuery.and(new Predicate(fields.startTime, 'greaterthanorequal', startTime));\n }\n delEditedEvents = this.getFilterEventsList(this.parent.eventsData, delEventQuery);\n deleteRecurrenceEventList = deleteRecurrenceEventList.concat(delEditedEvents);\n }\n return deleteRecurrenceEventList;\n };\n EventBase.prototype.getRenderedDates = function (dateRender) {\n var firstDate = 0;\n var lastDate = dateRender.length;\n var filteredDates;\n if (dateRender[0] < this.parent.minDate && dateRender[dateRender.length - 1] > this.parent.maxDate) {\n for (var i = 0; i < dateRender.length; i++) {\n if (util.resetTime(dateRender[i]).getTime() === util.resetTime(new Date(this.parent.minDate)).getTime()) {\n firstDate = i;\n }\n if (util.resetTime(dateRender[i]).getTime() === util.resetTime(new Date(this.parent.maxDate)).getTime()) {\n lastDate = i;\n }\n }\n filteredDates = dateRender.filter(function (date) { return date >= dateRender[firstDate] && date <= dateRender[lastDate]; });\n }\n return filteredDates;\n };\n EventBase.prototype.isValidEvent = function (eventObj, start, end, schedule) {\n var isHourRange = end.getTime() > schedule.startHour.getTime() && start.getTime() < schedule.endHour.getTime();\n var isSameRange = schedule.startHour.getTime() <= start.getTime() &&\n eventObj[this.parent.eventFields.startTime].getTime() >= schedule.startHour.getTime() &&\n eventObj[this.parent.eventFields.endTime].getTime() < schedule.endHour.getTime() && start.getTime() === end.getTime();\n return isHourRange || isSameRange;\n };\n EventBase.prototype.allDayExpandScroll = function (dateHeader) {\n var indentHeight = 0;\n var headerRows = [].slice.call(this.parent.element.querySelectorAll('.' + cls.HEADER_ROW_CLASS));\n headerRows.forEach(function (element) {\n var tdEle = [].slice.call(element.children);\n tdEle.forEach(function (ele) { ele.style.top = indentHeight + 'px'; });\n indentHeight += element.offsetHeight;\n });\n indentHeight = dateHeader.offsetHeight - indentHeight;\n this.parent.element.querySelector('.' + cls.ALLDAY_CELLS_CLASS).style.height = (indentHeight / 12) + 'em';\n if (this.parent.uiStateValues.expand) {\n addClass([dateHeader], cls.ALLDAY_APPOINTMENT_SCROLL);\n }\n else {\n removeClass([dateHeader], cls.ALLDAY_APPOINTMENT_SCROLL);\n }\n };\n EventBase.prototype.updateEventMinimumDuration = function (startEndHours, startTime, endTime) {\n var eventDuration = (util.getUniversalTime(endTime) - util.getUniversalTime(startTime)) / util.MS_PER_MINUTE;\n if (eventDuration < this.parent.eventSettings.minimumEventDuration) {\n var tempEnd = new Date(startTime);\n tempEnd.setMinutes(tempEnd.getMinutes() + this.parent.eventSettings.minimumEventDuration);\n endTime = tempEnd;\n if (endTime.getTime() > startEndHours.endHour.getTime()) {\n var tempStart = new Date(startEndHours.endHour.getTime());\n tempStart.setMinutes(tempStart.getMinutes() - this.parent.eventSettings.minimumEventDuration);\n startTime = tempStart;\n endTime = startEndHours.endHour;\n }\n }\n return { startDate: startTime, endDate: endTime };\n };\n EventBase.prototype.unWireEvents = function () {\n var appElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n for (var _i = 0, appElements_1 = appElements; _i < appElements_1.length; _i++) {\n var element = appElements_1[_i];\n EventHandler.clearEvents(element);\n }\n };\n EventBase.prototype.destroy = function () {\n this.unWireEvents();\n this.parent = null;\n };\n return EventBase;\n}());\nexport { EventBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, EventHandler, formatUnit, Browser } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, removeClass, append, prepend } from '@syncfusion/ej2-base';\nimport { ViewBase } from './view-base';\nimport { VerticalEvent } from '../event-renderer/vertical-view';\nimport { MonthEvent } from '../event-renderer/month';\nimport * as util from '../base/util';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * vertical view\n */\nvar VerticalView = /** @class */ (function (_super) {\n __extends(VerticalView, _super);\n function VerticalView(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-day-view';\n _this.isInverseTableSelect = true;\n _this.baseCssClass = 'e-vertical-view';\n _this.appointment = null;\n return _this;\n }\n VerticalView.prototype.getModuleName = function () {\n return 'verticalView';\n };\n VerticalView.prototype.addEventListener = function () {\n this.parent.on(event.scrollUiUpdate, this.scrollUiUpdate, this);\n this.parent.on(event.dataReady, this.renderEvents, this);\n };\n VerticalView.prototype.removeEventListener = function () {\n if (this.parent) {\n this.parent.off(event.scrollUiUpdate, this.scrollUiUpdate);\n this.parent.off(event.dataReady, this.renderEvents);\n }\n };\n VerticalView.prototype.renderEvents = function () {\n this.appointment = this.parent.activeViewOptions.timeScale.enable ?\n new VerticalEvent(this.parent) : new MonthEvent(this.parent);\n this.appointment.renderAppointments();\n this.parent.notify(event.eventsLoaded, {});\n };\n VerticalView.prototype.onContentScroll = function (e) {\n this.parent.removeNewEventElement();\n var target = e.target;\n this.parent.notify(event.virtualScroll, e);\n this.scrollLeftPanel(target);\n this.scrollTopPanel(target);\n if (!this.parent.isAdaptive) {\n this.parent.uiStateValues.top = target.scrollTop;\n }\n this.parent.uiStateValues.left = target.scrollLeft;\n if (!isNullOrUndefined(this.parent.quickPopup)) {\n this.parent.quickPopup.quickPopupHide();\n }\n this.setPersistence();\n };\n VerticalView.prototype.onAdaptiveMove = function (e) {\n if (this.parent.uiStateValues.action) {\n e.preventDefault();\n }\n };\n VerticalView.prototype.onAdaptiveScroll = function (e) {\n if (this.parent && !this.parent.isDestroyed) {\n this.parent.removeNewEventElement();\n this.parent.uiStateValues.top = e.target.scrollTop;\n }\n };\n VerticalView.prototype.scrollLeftPanel = function (target) {\n var leftPanel = this.getLeftPanelElement();\n if (!isNullOrUndefined(leftPanel)) {\n leftPanel.scrollTop = target.scrollTop;\n }\n };\n VerticalView.prototype.scrollUiUpdate = function (args) {\n if (!this.parent) {\n return;\n }\n var dateHeader = this.parent.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS);\n var headerBarHeight = this.getHeaderBarHeight();\n var timeCells = this.getLeftPanelElement();\n var content = this.getScrollableElement();\n var header = this.getDatesHeaderElement();\n var scrollerHeight = this.parent.element.offsetHeight - headerBarHeight - header.offsetHeight;\n this.setColWidth(content);\n this.setContentHeight(content, timeCells, scrollerHeight);\n var scrollBarWidth = util.getScrollBarWidth();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.firstElementChild.style[args.cssProperties.rtlBorder] = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.style[args.cssProperties.rtlPadding] = '';\n var isDateHeaderScroll = this.parent.enableAllDayScroll ? !((content.offsetWidth - content.clientWidth) <=\n (dateHeader.offsetWidth - dateHeader.clientWidth) && dateHeader.classList.contains('e-all-day-scroll')) : true;\n if (content.offsetWidth - content.clientWidth > 0 && isDateHeaderScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.firstElementChild.style[args.cssProperties.border] = scrollBarWidth > 0 ? '1px' : '0px';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.style[args.cssProperties.padding] = scrollBarWidth > 0 ? scrollBarWidth - 1 + 'px' : '0px';\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.firstElementChild.style[args.cssProperties.border] = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.style[args.cssProperties.padding] = '';\n }\n if (!args.isPreventScrollUpdate) {\n if (this.parent.uiStateValues.isInitial) {\n this.scrollToWorkHour();\n this.parent.uiStateValues.isInitial = false;\n }\n else {\n if (timeCells) {\n timeCells.scrollTop = this.parent.uiStateValues.top;\n }\n content.scrollTop = this.parent.uiStateValues.top;\n content.scrollLeft = this.parent.uiStateValues.left;\n }\n }\n if (this.parent.activeViewOptions.timeScale.enable) {\n this.highlightCurrentTime();\n }\n this.retainScrollPosition();\n };\n VerticalView.prototype.setContentHeight = function (element, leftPanelElement, height) {\n if (this.parent.isAdaptive && !this.isTimelineView()) {\n element.style.height = (this.parent.height === 'auto') ? 'auto' : formatUnit(height);\n }\n else {\n if (!isNullOrUndefined(leftPanelElement)) {\n leftPanelElement.style.height = (this.parent.height === 'auto') ? 'auto'\n : formatUnit(height - this.getScrollXIndent(element));\n }\n element.style.height = (this.parent.height === 'auto') ? 'auto' : formatUnit(height);\n }\n };\n VerticalView.prototype.scrollToWorkHour = function () {\n if (this.parent.workHours.highlight) {\n var firstWorkHourCell = this.element.querySelector('.' + cls.WORK_HOURS_CLASS);\n if (firstWorkHourCell) {\n this.getScrollableElement().scrollTop = firstWorkHourCell.offsetTop;\n this.parent.uiStateValues.top = firstWorkHourCell.offsetTop;\n this.parent.uiStateValues.left = 0;\n }\n }\n };\n VerticalView.prototype.scrollToHour = function (hour, scrollDate) {\n var date = this.parent.getStartEndTime(hour);\n if (isNullOrUndefined(date) || !isNullOrUndefined(scrollDate)) {\n return;\n }\n this.getScrollableElement().scrollTop = this.getTopFromDateTime(date);\n };\n VerticalView.prototype.generateColumnLevels = function () {\n var level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);\n var columnLevels = [];\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n columnLevels = this.parent.resourceBase.generateResourceLevels(level);\n if (this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.lastResourceLevel.length > 0) {\n var resourceLevel = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n var resStartHour = resourceLevel.resourceData[resourceLevel.resource.startHourField];\n var resEndHour = resourceLevel.resourceData[resourceLevel.resource.endHourField];\n var dateSlots = this.getDateSlots(resourceLevel.renderDates, resourceLevel.workDays, resStartHour, resEndHour);\n columnLevels = [dateSlots];\n }\n }\n else {\n columnLevels.push(level);\n }\n this.colLevels = columnLevels;\n return columnLevels;\n };\n // eslint-disable-next-line max-len\n VerticalView.prototype.getDateSlots = function (renderDates, workDays, workStartHour, workEndHour) {\n if (workStartHour === void 0) { workStartHour = this.parent.workHours.start; }\n if (workEndHour === void 0) { workEndHour = this.parent.workHours.end; }\n var dateCol = [];\n var start = this.parent.getStartEndTime(workStartHour);\n var end = this.parent.getStartEndTime(workEndHour);\n for (var _i = 0, renderDates_1 = renderDates; _i < renderDates_1.length; _i++) {\n var col = renderDates_1[_i];\n var classList = [cls.HEADER_CELLS_CLASS];\n if (this.isCurrentDate(col)) {\n classList.push(cls.CURRENT_DAY_CLASS);\n }\n dateCol.push({\n date: col, type: 'dateHeader', className: classList, colSpan: 1,\n workDays: workDays, startHour: new Date(+start), endHour: new Date(+end)\n });\n }\n return dateCol;\n };\n VerticalView.prototype.isWorkHourRange = function (date) {\n return (this.getStartHour().getTime() <= date.getTime()) && (this.getEndHour().getTime() >= date.getTime());\n };\n VerticalView.prototype.highlightCurrentTime = function () {\n var _this = this;\n if (this.parent.activeViewOptions.headerRows.length > 0 &&\n this.parent.activeViewOptions.headerRows.slice(-1)[0].option !== 'Hour') {\n return;\n }\n if (this.parent.showTimeIndicator && this.isWorkHourRange(this.parent.getCurrentTime())) {\n var currentDateIndex = this.getCurrentTimeIndicatorIndex();\n if (currentDateIndex.length > 0) {\n var workCells = [].slice.call(this.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n if (workCells.length > 0) {\n this.changeCurrentTimePosition();\n }\n if (isNullOrUndefined(this.currentTimeIndicatorTimer)) {\n var currentDate = this.parent.getCurrentTime();\n var interval = util.MS_PER_MINUTE - ((currentDate.getSeconds() * 1000) + currentDate.getMilliseconds());\n if (interval <= (util.MS_PER_MINUTE - 1000)) {\n window.setTimeout(function () {\n if (!isNullOrUndefined(_this.currentTimeIndicatorTimer)) {\n _this.clearCurrentTimeIndicatorTimer();\n _this.changeCurrentTimePosition();\n _this.updateCurrentTimeIndicatorTimer();\n }\n }, interval);\n }\n this.updateCurrentTimeIndicatorTimer();\n }\n }\n else {\n this.clearCurrentTimeIndicatorTimer();\n }\n }\n else {\n this.clearCurrentTimeIndicatorTimer();\n }\n };\n VerticalView.prototype.getCurrentTimeIndicatorIndex = function () {\n var currentDateIndex = [];\n if (!isNullOrUndefined(this.parent.resourceBase) && (this.parent.activeViewOptions.group.resources.length > 0) &&\n !this.parent.uiStateValues.isGroupAdaptive) {\n var count = 0;\n for (var _i = 0, _a = this.parent.resourceBase.lastResourceLevel; _i < _a.length; _i++) {\n var resource = _a[_i];\n var index = this.parent.getIndexOfDate(resource.renderDates, util.resetTime(this.parent.getCurrentTime()));\n if (index >= 0) {\n var resIndex = this.parent.activeViewOptions.group.byDate ?\n (this.parent.resourceBase.lastResourceLevel.length * index) + count : count + index;\n currentDateIndex.push(resIndex);\n }\n count += this.parent.activeViewOptions.group.byDate ? 1 : resource.renderDates.length;\n }\n }\n else {\n var renderDates = (this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.lastResourceLevel.length > 0)\n ? this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex].renderDates : this.renderDates;\n var index = this.parent.getIndexOfDate(renderDates, util.resetTime(this.parent.getCurrentTime()));\n if (index >= 0) {\n currentDateIndex.push(index);\n }\n }\n return currentDateIndex;\n };\n VerticalView.prototype.clearCurrentTimeIndicatorTimer = function () {\n if (!isNullOrUndefined(this.currentTimeIndicatorTimer)) {\n window.clearInterval(this.currentTimeIndicatorTimer);\n this.currentTimeIndicatorTimer = null;\n this.removeCurrentTimeIndicatorElements();\n }\n };\n VerticalView.prototype.updateCurrentTimeIndicatorTimer = function () {\n var _this = this;\n this.currentTimeIndicatorTimer = window.setInterval(function () { _this.changeCurrentTimePosition(); }, util.MS_PER_MINUTE);\n };\n VerticalView.prototype.removeCurrentTimeIndicatorElements = function () {\n var queryString = '.' + cls.PREVIOUS_TIMELINE_CLASS + ',.' + cls.CURRENT_TIMELINE_CLASS + ',.' + cls.CURRENT_TIME_CLASS;\n var timeIndicator = [].slice.call(this.element.querySelectorAll(queryString));\n for (var _i = 0, timeIndicator_1 = timeIndicator; _i < timeIndicator_1.length; _i++) {\n var indicator = timeIndicator_1[_i];\n remove(indicator);\n }\n };\n VerticalView.prototype.changeCurrentTimePosition = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.removeCurrentTimeIndicatorElements();\n var currentDateIndex = this.getCurrentTimeIndicatorIndex();\n var firstRow = this.parent.getContentTable().rows[0];\n var top = this.getTopFromDateTime(this.parent.getCurrentTime());\n var topInPx = formatUnit(top);\n var rowIndex = Math.floor(top / firstRow.cells[0].offsetHeight);\n var timeCellsWrap = this.getLeftPanelElement();\n var timeTrs = [].slice.call(timeCellsWrap.querySelectorAll('tr'));\n if (isNullOrUndefined(rowIndex) || isNaN(rowIndex) || rowIndex === timeTrs.length) {\n return;\n }\n var curTimeWrap = [].slice.call(this.element.querySelectorAll('.' + cls.TIMELINE_WRAPPER_CLASS));\n for (var i = 0, length_1 = currentDateIndex[0]; i < length_1; i++) {\n curTimeWrap[i].appendChild(createElement('div', { className: cls.PREVIOUS_TIMELINE_CLASS, styles: 'top:' + topInPx }));\n }\n for (var _i = 0, currentDateIndex_1 = currentDateIndex; _i < currentDateIndex_1.length; _i++) {\n var day = currentDateIndex_1[_i];\n curTimeWrap[day].appendChild(createElement('div', { className: cls.CURRENT_TIMELINE_CLASS, styles: 'top:' + topInPx }));\n }\n var currentTimeEle = createElement('div', {\n innerHTML: this.parent.getTimeString(this.parent.getCurrentTime()),\n className: cls.CURRENT_TIME_CLASS,\n styles: 'top:' + topInPx\n });\n if (rowIndex <= timeTrs.length) {\n removeClass(timeCellsWrap.querySelectorAll('.' + cls.HIDE_CHILDS_CLASS), cls.HIDE_CHILDS_CLASS);\n if (timeTrs[rowIndex]) {\n addClass([timeTrs[rowIndex].lastElementChild], cls.HIDE_CHILDS_CLASS);\n }\n prepend([currentTimeEle], timeCellsWrap);\n currentTimeEle.style.top = formatUnit(currentTimeEle.offsetTop - (currentTimeEle.offsetHeight / 2));\n }\n };\n VerticalView.prototype.getTopFromDateTime = function (date) {\n var startHour = this.getStartHour();\n var diffInMinutes = ((date.getHours() - startHour.getHours()) * 60) + (date.getMinutes() - startHour.getMinutes());\n return (diffInMinutes * this.getWorkCellHeight() * this.parent.activeViewOptions.timeScale.slotCount) /\n this.parent.activeViewOptions.timeScale.interval;\n };\n VerticalView.prototype.getWorkCellHeight = function () {\n return parseFloat(this.element.querySelector('.' + cls.WORK_CELLS_CLASS).getBoundingClientRect().height.toFixed(2));\n };\n VerticalView.prototype.getTdContent = function (date, type, groupIndex) {\n var cntEle;\n var wrapper = createElement('div');\n var templateName = '';\n var templateId = this.parent.element.id + '_';\n switch (type) {\n case 'dateHeader':\n if (this.parent.activeViewOptions.dateHeaderTemplate) {\n templateName = 'dateHeaderTemplate';\n var args = { date: date, type: type };\n var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;\n cntEle = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, templateName, templateId + viewName + templateName, false));\n }\n else {\n wrapper.innerHTML = this.parent.activeView.isTimelineView() ?\n \"\" + this.getTimelineDate(date) + \"\" :\n \"
\" + util.capitalizeFirstWord(this.getDayName(date), 'single') + \"
\" +\n (\"
\" + this.getDate(date) + \"
\");\n cntEle = [].slice.call(wrapper.childNodes);\n }\n break;\n case 'majorSlot':\n if (this.parent.activeViewOptions.timeScale.majorSlotTemplate) {\n templateName = 'majorSlotTemplate';\n var args = { date: date, type: type };\n cntEle = [].slice.call(this.parent.getMajorSlotTemplate()(args, this.parent, templateName, templateId + templateName, false));\n }\n else {\n wrapper.innerHTML = \"\" + this.getTime(date) + \"\";\n cntEle = [].slice.call(wrapper.childNodes);\n }\n break;\n case 'minorSlot':\n if (this.parent.activeViewOptions.timeScale.minorSlotTemplate) {\n templateName = 'minorSlotTemplate';\n var args = { date: date, type: type };\n cntEle = [].slice.call(this.parent.getMinorSlotTemplate()(args, this.parent, templateName, templateId + templateName, false));\n }\n else {\n cntEle = [].slice.call(wrapper.childNodes);\n }\n break;\n case 'alldayCells':\n if (this.parent.activeViewOptions.cellTemplate) {\n var viewName = this.parent.activeViewOptions.cellTemplateName;\n templateName = 'cellTemplate';\n var args = { date: date, type: type, groupIndex: groupIndex };\n cntEle = [].slice.call(this.parent.getCellTemplate()(args, this.parent, templateName, templateId + viewName + templateName, false));\n }\n break;\n }\n return cntEle;\n };\n VerticalView.prototype.refreshHeader = function () {\n remove(this.element.querySelector('tbody tr'));\n this.renderHeader();\n this.parent.notify(event.contentReady, {});\n };\n VerticalView.prototype.renderLayout = function (type) {\n this.setPanel(createElement('div', { className: cls.TABLE_WRAP_CLASS }));\n var clsList = [this.baseCssClass, this.viewClass];\n clsList.push(type);\n if (this.parent.activeViewOptions.group.byDate) {\n clsList.push('e-by-date');\n }\n if (!this.parent.activeViewOptions.timeScale.enable) {\n addClass([this.element], [cls.TIMESCALE_DISABLE, this.viewClass]);\n }\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n clsList.push(cls.VIRTUAL_SCROLL_CLASS);\n }\n if (this.parent.rowAutoHeight && this.parent.eventSettings.ignoreWhitespace) {\n clsList.push(cls.IGNORE_WHITESPACE);\n }\n this.renderPanel(type);\n addClass([this.element], clsList);\n this.element.appendChild(this.createTableLayout(cls.OUTER_TABLE_CLASS));\n this.element.querySelector('table').setAttribute('role', 'presentation');\n this.colLevels = this.generateColumnLevels();\n this.renderHeader();\n this.renderContent();\n if (this.parent.uiStateValues.isGroupAdaptive && !this.parent.element.querySelector('.' + cls.RESOURCE_TOOLBAR_CONTAINER)) {\n this.renderResourceMobileLayout();\n }\n this.parent.notify(event.contentReady, {});\n };\n VerticalView.prototype.renderHeader = function () {\n var tr = createElement('tr');\n var dateTd = createElement('td');\n dateTd.appendChild(this.renderDatesHeader());\n if (this.parent.activeViewOptions.timeScale.enable) {\n var indentTd = createElement('td', { className: cls.LEFT_INDENT_CLASS });\n indentTd.appendChild(this.renderLeftIndent());\n tr.appendChild(indentTd);\n }\n tr.appendChild(dateTd);\n prepend([tr], this.element.querySelector('tbody'));\n };\n VerticalView.prototype.renderContent = function () {\n var tr = createElement('tr');\n var workTd = createElement('td');\n if (this.parent.isAdaptive) {\n workTd.setAttribute('colspan', (this.parent.activeViewOptions.timeScale.enable ? '2' : '1'));\n var scrollContainer = createElement('div', { className: cls.SCROLL_CONTAINER_CLASS });\n if (this.parent.activeViewOptions.timeScale.enable) {\n scrollContainer.appendChild(this.renderTimeCells());\n }\n scrollContainer.appendChild(this.renderContentArea());\n workTd.appendChild(scrollContainer);\n EventHandler.add(scrollContainer, 'scroll', this.onAdaptiveScroll, this);\n EventHandler.add(scrollContainer, Browser.touchMoveEvent, this.onAdaptiveMove, this);\n tr.appendChild(workTd);\n }\n else {\n workTd.appendChild(this.renderContentArea());\n if (this.parent.activeViewOptions.timeScale.enable) {\n var timesTd = createElement('td');\n timesTd.appendChild(this.renderTimeCells());\n tr.appendChild(timesTd);\n }\n tr.appendChild(workTd);\n }\n this.element.querySelector('tbody').appendChild(tr);\n };\n VerticalView.prototype.renderLeftIndent = function () {\n var wrap = createElement('div', { className: cls.LEFT_INDENT_WRAP_CLASS });\n var tbl = this.createTableLayout();\n var trEle = createElement('tr');\n var rowCount = this.colLevels.length;\n var nth;\n for (var i = 0; i < rowCount; i++) {\n var ntr_1 = trEle.cloneNode();\n var data_1 = { className: [(this.colLevels[i][0] && this.colLevels[i][0].className[0])], type: 'emptyCells' };\n if (this.parent.activeViewOptions.showWeekNumber && data_1.className.indexOf(cls.HEADER_CELLS_CLASS) !== -1) {\n data_1.className.push(cls.WEEK_NUMBER_CLASS);\n var weekNo = this.parent.getWeekNumberContent(this.renderDates);\n data_1.template = [createElement('span', {\n innerHTML: '' + weekNo,\n attrs: { title: this.parent.localeObj.getConstant('week') + ' ' + weekNo }\n })];\n }\n nth = this.createTd(data_1);\n this.parent.renderHeaderIndentTemplate(data_1, nth);\n ntr_1.appendChild(nth);\n tbl.querySelector('tbody').appendChild(ntr_1);\n }\n var ntr = trEle.cloneNode();\n var appointmentExpandCollapse = createElement('div', {\n attrs: {\n 'tabindex': '0', 'role': 'list',\n title: this.parent.localeObj.getConstant('expandAllDaySection'), 'aria-disabled': 'false', 'aria-label': 'Expand section'\n },\n className: cls.ALLDAY_APPOINTMENT_SECTION_CLASS + ' ' + cls.APPOINTMENT_ROW_EXPAND_CLASS + ' ' +\n cls.ICON + ' ' + cls.DISABLE_CLASS\n });\n var data = { className: [cls.ALLDAY_CELLS_CLASS], type: 'emptyCells' };\n nth = this.createTd(data);\n nth.appendChild(appointmentExpandCollapse);\n this.parent.renderHeaderIndentTemplate(data, nth);\n ntr.appendChild(nth);\n tbl.querySelector('tbody').appendChild(ntr);\n wrap.appendChild(tbl);\n return wrap;\n };\n VerticalView.prototype.renderDatesHeader = function () {\n var container = createElement('div', { className: cls.DATE_HEADER_CONTAINER_CLASS });\n var wrap = createElement('div', { className: cls.DATE_HEADER_WRAP_CLASS });\n container.appendChild(wrap);\n var tbl = this.createTableLayout();\n var trEle = createElement('tr');\n var rowCount = this.colLevels.length;\n var lastLevel = this.colLevels[rowCount - 1];\n for (var i = 0; i < rowCount; i++) {\n var ntr = trEle.cloneNode();\n addClass([ntr], cls.HEADER_ROW_CLASS);\n var level = this.colLevels[i];\n for (var j = 0; j < level.length; j++) {\n ntr.appendChild(this.createTd(level[j]));\n }\n tbl.querySelector('tbody').appendChild(ntr);\n }\n this.createAllDayRow(tbl, lastLevel);\n this.createColGroup(tbl, lastLevel);\n wrap.appendChild(tbl);\n return container;\n };\n VerticalView.prototype.createAllDayRow = function (table, tdData) {\n var ntr = createElement('tr');\n addClass([ntr], cls.ALLDAY_ROW_CLASS);\n for (var j = 0; j < tdData.length; j++) {\n var td = extend({}, tdData[j]);\n td.className = [cls.ALLDAY_CELLS_CLASS];\n td.type = 'alldayCells';\n var ntd = this.createTd(td);\n ntd.setAttribute('data-date', td.date.getTime().toString());\n if (!isNullOrUndefined(td.groupIndex)) {\n ntd.setAttribute('data-group-index', '' + td.groupIndex);\n }\n else if (this.parent.uiStateValues.isGroupAdaptive) {\n ntd.setAttribute('data-group-index', '' + this.parent.uiStateValues.groupIndex);\n }\n this.wireCellEvents(ntd);\n ntr.appendChild(ntd);\n }\n table.querySelector('tbody').appendChild(ntr);\n var thead = createElement('thead');\n thead.appendChild(this.createEventWrapper('allDay'));\n prepend([thead], table);\n };\n VerticalView.prototype.createTd = function (td) {\n var tdEle = createElement('td');\n this.addAttributes(td, tdEle);\n if (td.date && td.type) {\n var ele = this.getTdContent(td.date, td.type, td.groupIndex);\n if (ele && ele.length) {\n append(ele, tdEle);\n }\n }\n if (!this.parent.isMinMaxDate(util.resetTime(new Date('' + td.date)))) {\n addClass([tdEle], cls.DISABLE_DATES);\n }\n if (td.type === 'resourceHeader') {\n this.setResourceHeaderContent(tdEle, td);\n }\n if (td.type === 'dateHeader' && td.className.indexOf(cls.HEADER_CELLS_CLASS) >= 0) {\n tdEle.setAttribute('data-date', td.date.getTime().toString());\n if (!isNullOrUndefined(td.groupIndex)) {\n tdEle.setAttribute('data-group-index', '' + td.groupIndex);\n }\n this.wireMouseEvents(tdEle);\n }\n var args = { elementType: td.type, element: tdEle, date: td.date, groupIndex: td.groupIndex };\n this.parent.trigger(event.renderCell, args);\n return tdEle;\n };\n VerticalView.prototype.wireCellEvents = function (element) {\n EventHandler.add(element, 'mousedown', this.parent.workCellAction.cellMouseDown, this.parent.workCellAction);\n this.wireMouseEvents(element);\n };\n VerticalView.prototype.wireMouseEvents = function (element) {\n EventHandler.add(element, 'click', this.parent.workCellAction.cellClick, this.parent.workCellAction);\n if (!this.parent.isAdaptive) {\n EventHandler.add(element, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);\n }\n };\n VerticalView.prototype.renderTimeCells = function () {\n var _this = this;\n var wrap = createElement('div', { className: cls.TIME_CELLS_WRAP_CLASS });\n var tbl = this.createTableLayout();\n var trEle = createElement('tr');\n var handler = function (r) {\n r.type = r.first ? 'majorSlot' : 'minorSlot';\n r.className = r.last ? [cls.TIME_CELLS_CLASS, cls.TIME_SLOT_CLASS] : [cls.TIME_SLOT_CLASS];\n var ntr = trEle.cloneNode();\n var data = { date: r.date, type: r.type, className: r.className };\n ntr.appendChild(_this.createTd(data));\n tbl.querySelector('tbody').appendChild(ntr);\n return r;\n };\n this.getTimeSlotRows(handler);\n wrap.appendChild(tbl);\n return wrap;\n };\n VerticalView.prototype.renderContentArea = function () {\n var wrap = createElement('div', { className: cls.CONTENT_WRAP_CLASS });\n var tbl = this.createTableLayout(cls.CONTENT_TABLE_CLASS);\n this.addAutoHeightClass(tbl);\n this.renderContentTable(tbl);\n this.createColGroup(tbl, this.colLevels.slice(-1)[0]);\n wrap.appendChild(tbl);\n this.wireCellEvents(tbl.querySelector('tbody'));\n EventHandler.add(wrap, 'scroll', this.onContentScroll, this);\n EventHandler.add(wrap, Browser.touchMoveEvent, this.onAdaptiveMove, this);\n return wrap;\n };\n VerticalView.prototype.renderContentTable = function (table) {\n var _this = this;\n var tr = createElement('tr', { attrs: { role: 'row' } });\n var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });\n var tbody = table.querySelector('tbody');\n var handler = function (r) {\n var ntr = tr.cloneNode();\n for (var _i = 0, _a = _this.colLevels[_this.colLevels.length - 1]; _i < _a.length; _i++) {\n var tdData = _a[_i];\n var ntd = _this.createContentTd(tdData, r, td);\n ntr.appendChild(ntd);\n }\n tbody.appendChild(ntr);\n return r;\n };\n this.getTimeSlotRows(handler);\n this.renderContentTableHeader(table);\n };\n VerticalView.prototype.createContentTd = function (tdData, r, td) {\n var ntd = td.cloneNode();\n if (tdData.colSpan) {\n ntd.setAttribute('colspan', tdData.colSpan.toString());\n }\n var clsName = this.getContentTdClass(r);\n var cellDate = util.resetTime(tdData.date);\n if (!this.parent.isMinMaxDate(cellDate)) {\n clsName.push(cls.DISABLE_DATES);\n }\n util.setTime(cellDate, util.getDateInMs(r.date));\n var type = 'workCells';\n if (tdData.className.indexOf(cls.RESOURCE_PARENT_CLASS) !== -1) {\n clsName.push(cls.RESOURCE_GROUP_CELLS_CLASS);\n type = 'resourceGroupCells';\n }\n if (this.parent.workHours.highlight && ((this.parent.activeViewOptions.timeScale.enable &&\n this.isWorkHour(cellDate, tdData.startHour, tdData.endHour, tdData.workDays)) ||\n (!this.parent.activeViewOptions.timeScale.enable && this.isWorkDay(cellDate, tdData.workDays)))) {\n clsName.push(cls.WORK_HOURS_CLASS);\n }\n addClass([ntd], clsName);\n if (this.parent.activeViewOptions.cellTemplate) {\n var args_1 = { date: cellDate, type: type, groupIndex: tdData.groupIndex };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.cellTemplateName;\n var templateId = scheduleId + viewName + 'cellTemplate';\n var tooltipTemplate = [].slice.call(this.parent.getCellTemplate()(args_1, this.parent, 'cellTemplate', templateId, false));\n append(tooltipTemplate, ntd);\n }\n ntd.setAttribute('data-date', cellDate.getTime().toString());\n if (!isNullOrUndefined(tdData.groupIndex) || this.parent.uiStateValues.isGroupAdaptive) {\n var groupIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex :\n tdData.groupIndex;\n ntd.setAttribute('data-group-index', '' + groupIndex);\n }\n var args = { elementType: type, element: ntd, date: cellDate, groupIndex: tdData.groupIndex };\n this.parent.trigger(event.renderCell, args);\n return ntd;\n };\n VerticalView.prototype.getContentTdClass = function (r) {\n return r.last ? [cls.WORK_CELLS_CLASS] : [cls.WORK_CELLS_CLASS, cls.ALTERNATE_CELLS_CLASS];\n };\n VerticalView.prototype.renderContentTableHeader = function (table) {\n var thead = createElement('thead');\n thead.appendChild(this.createEventWrapper());\n if (this.parent.activeViewOptions.timeScale.enable) {\n thead.appendChild(this.createEventWrapper('timeIndicator'));\n }\n prepend([thead], table);\n };\n VerticalView.prototype.createEventWrapper = function (type) {\n if (type === void 0) { type = ''; }\n var tr = createElement('tr');\n var levels = this.colLevels.slice(-1)[0];\n for (var i = 0, len = levels.length; i < len; i++) {\n var col = levels[i];\n var appointmentWrap = createElement('td', {\n className: (type === 'allDay') ? cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS : (type === 'timeIndicator') ?\n cls.TIMELINE_WRAPPER_CLASS : cls.DAY_WRAPPER_CLASS, attrs: { 'data-date': col.date.getTime().toString() }\n });\n if (!isNullOrUndefined(col.groupIndex)) {\n appointmentWrap.setAttribute('data-group-index', col.groupIndex.toString());\n }\n if (type === '') {\n var innerWrapper = createElement('div', {\n id: cls.APPOINTMENT_WRAPPER_CLASS + '-' + i.toString(),\n className: cls.APPOINTMENT_WRAPPER_CLASS\n });\n appointmentWrap.appendChild(innerWrapper);\n }\n tr.appendChild(appointmentWrap);\n }\n return tr;\n };\n VerticalView.prototype.getScrollableElement = function () {\n if (this.parent.isAdaptive && !this.isTimelineView()) {\n return this.element.querySelector('.' + cls.SCROLL_CONTAINER_CLASS);\n }\n else {\n return this.getContentAreaElement();\n }\n };\n VerticalView.prototype.getLeftPanelElement = function () {\n return this.element.querySelector('.' + cls.TIME_CELLS_WRAP_CLASS);\n };\n VerticalView.prototype.getEndDateFromStartDate = function (start) {\n var msMajorInterval = this.parent.activeViewOptions.timeScale.interval * util.MS_PER_MINUTE;\n var msInterval = msMajorInterval / this.parent.activeViewOptions.timeScale.slotCount;\n var end = new Date(start.getTime());\n end.setMilliseconds(end.getMilliseconds() + msInterval);\n return end;\n };\n VerticalView.prototype.getTimeSlotRows = function (handler) {\n var rows = [];\n var startHour = this.getStartHour();\n var endHour = this.getEndHour();\n var msMajorInterval = this.parent.activeViewOptions.timeScale.interval * util.MS_PER_MINUTE;\n var msInterval = msMajorInterval / this.parent.activeViewOptions.timeScale.slotCount;\n var length = Math.round(util.MS_PER_DAY / msInterval);\n var msStartHour = startHour.getTime();\n var msEndHour = endHour.getTime();\n if (msStartHour !== msEndHour) {\n length = (Math.abs(msEndHour - msStartHour) / msInterval) - ((new Date(msEndHour).getTimezoneOffset()\n - new Date(msStartHour).getTimezoneOffset()) / (60 / this.parent.activeViewOptions.timeScale.slotCount));\n }\n if (!this.parent.activeViewOptions.timeScale.enable) {\n length = 1;\n }\n var start = this.parent.getStartEndTime(this.parent.workHours.start);\n var end = this.parent.getStartEndTime(this.parent.workHours.end);\n for (var i = 0; i < length; i++) {\n var dt = new Date(msStartHour + (msInterval * i));\n if (util.isDaylightSavingTime(dt) || new Date(msStartHour).getTimezoneOffset() !== dt.getTimezoneOffset()) {\n var timeOffset = new Date(msStartHour).getTimezoneOffset() - dt.getTimezoneOffset();\n dt = new Date(dt.getTime() - (1000 * 60 * timeOffset));\n }\n var majorTickDivider = i % (msMajorInterval / msInterval);\n var row = {\n date: new Date('' + dt),\n startHour: start,\n endHour: end,\n first: (majorTickDivider === 0),\n middle: (majorTickDivider < this.parent.activeViewOptions.timeScale.slotCount - 1),\n last: (majorTickDivider === this.parent.activeViewOptions.timeScale.slotCount - 1),\n type: ''\n };\n if (handler) {\n handler(row);\n }\n rows.push(row);\n }\n return rows;\n };\n VerticalView.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.clearCurrentTimeIndicatorTimer();\n if (this.element) {\n if (this.appointment) {\n this.appointment.destroy();\n this.appointment = null;\n }\n var contentScrollableEle = this.getContentAreaElement();\n if (contentScrollableEle) {\n EventHandler.remove(contentScrollableEle, 'scroll', this.onContentScroll);\n EventHandler.remove(contentScrollableEle, Browser.touchMoveEvent, this.onAdaptiveMove);\n }\n if (this.parent.resourceBase) {\n this.parent.resourceBase.destroy();\n }\n if (this.parent.scheduleTouchModule) {\n this.parent.scheduleTouchModule.resetValues();\n }\n _super.prototype.destroy.call(this);\n }\n };\n return VerticalView;\n}(ViewBase));\nexport { VerticalView };\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\n\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\n\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result; // Check for the difference of less than month\n\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference); // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign; // Check for cases of one full calendar month\n\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n\n result = sign * (difference - Number(isLastMonthNotFull));\n } // Prevent negative zero\n\n\n return result === 0 ? 0 : result;\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getSwitchBaseUtilityClass(slot) {\n return generateUtilityClass('PrivateSwitchBase', slot);\n}\nconst switchBaseClasses = generateUtilityClasses('PrivateSwitchBase', ['root', 'checked', 'disabled', 'input', 'edgeStart', 'edgeEnd']);\nexport default switchBaseClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"checked\", \"checkedIcon\", \"className\", \"defaultChecked\", \"disabled\", \"disableFocusRipple\", \"edge\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"readOnly\", \"required\", \"tabIndex\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport useControlled from '../utils/useControlled';\nimport useFormControl from '../FormControl/useFormControl';\nimport ButtonBase from '../ButtonBase';\nimport { getSwitchBaseUtilityClass } from './switchBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n checked,\n disabled,\n edge\n } = ownerState;\n const slots = {\n root: ['root', checked && 'checked', disabled && 'disabled', edge && `edge${capitalize(edge)}`],\n input: ['input']\n };\n return composeClasses(slots, getSwitchBaseUtilityClass, classes);\n};\n\nconst SwitchBaseRoot = styled(ButtonBase, {\n skipSx: true\n})(({\n ownerState\n}) => _extends({\n padding: 9,\n borderRadius: '50%'\n}, ownerState.edge === 'start' && {\n marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n marginRight: ownerState.size === 'small' ? -3 : -12\n}));\nconst SwitchBaseInput = styled('input', {\n skipSx: true\n})({\n cursor: 'inherit',\n position: 'absolute',\n opacity: 0,\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n zIndex: 1\n});\n/**\n * @ignore - internal component.\n */\n\nconst SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) {\n const {\n autoFocus,\n checked: checkedProp,\n checkedIcon,\n className,\n defaultChecked,\n disabled: disabledProp,\n disableFocusRipple = false,\n edge = false,\n icon,\n id,\n inputProps,\n inputRef,\n name,\n onBlur,\n onChange,\n onFocus,\n readOnly,\n required,\n tabIndex,\n type,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const [checked, setCheckedState] = useControlled({\n controlled: checkedProp,\n default: Boolean(defaultChecked),\n name: 'SwitchBase',\n state: 'checked'\n });\n const muiFormControl = useFormControl();\n\n const handleFocus = event => {\n if (onFocus) {\n onFocus(event);\n }\n\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n }\n };\n\n const handleBlur = event => {\n if (onBlur) {\n onBlur(event);\n }\n\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n }\n };\n\n const handleInputChange = event => {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n\n const newChecked = event.target.checked;\n setCheckedState(newChecked);\n\n if (onChange) {\n // TODO v6: remove the second argument.\n onChange(event, newChecked);\n }\n };\n\n let disabled = disabledProp;\n\n if (muiFormControl) {\n if (typeof disabled === 'undefined') {\n disabled = muiFormControl.disabled;\n }\n }\n\n const hasLabelFor = type === 'checkbox' || type === 'radio';\n\n const ownerState = _extends({}, props, {\n checked,\n disabled,\n disableFocusRipple,\n edge\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SwitchBaseRoot, _extends({\n component: \"span\",\n className: clsx(classes.root, className),\n centerRipple: true,\n focusRipple: !disableFocusRipple,\n disabled: disabled,\n tabIndex: null,\n role: undefined,\n onFocus: handleFocus,\n onBlur: handleBlur,\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [/*#__PURE__*/_jsx(SwitchBaseInput, _extends({\n autoFocus: autoFocus,\n checked: checkedProp,\n defaultChecked: defaultChecked,\n className: classes.input,\n disabled: disabled,\n id: hasLabelFor && id,\n name: name,\n onChange: handleInputChange,\n readOnly: readOnly,\n ref: inputRef,\n required: required,\n ownerState: ownerState,\n tabIndex: tabIndex,\n type: type\n }, type === 'checkbox' && value === undefined ? {} : {\n value\n }, inputProps)), checked ? checkedIcon : icon]\n }));\n}); // NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\n\nprocess.env.NODE_ENV !== \"production\" ? SwitchBase.propTypes = {\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n\n /**\n * The icon to display when the component is checked.\n */\n checkedIcon: PropTypes.node.isRequired,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * @ignore\n */\n defaultChecked: PropTypes.bool,\n\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n\n /**\n * If given, uses a negative margin to counteract the padding on one\n * side (this is often helpful for aligning the left or right\n * side of the icon with content above or below, without ruining the border\n * size and shape).\n * @default false\n */\n edge: PropTypes.oneOf(['end', 'start', false]),\n\n /**\n * The icon to display when the component is unchecked.\n */\n icon: PropTypes.node.isRequired,\n\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n\n /*\n * @ignore\n */\n name: PropTypes.string,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * Callback fired when the state is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.object,\n\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * The input component prop `type`.\n */\n type: PropTypes.string.isRequired,\n\n /**\n * The value of the component.\n */\n value: PropTypes.any\n} : void 0;\nexport default SwitchBase;","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\n\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\n\n\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference); // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"onClick\", \"onTouchStart\"];\nimport * as React from 'react';\nimport Grow from '@mui/material/Grow';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport TrapFocus from '@mui/material/Unstable_TrapFocus';\nimport { useForkRef, useEventCallback, ownerDocument } from '@mui/material/utils';\nimport { styled } from '@mui/material/styles';\nimport { PickersActionBar } from '../../PickersActionBar';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersPopperRoot = styled(Popper)(({\n theme\n}) => ({\n zIndex: theme.zIndex.modal\n}));\nconst PickersPopperPaper = styled(Paper)(({\n ownerState\n}) => _extends({\n transformOrigin: 'top center',\n outline: 0\n}, ownerState.placement === 'top' && {\n transformOrigin: 'bottom center'\n}));\n\nfunction clickedRootScrollbar(event, doc) {\n return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n\n/**\n * Based on @mui/material/ClickAwayListener without the customization.\n * We can probably strip away even more since children won't be portaled.\n * @param {boolean} active Only listen to clicks when the popper is opened.\n * @param {(event: MouseEvent | TouchEvent) => void} onClickAway The callback to call when clicking outside the popper.\n * @returns {Array} The ref and event handler to listen to the outside clicks.\n */\nfunction useClickAwayListener(active, onClickAway) {\n const movedRef = React.useRef(false);\n const syntheticEventRef = React.useRef(false);\n const nodeRef = React.useRef(null);\n const activatedRef = React.useRef(false);\n React.useEffect(() => {\n if (!active) {\n return undefined;\n } // Ensure that this hook is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n\n\n function armClickAwayListener() {\n activatedRef.current = true;\n }\n\n document.addEventListener('mousedown', armClickAwayListener, true);\n document.addEventListener('touchstart', armClickAwayListener, true);\n return () => {\n document.removeEventListener('mousedown', armClickAwayListener, true);\n document.removeEventListener('touchstart', armClickAwayListener, true);\n activatedRef.current = false;\n };\n }, [active]); // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviors like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n\n const handleClickAway = useEventCallback(event => {\n if (!activatedRef.current) {\n return;\n } // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n\n\n const insideReactTree = syntheticEventRef.current;\n syntheticEventRef.current = false;\n const doc = ownerDocument(nodeRef.current); // 1. IE11 support, which trigger the handleClickAway even after the unbind\n // 2. The child might render null.\n // 3. Behave like a blur listener.\n\n if (!nodeRef.current || // is a TouchEvent?\n 'clientX' in event && clickedRootScrollbar(event, doc)) {\n return;\n } // Do not act if user performed touchmove\n\n\n if (movedRef.current) {\n movedRef.current = false;\n return;\n }\n\n let insideDOM; // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n\n if (event.composedPath) {\n insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n } else {\n insideDOM = !doc.documentElement.contains(event.target) || nodeRef.current.contains(event.target);\n }\n\n if (!insideDOM && !insideReactTree) {\n onClickAway(event);\n }\n }); // Keep track of mouse/touch events that bubbled up through the portal.\n\n const handleSynthetic = () => {\n syntheticEventRef.current = true;\n };\n\n React.useEffect(() => {\n if (active) {\n const doc = ownerDocument(nodeRef.current);\n\n const handleTouchMove = () => {\n movedRef.current = true;\n };\n\n doc.addEventListener('touchstart', handleClickAway);\n doc.addEventListener('touchmove', handleTouchMove);\n return () => {\n doc.removeEventListener('touchstart', handleClickAway);\n doc.removeEventListener('touchmove', handleTouchMove);\n };\n }\n\n return undefined;\n }, [active, handleClickAway]);\n React.useEffect(() => {\n // TODO This behavior is not tested automatically\n // It's unclear whether this is due to different update semantics in test (batched in act() vs discrete on click).\n // Or if this is a timing related issues due to different Transition components\n // Once we get rid of all the manual scheduling (e.g. setTimeout(update, 0)) we can revisit this code+test.\n if (active) {\n const doc = ownerDocument(nodeRef.current);\n doc.addEventListener('click', handleClickAway);\n return () => {\n doc.removeEventListener('click', handleClickAway); // cleanup `handleClickAway`\n\n syntheticEventRef.current = false;\n };\n }\n\n return undefined;\n }, [active, handleClickAway]);\n return [nodeRef, handleSynthetic, handleSynthetic];\n}\n\nexport const PickersPopper = props => {\n var _components$ActionBar;\n\n const {\n anchorEl,\n children,\n containerRef = null,\n onBlur,\n onClose,\n onClear,\n onAccept,\n onCancel,\n onSetToday,\n open,\n PopperProps,\n role,\n TransitionComponent = Grow,\n TrapFocusProps,\n PaperProps = {},\n components,\n componentsProps\n } = props;\n React.useEffect(() => {\n function handleKeyDown(nativeEvent) {\n // IE11, Edge (prior to using Bink?) use 'Esc'\n if (open && (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc')) {\n onClose();\n }\n }\n\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [onClose, open]);\n const lastFocusedElementRef = React.useRef(null);\n React.useEffect(() => {\n if (role === 'tooltip') {\n return;\n }\n\n if (open) {\n lastFocusedElementRef.current = document.activeElement;\n } else if (lastFocusedElementRef.current && lastFocusedElementRef.current instanceof HTMLElement) {\n lastFocusedElementRef.current.focus();\n }\n }, [open, role]);\n const [clickAwayRef, onPaperClick, onPaperTouchStart] = useClickAwayListener(open, onBlur != null ? onBlur : onClose);\n const paperRef = React.useRef(null);\n const handleRef = useForkRef(paperRef, containerRef);\n const handlePaperRef = useForkRef(handleRef, clickAwayRef);\n const ownerState = props;\n\n const {\n onClick: onPaperClickProp,\n onTouchStart: onPaperTouchStartProp\n } = PaperProps,\n otherPaperProps = _objectWithoutPropertiesLoose(PaperProps, _excluded);\n\n const handleKeyDown = event => {\n if (event.key === 'Escape') {\n // stop the propagation to avoid closing parent modal\n event.stopPropagation();\n onClose();\n }\n };\n\n const ActionBar = (_components$ActionBar = components == null ? void 0 : components.ActionBar) != null ? _components$ActionBar : PickersActionBar;\n return /*#__PURE__*/_jsx(PickersPopperRoot, _extends({\n transition: true,\n role: role,\n open: open,\n anchorEl: anchorEl,\n ownerState: ownerState,\n onKeyDown: handleKeyDown\n }, PopperProps, {\n children: ({\n TransitionProps,\n placement\n }) => /*#__PURE__*/_jsx(TrapFocus, _extends({\n open: open,\n disableAutoFocus: true,\n disableEnforceFocus: role === 'tooltip',\n isEnabled: () => true\n }, TrapFocusProps, {\n children: /*#__PURE__*/_jsx(TransitionComponent, _extends({}, TransitionProps, {\n children: /*#__PURE__*/_jsxs(PickersPopperPaper, _extends({\n tabIndex: -1,\n elevation: 8,\n ref: handlePaperRef,\n onClick: event => {\n onPaperClick(event);\n\n if (onPaperClickProp) {\n onPaperClickProp(event);\n }\n },\n onTouchStart: event => {\n onPaperTouchStart(event);\n\n if (onPaperTouchStartProp) {\n onPaperTouchStartProp(event);\n }\n },\n ownerState: _extends({}, ownerState, {\n placement\n })\n }, otherPaperProps, {\n children: [children, /*#__PURE__*/_jsx(ActionBar, _extends({\n onAccept: onAccept,\n onClear: onClear,\n onCancel: onCancel,\n onSetToday: onSetToday,\n actions: []\n }, componentsProps == null ? void 0 : componentsProps.actionBar))]\n }))\n }))\n }))\n }));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useForkRef } from '@mui/material/utils';\nimport { WrapperVariantContext } from './WrapperVariantContext';\nimport { PickersPopper } from '../PickersPopper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function DesktopWrapper(props) {\n const {\n children,\n DateInputProps,\n KeyboardDateInputComponent,\n onClear,\n onDismiss,\n onCancel,\n onAccept,\n onSetToday,\n open,\n PopperProps,\n PaperProps,\n TransitionComponent,\n components,\n componentsProps\n } = props;\n const ownInputRef = React.useRef(null);\n const inputRef = useForkRef(DateInputProps.inputRef, ownInputRef);\n return /*#__PURE__*/_jsxs(WrapperVariantContext.Provider, {\n value: \"desktop\",\n children: [/*#__PURE__*/_jsx(KeyboardDateInputComponent, _extends({}, DateInputProps, {\n inputRef: inputRef\n })), /*#__PURE__*/_jsx(PickersPopper, {\n role: \"dialog\",\n open: open,\n anchorEl: ownInputRef.current,\n TransitionComponent: TransitionComponent,\n PopperProps: PopperProps,\n PaperProps: PaperProps,\n onClose: onDismiss,\n onCancel: onCancel,\n onClear: onClear,\n onAccept: onAccept,\n onSetToday: onSetToday,\n components: components,\n componentsProps: componentsProps,\n children: children\n })]\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport DialogContent from '@mui/material/DialogContent';\nimport Dialog, { dialogClasses } from '@mui/material/Dialog';\nimport { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH } from '../constants/dimensions';\nimport { PickersActionBar } from '../../PickersActionBar';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersModalDialogRoot = styled(Dialog)({\n [`& .${dialogClasses.container}`]: {\n outline: 0\n },\n [`& .${dialogClasses.paper}`]: {\n outline: 0,\n minWidth: DIALOG_WIDTH\n }\n});\nconst PickersModalDialogContent = styled(DialogContent)({\n '&:first-of-type': {\n padding: 0\n }\n});\nexport const PickersModalDialog = props => {\n var _components$ActionBar;\n\n const {\n children,\n DialogProps = {},\n onAccept,\n onClear,\n onDismiss,\n onCancel,\n onSetToday,\n open,\n components,\n componentsProps\n } = props;\n const ActionBar = (_components$ActionBar = components == null ? void 0 : components.ActionBar) != null ? _components$ActionBar : PickersActionBar;\n return /*#__PURE__*/_jsxs(PickersModalDialogRoot, _extends({\n open: open,\n onClose: onDismiss\n }, DialogProps, {\n children: [/*#__PURE__*/_jsx(PickersModalDialogContent, {\n children: children\n }), /*#__PURE__*/_jsx(ActionBar, _extends({\n onAccept: onAccept,\n onClear: onClear,\n onCancel: onCancel,\n onSetToday: onSetToday,\n actions: ['cancel', 'accept']\n }, componentsProps == null ? void 0 : componentsProps.actionBar))]\n }));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"DateInputProps\", \"DialogProps\", \"onAccept\", \"onClear\", \"onDismiss\", \"onCancel\", \"onSetToday\", \"open\", \"PureDateInputComponent\", \"components\", \"componentsProps\"];\nimport * as React from 'react';\nimport { WrapperVariantContext } from './WrapperVariantContext';\nimport { PickersModalDialog } from '../PickersModalDialog';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function MobileWrapper(props) {\n const {\n children,\n DateInputProps,\n DialogProps,\n onAccept,\n onClear,\n onDismiss,\n onCancel,\n onSetToday,\n open,\n PureDateInputComponent,\n components,\n componentsProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/_jsxs(WrapperVariantContext.Provider, {\n value: \"mobile\",\n children: [/*#__PURE__*/_jsx(PureDateInputComponent, _extends({\n components: components\n }, other, DateInputProps)), /*#__PURE__*/_jsx(PickersModalDialog, {\n DialogProps: DialogProps,\n onAccept: onAccept,\n onClear: onClear,\n onDismiss: onDismiss,\n onCancel: onCancel,\n onSetToday: onSetToday,\n open: open,\n components: components,\n componentsProps: componentsProps,\n children: children\n })]\n });\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 * 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","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"\n}), 'Warning');\n\nexports.default = _default;","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\nvar pairSplitRegExp = /; */;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(pairSplitRegExp);\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var eq_idx = pair.indexOf('=');\n\n // skip things that don't look like key=value\n if (eq_idx < 0) {\n continue;\n }\n\n var key = pair.substr(0, eq_idx).trim()\n var val = pair.substr(++eq_idx, pair.length).trim();\n\n // quoted values\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n }\n\n // only assign once\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n if (isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","import React from 'react';\nexport default React.createContext(null);","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z\"\n}), 'CalendarToday');\n\nexports.default = _default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar react_1 = tslib_1.__importStar(require(\"react\"));\nvar SlideDownContent = (function (_super) {\n tslib_1.__extends(SlideDownContent, _super);\n function SlideDownContent(props) {\n var _this = _super.call(this, props) || this;\n _this.outerRef = null;\n _this.handleRef = function (ref) {\n _this.outerRef = ref;\n if (_this.props.forwardedRef) {\n if (typeof _this.props.forwardedRef === 'function') {\n _this.props.forwardedRef(ref);\n }\n else if (typeof _this.props.forwardedRef === 'object') {\n var forwardedRef = _this.props.forwardedRef;\n forwardedRef.current = ref;\n }\n else {\n throw new Error(\"Invalid forwardedRef \" + _this.props.forwardedRef);\n }\n }\n };\n _this.handleTransitionEnd = function (evt) {\n if ((evt.target === _this.outerRef) && (evt.propertyName === 'height')) {\n if (_this.state.childrenLeaving) {\n _this.setState({ children: null, childrenLeaving: false }, function () { return _this.endTransition(); });\n }\n else {\n _this.endTransition();\n }\n }\n };\n _this.state = {\n children: props.children,\n childrenLeaving: false\n };\n return _this;\n }\n SlideDownContent.prototype.componentDidMount = function () {\n if (this.outerRef) {\n if (this.props.closed || !this.props.children) {\n this.outerRef.classList.add('closed');\n this.outerRef.style.height = '0px';\n }\n else if (this.props.transitionOnAppear) {\n this.startTransition('0px');\n }\n else {\n this.outerRef.style.height = 'auto';\n }\n }\n };\n SlideDownContent.prototype.getSnapshotBeforeUpdate = function () {\n return this.outerRef ? this.outerRef.getBoundingClientRect().height + 'px' : null;\n };\n SlideDownContent.getDerivedStateFromProps = function (props, state) {\n if (props.children) {\n return {\n children: props.children,\n childrenLeaving: false\n };\n }\n else if (state.children) {\n return {\n children: state.children,\n childrenLeaving: true\n };\n }\n else {\n return null;\n }\n };\n SlideDownContent.prototype.componentDidUpdate = function (_prevProps, _prevState, snapshot) {\n if (this.outerRef) {\n this.startTransition(snapshot);\n }\n };\n SlideDownContent.prototype.startTransition = function (prevHeight) {\n var endHeight = '0px';\n if (!this.props.closed && !this.state.childrenLeaving && this.state.children) {\n this.outerRef.classList.remove('closed');\n this.outerRef.style.height = 'auto';\n endHeight = getComputedStyle(this.outerRef).height;\n }\n if (parseFloat(endHeight).toFixed(2) !== parseFloat(prevHeight).toFixed(2)) {\n this.outerRef.classList.add('transitioning');\n this.outerRef.style.height = prevHeight;\n this.outerRef.offsetHeight;\n this.outerRef.style.transitionProperty = 'height';\n this.outerRef.style.height = endHeight;\n }\n };\n SlideDownContent.prototype.endTransition = function () {\n this.outerRef.classList.remove('transitioning');\n this.outerRef.style.transitionProperty = 'none';\n this.outerRef.style.height = this.props.closed ? '0px' : 'auto';\n if (this.props.closed || !this.state.children) {\n this.outerRef.classList.add('closed');\n }\n };\n SlideDownContent.prototype.render = function () {\n var _a = this.props, _b = _a.as, as = _b === void 0 ? 'div' : _b, children = _a.children, className = _a.className, closed = _a.closed, transitionOnAppear = _a.transitionOnAppear, forwardedRef = _a.forwardedRef, rest = tslib_1.__rest(_a, [\"as\", \"children\", \"className\", \"closed\", \"transitionOnAppear\", \"forwardedRef\"]);\n var containerClassName = className ? 'react-slidedown ' + className : 'react-slidedown';\n return react_1.default.createElement(as, tslib_1.__assign({ ref: this.handleRef, className: containerClassName, onTransitionEnd: this.handleTransitionEnd }, rest), this.state.children);\n };\n SlideDownContent.defaultProps = {\n transitionOnAppear: true,\n closed: false\n };\n return SlideDownContent;\n}(react_1.Component));\nexports.SlideDown = react_1.forwardRef(function (props, ref) { return (react_1.default.createElement(SlideDownContent, tslib_1.__assign({}, props, { forwardedRef: ref }))); });\nexports.default = exports.SlideDown;\n//# sourceMappingURL=slidedown.js.map","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HijriParser, isNullOrUndefined } from '@syncfusion/ej2-base';\n/** @private */\nvar Gregorian = /** @class */ (function () {\n function Gregorian() {\n }\n Gregorian.prototype.firstDateOfMonth = function (date) {\n return new Date(date.getFullYear(), date.getMonth());\n };\n Gregorian.prototype.lastDateOfMonth = function (dt) {\n return new Date(dt.getFullYear(), dt.getMonth() + 1, 0);\n };\n Gregorian.prototype.isMonthStart = function (date) {\n return (date.getDate() === 1);\n };\n Gregorian.prototype.getLeapYearDaysCount = function () {\n return 366;\n };\n Gregorian.prototype.getYearDaysCount = function (date, interval) {\n return ((date.getFullYear() + interval) % 4 === 0) ? 366 : 365;\n };\n Gregorian.prototype.getDate = function (date) {\n return date.getDate();\n };\n Gregorian.prototype.getMonth = function (date) {\n return (date.getMonth() + 1);\n };\n Gregorian.prototype.getFullYear = function (date) {\n return date.getFullYear();\n };\n Gregorian.prototype.getYearLastDate = function (date, interval) {\n return new Date(date.getFullYear() + interval, 0, 0);\n };\n Gregorian.prototype.getMonthDaysCount = function (date) {\n return this.lastDateOfMonth(date).getDate();\n };\n Gregorian.prototype.getMonthStartDate = function (date) {\n return new Date(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes());\n };\n Gregorian.prototype.getMonthEndDate = function (date) {\n date.setDate(1);\n return new Date(date.setMonth(date.getMonth() + 1));\n };\n Gregorian.prototype.getExpectedDays = function (date, days) {\n return days;\n };\n Gregorian.prototype.setDate = function (dateObj, date) {\n dateObj.setDate(date);\n };\n Gregorian.prototype.setValidDate = function (date, interval, startDate, monthValue, beginDate) {\n if (!isNullOrUndefined(beginDate)) {\n date.setMonth((beginDate ? monthValue : date.getMonth()) + interval);\n }\n else {\n date.setMonth(date.getMonth() + interval, startDate);\n }\n };\n Gregorian.prototype.setMonth = function (date, interval, startDate) {\n date.setFullYear(date.getFullYear());\n date.setMonth(interval - 1);\n date.setDate(startDate);\n };\n Gregorian.prototype.addYears = function (date, interval) {\n date.setFullYear(date.getFullYear() + interval);\n };\n Gregorian.prototype.isSameMonth = function (date1, date2) {\n return (date1.getMonth() === date2.getMonth());\n };\n Gregorian.prototype.checkMonth = function (date, months) {\n return (months.indexOf(date.getMonth() + 1) === -1);\n };\n Gregorian.prototype.compareMonth = function (date1, date2) {\n return (date1.getMonth() > date2.getMonth());\n };\n Gregorian.prototype.isSameYear = function (date1, date2) {\n return (date1.getFullYear() === date2.getFullYear());\n };\n Gregorian.prototype.isLastMonth = function (date) {\n return (date.getMonth() === 11);\n };\n Gregorian.prototype.isLeapYear = function (year, interval) {\n return ((year + interval) % 4 === 0);\n };\n return Gregorian;\n}());\nexport { Gregorian };\n/** @private */\nvar Islamic = /** @class */ (function () {\n function Islamic() {\n }\n Islamic.prototype.firstDateOfMonth = function (date) {\n var hDate = this.getHijriDate(date);\n var gDate = HijriParser.toGregorian(hDate.year, hDate.month, 1);\n return gDate;\n };\n Islamic.prototype.lastDateOfMonth = function (date) {\n var hDate = this.getHijriDate(date);\n var daysInMonth = this.getDaysInMonth(hDate.month, hDate.year);\n var gDate = HijriParser.toGregorian(hDate.year, hDate.month, daysInMonth);\n var finalGDate = new Date(gDate.getTime());\n finalGDate = new Date(finalGDate.setDate(finalGDate.getDate() + 1));\n var finalHDate = this.getHijriDate(finalGDate);\n if (hDate.month === finalHDate.month) {\n return finalGDate;\n }\n finalHDate = this.getHijriDate(gDate);\n if (hDate.month === finalHDate.month) {\n return gDate;\n }\n return new Date(gDate.setDate(gDate.getDate() - 1));\n };\n Islamic.prototype.isMonthStart = function (date) {\n var hijriDate = this.getHijriDate(date);\n return (hijriDate.date === 1);\n };\n Islamic.prototype.getLeapYearDaysCount = function () {\n return 355;\n };\n Islamic.prototype.getYearDaysCount = function (date, interval) {\n var hDate = this.getHijriDate(date);\n return this.isLeapYear(hDate.year, interval) ? 355 : 354;\n };\n Islamic.prototype.getDate = function (date) {\n var hijriDate = this.getHijriDate(date);\n return hijriDate.date;\n };\n Islamic.prototype.getMonth = function (date) {\n var hDate = this.getHijriDate(date);\n return hDate.month;\n };\n Islamic.prototype.getFullYear = function (date) {\n var hDate = this.getHijriDate(date);\n return hDate.year;\n };\n Islamic.prototype.getYearLastDate = function (date, interval) {\n var hDate = this.getHijriDate(date);\n var gDate = HijriParser.toGregorian(hDate.year + interval, 1, 0);\n return gDate;\n };\n Islamic.prototype.getMonthDaysCount = function (date) {\n var maxDate = this.lastDateOfMonth(date);\n var hijriDate = this.getHijriDate(maxDate);\n return hijriDate.date;\n };\n Islamic.prototype.getMonthStartDate = function (date) {\n var firstDate = this.firstDateOfMonth(date);\n return new Date(firstDate.getFullYear(), firstDate.getMonth(), firstDate.getDate(), date.getHours(), date.getMinutes());\n };\n Islamic.prototype.getMonthEndDate = function (date) {\n var lastDate = this.lastDateOfMonth(date);\n lastDate.setDate(lastDate.getDate() + 1);\n return new Date(lastDate.setMonth(lastDate.getMonth()));\n };\n Islamic.prototype.getExpectedDays = function (date, days) {\n var hDate = this.getHijriDate(date);\n var day = [];\n for (var i = 0; i < days.length; i++) {\n var gDate = HijriParser.toGregorian(hDate.year, hDate.month, days[i]);\n day.push(gDate.getDate());\n }\n return day;\n };\n Islamic.prototype.setDate = function (dateObj, date) {\n var hDate = this.getHijriDate(dateObj);\n var gDate = HijriParser.toGregorian(hDate.year, hDate.month, date);\n this.updateDateObj(dateObj, gDate);\n };\n Islamic.prototype.setValidDate = function (date, interval, startDate, monthValue, beginDate) {\n var firstDate = (!isNullOrUndefined(beginDate)) ? this.firstDateOfMonth(beginDate) : date;\n var hDate = this.getHijriDate(firstDate);\n var gDate = HijriParser.toGregorian(hDate.year, hDate.month + interval, startDate);\n this.updateDateObj(date, gDate);\n };\n Islamic.prototype.setMonth = function (date, interval, startDate) {\n var hDate = this.getHijriDate(date);\n var gDate = HijriParser.toGregorian(hDate.year, interval, startDate);\n this.updateDateObj(date, gDate);\n };\n Islamic.prototype.addYears = function (date, interval, monthValue) {\n var hDate = this.getHijriDate(date);\n var gDate = HijriParser.toGregorian(hDate.year + interval, monthValue, 1);\n this.updateDateObj(date, gDate);\n };\n Islamic.prototype.isSameMonth = function (date1, date2) {\n var currentHijri = this.getHijriDate(date1);\n var tempHijri = this.getHijriDate(date2);\n return (currentHijri.month === tempHijri.month);\n };\n Islamic.prototype.checkMonth = function (date, months) {\n var hDate = this.getHijriDate(date);\n return (months.indexOf(hDate.month) === -1);\n };\n Islamic.prototype.compareMonth = function (date1, date2) {\n var hDate = this.getHijriDate(date1);\n var hDate1 = this.getHijriDate(date2);\n return (hDate.month > hDate1.month);\n };\n Islamic.prototype.isSameYear = function (date1, date2) {\n var hDate = this.getHijriDate(date1);\n var hDate1 = this.getHijriDate(date2);\n return (hDate.year === hDate1.year);\n };\n Islamic.prototype.isLastMonth = function (date) {\n var hDate = this.getHijriDate(date);\n return (hDate.month === 12);\n };\n Islamic.prototype.updateDateObj = function (date, gDate) {\n date.setFullYear(gDate.getFullYear(), gDate.getMonth(), gDate.getDate());\n };\n Islamic.prototype.isLeapYear = function (year, interval) {\n return (14 + 11 * (year + interval)) % 30 < 11;\n };\n Islamic.prototype.getDaysInMonth = function (month, year) {\n var length = 0;\n length = 29 + ((month + 1) % 2);\n if (month === 11 && this.isLeapYear(year, 0)) {\n length++;\n }\n return length;\n };\n Islamic.prototype.getHijriDate = function (date) {\n return HijriParser.getHijriDate(date);\n };\n return Islamic;\n}());\nexport { Islamic };\n","import merge from './merge';\n\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n\n return acc;\n }, {});\n };\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\n\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\n\nfunction getBorder(value) {\n if (typeof value !== 'number') {\n return value;\n }\n\n return `${value}px solid`;\n}\n\nexport const border = style({\n prop: 'border',\n themeKey: 'borders',\n transform: getBorder\n});\nexport const borderTop = style({\n prop: 'borderTop',\n themeKey: 'borders',\n transform: getBorder\n});\nexport const borderRight = style({\n prop: 'borderRight',\n themeKey: 'borders',\n transform: getBorder\n});\nexport const borderBottom = style({\n prop: 'borderBottom',\n themeKey: 'borders',\n transform: getBorder\n});\nexport const borderLeft = style({\n prop: 'borderLeft',\n themeKey: 'borders',\n transform: getBorder\n});\nexport const borderColor = style({\n prop: 'borderColor',\n themeKey: 'palette'\n});\nexport const borderTopColor = style({\n prop: 'borderTopColor',\n themeKey: 'palette'\n});\nexport const borderRightColor = style({\n prop: 'borderRightColor',\n themeKey: 'palette'\n});\nexport const borderBottomColor = style({\n prop: 'borderBottomColor',\n themeKey: 'palette'\n});\nexport const borderLeftColor = style({\n prop: 'borderLeftColor',\n themeKey: 'palette'\n});\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius);\nexport default borders;","import style from './style';\nimport compose from './compose';\nexport const displayPrint = style({\n prop: 'displayPrint',\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n});\nexport const displayRaw = style({\n prop: 'display'\n});\nexport const overflow = style({\n prop: 'overflow'\n});\nexport const textOverflow = style({\n prop: 'textOverflow'\n});\nexport const visibility = style({\n prop: 'visibility'\n});\nexport const whiteSpace = style({\n prop: 'whiteSpace'\n});\nexport default compose(displayPrint, displayRaw, overflow, textOverflow, visibility, whiteSpace);","import style from './style';\nimport compose from './compose';\nexport const flexBasis = style({\n prop: 'flexBasis'\n});\nexport const flexDirection = style({\n prop: 'flexDirection'\n});\nexport const flexWrap = style({\n prop: 'flexWrap'\n});\nexport const justifyContent = style({\n prop: 'justifyContent'\n});\nexport const alignItems = style({\n prop: 'alignItems'\n});\nexport const alignContent = style({\n prop: 'alignContent'\n});\nexport const order = style({\n prop: 'order'\n});\nexport const flex = style({\n prop: 'flex'\n});\nexport const flexGrow = style({\n prop: 'flexGrow'\n});\nexport const flexShrink = style({\n prop: 'flexShrink'\n});\nexport const alignSelf = style({\n prop: 'alignSelf'\n});\nexport const justifyItems = style({\n prop: 'justifyItems'\n});\nexport const justifySelf = style({\n prop: 'justifySelf'\n});\nconst flexbox = compose(flexBasis, flexDirection, flexWrap, justifyContent, alignItems, alignContent, order, flex, flexGrow, flexShrink, alignSelf, justifyItems, justifySelf);\nexport default flexbox;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport const position = style({\n prop: 'position'\n});\nexport const zIndex = style({\n prop: 'zIndex',\n themeKey: 'zIndex'\n});\nexport const top = style({\n prop: 'top'\n});\nexport const right = style({\n prop: 'right'\n});\nexport const bottom = style({\n prop: 'bottom'\n});\nexport const left = style({\n prop: 'left'\n});\nexport default compose(position, zIndex, top, right, bottom, left);","import style from './style';\nimport compose from './compose';\nexport const color = style({\n prop: 'color',\n themeKey: 'palette'\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette'\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette'\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nconst boxShadow = style({\n prop: 'boxShadow',\n themeKey: 'shadows'\n});\nexport default boxShadow;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\n\nfunction transform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\n\nexport const width = style({\n prop: 'width',\n transform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme$breakpoi, _props$theme$breakpoi2;\n\n const breakpoint = ((_props$theme = props.theme) == null ? void 0 : (_props$theme$breakpoi = _props$theme.breakpoints) == null ? void 0 : (_props$theme$breakpoi2 = _props$theme$breakpoi.values) == null ? void 0 : _props$theme$breakpoi2[propValue]) || breakpointsValues[propValue];\n return {\n maxWidth: breakpoint || transform(propValue)\n };\n };\n\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform\n});\nexport const height = style({\n prop: 'height',\n transform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import style from './style';\nimport compose from './compose';\nexport const fontFamily = style({\n prop: 'fontFamily',\n themeKey: 'typography'\n});\nexport const fontSize = style({\n prop: 'fontSize',\n themeKey: 'typography'\n});\nexport const fontStyle = style({\n prop: 'fontStyle',\n themeKey: 'typography'\n});\nexport const fontWeight = style({\n prop: 'fontWeight',\n themeKey: 'typography'\n});\nexport const letterSpacing = style({\n prop: 'letterSpacing'\n});\nexport const lineHeight = style({\n prop: 'lineHeight'\n});\nexport const textAlign = style({\n prop: 'textAlign'\n});\nexport const typographyVariant = style({\n prop: 'typography',\n cssProperty: false,\n themeKey: 'typography'\n});\nconst typography = compose(typographyVariant, fontFamily, fontSize, fontStyle, fontWeight, letterSpacing, lineHeight, textAlign);\nexport default typography;","import borders from './borders';\nimport display from './display';\nimport flexbox from './flexbox';\nimport grid from './grid';\nimport positions from './positions';\nimport palette from './palette';\nimport shadows from './shadows';\nimport sizing from './sizing';\nimport spacing from './spacing';\nimport typography from './typography';\nconst filterPropsMapping = {\n borders: borders.filterProps,\n display: display.filterProps,\n flexbox: flexbox.filterProps,\n grid: grid.filterProps,\n positions: positions.filterProps,\n palette: palette.filterProps,\n shadows: shadows.filterProps,\n sizing: sizing.filterProps,\n spacing: spacing.filterProps,\n typography: typography.filterProps\n};\nconst styleFunctionMapping = {\n borders,\n display,\n flexbox,\n grid,\n positions,\n palette,\n shadows,\n sizing,\n spacing,\n typography\n};\nexport const propToStyleFunction = Object.keys(filterPropsMapping).reduce((acc, styleFnName) => {\n filterPropsMapping[styleFnName].forEach(propName => {\n acc[propName] = styleFunctionMapping[styleFnName];\n });\n return acc;\n}, {});\n\nfunction getThemeValue(prop, value, theme) {\n const inputProps = {\n [prop]: value,\n theme\n };\n const styleFunction = propToStyleFunction[prop];\n return styleFunction ? styleFunction(inputProps) : {\n [prop]: value\n };\n}\n\nexport default getThemeValue;","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\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","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 && _this.keyType !== \"left\") {\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 || _this.keyType === \"left\") {\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 if (_this.popupWrapper.style.position === 'fixed' && _this.top > 0) {\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + scrollY + 'px';\n }\n else {\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n }\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 / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n newItem.iconCss = item.iconCss || newItem.iconCss;\n newItem.text = item.text || newItem.text;\n newItem.url = item.url || newItem.url;\n newItem.separator = item.separator || newItem.separator;\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 * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui-org/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n var byteCount = 0;\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\nexport { Encoding };\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nexport function validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function isPlainObject(item) {\n return item !== null && typeof item === 'object' && item.constructor === Object;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n\n if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else {\n output[key] = source[key];\n }\n });\n }\n\n return output;\n}","import * as React from 'react';\nimport useEnhancedEffect from './useEnhancedEffect';\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n */\n\nexport default function useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useCallback((...args) => // @ts-expect-error hide `this`\n // tslint:disable-next-line:ban-comma-operator\n (0, ref.current)(...args), []);\n}","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\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","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","export { default } from './StylesProvider';\nexport * from './StylesProvider';","export { default } from './InputBase';\nexport { default as inputBaseClasses } from './inputBaseClasses';\nexport * from './inputBaseClasses';","export { default } from './Popover';\nexport { default as popoverClasses } from './popoverClasses';\nexport * from './popoverClasses';","export { default } from './Grow';","'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","var weakMemoize = function weakMemoize(func) {\n // $FlowFixMe flow doesn't include all non-primitive types as allowed for weakmaps\n var cache = new WeakMap();\n return function (arg) {\n if (cache.has(arg)) {\n // $FlowFixMe\n return cache.get(arg);\n }\n\n var ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n};\n\nexport default weakMemoize;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n}), 'Search');\n\nexports.default = _default;","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default isPropValid;\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}","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { useContext, createElement, Fragment } from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar Noop = function Noop() {\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n if (process.env.NODE_ENV !== 'production') {\n if (tag === undefined) {\n throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n }\n }\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n styles.push.apply(styles, args);\n } else {\n if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[0][0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[i], args[0][i]);\n }\n } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var finalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n var rules = insertStyles(cache, serialized, typeof finalTag === 'string');\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(finalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if ( // $FlowFixMe\n finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n newProps.ref = ref;\n var ele = /*#__PURE__*/createElement(finalTag, newProps);\n var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n\n\n return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n return 'NO_COMPONENT_SELECTOR';\n } // $FlowFixMe: coerce undefined to string\n\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n return createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n })).apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport default createStyled;\n","import '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n // $FlowFixMe: we can ignore this because its exposed type is defined by the CreateStyled type\n newStyled[tagName] = newStyled(tagName);\n});\n\nexport default newStyled;\n","/** @license MUI v5.2.0\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 */\nimport emStyled from '@emotion/styled';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n\n return stylesFactory(...styles);\n };\n }\n\n return stylesFactory;\n}\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';","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}","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))\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) {\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 + ')$')\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.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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7zm-4 6h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z\"\n}), 'ListOutlined');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z\"\n}), 'CreditCardOutlined');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16 9v10H8V9h8m-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7z\"\n}), 'DeleteOutlined');\n\nexports.default = _default;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"component\", \"elevation\", \"square\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useTheme from '../styles/useTheme';\nimport { getPaperUtilityClass } from './paperClasses'; // Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst getOverlayAlpha = elevation => {\n let alphaValue;\n\n if (elevation < 1) {\n alphaValue = 5.11916 * elevation ** 2;\n } else {\n alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n }\n\n return (alphaValue / 100).toFixed(2);\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n square,\n elevation,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, !square && 'rounded', variant === 'elevation' && `elevation${elevation}`]\n };\n return composeClasses(slots, getPaperUtilityClass, classes);\n};\n\nconst PaperRoot = styled('div', {\n name: 'MuiPaper',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles[`elevation${ownerState.elevation}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n transition: theme.transitions.create('box-shadow')\n}, !ownerState.square && {\n borderRadius: theme.shape.borderRadius\n}, ownerState.variant === 'outlined' && {\n border: `1px solid ${theme.palette.divider}`\n}, ownerState.variant === 'elevation' && _extends({\n boxShadow: theme.shadows[ownerState.elevation]\n}, theme.palette.mode === 'dark' && {\n backgroundImage: `linear-gradient(${alpha('#fff', getOverlayAlpha(ownerState.elevation))}, ${alpha('#fff', getOverlayAlpha(ownerState.elevation))})`\n})));\nconst Paper = /*#__PURE__*/React.forwardRef(function Paper(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPaper'\n });\n\n const {\n className,\n component = 'div',\n elevation = 1,\n square = false,\n variant = 'elevation'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n component,\n elevation,\n square,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const theme = useTheme();\n\n if (theme.shadows[elevation] === undefined) {\n console.error([`MUI: The elevation provided is not available in the theme.`, `Please make sure that \\`theme.shadows[${elevation}]\\` is defined.`].join('\\n'));\n }\n }\n\n return /*#__PURE__*/_jsx(PaperRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Paper.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * Shadow depth, corresponds to `dp` in the spec.\n * It accepts values between 0 and 24 inclusive.\n * @default 1\n */\n elevation: chainPropTypes(integerPropType, props => {\n const {\n elevation,\n variant\n } = props;\n\n if (elevation > 0 && variant === 'outlined') {\n return new Error(`MUI: Combining \\`elevation={${elevation}}\\` with \\`variant=\"${variant}\"\\` has no effect. Either use \\`elevation={0}\\` or use a different \\`variant\\`.`);\n }\n\n return null;\n }),\n\n /**\n * If `true`, rounded corners are disabled.\n * @default false\n */\n square: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The variant to use.\n * @default 'elevation'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['elevation', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Paper;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"\n}), 'KeyboardArrowRight');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"\n}), 'KeyboardArrowLeft');","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nexport function isRef(obj) {\n return (// eslint-disable-next-line no-prototype-builtins\n obj !== null && _typeof(obj) === 'object' && Object.prototype.hasOwnProperty.call(obj, 'current')\n );\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M20 9H4v2h16V9zM4 15h16v-2H4v2z\"\n}), 'DragHandle');\n\nexports.default = _default;","import jsep from 'jsep';\n\n/**\n * Evaluation code from JSEP project, under MIT License.\n * Copyright (c) 2013 Stephen Oney, http://jsep.from.so/\n */\n\n// Default operator precedence from https://github.com/EricSmekens/jsep/blob/master/src/jsep.js#L55\nconst DEFAULT_PRECEDENCE = {\n '||': 1,\n '&&': 2,\n '|': 3,\n '^': 4,\n '&': 5,\n '==': 6,\n '!=': 6,\n '===': 6,\n '!==': 6,\n '<': 7,\n '>': 7,\n '<=': 7,\n '>=': 7,\n '<<': 8,\n '>>': 8,\n '>>>': 8,\n '+': 9,\n '-': 9,\n '*': 10,\n '/': 10,\n '%': 10\n};\n\nconst binops = {\n '||': function (a, b) { return a || b; },\n '&&': function (a, b) { return a && b; },\n '|': function (a, b) { return a | b; },\n '^': function (a, b) { return a ^ b; },\n '&': function (a, b) { return a & b; },\n '==': function (a, b) { return a == b; }, // jshint ignore:line\n '!=': function (a, b) { return a != b; }, // jshint ignore:line\n '===': function (a, b) { return a === b; },\n '!==': function (a, b) { return a !== b; },\n '<': function (a, b) { return a < b; },\n '>': function (a, b) { return a > b; },\n '<=': function (a, b) { return a <= b; },\n '>=': function (a, b) { return a >= b; },\n '<<': function (a, b) { return a << b; },\n '>>': function (a, b) { return a >> b; },\n '>>>': function (a, b) { return a >>> b; },\n '+': function (a, b) { return a + b; },\n '-': function (a, b) { return a - b; },\n '*': function (a, b) { return a * b; },\n '/': function (a, b) { return a / b; },\n '%': function (a, b) { return a % b; }\n};\n\nconst unops = {\n '-': function (a) { return -a; },\n '+': function (a) { return +a; },\n '~': function (a) { return ~a; },\n '!': function (a) { return !a; },\n};\n\ndeclare type operand = number | string;\ndeclare type unaryCallback = (a: operand) => operand;\ndeclare type binaryCallback = (a: operand, b: operand) => operand;\n\ntype AnyExpression = jsep.ArrayExpression\n | jsep.BinaryExpression\n | jsep.MemberExpression\n | jsep.CallExpression\n | jsep.ConditionalExpression\n | jsep.Identifier\n | jsep.Literal\n | jsep.LogicalExpression\n | jsep.ThisExpression\n | jsep.UnaryExpression;\n\nfunction evaluateArray(list, context) {\n return list.map(function (v) { return evaluate(v, context); });\n}\n\nasync function evaluateArrayAsync(list, context) {\n const res = await Promise.all(list.map((v) => evalAsync(v, context)));\n return res;\n}\n\nfunction evaluateMember(node: jsep.MemberExpression, context: object) {\n const object = evaluate(node.object, context);\n let key: string;\n if (node.computed) {\n key = evaluate(node.property, context);\n } else {\n key = (node.property as jsep.Identifier).name;\n }\n if (/^__proto__|prototype|constructor$/.test(key)) {\n throw Error(`Access to member \"${key}\" disallowed.`);\n }\n return [object, object[key]];\n}\n\nasync function evaluateMemberAsync(node: jsep.MemberExpression, context: object) {\n const object = await evalAsync(node.object, context);\n let key: string;\n if (node.computed) {\n key = await evalAsync(node.property, context);\n } else {\n key = (node.property as jsep.Identifier).name;\n }\n if (/^__proto__|prototype|constructor$/.test(key)) {\n throw Error(`Access to member \"${key}\" disallowed.`);\n }\n return [object, object[key]];\n}\n\nfunction evaluate(_node: jsep.Expression, context: object) {\n\n const node = _node as AnyExpression;\n\n switch (node.type) {\n\n case 'ArrayExpression':\n return evaluateArray(node.elements, context);\n\n case 'BinaryExpression':\n return binops[node.operator](evaluate(node.left, context), evaluate(node.right, context));\n\n case 'CallExpression':\n let caller, fn, assign;\n if (node.callee.type === 'MemberExpression') {\n assign = evaluateMember(node.callee as jsep.MemberExpression, context);\n caller = assign[0];\n fn = assign[1];\n } else {\n fn = evaluate(node.callee, context);\n }\n if (typeof fn !== 'function') { return undefined; }\n return fn.apply(caller, evaluateArray(node.arguments, context));\n\n case 'ConditionalExpression':\n return evaluate(node.test, context)\n ? evaluate(node.consequent, context)\n : evaluate(node.alternate, context);\n\n case 'Identifier':\n return context[node.name];\n\n case 'Literal':\n return node.value;\n\n case 'LogicalExpression':\n if (node.operator === '||') {\n return evaluate(node.left, context) || evaluate(node.right, context);\n } else if (node.operator === '&&') {\n return evaluate(node.left, context) && evaluate(node.right, context);\n }\n return binops[node.operator](evaluate(node.left, context), evaluate(node.right, context));\n\n case 'MemberExpression':\n return evaluateMember(node, context)[1];\n\n case 'ThisExpression':\n return context;\n\n case 'UnaryExpression':\n return unops[node.operator](evaluate(node.argument, context));\n\n default:\n return undefined;\n }\n\n}\n\nasync function evalAsync(_node: jsep.Expression, context: object) {\n\n const node = _node as AnyExpression;\n\n // Brackets used for some case blocks here, to avoid edge cases related to variable hoisting.\n // See: https://stackoverflow.com/questions/57759348/const-and-let-variable-shadowing-in-a-switch-statement\n switch (node.type) {\n\n case 'ArrayExpression':\n return await evaluateArrayAsync(node.elements, context);\n\n case 'BinaryExpression': {\n const [left, right] = await Promise.all([\n evalAsync(node.left, context),\n evalAsync(node.right, context)\n ]);\n return binops[node.operator](left, right);\n }\n\n case 'CallExpression': {\n let caller, fn, assign;\n if (node.callee.type === 'MemberExpression') {\n assign = await evaluateMemberAsync(node.callee as jsep.MemberExpression, context);\n caller = assign[0];\n fn = assign[1];\n } else {\n fn = await evalAsync(node.callee, context);\n }\n if (typeof fn !== 'function') {\n return undefined;\n }\n return await fn.apply(\n caller,\n await evaluateArrayAsync(node.arguments, context)\n );\n }\n\n case 'ConditionalExpression':\n return (await evalAsync(node.test, context))\n ? await evalAsync(node.consequent, context)\n : await evalAsync(node.alternate, context);\n\n case 'Identifier':\n return context[node.name];\n\n case 'Literal':\n return node.value;\n\n case 'LogicalExpression': {\n if (node.operator === '||') {\n return (\n (await evalAsync(node.left, context)) ||\n (await evalAsync(node.right, context))\n );\n } else if (node.operator === '&&') {\n return (\n (await evalAsync(node.left, context)) &&\n (await evalAsync(node.right, context))\n );\n }\n\n const [left, right] = await Promise.all([\n evalAsync(node.left, context),\n evalAsync(node.right, context)\n ]);\n\n return binops[node.operator](left, right);\n }\n\n case 'MemberExpression':\n return (await evaluateMemberAsync(node, context))[1];\n\n case 'ThisExpression':\n return context;\n\n case 'UnaryExpression':\n return unops[node.operator](await evalAsync(node.argument, context));\n\n default:\n return undefined;\n }\n}\n\nfunction compile(expression: string | jsep.Expression): (context: object) => any {\n return evaluate.bind(null, jsep(expression));\n}\n\nfunction compileAsync(expression: string | jsep.Expression): (context: object) => Promise {\n return evalAsync.bind(null, jsep(expression));\n}\n\n// Added functions to inject Custom Unary Operators (and override existing ones)\nfunction addUnaryOp(operator: string, _function: unaryCallback): void {\n jsep.addUnaryOp(operator);\n unops[operator] = _function;\n}\n\n// Added functions to inject Custom Binary Operators (and override existing ones)\nfunction addBinaryOp(operator: string, precedence_or_fn: number | binaryCallback, _function: binaryCallback): void {\n if (_function) {\n jsep.addBinaryOp(operator, precedence_or_fn as number);\n binops[operator] = _function;\n } else {\n jsep.addBinaryOp(operator, DEFAULT_PRECEDENCE[operator] || 1);\n binops[operator] = precedence_or_fn;\n }\n}\n\nexport {\n jsep as parse,\n evaluate as eval,\n evalAsync,\n compile,\n compileAsync,\n addUnaryOp,\n addBinaryOp\n};\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"element\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/material/utils';\n/** Credit: https://github.com/reach/reach-ui/blob/86a046f54d53b6420e392b3fa56dd991d9d4e458/packages/descendants/README.md\n * Modified slightly to suit our purposes.\n */\n// To replace with .findIndex() once we stop IE11 support.\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction binaryFindElement(array, element) {\n let start = 0;\n let end = array.length - 1;\n\n while (start <= end) {\n const middle = Math.floor((start + end) / 2);\n\n if (array[middle].element === element) {\n return middle;\n } // eslint-disable-next-line no-bitwise\n\n\n if (array[middle].element.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING) {\n end = middle - 1;\n } else {\n start = middle + 1;\n }\n }\n\n return start;\n}\n\nconst DescendantContext = /*#__PURE__*/React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n DescendantContext.displayName = 'DescendantContext';\n}\n\nfunction usePrevious(value) {\n const ref = React.useRef(null);\n React.useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nconst noop = () => {};\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation.\n */\n\n\nexport function useDescendant(descendant) {\n const [, forceUpdate] = React.useState();\n const {\n registerDescendant = noop,\n unregisterDescendant = noop,\n descendants = [],\n parentId = null\n } = React.useContext(DescendantContext); // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants\n // so that everything is up-to-date before the user interacts with a\n // collection.\n\n const index = findIndex(descendants, item => item.element === descendant.element);\n const previousDescendants = usePrevious(descendants); // We also need to re-register descendants any time ANY of the other\n // descendants have changed. My brain was melting when I wrote this and it\n // feels a little off, but checking in render and using the result in the\n // effect's dependency array works well enough.\n\n const someDescendantsHaveChanged = descendants.some((newDescendant, position) => {\n return previousDescendants && previousDescendants[position] && previousDescendants[position].element !== newDescendant.element;\n }); // Prevent any flashing\n\n useEnhancedEffect(() => {\n if (descendant.element) {\n registerDescendant(_extends({}, descendant, {\n index\n }));\n return () => {\n unregisterDescendant(descendant.element);\n };\n }\n\n forceUpdate({});\n return undefined;\n }, [registerDescendant, unregisterDescendant, index, someDescendantsHaveChanged, descendant]);\n return {\n parentId,\n index\n };\n}\nexport function DescendantProvider(props) {\n const {\n children,\n id\n } = props;\n const [items, set] = React.useState([]);\n const registerDescendant = React.useCallback(_ref => {\n let {\n element\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n set(oldItems => {\n let newItems;\n\n if (oldItems.length === 0) {\n // If there are no items, register at index 0 and bail.\n return [_extends({}, other, {\n element,\n index: 0\n })];\n }\n\n const index = binaryFindElement(oldItems, element);\n\n if (oldItems[index] && oldItems[index].element === element) {\n // If the element is already registered, just use the same array\n newItems = oldItems;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n const newItem = _extends({}, other, {\n element,\n index\n }); // If an index is not found we will push the element to the end.\n\n\n newItems = oldItems.slice();\n newItems.splice(index, 0, newItem);\n }\n\n newItems.forEach((item, position) => {\n item.index = position;\n });\n return newItems;\n });\n }, []);\n const unregisterDescendant = React.useCallback(element => {\n set(oldItems => oldItems.filter(item => element !== item.element));\n }, []);\n const value = React.useMemo(() => ({\n descendants: items,\n registerDescendant,\n unregisterDescendant,\n parentId: id\n }), [items, registerDescendant, unregisterDescendant, id]);\n return /*#__PURE__*/_jsx(DescendantContext.Provider, {\n value: value,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DescendantProvider.propTypes = {\n children: PropTypes.node,\n id: PropTypes.string\n} : void 0;","/**\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","/**\n * Time zone\n */\nvar Timezone = /** @class */ (function () {\n function Timezone() {\n this.timezoneData = [];\n this.timezoneData = this.getTimezoneData();\n }\n Timezone.prototype.offset = function (date, timezone) {\n var localOffset = date.getTimezoneOffset();\n try {\n var convertedDate = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n if (!isNaN(convertedDate.getTime())) {\n return ((date.getTime() - convertedDate.getTime()) / 60000) + localOffset;\n }\n return 0;\n }\n catch (error) {\n return 0;\n }\n };\n Timezone.prototype.convert = function (date, fromOffset, toOffset) {\n if (typeof fromOffset === 'string') {\n fromOffset = this.offset(date, fromOffset);\n }\n if (typeof toOffset === 'string') {\n toOffset = this.offset(date, toOffset);\n }\n var fromLocalOffset = date.getTimezoneOffset();\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n var toLocalOffset = date.getTimezoneOffset();\n return new Date(date.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n };\n Timezone.prototype.add = function (date, timezone) {\n return this.convert(date, date.getTimezoneOffset(), timezone);\n };\n Timezone.prototype.remove = function (date, timezone) {\n return this.convert(date, timezone, date.getTimezoneOffset());\n };\n Timezone.prototype.removeLocalOffset = function (date) {\n return new Date(date.getTime() - (date.getTimezoneOffset() * 60000));\n };\n Timezone.prototype.getLocalTimezoneName = function () {\n return window.Intl ? Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC' : 'UTC';\n };\n Timezone.prototype.getTimezoneData = function () {\n return timezoneData;\n };\n return Timezone;\n}());\nexport { Timezone };\nexport var timezoneData = [\n { Value: 'Pacific/Niue', Text: '(UTC-11:00) Niue' },\n { Value: 'Pacific/Pago_Pago', Text: '(UTC-11:00) Pago Pago' },\n { Value: 'Pacific/Honolulu', Text: '(UTC-10:00) Hawaii Time' },\n { Value: 'Pacific/Rarotonga', Text: '(UTC-10:00) Rarotonga' },\n { Value: 'Pacific/Tahiti', Text: '(UTC-10:00) Tahiti' },\n { Value: 'Pacific/Marquesas', Text: '(UTC-09:30) Marquesas' },\n { Value: 'America/Anchorage', Text: '(UTC-09:00) Alaska Time' },\n { Value: 'Pacific/Gambier', Text: '(UTC-09:00) Gambier' },\n { Value: 'America/Los_Angeles', Text: '(UTC-08:00) Pacific Time' },\n { Value: 'America/Tijuana', Text: '(UTC-08:00) Pacific Time - Tijuana' },\n { Value: 'America/Vancouver', Text: '(UTC-08:00) Pacific Time - Vancouver' },\n { Value: 'America/Whitehorse', Text: '(UTC-08:00) Pacific Time - Whitehorse' },\n { Value: 'Pacific/Pitcairn', Text: '(UTC-08:00) Pitcairn' },\n { Value: 'America/Denver', Text: '(UTC-07:00) Mountain Time' },\n { Value: 'America/Phoenix', Text: '(UTC-07:00) Mountain Time - Arizona' },\n { Value: 'America/Mazatlan', Text: '(UTC-07:00) Mountain Time - Chihuahua, Mazatlan' },\n { Value: 'America/Dawson_Creek', Text: '(UTC-07:00) Mountain Time - Dawson Creek' },\n { Value: 'America/Edmonton', Text: '(UTC-07:00) Mountain Time - Edmonton' },\n { Value: 'America/Hermosillo', Text: '(UTC-07:00) Mountain Time - Hermosillo' },\n { Value: 'America/Yellowknife', Text: '(UTC-07:00) Mountain Time - Yellowknife' },\n { Value: 'America/Belize', Text: '(UTC-06:00) Belize' },\n { Value: 'America/Chicago', Text: '(UTC-06:00) Central Time' },\n { Value: 'America/Mexico_City', Text: '(UTC-06:00) Central Time - Mexico City' },\n { Value: 'America/Regina', Text: '(UTC-06:00) Central Time - Regina' },\n { Value: 'America/Tegucigalpa', Text: '(UTC-06:00) Central Time - Tegucigalpa' },\n { Value: 'America/Winnipeg', Text: '(UTC-06:00) Central Time - Winnipeg' },\n { Value: 'America/Costa_Rica', Text: '(UTC-06:00) Costa Rica' },\n { Value: 'America/El_Salvador', Text: '(UTC-06:00) El Salvador' },\n { Value: 'Pacific/Galapagos', Text: '(UTC-06:00) Galapagos' },\n { Value: 'America/Guatemala', Text: '(UTC-06:00) Guatemala' },\n { Value: 'America/Managua', Text: '(UTC-06:00) Managua' },\n { Value: 'America/Cancun', Text: '(UTC-05:00) America Cancun' },\n { Value: 'America/Bogota', Text: '(UTC-05:00) Bogota' },\n { Value: 'Pacific/Easter', Text: '(UTC-05:00) Easter Island' },\n { Value: 'America/New_York', Text: '(UTC-05:00) Eastern Time' },\n { Value: 'America/Iqaluit', Text: '(UTC-05:00) Eastern Time - Iqaluit' },\n { Value: 'America/Toronto', Text: '(UTC-05:00) Eastern Time - Toronto' },\n { Value: 'America/Guayaquil', Text: '(UTC-05:00) Guayaquil' },\n { Value: 'America/Havana', Text: '(UTC-05:00) Havana' },\n { Value: 'America/Jamaica', Text: '(UTC-05:00) Jamaica' },\n { Value: 'America/Lima', Text: '(UTC-05:00) Lima' },\n { Value: 'America/Nassau', Text: '(UTC-05:00) Nassau' },\n { Value: 'America/Panama', Text: '(UTC-05:00) Panama' },\n { Value: 'America/Port-au-Prince', Text: '(UTC-05:00) Port-au-Prince' },\n { Value: 'America/Rio_Branco', Text: '(UTC-05:00) Rio Branco' },\n { Value: 'America/Halifax', Text: '(UTC-04:00) Atlantic Time - Halifax' },\n { Value: 'America/Barbados', Text: '(UTC-04:00) Barbados' },\n { Value: 'Atlantic/Bermuda', Text: '(UTC-04:00) Bermuda' },\n { Value: 'America/Boa_Vista', Text: '(UTC-04:00) Boa Vista' },\n { Value: 'America/Caracas', Text: '(UTC-04:00) Caracas' },\n { Value: 'America/Curacao', Text: '(UTC-04:00) Curacao' },\n { Value: 'America/Grand_Turk', Text: '(UTC-04:00) Grand Turk' },\n { Value: 'America/Guyana', Text: '(UTC-04:00) Guyana' },\n { Value: 'America/La_Paz', Text: '(UTC-04:00) La Paz' },\n { Value: 'America/Manaus', Text: '(UTC-04:00) Manaus' },\n { Value: 'America/Martinique', Text: '(UTC-04:00) Martinique' },\n { Value: 'America/Port_of_Spain', Text: '(UTC-04:00) Port of Spain' },\n { Value: 'America/Porto_Velho', Text: '(UTC-04:00) Porto Velho' },\n { Value: 'America/Puerto_Rico', Text: '(UTC-04:00) Puerto Rico' },\n { Value: 'America/Santo_Domingo', Text: '(UTC-04:00) Santo Domingo' },\n { Value: 'America/Thule', Text: '(UTC-04:00) Thule' },\n { Value: 'America/St_Johns', Text: '(UTC-03:30) Newfoundland Time - St. Johns' },\n { Value: 'America/Araguaina', Text: '(UTC-03:00) Araguaina' },\n { Value: 'America/Asuncion', Text: '(UTC-03:00) Asuncion' },\n { Value: 'America/Belem', Text: '(UTC-03:00) Belem' },\n { Value: 'America/Argentina/Buenos_Aires', Text: '(UTC-03:00) Buenos Aires' },\n { Value: 'America/Campo_Grande', Text: '(UTC-03:00) Campo Grande' },\n { Value: 'America/Cayenne', Text: '(UTC-03:00) Cayenne' },\n { Value: 'America/Cuiaba', Text: '(UTC-03:00) Cuiaba' },\n { Value: 'America/Fortaleza', Text: '(UTC-03:00) Fortaleza' },\n { Value: 'America/Godthab', Text: '(UTC-03:00) Godthab' },\n { Value: 'America/Maceio', Text: '(UTC-03:00) Maceio' },\n { Value: 'America/Miquelon', Text: '(UTC-03:00) Miquelon' },\n { Value: 'America/Montevideo', Text: '(UTC-03:00) Montevideo' },\n { Value: 'Antarctica/Palmer', Text: '(UTC-03:00) Palmer' },\n { Value: 'America/Paramaribo', Text: '(UTC-03:00) Paramaribo' },\n { Value: 'America/Punta_Arenas', Text: '(UTC-03:00) Punta Arenas' },\n { Value: 'America/Recife', Text: '(UTC-03:00) Recife' },\n { Value: 'Antarctica/Rothera', Text: '(UTC-03:00) Rothera' },\n { Value: 'America/Bahia', Text: '(UTC-03:00) Salvador' },\n { Value: 'America/Santiago', Text: '(UTC-03:00) Santiago' },\n { Value: 'Atlantic/Stanley', Text: '(UTC-03:00) Stanley' },\n { Value: 'America/Noronha', Text: '(UTC-02:00) Noronha' },\n { Value: 'America/Sao_Paulo', Text: '(UTC-02:00) Sao Paulo' },\n { Value: 'Atlantic/South_Georgia', Text: '(UTC-02:00) South Georgia' },\n { Value: 'Atlantic/Azores', Text: '(UTC-01:00) Azores' },\n { Value: 'Atlantic/Cape_Verde', Text: '(UTC-01:00) Cape Verde' },\n { Value: 'America/Scoresbysund', Text: '(UTC-01:00) Scoresbysund' },\n { Value: 'Africa/Abidjan', Text: '(UTC+00:00) Abidjan' },\n { Value: 'Africa/Accra', Text: '(UTC+00:00) Accra' },\n { Value: 'Africa/Bissau', Text: '(UTC+00:00) Bissau' },\n { Value: 'Atlantic/Canary', Text: '(UTC+00:00) Canary Islands' },\n { Value: 'Africa/Casablanca', Text: '(UTC+00:00) Casablanca' },\n { Value: 'America/Danmarkshavn', Text: '(UTC+00:00) Danmarkshavn' },\n { Value: 'Europe/Dublin', Text: '(UTC+00:00) Dublin' },\n { Value: 'Africa/El_Aaiun', Text: '(UTC+00:00) El Aaiun' },\n { Value: 'Atlantic/Faroe', Text: '(UTC+00:00) Faeroe' },\n { Value: 'Etc/UTC', Text: '(UTC+00:00) UTC (no daylight saving)' },\n { Value: 'Europe/Lisbon', Text: '(UTC+00:00) Lisbon' },\n { Value: 'Europe/London', Text: '(UTC+00:00) London' },\n { Value: 'Africa/Monrovia', Text: '(UTC+00:00) Monrovia' },\n { Value: 'Atlantic/Reykjavik', Text: '(UTC+00:00) Reykjavik' },\n { Value: 'UTC', Text: 'UTC' },\n { Value: 'Africa/Algiers', Text: '(UTC+01:00) Algiers' },\n { Value: 'Europe/Amsterdam', Text: '(UTC+01:00) Amsterdam' },\n { Value: 'Europe/Andorra', Text: '(UTC+01:00) Andorra' },\n { Value: 'Europe/Berlin', Text: '(UTC+01:00) Berlin' },\n { Value: 'Europe/Brussels', Text: '(UTC+01:00) Brussels' },\n { Value: 'Europe/Budapest', Text: '(UTC+01:00) Budapest' },\n { Value: 'Europe/Belgrade', Text: '(UTC+01:00) Central European Time - Belgrade' },\n { Value: 'Europe/Prague', Text: '(UTC+01:00) Central European Time - Prague' },\n { Value: 'Africa/Ceuta', Text: '(UTC+01:00) Ceuta' },\n { Value: 'Europe/Copenhagen', Text: '(UTC+01:00) Copenhagen' },\n { Value: 'Europe/Gibraltar', Text: '(UTC+01:00) Gibraltar' },\n { Value: 'Africa/Lagos', Text: '(UTC+01:00) Lagos' },\n { Value: 'Europe/Luxembourg', Text: '(UTC+01:00) Luxembourg' },\n { Value: 'Europe/Madrid', Text: '(UTC+01:00) Madrid' },\n { Value: 'Europe/Malta', Text: '(UTC+01:00) Malta' },\n { Value: 'Europe/Monaco', Text: '(UTC+01:00) Monaco' },\n { Value: 'Africa/Ndjamena', Text: '(UTC+01:00) Ndjamena' },\n { Value: 'Europe/Oslo', Text: '(UTC+01:00) Oslo' },\n { Value: 'Europe/Paris', Text: '(UTC+01:00) Paris' },\n { Value: 'Europe/Rome', Text: '(UTC+01:00) Rome' },\n { Value: 'Europe/Stockholm', Text: '(UTC+01:00) Stockholm' },\n { Value: 'Europe/Tirane', Text: '(UTC+01:00) Tirane' },\n { Value: 'Africa/Tunis', Text: '(UTC+01:00) Tunis' },\n { Value: 'Europe/Vienna', Text: '(UTC+01:00) Vienna' },\n { Value: 'Europe/Warsaw', Text: '(UTC+01:00) Warsaw' },\n { Value: 'Europe/Zurich', Text: '(UTC+01:00) Zurich' },\n { Value: 'Asia/Amman', Text: '(UTC+02:00) Amman' },\n { Value: 'Europe/Athens', Text: '(UTC+02:00) Athens' },\n { Value: 'Asia/Beirut', Text: '(UTC+02:00) Beirut' },\n { Value: 'Europe/Bucharest', Text: '(UTC+02:00) Bucharest' },\n { Value: 'Africa/Cairo', Text: '(UTC+02:00) Cairo' },\n { Value: 'Europe/Chisinau', Text: '(UTC+02:00) Chisinau' },\n { Value: 'Asia/Damascus', Text: '(UTC+02:00) Damascus' },\n { Value: 'Asia/Gaza', Text: '(UTC+02:00) Gaza' },\n { Value: 'Europe/Helsinki', Text: '(UTC+02:00) Helsinki' },\n { Value: 'Asia/Jerusalem', Text: '(UTC+02:00) Jerusalem' },\n { Value: 'Africa/Johannesburg', Text: '(UTC+02:00) Johannesburg' },\n { Value: 'Africa/Khartoum', Text: '(UTC+02:00) Khartoum' },\n { Value: 'Europe/Kiev', Text: '(UTC+02:00) Kiev' },\n { Value: 'Africa/Maputo', Text: '(UTC+02:00) Maputo' },\n { Value: 'Europe/Kaliningrad', Text: '(UTC+02:00) Moscow-01 - Kaliningrad' },\n { Value: 'Asia/Nicosia', Text: '(UTC+02:00) Nicosia' },\n { Value: 'Europe/Riga', Text: '(UTC+02:00) Riga' },\n { Value: 'Europe/Sofia', Text: '(UTC+02:00) Sofia' },\n { Value: 'Europe/Tallinn', Text: '(UTC+02:00) Tallinn' },\n { Value: 'Africa/Tripoli', Text: '(UTC+02:00) Tripoli' },\n { Value: 'Europe/Vilnius', Text: '(UTC+02:00) Vilnius' },\n { Value: 'Africa/Windhoek', Text: '(UTC+02:00) Windhoek' },\n { Value: 'Asia/Baghdad', Text: '(UTC+03:00) Baghdad' },\n { Value: 'Europe/Istanbul', Text: '(UTC+03:00) Istanbul' },\n { Value: 'Europe/Minsk', Text: '(UTC+03:00) Minsk' },\n { Value: 'Europe/Moscow', Text: '(UTC+03:00) Moscow+00 - Moscow' },\n { Value: 'Africa/Nairobi', Text: '(UTC+03:00) Nairobi' },\n { Value: 'Asia/Qatar', Text: '(UTC+03:00) Qatar' },\n { Value: 'Asia/Riyadh', Text: '(UTC+03:00) Riyadh' },\n { Value: 'Antarctica/Syowa', Text: '(UTC+03:00) Syowa' },\n { Value: 'Asia/Tehran', Text: '(UTC+03:30) Tehran' },\n { Value: 'Asia/Baku', Text: '(UTC+04:00) Baku' },\n { Value: 'Asia/Dubai', Text: '(UTC+04:00) Dubai' },\n { Value: 'Indian/Mahe', Text: '(UTC+04:00) Mahe' },\n { Value: 'Indian/Mauritius', Text: '(UTC+04:00) Mauritius' },\n { Value: 'Europe/Samara', Text: '(UTC+04:00) Moscow+01 - Samara' },\n { Value: 'Indian/Reunion', Text: '(UTC+04:00) Reunion' },\n { Value: 'Asia/Tbilisi', Text: '(UTC+04:00) Tbilisi' },\n { Value: 'Asia/Yerevan', Text: '(UTC+04:00) Yerevan' },\n { Value: 'Asia/Kabul', Text: '(UTC+04:30) Kabul' },\n { Value: 'Asia/Aqtau', Text: '(UTC+05:00) Aqtau' },\n { Value: 'Asia/Aqtobe', Text: '(UTC+05:00) Aqtobe' },\n { Value: 'Asia/Ashgabat', Text: '(UTC+05:00) Ashgabat' },\n { Value: 'Asia/Dushanbe', Text: '(UTC+05:00) Dushanbe' },\n { Value: 'Asia/Karachi', Text: '(UTC+05:00) Karachi' },\n { Value: 'Indian/Kerguelen', Text: '(UTC+05:00) Kerguelen' },\n { Value: 'Indian/Maldives', Text: '(UTC+05:00) Maldives' },\n { Value: 'Antarctica/Mawson', Text: '(UTC+05:00) Mawson' },\n { Value: 'Asia/Yekaterinburg', Text: '(UTC+05:00) Moscow+02 - Yekaterinburg' },\n { Value: 'Asia/Tashkent', Text: '(UTC+05:00) Tashkent' },\n { Value: 'Asia/Colombo', Text: '(UTC+05:30) Colombo' },\n { Value: 'Asia/Kolkata', Text: '(UTC+05:30) India Standard Time' },\n { Value: 'Asia/Katmandu', Text: '(UTC+05:45) Katmandu' },\n { Value: 'Asia/Almaty', Text: '(UTC+06:00) Almaty' },\n { Value: 'Asia/Bishkek', Text: '(UTC+06:00) Bishkek' },\n { Value: 'Indian/Chagos', Text: '(UTC+06:00) Chagos' },\n { Value: 'Asia/Dhaka', Text: '(UTC+06:00) Dhaka' },\n { Value: 'Asia/Omsk', Text: '(UTC+06:00) Moscow+03 - Omsk' },\n { Value: 'Asia/Thimphu', Text: '(UTC+06:00) Thimphu' },\n { Value: 'Antarctica/Vostok', Text: '(UTC+06:00) Vostok' },\n { Value: 'Indian/Cocos', Text: '(UTC+06:30) Cocos' },\n { Value: 'Asia/Yangon', Text: '(UTC+06:30) Rangoon' },\n { Value: 'Asia/Bangkok', Text: '(UTC+07:00) Bangkok' },\n { Value: 'Indian/Christmas', Text: '(UTC+07:00) Christmas' },\n { Value: 'Antarctica/Davis', Text: '(UTC+07:00) Davis' },\n { Value: 'Asia/Saigon', Text: '(UTC+07:00) Hanoi' },\n { Value: 'Asia/Hovd', Text: '(UTC+07:00) Hovd' },\n { Value: 'Asia/Jakarta', Text: '(UTC+07:00) Jakarta' },\n { Value: 'Asia/Krasnoyarsk', Text: '(UTC+07:00) Moscow+04 - Krasnoyarsk' },\n { Value: 'Asia/Brunei', Text: '(UTC+08:00) Brunei' },\n { Value: 'Asia/Shanghai', Text: '(UTC+08:00) China Time - Beijing' },\n { Value: 'Asia/Choibalsan', Text: '(UTC+08:00) Choibalsan' },\n { Value: 'Asia/Hong_Kong', Text: '(UTC+08:00) Hong Kong' },\n { Value: 'Asia/Kuala_Lumpur', Text: '(UTC+08:00) Kuala Lumpur' },\n { Value: 'Asia/Macau', Text: '(UTC+08:00) Macau' },\n { Value: 'Asia/Makassar', Text: '(UTC+08:00) Makassar' },\n { Value: 'Asia/Manila', Text: '(UTC+08:00) Manila' },\n { Value: 'Asia/Irkutsk', Text: '(UTC+08:00) Moscow+05 - Irkutsk' },\n { Value: 'Asia/Singapore', Text: '(UTC+08:00) Singapore' },\n { Value: 'Asia/Taipei', Text: '(UTC+08:00) Taipei' },\n { Value: 'Asia/Ulaanbaatar', Text: '(UTC+08:00) Ulaanbaatar' },\n { Value: 'Australia/Perth', Text: '(UTC+08:00) Western Time - Perth' },\n { Value: 'Asia/Pyongyang', Text: '(UTC+08:30) Pyongyang' },\n { Value: 'Asia/Dili', Text: '(UTC+09:00) Dili' },\n { Value: 'Asia/Jayapura', Text: '(UTC+09:00) Jayapura' },\n { Value: 'Asia/Yakutsk', Text: '(UTC+09:00) Moscow+06 - Yakutsk' },\n { Value: 'Pacific/Palau', Text: '(UTC+09:00) Palau' },\n { Value: 'Asia/Seoul', Text: '(UTC+09:00) Seoul' },\n { Value: 'Asia/Tokyo', Text: '(UTC+09:00) Tokyo' },\n { Value: 'Australia/Darwin', Text: '(UTC+09:30) Central Time - Darwin' },\n { Value: 'Antarctica/DumontDUrville', Text: '(UTC+10:00) Dumont D\"Urville' },\n { Value: 'Australia/Brisbane', Text: '(UTC+10:00) Eastern Time - Brisbane' },\n { Value: 'Pacific/Guam', Text: '(UTC+10:00) Guam' },\n { Value: 'Asia/Vladivostok', Text: '(UTC+10:00) Moscow+07 - Vladivostok' },\n { Value: 'Pacific/Port_Moresby', Text: '(UTC+10:00) Port Moresby' },\n { Value: 'Pacific / Chuuk', Text: '(UTC+10:00) Truk' },\n { Value: 'Australia/Adelaide', Text: '(UTC+10:30) Central Time - Adelaide' },\n { Value: 'Antarctica/Casey', Text: '(UTC+11:00) Casey' },\n { Value: 'Australia/Hobart', Text: '(UTC+11:00) Eastern Time - Hobart' },\n { Value: 'Australia/Sydney', Text: '(UTC+11:00) Eastern Time - Melbourne, Sydney' },\n { Value: 'Pacific/Efate', Text: '(UTC+11:00) Efate' },\n { Value: 'Pacific/Guadalcanal', Text: '(UTC+11:00) Guadalcanal' },\n { Value: 'Pacific/Kosrae', Text: '(UTC+11:00) Kosrae' },\n { Value: 'Asia/Magadan', Text: '(UTC+11:00) Moscow+08 - Magadan' },\n { Value: 'Pacific / Norfolk', Text: '(UTC+11:00) Norfolk' },\n { Value: 'Pacific/Noumea', Text: '(UTC+11:00) Noumea' },\n { Value: 'Pacific/Pohnpei', Text: '(UTC+11:00) Ponape' },\n { Value: 'Pacific/Funafuti', Text: '(UTC+12:00) Funafuti' },\n { Value: 'Pacific/Kwajalein', Text: '(UTC+12:00) Kwajalein' },\n { Value: 'Pacific/Majuro', Text: '(UTC+12:00) Majuro' },\n { Value: 'Asia/Kamchatka', Text: '(UTC+12:00) Moscow+09 - Petropavlovsk - Kamchatskiy' },\n { Value: 'Pacific / Nauru', Text: '(UTC+12:00) Nauru' },\n { Value: 'Pacific/Tarawa', Text: '(UTC+12:00) Tarawa' },\n { Value: 'Pacific/Wake', Text: '(UTC+12:00) Wake' },\n { Value: 'Pacific/Wallis', Text: '(UTC+12:00) Wallis' },\n { Value: 'Pacific/Auckland', Text: '(UTC+13:00) Auckland' },\n { Value: 'Pacific/Enderbury', Text: '(UTC+13:00) Enderbury' },\n { Value: 'Pacific/Fakaofo', Text: '(UTC+13:00) Fakaofo' },\n { Value: 'Pacific/Fiji', Text: '(UTC+13:00) Fiji' },\n { Value: 'Pacific/Tongatapu', Text: '(UTC+13:00) Tongatapu' },\n { Value: 'Pacific/Apia', Text: '(UTC+14:00) Apia' },\n { Value: 'Pacific/Kiritimati', Text: '(UTC+14:00) Kiritimati' }\n];\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 * as React from 'react';\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar UA = new UAParser();\nvar browser = UA.getBrowser();\nvar cpu = UA.getCPU();\nvar device = UA.getDevice();\nvar engine = UA.getEngine();\nvar os = UA.getOS();\nvar ua = UA.getUA();\n\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _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\nfunction _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\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\nfunction _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(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(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _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}\n\nfunction _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\nfunction _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}\n\nfunction _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}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar DEVICE_TYPES = {\n MOBILE: 'mobile',\n TABLET: 'tablet',\n SMART_TV: 'smarttv',\n CONSOLE: 'console',\n WEARABLE: 'wearable',\n BROWSER: undefined\n};\nvar BROWSER_TYPES = {\n CHROME: 'Chrome',\n FIREFOX: \"Firefox\",\n OPERA: \"Opera\",\n YANDEX: \"Yandex\",\n SAFARI: \"Safari\",\n INTERNET_EXPLORER: \"Internet Explorer\",\n EDGE: \"Edge\",\n CHROMIUM: \"Chromium\",\n IE: 'IE',\n MOBILE_SAFARI: \"Mobile Safari\",\n EDGE_CHROMIUM: \"Edge Chromium\",\n MIUI: \"MIUI Browser\"\n};\nvar OS_TYPES = {\n IOS: 'iOS',\n ANDROID: \"Android\",\n WINDOWS_PHONE: \"Windows Phone\",\n WINDOWS: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar initialData = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\nvar checkType = function checkType(type) {\n switch (type) {\n case DEVICE_TYPES.MOBILE:\n return {\n isMobile: true\n };\n\n case DEVICE_TYPES.TABLET:\n return {\n isTablet: true\n };\n\n case DEVICE_TYPES.SMART_TV:\n return {\n isSmartTV: true\n };\n\n case DEVICE_TYPES.CONSOLE:\n return {\n isConsole: true\n };\n\n case DEVICE_TYPES.WEARABLE:\n return {\n isWearable: true\n };\n\n case DEVICE_TYPES.BROWSER:\n return {\n isBrowser: true\n };\n\n default:\n return initialData;\n }\n};\nvar broPayload = function broPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar stvPayload = function stvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearPayload = function wearPayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\n\nvar type = checkType(device.type);\n\nfunction deviceDetect() {\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable;\n\n if (isBrowser) {\n return broPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return stvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearPayload(isWearable, engine, os, ua);\n }\n}\n\nvar isMobileType = function isMobileType() {\n return device.type === DEVICE_TYPES.MOBILE;\n};\n\nvar isTabletType = function isTabletType() {\n return device.type === DEVICE_TYPES.TABLET;\n};\n\nvar isMobileAndTabletType = function isMobileAndTabletType() {\n switch (device.type) {\n case DEVICE_TYPES.MOBILE:\n case DEVICE_TYPES.TABLET:\n return true;\n\n default:\n return false;\n }\n};\n\nvar isEdgeChromiumType = function isEdgeChromiumType() {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\n\nvar isSmartTVType = function isSmartTVType() {\n return device.type === DEVICE_TYPES.SMART_TV;\n};\n\nvar isBrowserType = function isBrowserType() {\n return device.type === DEVICE_TYPES.BROWSER;\n};\n\nvar isWearableType = function isWearableType() {\n return device.type === DEVICE_TYPES.WEARABLE;\n};\n\nvar isConsoleType = function isConsoleType() {\n return device.type === DEVICE_TYPES.CONSOLE;\n};\n\nvar isAndroidType = function isAndroidType() {\n return os.name === OS_TYPES.ANDROID;\n};\n\nvar isWindowsType = function isWindowsType() {\n return os.name === OS_TYPES.WINDOWS;\n};\n\nvar isMacOsType = function isMacOsType() {\n return os.name === OS_TYPES.MAC_OS;\n};\n\nvar isWinPhoneType = function isWinPhoneType() {\n return os.name === OS_TYPES.WINDOWS_PHONE;\n};\n\nvar isIOSType = function isIOSType() {\n return os.name === OS_TYPES.IOS;\n};\n\nvar isChromeType = function isChromeType() {\n return browser.name === BROWSER_TYPES.CHROME;\n};\n\nvar isFirefoxType = function isFirefoxType() {\n return browser.name === BROWSER_TYPES.FIREFOX;\n};\n\nvar isChromiumType = function isChromiumType() {\n return browser.name === BROWSER_TYPES.CHROMIUM;\n};\n\nvar isEdgeType = function isEdgeType() {\n return browser.name === BROWSER_TYPES.EDGE;\n};\n\nvar isYandexType = function isYandexType() {\n return browser.name === BROWSER_TYPES.YANDEX;\n};\n\nvar isSafariType = function isSafariType() {\n return browser.name === BROWSER_TYPES.SAFARI || browser.name === BROWSER_TYPES.MOBILE_SAFARI;\n};\n\nvar isMobileSafariType = function isMobileSafariType() {\n return browser.name === BROWSER_TYPES.MOBILE_SAFARI;\n};\n\nvar isOperaType = function isOperaType() {\n return browser.name === BROWSER_TYPES.OPERA;\n};\n\nvar isIEType = function isIEType() {\n return browser.name === BROWSER_TYPES.INTERNET_EXPLORER || browser.name === BROWSER_TYPES.IE;\n};\n\nvar isMIUIType = function isMIUIType() {\n return browser.name === BROWSER_TYPES.MIUI;\n};\n\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\n\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\n\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\n\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\n\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\n\nvar getBrowserFullVersion = function getBrowserFullVersion() {\n return setDefaults(browser.version);\n};\n\nvar getBrowserVersion = function getBrowserVersion() {\n return setDefaults(browser.major);\n};\n\nvar getOsVersion = function getOsVersion() {\n return setDefaults(os.version);\n};\n\nvar getOsName = function getOsName() {\n return setDefaults(os.name);\n};\n\nvar getBrowserName = function getBrowserName() {\n return setDefaults(browser.name);\n};\n\nvar getMobileVendor = function getMobileVendor() {\n return setDefaults(device.vendor);\n};\n\nvar getMobileModel = function getMobileModel() {\n return setDefaults(device.model);\n};\n\nvar getEngineName = function getEngineName() {\n return setDefaults(engine.name);\n};\n\nvar getEngineVersion = function getEngineVersion() {\n return setDefaults(engine.version);\n};\n\nvar getUseragent = function getUseragent() {\n return setDefaults(ua);\n};\n\nvar getDeviceType = function getDeviceType() {\n return setDefaults(device.type, 'browser');\n};\n\nvar isSmartTV = isSmartTVType();\nvar isConsole = isConsoleType();\nvar isWearable = isWearableType();\nvar isMobileSafari = isMobileSafariType() || getIPad13();\nvar isChromium = isChromiumType();\nvar isMobile = isMobileAndTabletType() || getIPad13();\nvar isMobileOnly = isMobileType();\nvar isTablet = isTabletType() || getIPad13();\nvar isBrowser = isBrowserType();\nvar isAndroid = isAndroidType();\nvar isWinPhone = isWinPhoneType();\nvar isIOS = isIOSType() || getIPad13();\nvar isChrome = isChromeType();\nvar isFirefox = isFirefoxType();\nvar isSafari = isSafariType();\nvar isOpera = isOperaType();\nvar isIE = isIEType();\nvar osVersion = getOsVersion();\nvar osName = getOsName();\nvar fullBrowserVersion = getBrowserFullVersion();\nvar browserVersion = getBrowserVersion();\nvar browserName = getBrowserName();\nvar mobileVendor = getMobileVendor();\nvar mobileModel = getMobileModel();\nvar engineName = getEngineName();\nvar engineVersion = getEngineVersion();\nvar getUA = getUseragent();\nvar isEdge = isEdgeType() || isEdgeChromiumType();\nvar isYandex = isYandexType();\nvar deviceType = getDeviceType();\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType();\nvar isLegacyEdge = isEdgeType() && !isEdgeChromiumType();\nvar isWindows = isWindowsType();\nvar isMacOs = isMacOsType();\nvar isMIUI = isMIUIType();\n\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n viewClassName = _ref.viewClassName,\n style = _ref.style;\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n viewClassName = _ref2.viewClassName,\n style = _ref2.style;\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n viewClassName = _ref3.viewClassName,\n style = _ref3.style;\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n viewClassName = _ref4.viewClassName,\n style = _ref4.style;\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n viewClassName = _ref5.viewClassName,\n style = _ref5.style;\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n viewClassName = _ref6.viewClassName,\n style = _ref6.style;\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n viewClassName = _ref7.viewClassName,\n style = _ref7.style;\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style;\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n viewClassName = _ref9.viewClassName,\n style = _ref9.style;\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n viewClassName = _ref10.viewClassName,\n style = _ref10.style;\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n viewClassName = _ref11.viewClassName,\n style = _ref11.style;\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition;\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n return (\n /*#__PURE__*/\n function (_React$Component) {\n _inherits(_class, _React$Component);\n\n function _class(props) {\n var _this;\n\n _classCallCheck(this, _class);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n\n return _class;\n }(React__default.Component)\n );\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.withOrientationChange = withOrientationChange;\n","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTabsUtilityClass(slot) {\n return generateUtilityClass('MuiTabs', slot);\n}\nconst tabsClasses = generateUtilityClasses('MuiTabs', ['root', 'vertical', 'flexContainer', 'flexContainerVertical', 'centered', 'scroller', 'fixed', 'scrollableX', 'scrollableY', 'hideScrollbar', 'scrollButtons', 'scrollButtonsHideMobile', 'indicator']);\nexport default tabsClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogUtilityClass(slot) {\n return generateUtilityClass('MuiDialog', slot);\n}\nconst dialogClasses = generateUtilityClasses('MuiDialog', ['root', 'scrollPaper', 'scrollBody', 'container', 'paper', 'paperScrollPaper', 'paperScrollBody', 'paperWidthFalse', 'paperWidthXs', 'paperWidthSm', 'paperWidthMd', 'paperWidthLg', 'paperWidthXl', 'paperFullWidth', 'paperFullScreen']);\nexport default dialogClasses;","// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n color = (color) ? color : '';\n opts = opts || { };\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n this._originalInput = color,\n this._r = rgb.r,\n this._g = rgb.g,\n this._b = rgb.b,\n this._a = rgb.a,\n this._roundA = mathRound(100*this._a) / 100,\n this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) { this._r = mathRound(this._r); }\n if (this._g < 1) { this._g = mathRound(this._g); }\n if (this._b < 1) { this._b = mathRound(this._b); }\n\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n isDark: function() {\n return this.getBrightness() < 128;\n },\n isLight: function() {\n return !this.isDark();\n },\n isValid: function() {\n return this._ok;\n },\n getOriginalInput: function() {\n return this._originalInput;\n },\n getFormat: function() {\n return this._format;\n },\n getAlpha: function() {\n return this._a;\n },\n getBrightness: function() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r/255;\n GsRGB = rgb.g/255;\n BsRGB = rgb.b/255;\n\n if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n },\n setAlpha: function(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100*this._a) / 100;\n return this;\n },\n toHsv: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return (this._a == 1) ?\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return (this._a == 1) ?\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function() {\n return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n },\n toRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n },\n toPercentageRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function() {\n if (this._a === 0) {\n return \"transparent\";\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n clone: function() {\n return tinycolor(this.toString());\n },\n\n _applyModification: function(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function() {\n return this._applyModification(lighten, arguments);\n },\n brighten: function() {\n return this._applyModification(brighten, arguments);\n },\n darken: function() {\n return this._applyModification(darken, arguments);\n },\n desaturate: function() {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function() {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function() {\n return this._applyModification(greyscale, arguments);\n },\n spin: function() {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function() {\n return this._applyCombination(analogous, arguments);\n },\n complement: function() {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function() {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function() {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function() {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function() {\n return this._applyCombination(tetrad, arguments);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n }\n else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// \n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if(t < 0) t += 1;\n if(t > 1) t -= 1;\n if(t < 1/6) return p + (q - p) * 6 * t;\n if(t < 1/2) return q;\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n }\n\n if(s === 0) {\n r = g = b = l; // achromatic\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if(max == min) {\n h = 0; // achromatic\n }\n else {\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a))\n ];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) { return false; }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// \n\nfunction desaturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// \n\nfunction complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\n\nfunction triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n ];\n}\n\nfunction analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\n\nfunction monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v}));\n v = (v + modification) % 1;\n }\n\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n amount = (amount === 0) ? 0 : (amount || 50);\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n\n var rgba = {\n r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n };\n\n return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n\n out = false;\n\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size ;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors ;\n level = args.level;\n size = args.size;\n\n for (var i= 0; i < colorList.length ; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n\n if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n return bestColor;\n }\n else {\n args.includeFallbackColors=false;\n return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n }\n};\n\n\n// Big List of Colors\n// ------------------\n// \nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = { };\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) { n = \"100%\"; }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if ((Math.abs(n - max) < 0.000001)) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// \nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = (n * 100) + \"%\";\n }\n\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n\n return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define === 'function' && define.amd) {\n define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n window.tinycolor = tinycolor;\n}\n\n})(Math);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'MoreVert');\n\nexports.default = _default;","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 || rowObjs[i].isAggregateRow)) {\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 (!this.parent.groupSettings.columns.length) {\n return;\n }\n if (!isExpand) {\n this.parent.notify(events.initialCollapse, isExpand);\n }\n var rowNodes = this.parent.getContentTable().querySelector(literals.tbody).children;\n var rowObjs = this.parent.getRowsObject();\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 if (rowObjs[i].isCaptionRow) {\n rowObjs[i].isExpand = isExpand ? true : false;\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","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\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\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"injectFirst\", \"disableGeneration\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@mui/utils';\nimport { create } from 'jss';\nimport createGenerateClassName from '../createGenerateClassName';\nimport jssPreset from '../jssPreset'; // Default JSS instance.\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst jss = create(jssPreset()); // Use a singleton or the provided one by the context.\n//\n// The counter-based approach doesn't tolerate any mistake.\n// It's much safer to use the same counter everywhere.\n\nconst generateClassName = createGenerateClassName(); // Exported for test purposes\n\nexport const sheetsManager = new Map();\nconst defaultOptions = {\n disableGeneration: false,\n generateClassName,\n jss,\n sheetsCache: null,\n sheetsManager,\n sheetsRegistry: null\n};\nexport const StylesContext = /*#__PURE__*/React.createContext(defaultOptions);\n\nif (process.env.NODE_ENV !== 'production') {\n StylesContext.displayName = 'StylesContext';\n}\n\nlet injectFirstNode;\nexport default function StylesProvider(props) {\n const {\n children,\n injectFirst = false,\n disableGeneration = false\n } = props,\n localOptions = _objectWithoutPropertiesLoose(props, _excluded);\n\n const outerOptions = React.useContext(StylesContext);\n\n const context = _extends({}, outerOptions, {\n disableGeneration\n }, localOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof window === 'undefined' && !context.sheetsManager) {\n console.error('MUI: You need to use the ServerStyleSheets API when rendering on the server.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (context.jss.options.insertionPoint && injectFirst) {\n console.error('MUI: You cannot use a custom insertionPoint and at the same time.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (injectFirst && localOptions.jss) {\n console.error('MUI: You cannot use the jss and injectFirst props at the same time.');\n }\n }\n\n if (!context.jss.options.insertionPoint && injectFirst && typeof window !== 'undefined') {\n if (!injectFirstNode) {\n const head = document.head;\n injectFirstNode = document.createComment('mui-inject-first');\n head.insertBefore(injectFirstNode, head.firstChild);\n }\n\n context.jss = create({\n plugins: jssPreset().plugins,\n insertionPoint: injectFirstNode\n });\n }\n\n return /*#__PURE__*/_jsx(StylesContext.Provider, {\n value: context,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n\n /**\n * You can disable the generation of the styles with this option.\n * It can be useful when traversing the React tree outside of the HTML\n * rendering step on the server.\n * Let's say you are using react-apollo to extract all\n * the queries made by the interface server-side - you can significantly speed up the traversal with this prop.\n */\n disableGeneration: PropTypes.bool,\n\n /**\n * JSS's class name generator.\n */\n generateClassName: PropTypes.func,\n\n /**\n * By default, the styles are injected last in the element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override MUI's styles, set this prop.\n */\n injectFirst: PropTypes.bool,\n\n /**\n * JSS's instance.\n */\n jss: PropTypes.object,\n\n /**\n * @ignore\n */\n serverGenerateClassName: PropTypes.func,\n\n /**\n * @ignore\n *\n * Beta feature.\n *\n * Cache for the sheets.\n */\n sheetsCache: PropTypes.object,\n\n /**\n * @ignore\n *\n * The sheetsManager is used to deduplicate style sheet injection in the page.\n * It's deduplicating using the (theme, styles) couple.\n * On the server, you should provide a new instance for each request.\n */\n sheetsManager: PropTypes.object,\n\n /**\n * @ignore\n *\n * Collect the sheets.\n */\n sheetsRegistry: PropTypes.object\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = exactProp(StylesProvider.propTypes) : void 0;\n}","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","module.exports = {};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","require('./es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n","export { default } from './ListItemText';\nexport { default as listItemTextClasses } from './listItemTextClasses';\nexport * from './listItemTextClasses';","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n\n const propFullNameSafe = propFullName || propName;\n\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n\n return null;\n}","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) 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 _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}","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","import * as React from 'react';\nconst ThemeContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\n\nexport default ThemeContext;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"\n}), 'Info');\n\nexports.default = _default;","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","import * as React from 'react';\nconst ThemeContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\n\nexport default ThemeContext;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2m0 10c2.7 0 5.8 1.29 6 2H6c.23-.72 3.31-2 6-2m0-12C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 10c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\n}), 'PersonOutlined');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"\n}), 'InfoOutlined');\n\nexports.default = _default;","import * as React from 'react';\n/**\n * @ignore - internal component.\n * @type {React.Context<{} | {expanded: boolean, disabled: boolean, toggle: () => void}>}\n */\n\nconst AccordionContext = /*#__PURE__*/React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n AccordionContext.displayName = 'AccordionContext';\n}\n\nexport default AccordionContext;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n *\n * Alias to `Clear`.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nconst TableContext = /*#__PURE__*/React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n TableContext.displayName = 'TableContext';\n}\n\nexport default TableContext;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { invariant } from '@react-dnd/invariant';\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nexport var DragSourceMonitorImpl = /*#__PURE__*/function () {\n function DragSourceMonitorImpl(manager) {\n _classCallCheck(this, DragSourceMonitorImpl);\n\n this.sourceId = null;\n this.internalMonitor = manager.getMonitor();\n }\n\n _createClass(DragSourceMonitorImpl, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(sourceId) {\n this.sourceId = sourceId;\n }\n }, {\n key: \"getHandlerId\",\n value: function getHandlerId() {\n return this.sourceId;\n }\n }, {\n key: \"canDrag\",\n value: function canDrag() {\n invariant(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n } finally {\n isCallingCanDrag = false;\n }\n }\n }, {\n key: \"isDragging\",\n value: function isDragging() {\n if (!this.sourceId) {\n return false;\n }\n\n invariant(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n } finally {\n isCallingIsDragging = false;\n }\n }\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n }\n }, {\n key: \"isDraggingSource\",\n value: function isDraggingSource(sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n }\n }, {\n key: \"isOverTarget\",\n value: function isOverTarget(targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n }\n }, {\n key: \"getTargetIds\",\n value: function getTargetIds() {\n return this.internalMonitor.getTargetIds();\n }\n }, {\n key: \"isSourcePublic\",\n value: function isSourcePublic() {\n return this.internalMonitor.isSourcePublic();\n }\n }, {\n key: \"getSourceId\",\n value: function getSourceId() {\n return this.internalMonitor.getSourceId();\n }\n }, {\n key: \"subscribeToOffsetChange\",\n value: function subscribeToOffsetChange(listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n }\n }, {\n key: \"canDragSource\",\n value: function canDragSource(sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n }\n }, {\n key: \"canDropOnTarget\",\n value: function canDropOnTarget(targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.internalMonitor.getItemType();\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.internalMonitor.getItem();\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.internalMonitor.getDropResult();\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.internalMonitor.didDrop();\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.internalMonitor.getClientOffset();\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n }\n }]);\n\n return DragSourceMonitorImpl;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from '../utils/isRef';\nimport { shallowEqual } from '@react-dnd/shallowequal';\nexport var SourceConnector = /*#__PURE__*/function () {\n function SourceConnector(backend) {\n var _this = this;\n\n _classCallCheck(this, SourceConnector);\n\n this.hooks = wrapConnectorHooks({\n dragSource: function dragSource(node, options) {\n _this.clearDragSource();\n\n _this.dragSourceOptions = options || null;\n\n if (isRef(node)) {\n _this.dragSourceRef = node;\n } else {\n _this.dragSourceNode = node;\n }\n\n _this.reconnectDragSource();\n },\n dragPreview: function dragPreview(node, options) {\n _this.clearDragPreview();\n\n _this.dragPreviewOptions = options || null;\n\n if (isRef(node)) {\n _this.dragPreviewRef = node;\n } else {\n _this.dragPreviewNode = node;\n }\n\n _this.reconnectDragPreview();\n }\n });\n this.handlerId = null; // The drop target may either be attached via ref or connect function\n\n this.dragSourceRef = null;\n this.dragSourceOptionsInternal = null; // The drag preview may either be attached via ref or connect function\n\n this.dragPreviewRef = null;\n this.dragPreviewOptionsInternal = null;\n this.lastConnectedHandlerId = null;\n this.lastConnectedDragSource = null;\n this.lastConnectedDragSourceOptions = null;\n this.lastConnectedDragPreview = null;\n this.lastConnectedDragPreviewOptions = null;\n this.backend = backend;\n }\n\n _createClass(SourceConnector, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(newHandlerId) {\n if (this.handlerId === newHandlerId) {\n return;\n }\n\n this.handlerId = newHandlerId;\n this.reconnect();\n }\n }, {\n key: \"reconnect\",\n value: function reconnect() {\n this.reconnectDragSource();\n this.reconnectDragPreview();\n }\n }, {\n key: \"reconnectDragSource\",\n value: function reconnectDragSource() {\n var dragSource = this.dragSource; // if nothing has changed then don't resubscribe\n\n var didChange = this.didHandlerIdChange() || this.didConnectedDragSourceChange() || this.didDragSourceOptionsChange();\n\n if (didChange) {\n this.disconnectDragSource();\n }\n\n if (!this.handlerId) {\n return;\n }\n\n if (!dragSource) {\n this.lastConnectedDragSource = dragSource;\n return;\n }\n\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragSource = dragSource;\n this.lastConnectedDragSourceOptions = this.dragSourceOptions;\n this.dragSourceUnsubscribe = this.backend.connectDragSource(this.handlerId, dragSource, this.dragSourceOptions);\n }\n }\n }, {\n key: \"reconnectDragPreview\",\n value: function reconnectDragPreview() {\n var dragPreview = this.dragPreview; // if nothing has changed then don't resubscribe\n\n var didChange = this.didHandlerIdChange() || this.didConnectedDragPreviewChange() || this.didDragPreviewOptionsChange();\n\n if (didChange) {\n this.disconnectDragPreview();\n }\n\n if (!this.handlerId) {\n return;\n }\n\n if (!dragPreview) {\n this.lastConnectedDragPreview = dragPreview;\n return;\n }\n\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragPreview = dragPreview;\n this.lastConnectedDragPreviewOptions = this.dragPreviewOptions;\n this.dragPreviewUnsubscribe = this.backend.connectDragPreview(this.handlerId, dragPreview, this.dragPreviewOptions);\n }\n }\n }, {\n key: \"didHandlerIdChange\",\n value: function didHandlerIdChange() {\n return this.lastConnectedHandlerId !== this.handlerId;\n }\n }, {\n key: \"didConnectedDragSourceChange\",\n value: function didConnectedDragSourceChange() {\n return this.lastConnectedDragSource !== this.dragSource;\n }\n }, {\n key: \"didConnectedDragPreviewChange\",\n value: function didConnectedDragPreviewChange() {\n return this.lastConnectedDragPreview !== this.dragPreview;\n }\n }, {\n key: \"didDragSourceOptionsChange\",\n value: function didDragSourceOptionsChange() {\n return !shallowEqual(this.lastConnectedDragSourceOptions, this.dragSourceOptions);\n }\n }, {\n key: \"didDragPreviewOptionsChange\",\n value: function didDragPreviewOptionsChange() {\n return !shallowEqual(this.lastConnectedDragPreviewOptions, this.dragPreviewOptions);\n }\n }, {\n key: \"disconnectDragSource\",\n value: function disconnectDragSource() {\n if (this.dragSourceUnsubscribe) {\n this.dragSourceUnsubscribe();\n this.dragSourceUnsubscribe = undefined;\n }\n }\n }, {\n key: \"disconnectDragPreview\",\n value: function disconnectDragPreview() {\n if (this.dragPreviewUnsubscribe) {\n this.dragPreviewUnsubscribe();\n this.dragPreviewUnsubscribe = undefined;\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n }\n }, {\n key: \"clearDragSource\",\n value: function clearDragSource() {\n this.dragSourceNode = null;\n this.dragSourceRef = null;\n }\n }, {\n key: \"clearDragPreview\",\n value: function clearDragPreview() {\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n }, {\n key: \"connectTarget\",\n get: function get() {\n return this.dragSource;\n }\n }, {\n key: \"dragSourceOptions\",\n get: function get() {\n return this.dragSourceOptionsInternal;\n },\n set: function set(options) {\n this.dragSourceOptionsInternal = options;\n }\n }, {\n key: \"dragPreviewOptions\",\n get: function get() {\n return this.dragPreviewOptionsInternal;\n },\n set: function set(options) {\n this.dragPreviewOptionsInternal = options;\n }\n }, {\n key: \"dragSource\",\n get: function get() {\n return this.dragSourceNode || this.dragSourceRef && this.dragSourceRef.current;\n }\n }, {\n key: \"dragPreview\",\n get: function get() {\n return this.dragPreviewNode || this.dragPreviewRef && this.dragPreviewRef.current;\n }\n }]);\n\n return SourceConnector;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { invariant } from '@react-dnd/invariant';\nvar isCallingCanDrop = false;\nexport var DropTargetMonitorImpl = /*#__PURE__*/function () {\n function DropTargetMonitorImpl(manager) {\n _classCallCheck(this, DropTargetMonitorImpl);\n\n this.targetId = null;\n this.internalMonitor = manager.getMonitor();\n }\n\n _createClass(DropTargetMonitorImpl, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(targetId) {\n this.targetId = targetId;\n }\n }, {\n key: \"getHandlerId\",\n value: function getHandlerId() {\n return this.targetId;\n }\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n }\n }, {\n key: \"canDrop\",\n value: function canDrop() {\n // Cut out early if the target id has not been set. This should prevent errors\n // where the user has an older version of dnd-core like in\n // https://github.com/react-dnd/react-dnd/issues/1310\n if (!this.targetId) {\n return false;\n }\n\n invariant(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor');\n\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n } finally {\n isCallingCanDrop = false;\n }\n }\n }, {\n key: \"isOver\",\n value: function isOver(options) {\n if (!this.targetId) {\n return false;\n }\n\n return this.internalMonitor.isOverTarget(this.targetId, options);\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.internalMonitor.getItemType();\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.internalMonitor.getItem();\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.internalMonitor.getDropResult();\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.internalMonitor.didDrop();\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.internalMonitor.getClientOffset();\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n }\n }]);\n\n return DropTargetMonitorImpl;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from '../utils/isRef';\nexport var TargetConnector = /*#__PURE__*/function () {\n function TargetConnector(backend) {\n var _this = this;\n\n _classCallCheck(this, TargetConnector);\n\n this.hooks = wrapConnectorHooks({\n dropTarget: function dropTarget(node, options) {\n _this.clearDropTarget();\n\n _this.dropTargetOptions = options;\n\n if (isRef(node)) {\n _this.dropTargetRef = node;\n } else {\n _this.dropTargetNode = node;\n }\n\n _this.reconnect();\n }\n });\n this.handlerId = null; // The drop target may either be attached via ref or connect function\n\n this.dropTargetRef = null;\n this.dropTargetOptionsInternal = null;\n this.lastConnectedHandlerId = null;\n this.lastConnectedDropTarget = null;\n this.lastConnectedDropTargetOptions = null;\n this.backend = backend;\n }\n\n _createClass(TargetConnector, [{\n key: \"reconnect\",\n value: function reconnect() {\n // if nothing has changed then don't resubscribe\n var didChange = this.didHandlerIdChange() || this.didDropTargetChange() || this.didOptionsChange();\n\n if (didChange) {\n this.disconnectDropTarget();\n }\n\n var dropTarget = this.dropTarget;\n\n if (!this.handlerId) {\n return;\n }\n\n if (!dropTarget) {\n this.lastConnectedDropTarget = dropTarget;\n return;\n }\n\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDropTarget = dropTarget;\n this.lastConnectedDropTargetOptions = this.dropTargetOptions;\n this.unsubscribeDropTarget = this.backend.connectDropTarget(this.handlerId, dropTarget, this.dropTargetOptions);\n }\n }\n }, {\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(newHandlerId) {\n if (newHandlerId === this.handlerId) {\n return;\n }\n\n this.handlerId = newHandlerId;\n this.reconnect();\n }\n }, {\n key: \"didHandlerIdChange\",\n value: function didHandlerIdChange() {\n return this.lastConnectedHandlerId !== this.handlerId;\n }\n }, {\n key: \"didDropTargetChange\",\n value: function didDropTargetChange() {\n return this.lastConnectedDropTarget !== this.dropTarget;\n }\n }, {\n key: \"didOptionsChange\",\n value: function didOptionsChange() {\n return !shallowEqual(this.lastConnectedDropTargetOptions, this.dropTargetOptions);\n }\n }, {\n key: \"disconnectDropTarget\",\n value: function disconnectDropTarget() {\n if (this.unsubscribeDropTarget) {\n this.unsubscribeDropTarget();\n this.unsubscribeDropTarget = undefined;\n }\n }\n }, {\n key: \"clearDropTarget\",\n value: function clearDropTarget() {\n this.dropTargetRef = null;\n this.dropTargetNode = null;\n }\n }, {\n key: \"connectTarget\",\n get: function get() {\n return this.dropTarget;\n }\n }, {\n key: \"dropTargetOptions\",\n get: function get() {\n return this.dropTargetOptionsInternal;\n },\n set: function set(options) {\n this.dropTargetOptionsInternal = options;\n }\n }, {\n key: \"dropTarget\",\n get: function get() {\n return this.dropTargetNode || this.dropTargetRef && this.dropTargetRef.current;\n }\n }]);\n\n return TargetConnector;\n}();","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nexport function isValidType(type, allowArray) {\n return typeof type === 'string' || _typeof(type) === 'symbol' || !!allowArray && Array.isArray(type) && type.every(function (t) {\n return isValidType(t, false);\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z\"\n}), 'Done');\n\nexports.default = _default;","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 { 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 { 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, _this.defaultColorPicker);\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 this.defaultColorPicker = innerEle.children[0].style.borderBottomColor;\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 * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\n\nif (process.env.NODE_ENV !== 'production') {\n RadioGroupContext.displayName = 'RadioGroupContext';\n}\n\nexport default RadioGroupContext;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z\"\n}), 'List');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M5 9.2h3V19H5zM10.6 5h2.8v14h-2.8zm5.6 8H19v6h-2.8z\"\n}), 'BarChart');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10zM8 13.01l1.41 1.41L11 12.84V17h2v-4.16l1.59 1.59L16 13.01 12.01 9 8 13.01z\"\n}), 'DriveFolderUpload');\n\nexports.default = _default;","import { createContext } from 'react';\nconst DialogContext = /*#__PURE__*/createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n DialogContext.displayName = 'DialogContext';\n}\n\nexport default DialogContext;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogTitleUtilityClass(slot) {\n return generateUtilityClass('MuiDialogTitle', slot);\n}\nconst dialogTitleClasses = generateUtilityClasses('MuiDialogTitle', ['root']);\nexport default dialogTitleClasses;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Edit');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"\n}), 'ContentCopy');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M3 15h18v-2H3v2zm0 4h18v-2H3v2zm0-8h18V9H3v2zm0-6v2h18V5H3z\"\n}), 'Reorder');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');\n\nexports.default = _default;","/**\n * react-number-format - 4.4.1\n * Author : Sudhanshu Yadav\n * Copyright (c) 2016, 2020 to Sudhanshu Yadav, released under the MIT license.\n * https://github.com/s-yadav/react-number-format\n */\n\nimport React from 'react';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _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\nfunction _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}\n\nfunction _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\nfunction _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}\n\nfunction _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}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\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\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\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 } shim.isRequired = shim;\n function getShim() {\n return shim;\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\nvar propTypes = createCommonjsModule(function (module) {\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{\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\n// basic noop function\nfunction noop() {}\nfunction returnTrue() {\n return true;\n}\nfunction charIsNumber(_char) {\n return !!(_char || '').match(/\\d/);\n}\nfunction escapeRegExp(str) {\n return str.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, \"\\\\$&\");\n}\nfunction getThousandsGroupRegex(thousandsGroupStyle) {\n switch (thousandsGroupStyle) {\n case 'lakh':\n return /(\\d+?)(?=(\\d\\d)+(\\d)(?!\\d))(\\.\\d+)?/g;\n\n case 'wan':\n return /(\\d)(?=(\\d{4})+(?!\\d))/g;\n\n case 'thousand':\n default:\n return /(\\d)(?=(\\d{3})+(?!\\d))/g;\n }\n}\nfunction applyThousandSeparator(str, thousandSeparator, thousandsGroupStyle) {\n var thousandsGroupRegex = getThousandsGroupRegex(thousandsGroupStyle);\n var index = str.search(/[1-9]/);\n index = index === -1 ? str.length : index;\n return str.substring(0, index) + str.substring(index, str.length).replace(thousandsGroupRegex, '$1' + thousandSeparator);\n} //spilt a float number into different parts beforeDecimal, afterDecimal, and negation\n\nfunction splitDecimal(numStr) {\n var allowNegative = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var hasNagation = numStr[0] === '-';\n var addNegation = hasNagation && allowNegative;\n numStr = numStr.replace('-', '');\n var parts = numStr.split('.');\n var beforeDecimal = parts[0];\n var afterDecimal = parts[1] || '';\n return {\n beforeDecimal: beforeDecimal,\n afterDecimal: afterDecimal,\n hasNagation: hasNagation,\n addNegation: addNegation\n };\n}\nfunction fixLeadingZero(numStr) {\n if (!numStr) return numStr;\n var isNegative = numStr[0] === '-';\n if (isNegative) numStr = numStr.substring(1, numStr.length);\n var parts = numStr.split('.');\n var beforeDecimal = parts[0].replace(/^0+/, '') || '0';\n var afterDecimal = parts[1] || '';\n return \"\".concat(isNegative ? '-' : '').concat(beforeDecimal).concat(afterDecimal ? \".\".concat(afterDecimal) : '');\n}\n/**\n * limit decimal numbers to given scale\n * Not used .fixedTo because that will break with big numbers\n */\n\nfunction limitToScale(numStr, scale, fixedDecimalScale) {\n var str = '';\n var filler = fixedDecimalScale ? '0' : '';\n\n for (var i = 0; i <= scale - 1; i++) {\n str += numStr[i] || filler;\n }\n\n return str;\n}\n/**\n * This method is required to round prop value to given scale.\n * Not used .round or .fixedTo because that will break with big numbers\n */\n\nfunction roundToPrecision(numStr, scale, fixedDecimalScale) {\n //if number is empty don't do anything return empty string\n if (['', '-'].indexOf(numStr) !== -1) return numStr;\n var shoudHaveDecimalSeparator = numStr.indexOf('.') !== -1 && scale;\n\n var _splitDecimal = splitDecimal(numStr),\n beforeDecimal = _splitDecimal.beforeDecimal,\n afterDecimal = _splitDecimal.afterDecimal,\n hasNagation = _splitDecimal.hasNagation;\n\n var roundedDecimalParts = parseFloat(\"0.\".concat(afterDecimal || '0')).toFixed(scale).split('.');\n var intPart = beforeDecimal.split('').reverse().reduce(function (roundedStr, current, idx) {\n if (roundedStr.length > idx) {\n return (Number(roundedStr[0]) + Number(current)).toString() + roundedStr.substring(1, roundedStr.length);\n }\n\n return current + roundedStr;\n }, roundedDecimalParts[0]);\n var decimalPart = limitToScale(roundedDecimalParts[1] || '', Math.min(scale, afterDecimal.length), fixedDecimalScale);\n var negation = hasNagation ? '-' : '';\n var decimalSeparator = shoudHaveDecimalSeparator ? '.' : '';\n return \"\".concat(negation).concat(intPart).concat(decimalSeparator).concat(decimalPart);\n}\nfunction omit(obj, keyMaps) {\n var filteredObj = {};\n Object.keys(obj).forEach(function (key) {\n if (!keyMaps[key]) filteredObj[key] = obj[key];\n });\n return filteredObj;\n}\n/** set the caret positon in an input field **/\n\nfunction setCaretPosition(el, caretPos) {\n el.value = el.value; // ^ this is used to not only get \"focus\", but\n // to make sure we don't have it everything -selected-\n // (it causes an issue in chrome, and having it doesn't hurt any other browser)\n\n if (el !== null) {\n if (el.createTextRange) {\n var range = el.createTextRange();\n range.move('character', caretPos);\n range.select();\n return true;\n } // (el.selectionStart === 0 added for Firefox bug)\n\n\n if (el.selectionStart || el.selectionStart === 0) {\n el.focus();\n el.setSelectionRange(caretPos, caretPos);\n return true;\n } // fail city, fortunately this never happens (as far as I've tested) :)\n\n\n el.focus();\n return false;\n }\n}\n/**\n Given previous value and newValue it returns the index\n start - end to which values have changed.\n This function makes assumption about only consecutive\n characters are changed which is correct assumption for caret input.\n*/\n\nfunction findChangedIndex(prevValue, newValue) {\n var i = 0,\n j = 0;\n var prevLength = prevValue.length;\n var newLength = newValue.length;\n\n while (prevValue[i] === newValue[i] && i < prevLength) {\n i++;\n } //check what has been changed from last\n\n\n while (prevValue[prevLength - 1 - j] === newValue[newLength - 1 - j] && newLength - j > i && prevLength - j > i) {\n j++;\n }\n\n return {\n start: i,\n end: prevLength - j\n };\n}\n/*\n Returns a number whose value is limited to the given range\n*/\n\nfunction clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\nfunction getCurrentCaretPosition(el) {\n /*Max of selectionStart and selectionEnd is taken for the patch of pixel and other mobile device caret bug*/\n return Math.max(el.selectionStart, el.selectionEnd);\n}\n\nvar propTypes$1 = {\n thousandSeparator: propTypes.oneOfType([propTypes.string, propTypes.oneOf([true])]),\n decimalSeparator: propTypes.string,\n allowedDecimalSeparators: propTypes.arrayOf(propTypes.string),\n thousandsGroupStyle: propTypes.oneOf(['thousand', 'lakh', 'wan']),\n decimalScale: propTypes.number,\n fixedDecimalScale: propTypes.bool,\n displayType: propTypes.oneOf(['input', 'text']),\n prefix: propTypes.string,\n suffix: propTypes.string,\n format: propTypes.oneOfType([propTypes.string, propTypes.func]),\n removeFormatting: propTypes.func,\n mask: propTypes.oneOfType([propTypes.string, propTypes.arrayOf(propTypes.string)]),\n value: propTypes.oneOfType([propTypes.number, propTypes.string]),\n defaultValue: propTypes.oneOfType([propTypes.number, propTypes.string]),\n isNumericString: propTypes.bool,\n customInput: propTypes.elementType,\n allowNegative: propTypes.bool,\n allowEmptyFormatting: propTypes.bool,\n allowLeadingZeros: propTypes.bool,\n onValueChange: propTypes.func,\n onKeyDown: propTypes.func,\n onMouseUp: propTypes.func,\n onChange: propTypes.func,\n onFocus: propTypes.func,\n onBlur: propTypes.func,\n type: propTypes.oneOf(['text', 'tel', 'password']),\n isAllowed: propTypes.func,\n renderText: propTypes.func,\n getInputRef: propTypes.oneOfType([propTypes.func, // for legacy refs\n propTypes.shape({\n current: propTypes.any\n })])\n};\nvar defaultProps = {\n displayType: 'input',\n decimalSeparator: '.',\n thousandsGroupStyle: 'thousand',\n fixedDecimalScale: false,\n prefix: '',\n suffix: '',\n allowNegative: true,\n allowEmptyFormatting: false,\n allowLeadingZeros: false,\n isNumericString: false,\n type: 'text',\n onValueChange: noop,\n onChange: noop,\n onKeyDown: noop,\n onMouseUp: noop,\n onFocus: noop,\n onBlur: noop,\n isAllowed: returnTrue\n};\n\nvar NumberFormat =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(NumberFormat, _React$Component);\n\n function NumberFormat(props) {\n var _this;\n\n _classCallCheck(this, NumberFormat);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NumberFormat).call(this, props));\n var defaultValue = props.defaultValue; //validate props\n\n _this.validateProps();\n\n var formattedValue = _this.formatValueProp(defaultValue);\n\n _this.state = {\n value: formattedValue,\n numAsString: _this.removeFormatting(formattedValue)\n };\n _this.selectionBeforeInput = {\n selectionStart: 0,\n selectionEnd: 0\n };\n _this.onChange = _this.onChange.bind(_assertThisInitialized(_this));\n _this.onKeyDown = _this.onKeyDown.bind(_assertThisInitialized(_this));\n _this.onMouseUp = _this.onMouseUp.bind(_assertThisInitialized(_this));\n _this.onFocus = _this.onFocus.bind(_assertThisInitialized(_this));\n _this.onBlur = _this.onBlur.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(NumberFormat, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n this.updateValueIfRequired(prevProps);\n }\n }, {\n key: \"updateValueIfRequired\",\n value: function updateValueIfRequired(prevProps) {\n var props = this.props,\n state = this.state,\n focusedElm = this.focusedElm;\n var stateValue = state.value,\n _state$numAsString = state.numAsString,\n lastNumStr = _state$numAsString === void 0 ? '' : _state$numAsString; // If only state changed no need to do any thing\n\n if (prevProps !== props) {\n //validate props\n this.validateProps();\n var lastValueWithNewFormat = this.formatNumString(lastNumStr);\n var formattedValue = props.value === undefined ? lastValueWithNewFormat : this.formatValueProp();\n var numAsString = this.removeFormatting(formattedValue);\n var floatValue = parseFloat(numAsString);\n var lastFloatValue = parseFloat(lastNumStr);\n\n if ( //while typing set state only when float value changes\n (!isNaN(floatValue) || !isNaN(lastFloatValue)) && floatValue !== lastFloatValue || //can also set state when float value is same and the format props changes\n lastValueWithNewFormat !== stateValue || //set state always when not in focus and formatted value is changed\n focusedElm === null && formattedValue !== stateValue) {\n this.updateValue({\n formattedValue: formattedValue,\n numAsString: numAsString,\n input: focusedElm\n });\n }\n }\n }\n /** Misc methods **/\n\n }, {\n key: \"getFloatString\",\n value: function getFloatString() {\n var num = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var decimalScale = this.props.decimalScale;\n\n var _this$getSeparators = this.getSeparators(),\n decimalSeparator = _this$getSeparators.decimalSeparator;\n\n var numRegex = this.getNumberRegex(true); //remove negation for regex check\n\n var hasNegation = num[0] === '-';\n if (hasNegation) num = num.replace('-', ''); //if decimal scale is zero remove decimal and number after decimalSeparator\n\n if (decimalSeparator && decimalScale === 0) {\n num = num.split(decimalSeparator)[0];\n }\n\n num = (num.match(numRegex) || []).join('').replace(decimalSeparator, '.'); //remove extra decimals\n\n var firstDecimalIndex = num.indexOf('.');\n\n if (firstDecimalIndex !== -1) {\n num = \"\".concat(num.substring(0, firstDecimalIndex), \".\").concat(num.substring(firstDecimalIndex + 1, num.length).replace(new RegExp(escapeRegExp(decimalSeparator), 'g'), ''));\n } //add negation back\n\n\n if (hasNegation) num = '-' + num;\n return num;\n } //returned regex assumes decimalSeparator is as per prop\n\n }, {\n key: \"getNumberRegex\",\n value: function getNumberRegex(g, ignoreDecimalSeparator) {\n var _this$props = this.props,\n format = _this$props.format,\n decimalScale = _this$props.decimalScale;\n\n var _this$getSeparators2 = this.getSeparators(),\n decimalSeparator = _this$getSeparators2.decimalSeparator;\n\n return new RegExp('\\\\d' + (decimalSeparator && decimalScale !== 0 && !ignoreDecimalSeparator && !format ? '|' + escapeRegExp(decimalSeparator) : ''), g ? 'g' : undefined);\n }\n }, {\n key: \"getSeparators\",\n value: function getSeparators() {\n var decimalSeparator = this.props.decimalSeparator;\n var _this$props2 = this.props,\n thousandSeparator = _this$props2.thousandSeparator,\n allowedDecimalSeparators = _this$props2.allowedDecimalSeparators;\n\n if (thousandSeparator === true) {\n thousandSeparator = ',';\n }\n\n if (!allowedDecimalSeparators) {\n allowedDecimalSeparators = [decimalSeparator, '.'];\n }\n\n return {\n decimalSeparator: decimalSeparator,\n thousandSeparator: thousandSeparator,\n allowedDecimalSeparators: allowedDecimalSeparators\n };\n }\n }, {\n key: \"getMaskAtIndex\",\n value: function getMaskAtIndex(index) {\n var _this$props$mask = this.props.mask,\n mask = _this$props$mask === void 0 ? ' ' : _this$props$mask;\n\n if (typeof mask === 'string') {\n return mask;\n }\n\n return mask[index] || ' ';\n }\n }, {\n key: \"getValueObject\",\n value: function getValueObject(formattedValue, numAsString) {\n var floatValue = parseFloat(numAsString);\n return {\n formattedValue: formattedValue,\n value: numAsString,\n floatValue: isNaN(floatValue) ? undefined : floatValue\n };\n }\n }, {\n key: \"validateProps\",\n value: function validateProps() {\n var mask = this.props.mask; //validate decimalSeparator and thousandSeparator\n\n var _this$getSeparators3 = this.getSeparators(),\n decimalSeparator = _this$getSeparators3.decimalSeparator,\n thousandSeparator = _this$getSeparators3.thousandSeparator;\n\n if (decimalSeparator === thousandSeparator) {\n throw new Error(\"\\n Decimal separator can't be same as thousand separator.\\n thousandSeparator: \".concat(thousandSeparator, \" (thousandSeparator = {true} is same as thousandSeparator = \\\",\\\")\\n decimalSeparator: \").concat(decimalSeparator, \" (default value for decimalSeparator is .)\\n \"));\n } //validate mask\n\n\n if (mask) {\n var maskAsStr = mask === 'string' ? mask : mask.toString();\n\n if (maskAsStr.match(/\\d/g)) {\n throw new Error(\"\\n Mask \".concat(mask, \" should not contain numeric character;\\n \"));\n }\n }\n }\n /** Misc methods end **/\n\n /** caret specific methods **/\n\n }, {\n key: \"setPatchedCaretPosition\",\n value: function setPatchedCaretPosition(el, caretPos, currentValue) {\n /* setting caret position within timeout of 0ms is required for mobile chrome,\n otherwise browser resets the caret position after we set it\n We are also setting it without timeout so that in normal browser we don't see the flickering */\n setCaretPosition(el, caretPos);\n setTimeout(function () {\n if (el.value === currentValue) setCaretPosition(el, caretPos);\n }, 0);\n }\n /* This keeps the caret within typing area so people can't type in between prefix or suffix */\n\n }, {\n key: \"correctCaretPosition\",\n value: function correctCaretPosition(value, caretPos, direction) {\n var _this$props3 = this.props,\n prefix = _this$props3.prefix,\n suffix = _this$props3.suffix,\n format = _this$props3.format; //if value is empty return 0\n\n if (value === '') return 0; //caret position should be between 0 and value length\n\n caretPos = clamp(caretPos, 0, value.length); //in case of format as number limit between prefix and suffix\n\n if (!format) {\n var hasNegation = value[0] === '-';\n return clamp(caretPos, prefix.length + (hasNegation ? 1 : 0), value.length - suffix.length);\n } //in case if custom format method don't do anything\n\n\n if (typeof format === 'function') return caretPos;\n /* in case format is string find the closest # position from the caret position */\n //in case the caretPos have input value on it don't do anything\n\n if (format[caretPos] === '#' && charIsNumber(value[caretPos])) return caretPos; //if caretPos is just after input value don't do anything\n\n if (format[caretPos - 1] === '#' && charIsNumber(value[caretPos - 1])) return caretPos; //find the nearest caret position\n\n var firstHashPosition = format.indexOf('#');\n var lastHashPosition = format.lastIndexOf('#'); //limit the cursor between the first # position and the last # position\n\n caretPos = clamp(caretPos, firstHashPosition, lastHashPosition + 1);\n var nextPos = format.substring(caretPos, format.length).indexOf('#');\n var caretLeftBound = caretPos;\n var caretRightBound = caretPos + (nextPos === -1 ? 0 : nextPos); //get the position where the last number is present\n\n while (caretLeftBound > firstHashPosition && (format[caretLeftBound] !== '#' || !charIsNumber(value[caretLeftBound]))) {\n caretLeftBound -= 1;\n }\n\n var goToLeft = !charIsNumber(value[caretRightBound]) || direction === 'left' && caretPos !== firstHashPosition || caretPos - caretLeftBound < caretRightBound - caretPos;\n\n if (goToLeft) {\n //check if number should be taken after the bound or after it\n //if number preceding a valid number keep it after\n return charIsNumber(value[caretLeftBound]) ? caretLeftBound + 1 : caretLeftBound;\n }\n\n return caretRightBound;\n }\n }, {\n key: \"getCaretPosition\",\n value: function getCaretPosition(inputValue, formattedValue, caretPos) {\n var format = this.props.format;\n var stateValue = this.state.value;\n var numRegex = this.getNumberRegex(true);\n var inputNumber = (inputValue.match(numRegex) || []).join('');\n var formattedNumber = (formattedValue.match(numRegex) || []).join('');\n var j, i;\n j = 0;\n\n for (i = 0; i < caretPos; i++) {\n var currentInputChar = inputValue[i] || '';\n var currentFormatChar = formattedValue[j] || ''; //no need to increase new cursor position if formatted value does not have those characters\n //case inputValue = 1a23 and formattedValue = 123\n\n if (!currentInputChar.match(numRegex) && currentInputChar !== currentFormatChar) continue; //When we are striping out leading zeros maintain the new cursor position\n //Case inputValue = 00023 and formattedValue = 23;\n\n if (currentInputChar === '0' && currentFormatChar.match(numRegex) && currentFormatChar !== '0' && inputNumber.length !== formattedNumber.length) continue; //we are not using currentFormatChar because j can change here\n\n while (currentInputChar !== formattedValue[j] && j < formattedValue.length) {\n j++;\n }\n\n j++;\n }\n\n if (typeof format === 'string' && !stateValue) {\n //set it to the maximum value so it goes after the last number\n j = formattedValue.length;\n } //correct caret position if its outside of editable area\n\n\n j = this.correctCaretPosition(formattedValue, j);\n return j;\n }\n /** caret specific methods ends **/\n\n /** methods to remove formattting **/\n\n }, {\n key: \"removePrefixAndSuffix\",\n value: function removePrefixAndSuffix(val) {\n var _this$props4 = this.props,\n format = _this$props4.format,\n prefix = _this$props4.prefix,\n suffix = _this$props4.suffix; //remove prefix and suffix\n\n if (!format && val) {\n var isNegative = val[0] === '-'; //remove negation sign\n\n if (isNegative) val = val.substring(1, val.length); //remove prefix\n\n val = prefix && val.indexOf(prefix) === 0 ? val.substring(prefix.length, val.length) : val; //remove suffix\n\n var suffixLastIndex = val.lastIndexOf(suffix);\n val = suffix && suffixLastIndex !== -1 && suffixLastIndex === val.length - suffix.length ? val.substring(0, suffixLastIndex) : val; //add negation sign back\n\n if (isNegative) val = '-' + val;\n }\n\n return val;\n }\n }, {\n key: \"removePatternFormatting\",\n value: function removePatternFormatting(val) {\n var format = this.props.format;\n var formatArray = format.split('#').filter(function (str) {\n return str !== '';\n });\n var start = 0;\n var numStr = '';\n\n for (var i = 0, ln = formatArray.length; i <= ln; i++) {\n var part = formatArray[i] || ''; //if i is the last fragment take the index of end of the value\n //For case like +1 (911) 911 91 91 having pattern +1 (###) ### ## ##\n\n var index = i === ln ? val.length : val.indexOf(part, start);\n /* in any case if we don't find the pattern part in the value assume the val as numeric string\n This will be also in case if user has started typing, in any other case it will not be -1\n unless wrong prop value is provided */\n\n if (index === -1) {\n numStr = val;\n break;\n } else {\n numStr += val.substring(start, index);\n start = index + part.length;\n }\n }\n\n return (numStr.match(/\\d/g) || []).join('');\n }\n }, {\n key: \"removeFormatting\",\n value: function removeFormatting(val) {\n var _this$props5 = this.props,\n format = _this$props5.format,\n removeFormatting = _this$props5.removeFormatting;\n if (!val) return val;\n\n if (!format) {\n val = this.removePrefixAndSuffix(val);\n val = this.getFloatString(val);\n } else if (typeof format === 'string') {\n val = this.removePatternFormatting(val);\n } else if (typeof removeFormatting === 'function') {\n //condition need to be handled if format method is provide,\n val = removeFormatting(val);\n } else {\n val = (val.match(/\\d/g) || []).join('');\n }\n\n return val;\n }\n /** methods to remove formattting end **/\n\n /*** format specific methods start ***/\n\n /**\n * Format when # based string is provided\n * @param {string} numStr Numeric String\n * @return {string} formatted Value\n */\n\n }, {\n key: \"formatWithPattern\",\n value: function formatWithPattern(numStr) {\n var format = this.props.format;\n var hashCount = 0;\n var formattedNumberAry = format.split('');\n\n for (var i = 0, ln = format.length; i < ln; i++) {\n if (format[i] === '#') {\n formattedNumberAry[i] = numStr[hashCount] || this.getMaskAtIndex(hashCount);\n hashCount += 1;\n }\n }\n\n return formattedNumberAry.join('');\n }\n /**\n * @param {string} numStr Numeric string/floatString] It always have decimalSeparator as .\n * @return {string} formatted Value\n */\n\n }, {\n key: \"formatAsNumber\",\n value: function formatAsNumber(numStr) {\n var _this$props6 = this.props,\n decimalScale = _this$props6.decimalScale,\n fixedDecimalScale = _this$props6.fixedDecimalScale,\n prefix = _this$props6.prefix,\n suffix = _this$props6.suffix,\n allowNegative = _this$props6.allowNegative,\n thousandsGroupStyle = _this$props6.thousandsGroupStyle;\n\n var _this$getSeparators4 = this.getSeparators(),\n thousandSeparator = _this$getSeparators4.thousandSeparator,\n decimalSeparator = _this$getSeparators4.decimalSeparator;\n\n var hasDecimalSeparator = numStr.indexOf('.') !== -1 || decimalScale && fixedDecimalScale;\n\n var _splitDecimal = splitDecimal(numStr, allowNegative),\n beforeDecimal = _splitDecimal.beforeDecimal,\n afterDecimal = _splitDecimal.afterDecimal,\n addNegation = _splitDecimal.addNegation; // eslint-disable-line prefer-const\n //apply decimal precision if its defined\n\n\n if (decimalScale !== undefined) afterDecimal = limitToScale(afterDecimal, decimalScale, fixedDecimalScale);\n\n if (thousandSeparator) {\n beforeDecimal = applyThousandSeparator(beforeDecimal, thousandSeparator, thousandsGroupStyle);\n } //add prefix and suffix\n\n\n if (prefix) beforeDecimal = prefix + beforeDecimal;\n if (suffix) afterDecimal = afterDecimal + suffix; //restore negation sign\n\n if (addNegation) beforeDecimal = '-' + beforeDecimal;\n numStr = beforeDecimal + (hasDecimalSeparator && decimalSeparator || '') + afterDecimal;\n return numStr;\n }\n }, {\n key: \"formatNumString\",\n value: function formatNumString() {\n var numStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var _this$props7 = this.props,\n format = _this$props7.format,\n allowEmptyFormatting = _this$props7.allowEmptyFormatting;\n var formattedValue = numStr;\n\n if (numStr === '' && !allowEmptyFormatting) {\n formattedValue = '';\n } else if (numStr === '-' && !format) {\n formattedValue = '-';\n } else if (typeof format === 'string') {\n formattedValue = this.formatWithPattern(formattedValue);\n } else if (typeof format === 'function') {\n formattedValue = format(formattedValue);\n } else {\n formattedValue = this.formatAsNumber(formattedValue);\n }\n\n return formattedValue;\n }\n }, {\n key: \"formatValueProp\",\n value: function formatValueProp(defaultValue) {\n var _this$props8 = this.props,\n format = _this$props8.format,\n decimalScale = _this$props8.decimalScale,\n fixedDecimalScale = _this$props8.fixedDecimalScale,\n allowEmptyFormatting = _this$props8.allowEmptyFormatting;\n var _this$props9 = this.props,\n _this$props9$value = _this$props9.value,\n value = _this$props9$value === void 0 ? defaultValue : _this$props9$value,\n isNumericString = _this$props9.isNumericString;\n var isNonNumericFalsy = !value && value !== 0;\n\n if (isNonNumericFalsy && allowEmptyFormatting) {\n value = '';\n } // if value is not defined return empty string\n\n\n if (isNonNumericFalsy && !allowEmptyFormatting) return '';\n\n if (typeof value === 'number') {\n value = value.toString();\n isNumericString = true;\n } //change infinity value to empty string\n\n\n if (value === 'Infinity' && isNumericString) {\n value = '';\n } //round the number based on decimalScale\n //format only if non formatted value is provided\n\n\n if (isNumericString && !format && typeof decimalScale === 'number') {\n value = roundToPrecision(value, decimalScale, fixedDecimalScale);\n }\n\n var formattedValue = isNumericString ? this.formatNumString(value) : this.formatInput(value);\n return formattedValue;\n }\n }, {\n key: \"formatNegation\",\n value: function formatNegation() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var allowNegative = this.props.allowNegative;\n var negationRegex = new RegExp('(-)');\n var doubleNegationRegex = new RegExp('(-)(.)*(-)'); // Check number has '-' value\n\n var hasNegation = negationRegex.test(value); // Check number has 2 or more '-' values\n\n var removeNegation = doubleNegationRegex.test(value); //remove negation\n\n value = value.replace(/-/g, '');\n\n if (hasNegation && !removeNegation && allowNegative) {\n value = '-' + value;\n }\n\n return value;\n }\n }, {\n key: \"formatInput\",\n value: function formatInput() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var format = this.props.format; //format negation only if we are formatting as number\n\n if (!format) {\n value = this.removePrefixAndSuffix(value);\n value = this.formatNegation(value);\n } //remove formatting from number\n\n\n value = this.removeFormatting(value);\n return this.formatNumString(value);\n }\n /*** format specific methods end ***/\n\n }, {\n key: \"isCharacterAFormat\",\n value: function isCharacterAFormat(caretPos, value) {\n var _this$props10 = this.props,\n format = _this$props10.format,\n prefix = _this$props10.prefix,\n suffix = _this$props10.suffix,\n decimalScale = _this$props10.decimalScale,\n fixedDecimalScale = _this$props10.fixedDecimalScale;\n\n var _this$getSeparators5 = this.getSeparators(),\n decimalSeparator = _this$getSeparators5.decimalSeparator; //check within format pattern\n\n\n if (typeof format === 'string' && format[caretPos] !== '#') return true; //check in number format\n\n if (!format && (caretPos < prefix.length || caretPos >= value.length - suffix.length || decimalScale && fixedDecimalScale && value[caretPos] === decimalSeparator)) {\n return true;\n }\n\n return false;\n }\n }, {\n key: \"checkIfFormatGotDeleted\",\n value: function checkIfFormatGotDeleted(start, end, value) {\n for (var i = start; i < end; i++) {\n if (this.isCharacterAFormat(i, value)) return true;\n }\n\n return false;\n }\n /**\n * This will check if any formatting got removed by the delete or backspace and reset the value\n * It will also work as fallback if android chome keyDown handler does not work\n **/\n\n }, {\n key: \"correctInputValue\",\n value: function correctInputValue(caretPos, lastValue, value) {\n var _this$props11 = this.props,\n format = _this$props11.format,\n allowNegative = _this$props11.allowNegative,\n prefix = _this$props11.prefix,\n suffix = _this$props11.suffix,\n decimalScale = _this$props11.decimalScale;\n\n var _this$getSeparators6 = this.getSeparators(),\n allowedDecimalSeparators = _this$getSeparators6.allowedDecimalSeparators,\n decimalSeparator = _this$getSeparators6.decimalSeparator;\n\n var lastNumStr = this.state.numAsString || '';\n var _this$selectionBefore = this.selectionBeforeInput,\n selectionStart = _this$selectionBefore.selectionStart,\n selectionEnd = _this$selectionBefore.selectionEnd;\n\n var _findChangedIndex = findChangedIndex(lastValue, value),\n start = _findChangedIndex.start,\n end = _findChangedIndex.end;\n /** Check for any allowed decimal separator is added in the numeric format and replace it with decimal separator */\n\n\n if (!format && start === end && allowedDecimalSeparators.indexOf(value[selectionStart]) !== -1) {\n var separator = decimalScale === 0 ? '' : decimalSeparator;\n return value.substr(0, selectionStart) + separator + value.substr(selectionStart + 1, value.length);\n }\n /* don't do anyhting if something got added,\n or if value is empty string (when whole input is cleared)\n or whole input is replace with a number\n */\n\n\n var leftBound = !!format ? 0 : prefix.length;\n var rightBound = lastValue.length - (!!format ? 0 : suffix.length);\n\n if (value.length > lastValue.length || !value.length || start === end || selectionStart === 0 && selectionEnd === lastValue.length || selectionStart === leftBound && selectionEnd === rightBound) {\n return value;\n } //if format got deleted reset the value to last value\n\n\n if (this.checkIfFormatGotDeleted(start, end, lastValue)) {\n value = lastValue;\n } //for numbers check if beforeDecimal got deleted and there is nothing after decimal,\n //clear all numbers in such case while keeping the - sign\n\n\n if (!format) {\n var numericString = this.removeFormatting(value);\n\n var _splitDecimal2 = splitDecimal(numericString, allowNegative),\n beforeDecimal = _splitDecimal2.beforeDecimal,\n afterDecimal = _splitDecimal2.afterDecimal,\n addNegation = _splitDecimal2.addNegation; // eslint-disable-line prefer-const\n //clear only if something got deleted\n\n\n var isBeforeDecimalPoint = caretPos < value.indexOf(decimalSeparator) + 1;\n\n if (numericString.length < lastNumStr.length && isBeforeDecimalPoint && beforeDecimal === '' && !parseFloat(afterDecimal)) {\n return addNegation ? '-' : '';\n }\n }\n\n return value;\n }\n /** Update value and caret position */\n\n }, {\n key: \"updateValue\",\n value: function updateValue(params) {\n var formattedValue = params.formattedValue,\n input = params.input,\n _params$setCaretPosit = params.setCaretPosition,\n setCaretPosition = _params$setCaretPosit === void 0 ? true : _params$setCaretPosit;\n var numAsString = params.numAsString,\n caretPos = params.caretPos;\n var onValueChange = this.props.onValueChange;\n var lastValue = this.state.value;\n\n if (input) {\n //set caret position, and value imperatively when element is provided\n if (setCaretPosition) {\n //calculate caret position if not defined\n if (!caretPos) {\n var inputValue = params.inputValue || input.value;\n var currentCaretPosition = getCurrentCaretPosition(input);\n /**\n * set the value imperatively, this is required for IE fix\n * This is also required as if new caret position is beyond the previous value.\n * Caret position will not be set correctly\n */\n\n input.value = formattedValue; //get the caret position\n\n caretPos = this.getCaretPosition(inputValue, formattedValue, currentCaretPosition);\n } //set caret position\n\n\n this.setPatchedCaretPosition(input, caretPos, formattedValue);\n } else {\n /**\n * if we are not setting caret position set the value imperatively.\n * This is required on onBlur method\n */\n input.value = formattedValue;\n }\n } //calculate numeric string if not passed\n\n\n if (numAsString === undefined) {\n numAsString = this.removeFormatting(formattedValue);\n } //update state if value is changed\n\n\n if (formattedValue !== lastValue) {\n this.setState({\n value: formattedValue,\n numAsString: numAsString\n }); // trigger onValueChange synchronously, so parent is updated along with the number format. Fix for #277, #287\n\n onValueChange(this.getValueObject(formattedValue, numAsString));\n }\n }\n }, {\n key: \"onChange\",\n value: function onChange(e) {\n var el = e.target;\n var inputValue = el.value;\n var state = this.state,\n props = this.props;\n var isAllowed = props.isAllowed;\n var lastValue = state.value || '';\n var currentCaretPosition = getCurrentCaretPosition(el);\n inputValue = this.correctInputValue(currentCaretPosition, lastValue, inputValue);\n var formattedValue = this.formatInput(inputValue) || '';\n var numAsString = this.removeFormatting(formattedValue);\n var valueObj = this.getValueObject(formattedValue, numAsString);\n\n if (!isAllowed(valueObj)) {\n formattedValue = lastValue;\n }\n\n this.updateValue({\n formattedValue: formattedValue,\n numAsString: numAsString,\n inputValue: inputValue,\n input: el\n });\n props.onChange(e);\n }\n }, {\n key: \"onBlur\",\n value: function onBlur(e) {\n var props = this.props,\n state = this.state;\n var format = props.format,\n onBlur = props.onBlur,\n allowLeadingZeros = props.allowLeadingZeros;\n var numAsString = state.numAsString;\n var lastValue = state.value;\n this.focusedElm = null;\n\n if (this.focusTimeout) {\n clearTimeout(this.focusTimeout);\n }\n\n if (!format) {\n // if the numAsString is not a valid number reset it to empty\n if (isNaN(parseFloat(numAsString))) {\n numAsString = '';\n }\n\n if (!allowLeadingZeros) {\n numAsString = fixLeadingZero(numAsString);\n }\n\n var formattedValue = this.formatNumString(numAsString); //change the state\n\n if (formattedValue !== lastValue) {\n // the event needs to be persisted because its properties can be accessed in an asynchronous way\n this.updateValue({\n formattedValue: formattedValue,\n numAsString: numAsString,\n input: e.target,\n setCaretPosition: false\n });\n onBlur(e);\n return;\n }\n }\n\n onBlur(e);\n }\n }, {\n key: \"onKeyDown\",\n value: function onKeyDown(e) {\n var el = e.target;\n var key = e.key;\n var selectionStart = el.selectionStart,\n selectionEnd = el.selectionEnd,\n _el$value = el.value,\n value = _el$value === void 0 ? '' : _el$value;\n var expectedCaretPosition;\n var _this$props12 = this.props,\n decimalScale = _this$props12.decimalScale,\n fixedDecimalScale = _this$props12.fixedDecimalScale,\n prefix = _this$props12.prefix,\n suffix = _this$props12.suffix,\n format = _this$props12.format,\n onKeyDown = _this$props12.onKeyDown;\n var ignoreDecimalSeparator = decimalScale !== undefined && fixedDecimalScale;\n var numRegex = this.getNumberRegex(false, ignoreDecimalSeparator);\n var negativeRegex = new RegExp('-');\n var isPatternFormat = typeof format === 'string';\n this.selectionBeforeInput = {\n selectionStart: selectionStart,\n selectionEnd: selectionEnd\n }; //Handle backspace and delete against non numerical/decimal characters or arrow keys\n\n if (key === 'ArrowLeft' || key === 'Backspace') {\n expectedCaretPosition = selectionStart - 1;\n } else if (key === 'ArrowRight') {\n expectedCaretPosition = selectionStart + 1;\n } else if (key === 'Delete') {\n expectedCaretPosition = selectionStart;\n } //if expectedCaretPosition is not set it means we don't want to Handle keyDown\n //also if multiple characters are selected don't handle\n\n\n if (expectedCaretPosition === undefined || selectionStart !== selectionEnd) {\n onKeyDown(e);\n return;\n }\n\n var newCaretPosition = expectedCaretPosition;\n var leftBound = isPatternFormat ? format.indexOf('#') : prefix.length;\n var rightBound = isPatternFormat ? format.lastIndexOf('#') + 1 : value.length - suffix.length;\n\n if (key === 'ArrowLeft' || key === 'ArrowRight') {\n var direction = key === 'ArrowLeft' ? 'left' : 'right';\n newCaretPosition = this.correctCaretPosition(value, expectedCaretPosition, direction);\n } else if (key === 'Delete' && !numRegex.test(value[expectedCaretPosition]) && !negativeRegex.test(value[expectedCaretPosition])) {\n while (!numRegex.test(value[newCaretPosition]) && newCaretPosition < rightBound) {\n newCaretPosition++;\n }\n } else if (key === 'Backspace' && !numRegex.test(value[expectedCaretPosition])) {\n /* NOTE: This is special case when backspace is pressed on a\n negative value while the cursor position is after prefix. We can't handle it on onChange because\n we will not have any information of keyPress\n */\n if (selectionStart <= leftBound + 1 && value[0] === '-' && typeof format === 'undefined') {\n var newValue = value.substring(1);\n this.updateValue({\n formattedValue: newValue,\n caretPos: newCaretPosition,\n input: el\n });\n } else if (!negativeRegex.test(value[expectedCaretPosition])) {\n while (!numRegex.test(value[newCaretPosition - 1]) && newCaretPosition > leftBound) {\n newCaretPosition--;\n }\n\n newCaretPosition = this.correctCaretPosition(value, newCaretPosition, 'left');\n }\n }\n\n if (newCaretPosition !== expectedCaretPosition || expectedCaretPosition < leftBound || expectedCaretPosition > rightBound) {\n e.preventDefault();\n this.setPatchedCaretPosition(el, newCaretPosition, value);\n }\n /* NOTE: this is just required for unit test as we need to get the newCaretPosition,\n Remove this when you find different solution */\n\n\n if (e.isUnitTestRun) {\n this.setPatchedCaretPosition(el, newCaretPosition, value);\n }\n\n onKeyDown(e);\n }\n /** required to handle the caret position when click anywhere within the input **/\n\n }, {\n key: \"onMouseUp\",\n value: function onMouseUp(e) {\n var el = e.target;\n /**\n * NOTE: we have to give default value for value as in case when custom input is provided\n * value can come as undefined when nothing is provided on value prop.\n */\n\n var selectionStart = el.selectionStart,\n selectionEnd = el.selectionEnd,\n _el$value2 = el.value,\n value = _el$value2 === void 0 ? '' : _el$value2;\n\n if (selectionStart === selectionEnd) {\n var caretPosition = this.correctCaretPosition(value, selectionStart);\n\n if (caretPosition !== selectionStart) {\n this.setPatchedCaretPosition(el, caretPosition, value);\n }\n }\n\n this.props.onMouseUp(e);\n }\n }, {\n key: \"onFocus\",\n value: function onFocus(e) {\n var _this2 = this;\n\n // Workaround Chrome and Safari bug https://bugs.chromium.org/p/chromium/issues/detail?id=779328\n // (onFocus event target selectionStart is always 0 before setTimeout)\n e.persist();\n this.focusedElm = e.target;\n this.focusTimeout = setTimeout(function () {\n var el = e.target;\n var selectionStart = el.selectionStart,\n selectionEnd = el.selectionEnd,\n _el$value3 = el.value,\n value = _el$value3 === void 0 ? '' : _el$value3;\n\n var caretPosition = _this2.correctCaretPosition(value, selectionStart); //setPatchedCaretPosition only when everything is not selected on focus (while tabbing into the field)\n\n\n if (caretPosition !== selectionStart && !(selectionStart === 0 && selectionEnd === value.length)) {\n _this2.setPatchedCaretPosition(el, caretPosition, value);\n }\n\n _this2.props.onFocus(e);\n }, 0);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props13 = this.props,\n type = _this$props13.type,\n displayType = _this$props13.displayType,\n customInput = _this$props13.customInput,\n renderText = _this$props13.renderText,\n getInputRef = _this$props13.getInputRef;\n var value = this.state.value;\n var otherProps = omit(this.props, propTypes$1);\n\n var inputProps = _extends({\n inputMode: 'numeric'\n }, otherProps, {\n type: type,\n value: value,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown,\n onMouseUp: this.onMouseUp,\n onFocus: this.onFocus,\n onBlur: this.onBlur\n });\n\n if (displayType === 'text') {\n return renderText ? renderText(value) || null : React.createElement(\"span\", _extends({}, otherProps, {\n ref: getInputRef\n }), value);\n } else if (customInput) {\n var CustomInput = customInput;\n return React.createElement(CustomInput, _extends({}, inputProps, {\n ref: getInputRef\n }));\n }\n\n return React.createElement(\"input\", _extends({}, inputProps, {\n ref: getInputRef\n }));\n }\n }]);\n\n return NumberFormat;\n}(React.Component);\n\nNumberFormat.propTypes = propTypes$1;\nNumberFormat.defaultProps = defaultProps;\n\nexport default NumberFormat;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M5 4v3h5.5v12h3V7H19V4z\"\n}), 'Title');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M2 20h20v4H2v-4zm3.49-3h2.42l1.27-3.58h5.65L16.09 17h2.42L13.25 3h-2.5L5.49 17zm4.42-5.61 2.03-5.79h.12l2.03 5.79H9.91z\"\n}), 'FormatColorTextOutlined');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4c4.41 0 8 3.59 8 8s-3.59 8-8 8-8-3.59-8-8 3.59-8 8-8m0-2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 13-4-4h8z\"\n}), 'ArrowDropDownCircleOutlined');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 17c0 .55.45 1 1 1s1-.45 1-1-.45-1-1-1-1 .45-1 1zm0-14v4h2V5.08c3.39.49 6 3.39 6 6.92 0 3.87-3.13 7-7 7s-7-3.13-7-7c0-1.68.59-3.22 1.58-4.42L12 13l1.41-1.41-6.8-6.8v.02C4.42 6.45 3 9.05 3 12c0 4.97 4.02 9 9 9 4.97 0 9-4.03 9-9s-4.03-9-9-9h-1zm7 9c0-.55-.45-1-1-1s-1 .45-1 1 .45 1 1 1 1-.45 1-1zM6 12c0 .55.45 1 1 1s1-.45 1-1-.45-1-1-1-1 .45-1 1z\"\n}), 'AvTimerSharp');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M22 9v6c0 1.1-.9 2-2 2h-1v-2h1V9H4v6h6v2H4c-1.1 0-2-.9-2-2V9c0-1.1.9-2 2-2h16c1.1 0 2 .9 2 2zm-7.5 10 1.09-2.41L18 15.5l-2.41-1.09L14.5 12l-1.09 2.41L11 15.5l2.41 1.09L14.5 19zm2.5-5 .62-1.38L19 12l-1.38-.62L17 10l-.62 1.38L15 12l1.38.62L17 14zm-2.5 5 1.09-2.41L18 15.5l-2.41-1.09L14.5 12l-1.09 2.41L11 15.5l2.41 1.09L14.5 19zm2.5-5 .62-1.38L19 12l-1.38-.62L17 10l-.62 1.38L15 12l1.38.62L17 14z\"\n}), 'SmartButton');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM17.99 9l-1.41-1.42-6.59 6.59-2.58-2.57-1.42 1.41 4 3.99z\"\n}), 'CheckBoxOutlined');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11zM8 15.01l1.41 1.41L11 14.84V19h2v-4.16l1.59 1.59L16 15.01 12.01 11z\"\n}), 'UploadFile');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zm-5.04-6.71-2.75 3.54-1.96-2.36L6.5 17h11l-3.54-4.71z\"\n}), 'CropOriginal');\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nfunction dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nvar _default = longFormatters;\nexports.default = _default;\nmodule.exports = exports.default;","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\n\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import differenceInMonths from \"../differenceInMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\n\nexport default function differenceInQuarters(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMonths(dateLeft, dateRight) / 3;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInDays from \"../differenceInDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\n\nexport default function differenceInWeeks(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInDays(dateLeft, dateRight) / 7;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import { millisecondsInHour } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\n\nexport default function differenceInHours(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInHour;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\n\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\n\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\n\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\n\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\n\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\n\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\n\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n * \n * @example\n * // Are 4 September and 4 October in the same day?\n * var result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n * \n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\n\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * var result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\n\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\n\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\n\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n date.setFullYear(year);\n return date;\n}","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\n\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isWithinRange` to `isWithinInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * isWithinRange(\n * new Date(2014, 0, 3),\n * new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n *\n * // v2.0.0 onward\n *\n * isWithinInterval(\n * new Date(2014, 0, 3),\n * { start: new Date(2014, 0, 1), end: new Date(2014, 0, 7) }\n * )\n * ```\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n return time >= startTime && time <= endTime;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\n\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n // if the original date was the last day of the longer month\n\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `eachDay` to `eachDayOfInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * eachDay(new Date(2014, 0, 10), new Date(2014, 0, 20))\n *\n * // v2.0.0 onward\n *\n * eachDayOfInterval(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) }\n * )\n * ```\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\n\nexport default function eachDayOfInterval(dirtyInterval, options) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n var step = options && 'step' in options ? Number(options.step) : 1;\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setDate(currentDate.getDate() + step);\n currentDate.setHours(0, 0, 0, 0);\n }\n\n return dates;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n ;\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\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 };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[i] = extend({}, printGrid.columns[i]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\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.isVue = this.parent.isVue;\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 = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll(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, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var 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 className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[i].visible && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\"\n}), 'FileDownload');\n\nexports.default = _default;","/**\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})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { append, createElement, extend, EventHandler, prepend, Animation, formatUnit } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setStyleAttribute, remove, removeClass, addClass } from '@syncfusion/ej2-base';\nimport { EventBase } from './event-base';\nimport * as util from '../base/util';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * Vertical view appointment rendering\n */\nvar VerticalEvent = /** @class */ (function (_super) {\n __extends(VerticalEvent, _super);\n function VerticalEvent(parent) {\n var _this = _super.call(this, parent) || this;\n _this.dateRender = [];\n _this.renderedEvents = [];\n _this.renderedAllDayEvents = [];\n _this.overlapEvents = [];\n _this.moreEvents = [];\n _this.overlapList = [];\n _this.allDayEvents = [];\n _this.slotCount = _this.parent.activeViewOptions.timeScale.slotCount;\n _this.interval = _this.parent.activeViewOptions.timeScale.interval;\n _this.allDayLevel = 0;\n _this.startHour = _this.parent.activeView.getStartHour();\n _this.endHour = _this.parent.activeView.getEndHour();\n _this.element = _this.parent.activeView.getPanel();\n _this.fields = _this.parent.eventFields;\n _this.animation = new Animation({ progress: _this.animationUiUpdate.bind(_this) });\n _this.addEventListener();\n return _this;\n }\n VerticalEvent.prototype.renderAppointments = function () {\n if (isNullOrUndefined(this.parent)) {\n return;\n }\n if (this.parent.dragAndDropModule) {\n this.parent.dragAndDropModule.setDragArea();\n }\n var wrapperElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.BLOCK_APPOINTMENT_CLASS +\n ',.' + cls.APPOINTMENT_CLASS + ',.' + cls.ROW_COUNT_WRAPPER_CLASS));\n var isDragging = (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) ? true : false;\n for (var _i = 0, wrapperElements_1 = wrapperElements; _i < wrapperElements_1.length; _i++) {\n var wrapper = wrapperElements_1[_i];\n if (isDragging && !(wrapper.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS) ||\n wrapper.classList.contains(cls.ROW_COUNT_WRAPPER_CLASS))) {\n var groupIndex = parseInt(wrapper.getAttribute('data-group-index'), 10);\n for (var j = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; j < len; j++) {\n if (groupIndex === this.parent.crudModule.crudObj.sourceEvent[j].groupIndex ||\n groupIndex === this.parent.crudModule.crudObj.targetEvent[j].groupIndex) {\n remove(wrapper);\n }\n }\n }\n else {\n remove(wrapper);\n }\n }\n if (!this.element.querySelector('.' + cls.WORK_CELLS_CLASS)) {\n return;\n }\n this.allDayElement = [].slice.call(this.element.querySelectorAll('.' + cls.ALLDAY_CELLS_CLASS));\n this.setAllDayRowHeight(0);\n if (this.parent.eventsProcessed.length === 0 && this.parent.blockProcessed.length === 0) {\n return;\n }\n var expandCollapse = this.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_SECTION_CLASS);\n EventHandler.remove(expandCollapse, 'click', this.rowExpandCollapse);\n EventHandler.add(expandCollapse, 'click', this.rowExpandCollapse, this);\n this.renderedEvents = [];\n this.renderedAllDayEvents = [];\n this.initializeValues();\n this.processBlockEvents();\n this.renderEvents('normalEvents');\n if (this.allDayEvents.length > 0) {\n this.allDayEvents = this.allDayEvents.filter(function (item, index, arr) {\n return index === arr.map(function (item) { return item.Guid; }).indexOf(item.Guid);\n });\n removeClass(this.allDayElement, cls.ALLDAY_ROW_ANIMATE_CLASS);\n this.slots.push(this.parent.activeView.renderDates.map(function (date) { return +date; }));\n this.renderEvents('allDayEvents');\n }\n this.parent.notify(events.contentReady, {});\n addClass(this.allDayElement, cls.ALLDAY_ROW_ANIMATE_CLASS);\n if (isDragging) {\n this.parent.crudModule.crudObj.isCrudAction = false;\n }\n this.parent.renderTemplates();\n };\n VerticalEvent.prototype.initializeValues = function () {\n this.resources = (this.parent.activeViewOptions.group.resources.length > 0) ? this.parent.uiStateValues.isGroupAdaptive ?\n [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] :\n this.parent.resourceBase.lastResourceLevel : [];\n this.cellHeight =\n parseFloat(this.parent.element.querySelector('.e-content-wrap tbody tr').getBoundingClientRect().height.toFixed(2));\n this.dateRender[0] = this.parent.activeView.renderDates;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n for (var i = 0, len = this.resources.length; i < len; i++) {\n this.dateRender[i] = this.resources[i].renderDates;\n }\n }\n };\n VerticalEvent.prototype.getHeight = function (start, end) {\n var appHeight = (util.getUniversalTime(end) - util.getUniversalTime(start)) /\n util.MS_PER_MINUTE * (this.cellHeight * this.slotCount) / this.interval;\n appHeight = (appHeight <= 0) ? this.cellHeight : appHeight;\n return appHeight;\n };\n VerticalEvent.prototype.appendEvent = function (eventObj, appointmentElement, index, appLeft) {\n var appointmentWrap = [].slice.call(this.element.querySelectorAll('.' + cls.APPOINTMENT_WRAPPER_CLASS));\n if (this.parent.enableRtl) {\n setStyleAttribute(appointmentElement, { 'right': appLeft });\n }\n else {\n setStyleAttribute(appointmentElement, { 'left': appLeft });\n }\n var eventType = appointmentElement.classList.contains(cls.BLOCK_APPOINTMENT_CLASS) ? 'blockEvent' : 'event';\n var args = {\n data: extend({}, eventObj, null, true),\n element: appointmentElement, cancel: false, type: eventType\n };\n this.parent.trigger(events.eventRendered, args, function (eventArgs) {\n if (!eventArgs.cancel) {\n appointmentWrap[index].appendChild(appointmentElement);\n }\n });\n };\n VerticalEvent.prototype.processBlockEvents = function () {\n var resources = this.getResourceList();\n var dateCount = 0;\n for (var _i = 0, resources_1 = resources; _i < resources_1.length; _i++) {\n var resource = resources_1[_i];\n var renderDates = this.dateRender[resource];\n for (var day = 0, length_1 = renderDates.length; day < length_1; day++) {\n var startDate = new Date(renderDates[day].getTime());\n var endDate = util.addDays(renderDates[day], 1);\n var filterEvents = this.filterEvents(startDate, endDate, this.parent.blockProcessed, this.resources[resource]);\n for (var _a = 0, filterEvents_1 = filterEvents; _a < filterEvents_1.length; _a++) {\n var event_1 = filterEvents_1[_a];\n if (this.parent.resourceBase) {\n this.setValues(event_1, resource);\n }\n this.renderBlockEvents(event_1, day, resource, dateCount);\n this.cssClass = null;\n this.groupOrder = null;\n }\n dateCount += 1;\n }\n }\n };\n VerticalEvent.prototype.renderBlockEvents = function (eventObj, dayIndex, resource, dayCount) {\n var spannedData = this.isSpannedEvent(eventObj, dayIndex, resource);\n var eStart = spannedData[this.fields.startTime];\n var eEnd = spannedData[this.fields.endTime];\n var currentDate = util.resetTime(new Date(this.dateRender[resource][dayIndex].getTime()));\n var schedule = util.getStartEndHours(currentDate, this.startHour, this.endHour);\n if (eStart <= eEnd && this.isValidEvent(eventObj, eStart, eEnd, schedule)) {\n var blockTop = void 0;\n var blockHeight = void 0;\n if (spannedData[this.fields.isAllDay]) {\n var contentWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS + ' table');\n blockHeight = formatUnit(contentWrap.offsetHeight);\n blockTop = formatUnit(0);\n }\n else {\n blockHeight = formatUnit(this.getHeight(eStart, eEnd));\n blockTop = formatUnit(this.getTopValue(eStart, dayIndex, resource));\n }\n var appointmentElement = this.createBlockAppointmentElement(eventObj, resource);\n setStyleAttribute(appointmentElement, { 'width': '100%', 'height': blockHeight, 'top': blockTop });\n var index = this.parent.activeViewOptions.group.byDate ? (this.resources.length * dayIndex) + resource : dayCount;\n this.appendEvent(eventObj, appointmentElement, index, '0px');\n }\n };\n VerticalEvent.prototype.renderEvents = function (eventType) {\n removeClass(this.allDayElement, cls.ALLDAY_ROW_ANIMATE_CLASS);\n var eventCollection = (eventType === 'allDayEvents') ? this.sortByDateTime(this.allDayEvents) : undefined;\n var resources = this.getResourceList();\n var dateCount = 0;\n var isRender;\n var _loop_1 = function (resource) {\n isRender = true;\n if (this_1.parent.crudModule && this_1.parent.crudModule.crudObj.isCrudAction && eventType !== 'allDayEvents'\n && !this_1.parent.uiStateValues.isGroupAdaptive) {\n if (this_1.parent.crudModule.crudObj.sourceEvent.filter(function (data) { return data.groupIndex === resource; }).length === 0 &&\n this_1.parent.crudModule.crudObj.targetEvent.filter(function (data) { return data.groupIndex === resource; }).length === 0) {\n isRender = false;\n }\n }\n this_1.slots = [];\n var renderDates = this_1.dateRender[resource];\n var renderedDate = this_1.getRenderedDates(renderDates) || renderDates;\n this_1.slots.push(renderDates.map(function (date) { return +date; }));\n for (var day = 0, length_2 = renderDates.length; day < length_2 &&\n renderDates[day] <= renderedDate[renderedDate.length - 1]; day++) {\n this_1.renderedEvents = [];\n var startDate = new Date(renderDates[day].getTime());\n var endDate = util.addDays(renderDates[day], 1);\n var filterEvents = this_1.filterEvents(startDate, endDate, eventCollection, this_1.resources[resource]);\n if (isRender) {\n for (var _i = 0, filterEvents_2 = filterEvents; _i < filterEvents_2.length; _i++) {\n var event_2 = filterEvents_2[_i];\n if (this_1.parent.resourceBase) {\n this_1.setValues(event_2, resource);\n }\n if (eventType === 'allDayEvents') {\n this_1.renderAllDayEvents(event_2, day, resource, dateCount);\n }\n else {\n if (this_1.isAllDayAppointment(event_2)) {\n this_1.allDayEvents.push(extend({}, event_2, null, true));\n }\n else {\n if (this_1.parent.eventSettings.enableMaxHeight) {\n if (this_1.getOverlapIndex(event_2, day, false, resource) > 0) {\n continue;\n }\n }\n this_1.renderNormalEvents(event_2, day, resource, dateCount);\n }\n }\n this_1.cssClass = null;\n this_1.groupOrder = null;\n }\n }\n else {\n for (var _a = 0, filterEvents_3 = filterEvents; _a < filterEvents_3.length; _a++) {\n var event_3 = filterEvents_3[_a];\n if (this_1.isAllDayAppointment(event_3)) {\n this_1.allDayEvents.push(extend({}, event_3, null, true));\n }\n }\n }\n dateCount += 1;\n }\n };\n var this_1 = this;\n for (var _i = 0, resources_2 = resources; _i < resources_2.length; _i++) {\n var resource = resources_2[_i];\n _loop_1(resource);\n }\n };\n VerticalEvent.prototype.setValues = function (event, resourceIndex) {\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.cssClass = this.resources[resourceIndex].cssClass;\n this.groupOrder = this.resources[resourceIndex].groupOrder;\n }\n else {\n this.cssClass = this.parent.resourceBase.getCssClass(event);\n }\n };\n VerticalEvent.prototype.getResourceList = function () {\n // eslint-disable-next-line prefer-spread\n var resources = Array.apply(null, {\n length: (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) ?\n this.resources.length : 1\n }).map(function (value, index) { return index; });\n return resources;\n };\n // eslint-disable-next-line max-len\n VerticalEvent.prototype.createAppointmentElement = function (record, isAllDay, data, resource) {\n var fieldMapping = this.parent.eventFields;\n var recordSubject = (record[fieldMapping.subject] || this.parent.eventSettings.fields.subject.default\n || this.parent.localeObj.getConstant('addTitle'));\n var appointmentWrapper = createElement('div', {\n className: cls.APPOINTMENT_CLASS,\n attrs: {\n 'data-id': 'Appointment_' + record[fieldMapping.id],\n 'data-guid': record.Guid,\n 'role': 'button',\n 'tabindex': '0',\n 'aria-readonly': this.parent.eventBase.getReadonlyAttribute(record),\n 'aria-selected': 'false',\n 'aria-grabbed': 'true',\n 'aria-label': this.parent.getAnnouncementString(record)\n }\n });\n if (record[this.fields.isReadonly]) {\n addClass([appointmentWrapper], 'e-read-only');\n }\n var appointmentDetails = createElement('div', { className: cls.APPOINTMENT_DETAILS });\n appointmentWrapper.appendChild(appointmentDetails);\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var resourceIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex : resource;\n appointmentWrapper.setAttribute('data-group-index', resourceIndex.toString());\n }\n var templateElement;\n var eventData = data;\n if (!isNullOrUndefined(this.parent.activeViewOptions.eventTemplate)) {\n var elementId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.eventTemplateName;\n var templateId = elementId + viewName + 'eventTemplate';\n var resIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex : resource;\n var templateName = 'eventTemplate' + (this.parent.activeViewOptions.group.resources.length > 0 ? '_' + resIndex : '');\n templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false);\n }\n else {\n var appointmentSubject = createElement('div', { className: cls.SUBJECT_CLASS, innerHTML: recordSubject });\n if (isAllDay) {\n if (record[fieldMapping.isAllDay]) {\n templateElement = [appointmentSubject];\n }\n else {\n templateElement = [];\n var appointmentStartTime = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(record[fieldMapping.startTime])\n });\n var appointmentEndTime = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(record[fieldMapping.endTime])\n });\n addClass([appointmentSubject], 'e-text-center');\n if (!eventData.isLeft) {\n templateElement.push(appointmentStartTime);\n }\n templateElement.push(appointmentSubject);\n if (!eventData.isRight) {\n templateElement.push(appointmentEndTime);\n }\n }\n }\n else {\n var timeStr = this.parent.getTimeString(record[fieldMapping.startTime]) + ' - ' +\n this.parent.getTimeString(record[fieldMapping.endTime]);\n var appointmentTime = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: timeStr\n });\n var appointmentLocation = createElement('div', {\n className: cls.LOCATION_CLASS,\n innerHTML: (record[fieldMapping.location] || this.parent.eventSettings.fields.location.default || '')\n });\n templateElement = [appointmentSubject, appointmentTime, appointmentLocation];\n }\n }\n append(templateElement, appointmentDetails);\n if (!this.parent.isAdaptive &&\n (!isNullOrUndefined(record[fieldMapping.recurrenceRule]) || !isNullOrUndefined(record[fieldMapping.recurrenceID]))) {\n var iconClass = (record[fieldMapping.id] === record[fieldMapping.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n var recurrenceIcon = createElement('div', { className: cls.ICON + ' ' + iconClass });\n if (isAllDay) {\n appointmentDetails.appendChild(recurrenceIcon);\n }\n else {\n appointmentWrapper.appendChild(recurrenceIcon);\n }\n }\n this.renderSpannedIcon(isAllDay ? appointmentDetails : appointmentWrapper, eventData);\n if (!isNullOrUndefined(this.cssClass)) {\n addClass([appointmentWrapper], this.cssClass);\n }\n this.applyResourceColor(appointmentWrapper, record, 'backgroundColor', this.groupOrder);\n this.renderResizeHandler(appointmentWrapper, eventData, record[this.fields.isReadonly]);\n return appointmentWrapper;\n };\n VerticalEvent.prototype.createMoreIndicator = function (allDayRow, count, currentDay) {\n var index = currentDay + count;\n var countWrapper = allDayRow[index];\n if (countWrapper.childElementCount <= 0) {\n var innerCountWrap = createElement('div', {\n className: cls.ROW_COUNT_WRAPPER_CLASS,\n id: cls.ROW_COUNT_WRAPPER_CLASS + '-' + index.toString()\n });\n var moreIndicatorElement = createElement('div', {\n className: cls.MORE_INDICATOR_CLASS,\n attrs: { 'tabindex': '0', 'role': 'list', 'data-index': index.toString(), 'data-count': '1' },\n innerHTML: '+1 ' + (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more'))\n });\n innerCountWrap.appendChild(moreIndicatorElement);\n countWrapper.appendChild(innerCountWrap);\n EventHandler.add(moreIndicatorElement, 'click', this.rowExpandCollapse, this);\n }\n else {\n var countCell = countWrapper.querySelector('.' + cls.MORE_INDICATOR_CLASS);\n var moreCount = parseInt(countCell.getAttribute('data-count'), 10) + 1;\n countCell.setAttribute('data-count', moreCount.toString());\n countCell.innerHTML = '+' + this.parent.globalize.formatNumber(moreCount) + ' ' + (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more'));\n }\n };\n VerticalEvent.prototype.renderSpannedIcon = function (element, spanEvent) {\n var iconElement = createElement('div', { className: cls.EVENT_INDICATOR_CLASS + ' ' + cls.ICON });\n if (spanEvent.isLeft) {\n var iconLeft = iconElement.cloneNode();\n addClass([iconLeft], cls.EVENT_ICON_LEFT_CLASS);\n prepend([iconLeft], element);\n }\n if (spanEvent.isRight) {\n var iconRight = iconElement.cloneNode();\n addClass([iconRight], cls.EVENT_ICON_RIGHT_CLASS);\n append([iconRight], element);\n }\n if (spanEvent.isTop) {\n var iconTop = iconElement.cloneNode();\n addClass([iconTop], cls.EVENT_ICON_UP_CLASS);\n prepend([iconTop], element);\n }\n if (spanEvent.isBottom) {\n var iconBottom = iconElement.cloneNode();\n addClass([iconBottom], cls.EVENT_ICON_DOWN_CLASS);\n append([iconBottom], element);\n }\n };\n VerticalEvent.prototype.isSpannedEvent = function (record, day, resource) {\n var currentDate = util.resetTime(this.dateRender[resource][day]);\n var renderedDate = this.getRenderedDates(this.dateRender[resource]) || [currentDate];\n var currentDay = renderedDate.filter(function (date) { return date.getDay() === day; });\n if (currentDay.length === 0) {\n currentDate = util.resetTime(renderedDate[0]);\n }\n var field = this.parent.eventFields;\n var schedule = util.getStartEndHours(currentDate, this.startHour, this.endHour);\n var event = extend({}, record, null, true);\n event.isSpanned = { isBottom: false, isTop: false };\n if (record[field.startTime].getTime() < schedule.startHour.getTime()) {\n event[field.startTime] = schedule.startHour;\n event.isSpanned.isTop = true;\n }\n if (record[field.endTime].getTime() > schedule.endHour.getTime()) {\n event[field.endTime] = schedule.endHour;\n event.isSpanned.isBottom = true;\n }\n var eventDates = this.updateEventMinimumDuration(schedule, event[field.startTime], event[field.endTime]);\n event[field.startTime] = eventDates.startDate;\n event[field.endTime] = eventDates.endDate;\n return event;\n };\n VerticalEvent.prototype.renderAllDayEvents = function (eventObj, dayIndex, resource, dayCount, inline) {\n var _this = this;\n var currentDates = this.getRenderedDates(this.dateRender[resource]) || this.dateRender[resource];\n if (this.parent.activeViewOptions.group.byDate) {\n this.slots[0] = [this.dateRender[resource][dayIndex].getTime()];\n currentDates = [this.dateRender[resource][dayIndex]];\n }\n var record = this.splitEvent(eventObj, currentDates)[0];\n var allDayRowCell = this.element.querySelector('.' + cls.ALLDAY_CELLS_CLASS + ':first-child');\n var cellTop = allDayRowCell.offsetTop;\n var eStart = new Date(record[this.parent.eventFields.startTime].getTime());\n var eEnd = new Date(record[this.parent.eventFields.endTime].getTime());\n var appWidth = 0;\n var topValue = 1;\n var isDateRange = currentDates[0].getTime() <= eStart.getTime() &&\n util.addDays(currentDates.slice(-1)[0], 1).getTime() >= eStart.getTime();\n if (eStart <= eEnd && isDateRange) {\n var isAlreadyRendered = [];\n if (this.renderedAllDayEvents[resource]) {\n isAlreadyRendered = this.renderedAllDayEvents[resource].filter(function (event) {\n return event.Guid === eventObj.Guid;\n });\n if (this.parent.activeViewOptions.group.byDate) {\n isAlreadyRendered = isAlreadyRendered.filter(function (event) {\n return event[_this.parent.eventFields.startTime] >= currentDates[dayIndex] &&\n event[_this.parent.eventFields.endTime] <= util.addDays(new Date(+currentDates[dayIndex]), 1);\n });\n }\n }\n if (isAlreadyRendered.length === 0) {\n var allDayDifference_1 = record.data.count;\n var allDayIndex_1 = this.getOverlapIndex(record, dayIndex, true, resource);\n record.Index = allDayIndex_1;\n this.allDayLevel = (this.allDayLevel < allDayIndex_1) ? allDayIndex_1 : this.allDayLevel;\n var widthAdjustment = record.data.isRight ? 0 :\n this.parent.currentView === 'Day' ? 4 : 7;\n if (allDayDifference_1 >= 0) {\n appWidth = (allDayDifference_1 * 100) - widthAdjustment;\n }\n if (isNullOrUndefined(this.renderedAllDayEvents[resource])) {\n this.renderedAllDayEvents[resource] = [];\n }\n this.renderedAllDayEvents[resource].push(extend({}, record, null, true));\n var allDayRow_1 = [].slice.call(this.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).children);\n var wIndex_1 = this.parent.activeViewOptions.group.byDate ?\n (this.resources.length * dayIndex) + resource : dayCount;\n var eventWrapper_1 = this.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS +\n ':nth-child(' + (wIndex_1 + 1) + ')');\n var appointmentElement_1;\n if (inline) {\n appointmentElement_1 = this.parent.inlineModule.createInlineAppointmentElement(eventObj);\n }\n else {\n appointmentElement_1 = this.createAppointmentElement(eventObj, true, record.data, resource);\n }\n addClass([appointmentElement_1], cls.ALLDAY_APPOINTMENT_CLASS);\n var eventData = extend({}, record.data, null, true);\n eventObj.data = eventData;\n var args = { data: eventObj, element: appointmentElement_1, cancel: false };\n this.parent.trigger(events.eventRendered, args, function (eventArgs) {\n if (!eventArgs.cancel) {\n eventWrapper_1.appendChild(appointmentElement_1);\n var appHeight = appointmentElement_1.offsetHeight;\n topValue += (allDayIndex_1 === 0 ? cellTop : (cellTop + (allDayIndex_1 * appHeight))) + 1;\n setStyleAttribute(appointmentElement_1, { 'width': appWidth + '%', 'top': formatUnit(topValue) });\n if (allDayIndex_1 > 1) {\n _this.moreEvents.push(appointmentElement_1);\n for (var count = 0, length_3 = allDayDifference_1; count < length_3; count++) {\n _this.createMoreIndicator(allDayRow_1, count, wIndex_1);\n }\n }\n allDayRowCell.setAttribute('data-count', _this.allDayLevel.toString());\n var allDayRowHeight = ((!_this.parent.uiStateValues.expand && _this.allDayLevel > 2) ?\n (3 * appHeight) : ((_this.allDayLevel + 1) * appHeight)) + 4;\n _this.setAllDayRowHeight(allDayRowHeight);\n _this.addOrRemoveClass();\n _this.wireAppointmentEvents(appointmentElement_1, eventObj);\n }\n });\n }\n }\n };\n VerticalEvent.prototype.renderNormalEvents = function (eventObj, dayIndex, resource, dayCount, inline) {\n var record = this.isSpannedEvent(eventObj, dayIndex, resource);\n var eStart = record[this.fields.startTime];\n var eEnd = record[this.fields.endTime];\n var appWidth = '0%';\n var appLeft = '0%';\n var topValue = 0;\n var currentDate = util.resetTime(new Date(this.dateRender[resource][dayIndex].getTime()));\n var schedule = util.getStartEndHours(currentDate, this.startHour, this.endHour);\n var isValidEvent = this.isValidEvent(eventObj, eStart, eEnd, schedule);\n if (eStart <= eEnd && isValidEvent) {\n var appHeight_1 = this.getHeight(eStart, eEnd);\n if (eStart.getTime() > schedule.startHour.getTime()) {\n topValue = this.getTopValue(eStart, dayIndex, resource);\n }\n var appIndex = this.getOverlapIndex(record, dayIndex, false, resource);\n record.Index = appIndex;\n this.overlapList.push(record);\n if (this.overlapList.length > 1) {\n if (isNullOrUndefined(this.overlapEvents[appIndex])) {\n this.overlapEvents[appIndex] = [];\n }\n this.overlapEvents[appIndex].push(record);\n }\n else {\n this.overlapEvents = [];\n this.overlapEvents.push([record]);\n }\n appWidth = this.getEventWidth();\n var argsData = {\n index: appIndex, left: appLeft, width: appWidth,\n day: dayIndex, dayIndex: dayCount, record: record, resource: resource\n };\n var tempData = this.adjustOverlapElements(argsData);\n appWidth = (tempData.appWidth);\n if (isNullOrUndefined(this.renderedEvents[resource])) {\n this.renderedEvents[resource] = [];\n }\n this.renderedEvents[resource].push(extend({}, record, null, true));\n var appointmentElement = void 0;\n if (inline) {\n appointmentElement = this.parent.inlineModule.createInlineAppointmentElement(eventObj);\n }\n else {\n appointmentElement = this.createAppointmentElement(eventObj, false, record.isSpanned, resource);\n }\n setStyleAttribute(appointmentElement, {\n 'width': (this.parent.eventSettings.enableMaxHeight ? '100%' : tempData.appWidth),\n 'height': appHeight_1 + 'px', 'top': topValue + 'px'\n });\n var iconHeight = appointmentElement.querySelectorAll('.' + cls.EVENT_INDICATOR_CLASS).length * 15;\n var maxHeight = appHeight_1 - 40 - iconHeight;\n var subjectElement = appointmentElement.querySelector('.' + cls.SUBJECT_CLASS);\n if (!this.parent.isAdaptive && subjectElement) {\n subjectElement.style.maxHeight = formatUnit(maxHeight);\n }\n var index = this.parent.activeViewOptions.group.byDate ? (this.resources.length * dayIndex) + resource : dayCount;\n var eventData = {};\n eventData[this.fields.startTime] = eventObj[this.fields.startTime];\n eventData[this.fields.endTime] = eventObj[this.fields.endTime];\n record.data = eventData;\n this.appendEvent(record, appointmentElement, index, tempData.appLeft);\n this.wireAppointmentEvents(appointmentElement, eventObj);\n if (appHeight_1 < this.cellHeight) {\n var resizeHandlers = [].slice.call(appointmentElement.querySelectorAll('.' + cls.EVENT_RESIZE_CLASS));\n resizeHandlers.forEach(function (resizeHandler) {\n resizeHandler.style.height = Math.ceil(appHeight_1 / resizeHandler.offsetHeight) + 'px';\n });\n }\n }\n };\n VerticalEvent.prototype.getEventWidth = function () {\n var width = this.parent.currentView === 'Day' ? 97 : 94;\n var tempWidth = ((width - this.overlapEvents.length) / this.overlapEvents.length);\n return (tempWidth < 0 ? 0 : tempWidth) + '%';\n };\n VerticalEvent.prototype.getEventLeft = function (appWidth, index) {\n var tempLeft = (parseFloat(appWidth) + 1) * index;\n return (tempLeft > 99 ? 99 : tempLeft) + '%';\n };\n VerticalEvent.prototype.getTopValue = function (date, day, resource) {\n var startEndHours = util.getStartEndHours(util.resetTime(this.dateRender[resource][day]), this.startHour, this.endHour);\n var startHour = startEndHours.startHour;\n var diffInMinutes = ((date.getHours() - startHour.getHours()) * 60) + (date.getMinutes() - startHour.getMinutes());\n return (this.parent.activeViewOptions.timeScale.enable) ? ((diffInMinutes * this.cellHeight * this.slotCount) / this.interval) : 0;\n };\n VerticalEvent.prototype.getOverlapIndex = function (record, day, isAllDay, resource) {\n var _this = this;\n var fieldMapping = this.parent.eventFields;\n var eventsList = [];\n var appIndex = -1;\n this.overlapEvents = [];\n if (isAllDay) {\n if (!isNullOrUndefined(this.renderedAllDayEvents[resource])) {\n var date_1 = util.resetTime(new Date(this.dateRender[resource][day].getTime()));\n eventsList = this.renderedAllDayEvents[resource].filter(function (app) {\n return util.resetTime(app[fieldMapping.startTime]).getTime() <= date_1.getTime() &&\n util.resetTime(app[fieldMapping.endTime]).getTime() >= date_1.getTime();\n });\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n eventsList = this.filterEventsByResource(this.resources[resource], eventsList);\n }\n }\n }\n else {\n var appointmentList_1 = !isNullOrUndefined(this.renderedEvents[resource]) ?\n this.renderedEvents[resource] : [];\n var appointment_1 = [];\n var recordStart_1 = record[fieldMapping.startTime];\n var recordEnd_1 = record[fieldMapping.endTime];\n this.overlapList = appointmentList_1.filter(function (data) {\n return (data[fieldMapping.endTime] > recordStart_1 && data[fieldMapping.startTime] <= recordEnd_1) ||\n (data[fieldMapping.startTime] >= recordEnd_1 && data[fieldMapping.endTime] <= recordStart_1) ||\n (data[fieldMapping.endTime].getTime() === data[fieldMapping.startTime].getTime() &&\n data[fieldMapping.startTime].getTime() === recordStart_1.getTime() && data[fieldMapping.endTime] < recordEnd_1);\n });\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.overlapList = this.filterEventsByResource(this.resources[resource], this.overlapList);\n }\n this.overlapList.forEach(function (obj) {\n var filterList = appointmentList_1.filter(function (data) {\n return data[fieldMapping.endTime] > obj[fieldMapping.startTime] && data[fieldMapping.startTime] <= obj[fieldMapping.endTime];\n });\n if (_this.parent.activeViewOptions.group.resources.length > 0) {\n filterList = _this.filterEventsByResource(_this.resources[resource], filterList);\n }\n var collection = filterList.filter(function (val) {\n return _this.overlapList.indexOf(val) === -1;\n });\n if (collection.length > 0) {\n appointment_1 = appointment_1.concat(collection);\n }\n });\n for (var i = 0; i < appointment_1.length - 1; i++) {\n for (var j = i + 1; j < appointment_1.length; j++) {\n if (appointment_1[i][fieldMapping.id] === appointment_1[j][fieldMapping.id]) {\n appointment_1.splice(j, 1);\n j--;\n }\n }\n }\n this.overlapList = this.overlapList.concat(appointment_1);\n eventsList = this.overlapList;\n for (var _i = 0, eventsList_1 = eventsList; _i < eventsList_1.length; _i++) {\n var event_4 = eventsList_1[_i];\n var record_1 = event_4;\n var index = record_1.Index;\n if (isNullOrUndefined(this.overlapEvents[index])) {\n this.overlapEvents[index] = [event_4];\n }\n else {\n this.overlapEvents[index].push(event_4);\n }\n }\n }\n if (!isAllDay) {\n eventsList = eventsList.filter(function (obj) { return (obj[fieldMapping.startTime] === record[fieldMapping.startTime] &&\n obj[fieldMapping.endTime] > record[fieldMapping.endTime] || obj[fieldMapping.endTime] > record[fieldMapping.startTime] &&\n obj[fieldMapping.startTime] < record[fieldMapping.endTime] || obj[fieldMapping.endTime] === record[fieldMapping.startTime]\n && obj[fieldMapping.startTime] === record[fieldMapping.endTime]) ||\n ((obj[fieldMapping.startTime].getTime() === record[fieldMapping.startTime].getTime() &&\n obj[fieldMapping.endTime].getTime() === record[fieldMapping.endTime].getTime())\n || (obj[fieldMapping.startTime].getTime() === record[fieldMapping.startTime].getTime() &&\n obj[fieldMapping.endTime].getTime() < record[fieldMapping.endTime].getTime() ||\n obj[fieldMapping.endTime].getTime() > record[fieldMapping.endTime].getTime())); });\n }\n if (eventsList.length > 0) {\n var appLevel = eventsList.map(function (obj) { return obj.Index; });\n appIndex = (appLevel.length > 0) ? this.getSmallestMissingNumber(appLevel) : 0;\n }\n return (appIndex === -1) ? 0 : appIndex;\n };\n VerticalEvent.prototype.adjustOverlapElements = function (args) {\n var data = { appWidth: args.width, appLeft: args.left };\n for (var i = 0, length1 = this.overlapEvents.length; i < length1; i++) {\n if (!isNullOrUndefined(this.overlapEvents[i])) {\n for (var j = 0, length2 = this.overlapEvents[i].length; j < length2; j++) {\n var dayCount = this.parent.activeViewOptions.group.byDate ?\n (this.resources.length * args.day) + args.resource : args.dayIndex;\n var element = this.element.querySelector('#e-appointment-wrapper-' + dayCount);\n if (element.childElementCount > 0) {\n var eleGuid = this.overlapEvents[i][j].Guid;\n if (element.querySelectorAll('div[data-guid=\"' + eleGuid + '\"]').length > 0 && eleGuid !== args.record.Guid) {\n var apps = element.querySelector('div[data-guid=\"' + eleGuid + '\"]');\n if (parseFloat(args.width) <= parseFloat(apps.style.width)) {\n if (this.parent.enableRtl) {\n apps.style.right = this.getEventLeft(args.width, i);\n }\n else {\n apps.style.left = this.getEventLeft(args.width, i);\n }\n apps.style.width = ((parseFloat(args.width))) + '%';\n data.appWidth = apps.style.width;\n }\n else {\n data.appWidth = apps.style.width;\n }\n }\n else {\n var appWidth = args.width;\n if (isNullOrUndefined(this.overlapEvents[i - 1])) {\n appWidth = this.getEventWidth();\n }\n data.appWidth = appWidth;\n data.appLeft = this.getEventLeft(appWidth, args.index);\n }\n }\n }\n }\n }\n return data;\n };\n VerticalEvent.prototype.setAllDayRowHeight = function (height) {\n var dateHeader = this.parent.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS);\n if (this.parent.height === 'auto' || !this.parent.enableAllDayScroll) {\n addClass([dateHeader], cls.ALLDAY_APPOINTMENT_AUTO);\n }\n var allDayRow = this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS);\n allDayRow.style.height = '';\n if (this.parent.uiStateValues.expand && this.parent.height !== 'auto' && this.parent.enableAllDayScroll) {\n allDayRow.style.height = (height / 12) + 'em';\n this.parent.eventBase.allDayExpandScroll(dateHeader);\n }\n else {\n dateHeader.scrollTop = 0;\n for (var _i = 0, _a = this.allDayElement; _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.height = (height / 12) + 'em';\n }\n removeClass([dateHeader], cls.ALLDAY_APPOINTMENT_SCROLL);\n }\n this.animation.animate(this.allDayElement[0]);\n };\n VerticalEvent.prototype.addOrRemoveClass = function () {\n var _this = this;\n this.moreEvents.filter(function (element) {\n if (!_this.parent.uiStateValues.expand && _this.allDayLevel > 2) {\n addClass([element], cls.EVENT_COUNT_CLASS);\n element.setAttribute('tabindex', '-1');\n }\n else {\n removeClass([element], cls.EVENT_COUNT_CLASS);\n element.setAttribute('tabindex', '0');\n }\n });\n var moreEventCount = this.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_SECTION_CLASS);\n if (this.parent.uiStateValues.expand) {\n removeClass([moreEventCount], cls.APPOINTMENT_ROW_EXPAND_CLASS);\n addClass([moreEventCount], cls.APPOINTMENT_ROW_COLLAPSE_CLASS);\n }\n else {\n removeClass([moreEventCount], cls.APPOINTMENT_ROW_COLLAPSE_CLASS);\n addClass([moreEventCount], cls.APPOINTMENT_ROW_EXPAND_CLASS);\n }\n if (this.allDayLevel > 2) {\n removeClass([moreEventCount], cls.DISABLE_CLASS);\n }\n else {\n addClass([moreEventCount], cls.DISABLE_CLASS);\n }\n var countCell = [].slice.call(this.element.querySelectorAll('.' + cls.ROW_COUNT_WRAPPER_CLASS));\n countCell.forEach(function (element) {\n if (!_this.parent.uiStateValues.expand && _this.allDayLevel > 2) {\n removeClass([element], cls.DISABLE_CLASS);\n }\n else {\n addClass([element], cls.DISABLE_CLASS);\n }\n });\n };\n VerticalEvent.prototype.getEventHeight = function () {\n var eventElement = createElement('div', { className: cls.APPOINTMENT_CLASS, styles: 'visibility:hidden' });\n var eventWrapper = this.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS + ':first-child');\n eventWrapper.appendChild(eventElement);\n var height = eventElement.offsetHeight;\n remove(eventElement);\n return height;\n };\n VerticalEvent.prototype.rowExpandCollapse = function () {\n var target = this.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_SECTION_CLASS);\n this.parent.uiStateValues.expand = target.classList.contains(cls.APPOINTMENT_ROW_EXPAND_CLASS);\n var rowHeight;\n if (this.parent.uiStateValues.expand) {\n target.setAttribute('title', this.parent.localeObj.getConstant('collapseAllDaySection'));\n target.setAttribute('aria-label', 'Collapse section');\n rowHeight = ((this.allDayLevel + 1) * this.getEventHeight()) + 4;\n }\n else {\n target.setAttribute('title', this.parent.localeObj.getConstant('expandAllDaySection'));\n target.setAttribute('aria-label', 'Expand section');\n rowHeight = (3 * this.getEventHeight()) + 4;\n }\n this.setAllDayRowHeight(rowHeight);\n this.addOrRemoveClass();\n this.animation.animate(target);\n };\n VerticalEvent.prototype.animationUiUpdate = function () {\n this.parent.notify(events.contentReady, {});\n };\n VerticalEvent.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.allDayElement = null;\n this.renderedAllDayEvents = null;\n this.renderedEvents = null;\n this.slotCount = null;\n this.interval = null;\n this.startHour = null;\n this.endHour = null;\n this.element = null;\n this.fields = null;\n this.animation = null;\n _super.prototype.destroy.call(this);\n };\n return VerticalEvent;\n}(EventBase));\nexport { VerticalEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 max-len */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined, setStyleAttribute, extend, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\nimport { MonthEvent } from './month';\nvar EVENT_GAP = 2;\nvar BLOCK_INDICATOR_WIDTH = 22;\nvar BLOCK_INDICATOR_HEIGHT = 18;\n/**\n * Timeline view events render\n */\nvar TimelineEvent = /** @class */ (function (_super) {\n __extends(TimelineEvent, _super);\n function TimelineEvent(parent, type) {\n var _this = _super.call(this, parent) || this;\n _this.startHour = _this.parent.activeView.getStartHour();\n _this.endHour = _this.parent.activeView.getEndHour();\n _this.slotCount = _this.parent.activeViewOptions.timeScale.slotCount;\n _this.interval = _this.parent.activeViewOptions.timeScale.interval;\n _this.day = 0;\n _this.rowIndex = 0;\n _this.cellTops = [];\n _this.renderType = type;\n _this.eventContainers = [].slice.call(_this.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));\n var tr = [].slice.call(_this.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr'));\n _this.dayLength = tr.length === 0 ? 0 : tr[0].children.length;\n _this.content = _this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);\n return _this;\n }\n TimelineEvent.prototype.getSlotDates = function () {\n this.slots = [];\n this.slots.push(this.parent.activeView.renderDates.map(function (date) { return +date; }));\n if (this.parent.activeViewOptions.headerRows.length > 0 &&\n this.parent.activeViewOptions.headerRows.slice(-1)[0].option !== 'Hour') {\n this.renderType = 'day';\n this.cellWidth = this.content.offsetWidth / this.dateRender.length;\n this.slotsPerDay = 1;\n }\n else {\n this.slotsPerDay = (this.dayLength / this.dateRender.length);\n }\n };\n TimelineEvent.prototype.getOverlapEvents = function (date, appointments) {\n var appointmentsList = [];\n if (this.renderType === 'day') {\n for (var _i = 0, appointments_1 = appointments; _i < appointments_1.length; _i++) {\n var app = appointments_1[_i];\n if ((util.resetTime(app[this.fields.startTime]).getTime() <= util.resetTime(new Date(date.getTime())).getTime()) &&\n (util.resetTime(app[this.fields.endTime]).getTime() >= util.resetTime(new Date(date.getTime())).getTime())) {\n appointmentsList.push(app);\n }\n }\n }\n else {\n for (var _a = 0, appointments_2 = appointments; _a < appointments_2.length; _a++) {\n var app = appointments_2[_a];\n var eventData = app.data;\n if (eventData.trimStartTime.getTime() <= date.getTime() &&\n eventData.trimEndTime.getTime() > date.getTime()) {\n appointmentsList.push(app);\n }\n }\n }\n return appointmentsList;\n };\n TimelineEvent.prototype.getSortComparerIndex = function (startDate, endDate) {\n var appIndex = -1;\n var appointments = this.renderedEvents;\n if (appointments.length > 0) {\n var appointmentsList = this.getOverlapSortComparerEvents(startDate, endDate, appointments);\n var appLevel = appointmentsList.map(function (obj) { return obj.Index; });\n appIndex = (appLevel.length > 0) ? this.getSmallestMissingNumber(appLevel) : 0;\n }\n return (appIndex === -1) ? 0 : appIndex;\n };\n TimelineEvent.prototype.getOverlapSortComparerEvents = function (startDate, endDate, appointmentsCollection) {\n var appointments = [];\n for (var _i = 0, appointmentsCollection_1 = appointmentsCollection; _i < appointmentsCollection_1.length; _i++) {\n var app = appointmentsCollection_1[_i];\n if (this.renderType === 'day') {\n if ((util.resetTime(app[this.fields.startTime]).getTime() <= util.resetTime(new Date(startDate.getTime())).getTime()) &&\n (util.resetTime(app[this.fields.endTime]).getTime() >= util.resetTime(new Date(startDate.getTime())).getTime())) {\n appointments.push(app);\n }\n }\n else {\n var eventData = app.data;\n if (((eventData.trimStartTime.getTime() <= startDate.getTime()) && (startDate.getTime() < eventData.trimEndTime.getTime())) ||\n ((startDate.getTime() <= eventData.trimStartTime.getTime()) && (eventData.trimStartTime.getTime() < endDate.getTime()))) {\n appointments.push(app);\n }\n }\n }\n return appointments;\n };\n TimelineEvent.prototype.renderResourceEvents = function () {\n this.removeHeightProperty(cls.RESOURCE_COLUMN_TABLE_CLASS);\n var resources = this.parent.uiStateValues.isGroupAdaptive ?\n [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] :\n this.parent.resourceBase.renderedResources;\n if (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) {\n for (var i = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; i < len; i++) {\n var source = this.parent.crudModule.crudObj.sourceEvent[i];\n this.rowIndex = source.groupIndex;\n this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays, source);\n if (this.parent.crudModule.crudObj.targetEvent[i] && this.parent.crudModule.crudObj.sourceEvent[i].groupIndex !==\n this.parent.crudModule.crudObj.targetEvent[i].groupIndex) {\n var target = this.parent.crudModule.crudObj.targetEvent[i];\n this.rowIndex = target.groupIndex;\n this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays, target);\n }\n }\n this.parent.crudModule.crudObj.isCrudAction = false;\n }\n else {\n for (var i = 0; i < resources.length; i++) {\n this.rowIndex = i;\n this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays, resources[i]);\n }\n }\n };\n TimelineEvent.prototype.renderEvents = function (event, resIndex, appointmentsList) {\n var startTime = event[this.fields.startTime];\n var endTime = event[this.fields.endTime];\n if ((startTime.getTime() < this.parent.minDate.getTime()) || (endTime.getTime() > this.parent.maxDate.getTime())) {\n return;\n }\n var eventData = event.data;\n startTime = this.getStartTime(event, eventData);\n endTime = this.getEndTime(event, eventData);\n var startEndHours = util.getStartEndHours(event[this.fields.startTime], this.startHour, this.endHour);\n var eventDates = this.updateEventMinimumDuration(startEndHours, startTime, endTime);\n startTime = eventDates.startDate;\n endTime = eventDates.endDate;\n this.day = this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(startTime.getTime())));\n if (this.day < 0) {\n return;\n }\n var cellTd = this.getCellTd();\n var overlapCount = (isNullOrUndefined(this.parent.eventSettings.sortComparer)) ? this.getIndex(startTime) : this.getSortComparerIndex(startTime, endTime);\n event.Index = overlapCount;\n var appHeight = this.eventHeight;\n var diffInDays = eventData.count;\n var eventObj = extend({}, event, null, true);\n eventObj[this.fields.startTime] = eventData[this.fields.startTime];\n eventObj[this.fields.endTime] = eventData[this.fields.endTime];\n var currentDate = util.resetTime(new Date(this.dateRender[this.day].getTime()));\n var schedule = util.getStartEndHours(currentDate, this.startHour, this.endHour);\n var isValidEvent = this.isValidEvent(eventObj, startTime, endTime, schedule);\n if (startTime <= endTime && isValidEvent) {\n var appWidth_1 = this.getEventWidth(startTime, endTime, event[this.fields.isAllDay], diffInDays);\n appWidth_1 = this.renderType === 'day' ? appWidth_1 - 2 : appWidth_1;\n var appLeft = 0;\n var appRight = 0;\n var position = this.getPosition(startTime, endTime, event[this.fields.isAllDay], this.day);\n appWidth_1 = (appWidth_1 <= 0) ? this.cellWidth : appWidth_1; // appWidth 0 when start and end time as same\n this.renderedEvents.push(extend({}, event, null, true));\n if (isNullOrUndefined(this.cellTops[resIndex])) {\n this.cellTops[resIndex] = this.getRowTop(resIndex);\n }\n var top_1 = this.cellTops[resIndex];\n var appTop = (top_1 + (this.maxHeight ? 0 : EVENT_GAP)) + (overlapCount * (appHeight + EVENT_GAP));\n appLeft = (this.parent.enableRtl) ? 0 : position;\n appRight = (this.parent.enableRtl) ? position : 0;\n var height = ((overlapCount + 1) * (appHeight + EVENT_GAP)) + this.moreIndicatorHeight;\n var renderApp = this.maxOrIndicator ? overlapCount < 1 ? true : false : this.cellHeight > height;\n if (this.parent.rowAutoHeight || renderApp) {\n var appointmentElement = void 0;\n if (isNullOrUndefined(this.inlineValue)) {\n appointmentElement = this.createAppointmentElement(event, resIndex);\n }\n else {\n appointmentElement = this.parent.inlineModule.createInlineAppointmentElement();\n }\n this.applyResourceColor(appointmentElement, event, 'backgroundColor', this.groupOrder);\n setStyleAttribute(appointmentElement, {\n 'width': appWidth_1 + 'px', 'left': appLeft + 'px', 'right': appRight + 'px', 'top': appTop + 'px'\n });\n this.wireAppointmentEvents(appointmentElement, event);\n this.renderEventElement(event, appointmentElement, cellTd);\n if (this.parent.rowAutoHeight) {\n var firstChild = this.getFirstChild(resIndex);\n this.updateCellHeight(firstChild, height);\n }\n if (this.parent.activeViewOptions.option !== 'TimelineMonth' && this.parent.activeViewOptions.timeScale.enable\n && appWidth_1 < this.cellWidth) {\n var resizeHandlers = [].slice.call(appointmentElement.querySelectorAll('.' + cls.EVENT_RESIZE_CLASS));\n resizeHandlers.forEach(function (resizeHandler) {\n resizeHandler.style.width = Math.ceil(appWidth_1 / resizeHandler.getBoundingClientRect().width) + 'px';\n });\n }\n }\n else {\n for (var i = 0; i < diffInDays; i++) {\n var moreIndicator = cellTd.querySelector('.' + cls.MORE_INDICATOR_CLASS);\n var appPos = (this.parent.enableRtl) ? appRight : appLeft;\n appPos = (Math.floor(appPos / this.cellWidth) * this.cellWidth);\n var interval = this.interval / this.slotCount;\n var startDate = (this.parent.activeViewOptions.option === 'TimelineMonth' || this.renderType === 'day' || i !== 0) ?\n new Date(this.dateRender[this.day + i].getTime()) : new Date(startTime);\n var endDate = util.addDays(this.dateRender[this.day + i], 1);\n if (this.parent.activeViewOptions.option === 'TimelineMonth' || this.renderType === 'day') {\n var position_1 = this.getPosition(startDate, endDate, event[this.fields.isAllDay], (this.day + i));\n this.renderTimelineMoreIndicator(startTime, startDate, endDate, appHeight, interval, resIndex, appointmentsList, top_1, appLeft, appRight, cellTd, moreIndicator, appPos, position_1);\n }\n else {\n var slotCount = (util.getUniversalTime(endTime) - util.getUniversalTime(startTime)) / util.MS_PER_MINUTE *\n this.slotCount / this.interval;\n for (var k = 0; k < slotCount; k++) {\n startDate = (k === 0) ? new Date(startDate.getTime()) : new Date(startDate.getTime() + (60000 * interval));\n endDate = new Date(startDate.getTime() + (60000 * interval));\n if (endDate.getTime() > endTime.getTime()) {\n break;\n }\n var position_2 = this.getPosition(startDate, endDate, false, (this.day + i));\n if (appPos > position_2) {\n break;\n }\n appPos = position_2;\n this.renderTimelineMoreIndicator(startTime, startDate, endDate, appHeight, interval, resIndex, appointmentsList, top_1, appLeft, appRight, cellTd, moreIndicator, appPos, position_2);\n }\n }\n }\n }\n }\n this.parent.renderTemplates();\n };\n TimelineEvent.prototype.renderTimelineMoreIndicator = function (startTime, startDate, endDate, appHeight, interval, resIndex, appointmentsList, top, appLeft, appRight, cellTd, moreIndicator, appPos, position) {\n appLeft = (this.parent.enableRtl) ? appRight = position : position;\n appPos = (this.parent.enableRtl) ? appRight : appLeft;\n appPos = (Math.floor(appPos / this.cellWidth) * this.cellWidth);\n if ((cellTd && isNullOrUndefined(moreIndicator)) ||\n (!this.isAlreadyAvail(appPos, cellTd))) {\n var startDateTime = (this.parent.activeViewOptions.option === 'TimelineMonth' || this.renderType === 'day') ? new Date(+startTime) : startDate;\n var slotStartTime = (new Date(startDateTime.setMinutes(Math.floor(startDateTime.getMinutes() / interval) * interval)));\n var slotEndTime = new Date(slotStartTime.getTime() + (60000 * interval));\n var groupIndex = void 0;\n if (this.parent.activeViewOptions.group.resources.length > 0 && !isNullOrUndefined(resIndex)) {\n groupIndex = resIndex.toString();\n }\n var filterEvents = this.getFilterEvents(startDate, endDate, slotStartTime, slotEndTime, groupIndex, appointmentsList);\n var appArea = this.cellHeight - this.moreIndicatorHeight;\n appHeight = this.withIndicator ? appArea - EVENT_GAP : appHeight;\n var renderedAppCount = Math.floor(appArea / (appHeight + EVENT_GAP));\n var count = (filterEvents.length - renderedAppCount) <= 0 ? 1 : (filterEvents.length - renderedAppCount);\n var moreIndicatorElement = void 0;\n if (this.renderType === 'day') {\n moreIndicatorElement = this.getMoreIndicatorElement(count, startDate, endDate);\n }\n else {\n moreIndicatorElement = this.getMoreIndicatorElement(count, slotStartTime, slotEndTime);\n }\n if (!isNullOrUndefined(groupIndex)) {\n moreIndicatorElement.setAttribute('data-group-index', groupIndex);\n }\n moreIndicatorElement.style.top = top + appArea + 'px';\n moreIndicatorElement.style.width = this.cellWidth + 'px';\n moreIndicatorElement.style.left = (Math.floor(appLeft / this.cellWidth) * this.cellWidth) + 'px';\n moreIndicatorElement.style.right = (Math.floor(appRight / this.cellWidth) * this.cellWidth) + 'px';\n this.renderElement(cellTd, moreIndicatorElement);\n EventHandler.add(moreIndicatorElement, 'click', this.moreIndicatorClick, this);\n }\n };\n TimelineEvent.prototype.updateCellHeight = function (cell, height) {\n if ((height > this.cellHeight)) {\n setStyleAttribute(cell, { 'height': height + 'px' });\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var resourceCell = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_TABLE_CLASS + ' ' + 'tbody td[data-group-index=\"' +\n cell.getAttribute('data-group-index') + '\"]');\n if (resourceCell) {\n setStyleAttribute(resourceCell, { 'height': height + 'px' });\n }\n }\n var monthHeader = this.parent.element.querySelector('.e-month-header-wrapper table tr:nth-child(' +\n (cell.parentElement.rowIndex + 1) + ') td');\n if (monthHeader) {\n setStyleAttribute(monthHeader, { 'height': height + 'px' });\n }\n }\n };\n TimelineEvent.prototype.getFirstChild = function (index) {\n var query = '.' + cls.CONTENT_TABLE_CLASS + ' tbody td';\n var groupIndex = '';\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n groupIndex = '[data-group-index=\"' + index.toString() + '\"]';\n }\n var td = this.parent.element.querySelector(query + groupIndex);\n return td;\n };\n TimelineEvent.prototype.updateBlockElements = function () {\n var blockElement = [].slice.call(this.element.querySelectorAll('.' + cls.BLOCK_APPOINTMENT_CLASS));\n for (var _i = 0, blockElement_1 = blockElement; _i < blockElement_1.length; _i++) {\n var element = blockElement_1[_i];\n var resIndex = parseInt(element.getAttribute('data-group-index'), 10);\n var firstChild = this.getFirstChild(resIndex);\n element.style.height = firstChild.offsetHeight + 'px';\n var width = Math.round(element.offsetWidth / firstChild.offsetWidth);\n element.style.width = (firstChild.offsetWidth * width) + 'px';\n }\n var blockIndicator = [].slice.call(this.element.querySelectorAll('.' + cls.BLOCK_INDICATOR_CLASS));\n for (var _a = 0, blockIndicator_1 = blockIndicator; _a < blockIndicator_1.length; _a++) {\n var element = blockIndicator_1[_a];\n var resIndex = parseInt(element.getAttribute('data-group-index'), 10);\n element.style.top = this.getRowTop(resIndex) +\n this.getFirstChild(resIndex).offsetHeight - BLOCK_INDICATOR_HEIGHT + 'px';\n }\n };\n TimelineEvent.prototype.getStartTime = function (event, eventData) {\n var startTime = event[this.fields.startTime];\n var schedule = util.getStartEndHours(startTime, this.startHour, this.endHour);\n if (schedule.startHour.getTime() >= eventData[this.fields.startTime]) {\n startTime = schedule.startHour;\n }\n else if (schedule.endHour.getTime() <= eventData[this.fields.startTime]) {\n startTime = this.getNextDay(schedule.startHour, eventData);\n }\n else {\n startTime = eventData[this.fields.startTime];\n }\n // To overcome the overflow\n eventData.trimStartTime = (event[this.fields.isAllDay]) ? schedule.startHour : eventData[this.fields.startTime];\n return startTime;\n };\n TimelineEvent.prototype.getNextDay = function (startTime, eventData) {\n var startDate;\n for (var i = 1; i <= this.dateRender.length; i++) {\n startDate = util.addDays(startTime, i);\n if (this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(startTime.getTime()))) !== -1) {\n eventData.count = eventData.count - 1;\n return startDate;\n }\n }\n return startDate;\n };\n TimelineEvent.prototype.getEndTime = function (event, eventData) {\n var endTime = event[this.fields.endTime];\n var schedule = util.getStartEndHours(endTime, this.startHour, this.endHour);\n if (this.parent.currentView === 'TimelineMonth' || !this.parent.activeViewOptions.timeScale.enable ||\n (this.parent.activeViewOptions.headerRows.length > 0 &&\n this.parent.activeViewOptions.headerRows.slice(-1)[0].option !== 'Hour')) {\n endTime = eventData[this.fields.endTime];\n }\n else {\n endTime = eventData[this.fields.endTime];\n if (schedule.endHour.getTime() <= eventData[this.fields.endTime]) {\n endTime = schedule.endHour;\n }\n if (schedule.startHour.getTime() >= eventData[this.fields.endTime].getTime() && !event.isAllDay) {\n endTime = this.getPreviousDay(schedule.startHour, schedule.endHour, eventData);\n }\n }\n // To overcome the overflow\n eventData.trimEndTime = (event[this.fields.isAllDay]) ? schedule.endHour : eventData[this.fields.endTime];\n return endTime;\n };\n TimelineEvent.prototype.getPreviousDay = function (startTime, endTime, eventData) {\n for (var i = 1; i <= this.dateRender.length; i++) {\n var endDate = util.addDays(endTime, -i);\n if (this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(startTime.getTime()))) !== -1) {\n endDate = util.resetTime(new Date(endDate.getTime()));\n endDate.setHours(endTime.getHours(), endTime.getMinutes(), endTime.getSeconds());\n var count = eventData.count;\n var actualEndTime = eventData[this.fields.endTime];\n eventData.count = actualEndTime.getHours() !== 0 || actualEndTime.getMinutes() !== 0 ? count - 1 : count;\n return endDate;\n }\n }\n return eventData[this.fields.endTime];\n };\n TimelineEvent.prototype.getEventWidth = function (startDate, endDate, isAllDay, count) {\n if (this.renderType === 'day' || isAllDay) {\n return (count * this.slotsPerDay) * this.cellWidth;\n }\n if (this.isSameDay(startDate, endDate)) {\n return this.getSameDayEventsWidth(startDate, endDate);\n }\n else {\n return this.getSpannedEventsWidth(startDate, endDate, count);\n }\n };\n TimelineEvent.prototype.getSameDayEventsWidth = function (startDate, endDate) {\n return ((util.getUniversalTime(endDate) - util.getUniversalTime(startDate)) /\n util.MS_PER_MINUTE * (this.cellWidth * this.slotCount) / this.interval);\n };\n TimelineEvent.prototype.getSpannedEventsWidth = function (startDate, endDate, diffInDays) {\n var width = (diffInDays * this.slotsPerDay) * this.cellWidth;\n var endWidth;\n var start = util.getStartEndHours(util.resetTime(new Date(startDate.getTime())), this.startHour, this.endHour);\n var startWidth = this.getSameDayEventsWidth(start.startHour, startDate);\n if (this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(endDate.getTime()))) === -1) {\n endWidth = 0;\n }\n else {\n var end = util.getStartEndHours(util.resetTime(new Date(endDate.getTime())), this.startHour, this.endHour);\n endWidth = this.getSameDayEventsWidth(endDate, end.endHour);\n endWidth = ((this.slotsPerDay * this.cellWidth) === endWidth) ? 0 : endWidth;\n }\n var spannedWidth = startWidth + endWidth;\n return (width > spannedWidth) ? width - spannedWidth : width - startWidth;\n };\n TimelineEvent.prototype.isSameDay = function (startTime, endTime) {\n var startDay = this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(startTime.getTime())));\n var endDay = this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(endTime.getTime())));\n return (startDay === endDay);\n };\n TimelineEvent.prototype.getAppointmentLeft = function (schedule, startTime, day) {\n var slotTd = (this.isSameDay(startTime, schedule.startHour)) ?\n ((util.getUniversalTime(startTime) - util.getUniversalTime(schedule.startHour)) /\n (util.MS_PER_MINUTE * this.interval)) * this.slotCount : 0;\n if (day === 0) {\n return slotTd;\n }\n else {\n var daySlot = Math.round((((util.getUniversalTime(schedule.endHour) - util.getUniversalTime(schedule.startHour)) /\n util.MS_PER_MINUTE) / this.interval) * this.slotCount);\n return (daySlot * day) + slotTd;\n }\n };\n TimelineEvent.prototype.getPosition = function (startTime, endTime, isAllDay, day) {\n if (this.renderType === 'day' || isAllDay) {\n return (day * this.slotsPerDay) * this.cellWidth;\n }\n var currentDate = util.resetTime(new Date(this.dateRender[day].getTime()));\n var schedule = util.getStartEndHours(currentDate, this.startHour, this.endHour);\n var cellIndex;\n if (schedule.endHour.getTime() <= endTime.getTime() && schedule.startHour.getTime() >= startTime.getTime()) {\n cellIndex = this.getAppointmentLeft(schedule, schedule.startHour, day);\n }\n else if (schedule.endHour.getTime() <= endTime.getTime()) {\n cellIndex = this.getAppointmentLeft(schedule, startTime, day);\n }\n else if (schedule.startHour.getTime() >= startTime.getTime()) {\n cellIndex = this.getAppointmentLeft(schedule, schedule.startHour, day);\n }\n else {\n cellIndex = this.getAppointmentLeft(schedule, startTime, day);\n }\n return cellIndex * this.cellWidth;\n };\n TimelineEvent.prototype.getFilterEvents = function (startDate, endDate, startTime, endTime, gIndex, eventsList) {\n if (this.renderType === 'day') {\n return this.getFilteredEvents(startDate, endDate, gIndex, eventsList);\n }\n else {\n return this.getFilteredEvents(startTime, endTime, gIndex, eventsList);\n }\n };\n TimelineEvent.prototype.isAlreadyAvail = function (appPos, cellTd) {\n var moreIndicator = [].slice.call(cellTd.querySelectorAll('.' + cls.MORE_INDICATOR_CLASS));\n for (var i = 0; i < moreIndicator.length; i++) {\n var indicatorPos = void 0;\n if (moreIndicator) {\n indicatorPos = (this.parent.enableRtl) ? moreIndicator[i].style.right : moreIndicator[i].style.left;\n }\n if (parseInt(indicatorPos, 10) === Math.floor(appPos)) {\n return true;\n }\n }\n return false;\n };\n TimelineEvent.prototype.getRowTop = function (resIndex) {\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n return this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS +\n ' ' + 'tbody td[data-group-index=\"' + resIndex.toString() + '\"]').offsetTop;\n }\n return 0;\n };\n TimelineEvent.prototype.getCellTd = function () {\n var wrapIndex = this.parent.uiStateValues.isGroupAdaptive ? 0 : this.rowIndex;\n return this.eventContainers[wrapIndex];\n };\n TimelineEvent.prototype.renderBlockIndicator = function (cellTd, position, resIndex) {\n // No need to render block icon for Year, Month and Week header rows\n if (this.parent.headerRows.length > 0 &&\n (this.parent.headerRows[this.parent.headerRows.length - 1].option !== 'Hour' ||\n this.parent.headerRows[this.parent.headerRows.length - 1].option !== 'Date')) {\n return;\n }\n position = (Math.floor(position / this.cellWidth) * this.cellWidth) + this.cellWidth - BLOCK_INDICATOR_WIDTH;\n if (!this.isAlreadyAvail(position, cellTd)) {\n var blockIndicator = createElement('div', { className: 'e-icons ' + cls.BLOCK_INDICATOR_CLASS });\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n blockIndicator.setAttribute('data-group-index', resIndex.toString());\n }\n if (this.parent.enableRtl) {\n blockIndicator.style.right = position + 'px';\n }\n else {\n blockIndicator.style.left = position + 'px';\n }\n blockIndicator.style.top = this.getRowTop(resIndex) + this.cellHeight - BLOCK_INDICATOR_HEIGHT + 'px';\n this.renderElement(cellTd, blockIndicator);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimelineEvent.prototype.setMaxEventHeight = function (event, cell) {\n setStyleAttribute(event, {\n 'height': (this.cellHeight - (this.maxHeight ? 0 : EVENT_GAP) - (this.maxHeight ? 0 : this.moreIndicatorHeight)) + 'px'\n });\n };\n TimelineEvent.prototype.destroy = function () {\n this.renderType = null;\n this.eventContainers = null;\n this.dayLength = null;\n this.content = null;\n _super.prototype.destroy.call(this);\n this.parent = null;\n };\n return TimelineEvent;\n}(MonthEvent));\nexport { TimelineEvent };\n","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (Object.prototype.hasOwnProperty.call(dirtyObject, property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n },\n incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\nexport default parsers;","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport parsers from \"./_lib/parsers/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward (toDate no longer accepts a string)\n * toDate(1392098430000) // Unix to timestamp\n * toDate(new Date(2014, 1, 11, 11, 30, 30)) // Cloning the date\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }; // If timezone isn't specified, it will be set to the system timezone\n\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n subPriority: -1,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n subPriority: parser.subPriority || 0,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\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","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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import hasClass from './hasClass';\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","export default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\n\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight)); // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n\n dateLeft.setFullYear(1584);\n dateRight.setFullYear(1584); // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - Number(isLastYearNotFull)); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\n\nexport default function startOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(0, 0, 0);\n return date;\n}","import startOfHour from \"../startOfHour/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour (and same day)?\n *\n * @description\n * Are the given dates in the same hour (and same day)?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour (and same day)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 6, 30))\n * //=> true\n * \n * @example\n * // Are 4 September 2014 06:00:00 and 5 September 06:00:00 in the same hour?\n * var result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 5, 6, 0))\n * //=> false\n */\n\nexport default function isSameHour(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft);\n var dateRightStartOfHour = startOfHour(dirtyDateRight);\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime();\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","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { isFunction, noop } from '../utils/js_utils';\n/**\n * Provides a set of static methods for creating Disposables.\n * @param {Function} action Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n */\n\nvar Disposable =\n/** @class */\nfunction () {\n var Disposable = /*#__PURE__*/function () {\n function Disposable(action) {\n _classCallCheck(this, Disposable);\n\n this.isDisposed = false;\n this.action = isFunction(action) ? action : noop;\n }\n /**\n * Validates whether the given object is a disposable\n * @param {Object} Object to test whether it has a dispose method\n * @returns {Boolean} true if a disposable object, else false.\n */\n\n\n _createClass(Disposable, [{\n key: \"dispose\",\n\n /** Performs the task of cleaning up resources. */\n value: function dispose() {\n if (!this.isDisposed) {\n this.action();\n this.isDisposed = true;\n }\n }\n }], [{\n key: \"isDisposable\",\n value: function isDisposable(d) {\n return Boolean(d && isFunction(d.dispose));\n }\n }, {\n key: \"_fixup\",\n value: function _fixup(result) {\n return Disposable.isDisposable(result) ? result : Disposable.empty;\n }\n /**\n * Creates a disposable object that invokes the specified action when disposed.\n * @param {Function} dispose Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n * @return {Disposable} The disposable object that runs the given action upon disposal.\n */\n\n }, {\n key: \"create\",\n value: function create(action) {\n return new Disposable(action);\n }\n }]);\n\n return Disposable;\n }();\n /**\n * Gets the disposable that does nothing when disposed.\n */\n\n\n Disposable.empty = {\n dispose: noop\n };\n return Disposable;\n}();\n\nexport { Disposable };\n/**\n * Represents a group of disposable resources that are disposed together.\n * @constructor\n */\n\nexport var CompositeDisposable = /*#__PURE__*/function () {\n function CompositeDisposable() {\n _classCallCheck(this, CompositeDisposable);\n\n this.isDisposed = false;\n\n for (var _len = arguments.length, disposables = new Array(_len), _key = 0; _key < _len; _key++) {\n disposables[_key] = arguments[_key];\n }\n\n this.disposables = disposables;\n }\n /**\n * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n * @param {Any} item Disposable to add.\n */\n\n\n _createClass(CompositeDisposable, [{\n key: \"add\",\n value: function add(item) {\n if (this.isDisposed) {\n item.dispose();\n } else {\n this.disposables.push(item);\n }\n }\n /**\n * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n * @param {Any} item Disposable to remove.\n * @returns {Boolean} true if found; false otherwise.\n */\n\n }, {\n key: \"remove\",\n value: function remove(item) {\n var shouldDispose = false;\n\n if (!this.isDisposed) {\n var idx = this.disposables.indexOf(item);\n\n if (idx !== -1) {\n shouldDispose = true;\n this.disposables.splice(idx, 1);\n item.dispose();\n }\n }\n\n return shouldDispose;\n }\n /**\n * Disposes all disposables in the group and removes them from the group but\n * does not dispose the CompositeDisposable.\n */\n\n }, {\n key: \"clear\",\n value: function clear() {\n if (!this.isDisposed) {\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n\n this.disposables = [];\n\n for (var _i = 0; _i < len; _i++) {\n currentDisposables[_i].dispose();\n }\n }\n }\n /**\n * Disposes all disposables in the group and removes them from the group.\n */\n\n }, {\n key: \"dispose\",\n value: function dispose() {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n\n this.disposables = [];\n\n for (var _i2 = 0; _i2 < len; _i2++) {\n currentDisposables[_i2].dispose();\n }\n }\n }\n }]);\n\n return CompositeDisposable;\n}();\n/**\n * Represents a disposable resource whose underlying disposable resource can\n * be replaced by another disposable resource, causing automatic disposal of\n * the previous underlying disposable resource.\n */\n\nexport var SerialDisposable = /*#__PURE__*/function () {\n function SerialDisposable() {\n _classCallCheck(this, SerialDisposable);\n\n this.isDisposed = false;\n }\n /**\n * Gets the underlying disposable.\n * @returns {Any} the underlying disposable.\n */\n\n\n _createClass(SerialDisposable, [{\n key: \"getDisposable\",\n value: function getDisposable() {\n return this.current;\n }\n }, {\n key: \"setDisposable\",\n value: function setDisposable(value) {\n var shouldDispose = this.isDisposed;\n\n if (!shouldDispose) {\n var old = this.current;\n this.current = value;\n\n if (old) {\n old.dispose();\n }\n }\n\n if (shouldDispose && value) {\n value.dispose();\n }\n }\n /** Performs the task of cleaning up resources. */\n\n }, {\n key: \"dispose\",\n value: function dispose() {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var old = this.current;\n this.current = undefined;\n\n if (old) {\n old.dispose();\n }\n }\n }\n }]);\n\n return SerialDisposable;\n}();","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport * as React from 'react';\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport { invariant } from '@react-dnd/invariant';\nimport hoistStatics from 'hoist-non-react-statics';\nimport { DndContext } from '../common/DndContext';\nimport { isPlainObject } from '../utils/js_utils';\nimport { Disposable, CompositeDisposable, SerialDisposable } from './disposables';\nimport { isRefable } from './utils';\nexport function decorateHandler(_ref) {\n var DecoratedComponent = _ref.DecoratedComponent,\n createHandler = _ref.createHandler,\n createMonitor = _ref.createMonitor,\n createConnector = _ref.createConnector,\n registerHandler = _ref.registerHandler,\n containerDisplayName = _ref.containerDisplayName,\n getType = _ref.getType,\n collect = _ref.collect,\n options = _ref.options;\n var _options$arePropsEqua = options.arePropsEqual,\n arePropsEqual = _options$arePropsEqua === void 0 ? shallowEqual : _options$arePropsEqua;\n var Decorated = DecoratedComponent;\n var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n\n var DragDropContainer =\n /** @class */\n function () {\n var DragDropContainer = /*#__PURE__*/function (_React$Component) {\n _inherits(DragDropContainer, _React$Component);\n\n var _super = _createSuper(DragDropContainer);\n\n function DragDropContainer(props) {\n var _this;\n\n _classCallCheck(this, DragDropContainer);\n\n _this = _super.call(this, props);\n _this.decoratedRef = React.createRef();\n\n _this.handleChange = function () {\n var nextState = _this.getCurrentState();\n\n if (!shallowEqual(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n\n _this.disposable = new SerialDisposable();\n\n _this.receiveProps(props);\n\n _this.dispose();\n\n return _this;\n }\n\n _createClass(DragDropContainer, [{\n key: \"getHandlerId\",\n value: function getHandlerId() {\n return this.handlerId;\n }\n }, {\n key: \"getDecoratedComponentInstance\",\n value: function getDecoratedComponentInstance() {\n invariant(this.decoratedRef.current, 'In order to access an instance of the decorated component, it must either be a class component or use React.forwardRef()');\n return this.decoratedRef.current;\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n return !arePropsEqual(nextProps, this.props) || !shallowEqual(nextState, this.state);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.disposable = new SerialDisposable();\n this.currentType = undefined;\n this.receiveProps(this.props);\n this.handleChange();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (!arePropsEqual(this.props, prevProps)) {\n this.receiveProps(this.props);\n this.handleChange();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.dispose();\n }\n }, {\n key: \"receiveProps\",\n value: function receiveProps(props) {\n if (!this.handler) {\n return;\n }\n\n this.handler.receiveProps(props);\n this.receiveType(getType(props));\n }\n }, {\n key: \"receiveType\",\n value: function receiveType(type) {\n if (!this.handlerMonitor || !this.manager || !this.handlerConnector) {\n return;\n }\n\n if (type === this.currentType) {\n return;\n }\n\n this.currentType = type;\n\n var _registerHandler = registerHandler(type, this.handler, this.manager),\n _registerHandler2 = _slicedToArray(_registerHandler, 2),\n handlerId = _registerHandler2[0],\n unregister = _registerHandler2[1];\n\n this.handlerId = handlerId;\n this.handlerMonitor.receiveHandlerId(handlerId);\n this.handlerConnector.receiveHandlerId(handlerId);\n var globalMonitor = this.manager.getMonitor();\n var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, {\n handlerIds: [handlerId]\n });\n this.disposable.setDisposable(new CompositeDisposable(new Disposable(unsubscribe), new Disposable(unregister)));\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n this.disposable.dispose();\n\n if (this.handlerConnector) {\n this.handlerConnector.receiveHandlerId(null);\n }\n }\n }, {\n key: \"getCurrentState\",\n value: function getCurrentState() {\n if (!this.handlerConnector) {\n return {};\n }\n\n var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor, this.props);\n\n if (process.env.NODE_ENV !== 'production') {\n invariant(isPlainObject(nextState), 'Expected `collect` specified as the second argument to ' + '%s for %s to return a plain object of props to inject. ' + 'Instead, received %s.', containerDisplayName, displayName, nextState);\n }\n\n return nextState;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(DndContext.Consumer, null, function (_ref2) {\n var dragDropManager = _ref2.dragDropManager;\n\n _this2.receiveDragDropManager(dragDropManager);\n\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(function () {\n var _this2$handlerConnect;\n\n return (_this2$handlerConnect = _this2.handlerConnector) === null || _this2$handlerConnect === void 0 ? void 0 : _this2$handlerConnect.reconnect();\n });\n }\n\n return React.createElement(Decorated, Object.assign({}, _this2.props, _this2.getCurrentState(), {\n // NOTE: if Decorated is a Function Component, decoratedRef will not be populated unless it's a refforwarding component.\n ref: isRefable(Decorated) ? _this2.decoratedRef : null\n }));\n });\n }\n }, {\n key: \"receiveDragDropManager\",\n value: function receiveDragDropManager(dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n\n invariant(dragDropManager !== undefined, 'Could not find the drag and drop manager in the context of %s. ' + 'Make sure to render a DndProvider component in your top-level component. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/troubleshooting#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n\n if (dragDropManager === undefined) {\n return;\n }\n\n this.manager = dragDropManager;\n this.handlerMonitor = createMonitor(dragDropManager);\n this.handlerConnector = createConnector(dragDropManager.getBackend());\n this.handler = createHandler(this.handlerMonitor, this.decoratedRef);\n }\n }]);\n\n return DragDropContainer;\n }(React.Component);\n\n DragDropContainer.DecoratedComponent = DecoratedComponent;\n DragDropContainer.displayName = \"\".concat(containerDisplayName, \"(\").concat(displayName, \")\");\n return DragDropContainer;\n }();\n\n return hoistStatics(DragDropContainer, DecoratedComponent);\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import { cloneElement } from 'react';\nimport { invariant } from '@react-dnd/invariant';\n\nfunction setRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n } else {\n ref.current = node;\n }\n}\n\nexport function cloneWithRef(element, newRef) {\n var previousRef = element.ref;\n invariant(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' + 'Please convert it to use a callback ref instead, or wrap it into a or
. ' + 'Read more: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute');\n\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return cloneElement(element, {\n ref: newRef\n });\n } else {\n return cloneElement(element, {\n ref: function ref(node) {\n setRef(previousRef, node);\n setRef(newRef, node);\n }\n });\n }\n}","import { isValidElement } from 'react';\nimport { cloneWithRef } from '../utils/cloneWithRef';\n\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n\n var displayName = element.type.displayName || element.type.name || 'the component';\n throw new Error('Only native element nodes can now be passed to React DnD connectors.' + \"You can either wrap \".concat(displayName, \" into a
, or turn it into a \") + 'drag source or a drop target itself.');\n}\n\nfunction wrapHookToRecognizeElement(hook) {\n return function () {\n var elementOrNode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // When passed a node, call the hook straight away.\n if (!isValidElement(elementOrNode)) {\n var node = elementOrNode;\n hook(node, options); // return the node so it can be chained (e.g. when within callback refs\n //
connectDragSource(connectDropTarget(node))}/>\n\n return node;\n } // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n\n\n var element = elementOrNode;\n throwIfCompositeComponentElement(element); // When no options are passed, use the hook directly\n\n var ref = options ? function (node) {\n return hook(node, options);\n } : hook;\n return cloneWithRef(element, ref);\n };\n}\n\nexport function wrapConnectorHooks(hooks) {\n var wrappedHooks = {};\n Object.keys(hooks).forEach(function (key) {\n var hook = hooks[key]; // ref objects should be passed straight through without wrapping\n\n if (key.endsWith('Ref')) {\n wrappedHooks[key] = hooks[key];\n } else {\n var wrappedHook = wrapHookToRecognizeElement(hook);\n\n wrappedHooks[key] = function () {\n return wrappedHook;\n };\n }\n });\n return wrappedHooks;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe iff we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getListItemIconUtilityClass(slot) {\n return generateUtilityClass('MuiListItemIcon', slot);\n}\nconst listItemIconClasses = generateUtilityClasses('MuiListItemIcon', ['root', 'alignItemsFlexStart']);\nexport default listItemIconClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDividerUtilityClass(slot) {\n return generateUtilityClass('MuiDivider', slot);\n}\nconst dividerClasses = generateUtilityClasses('MuiDivider', ['root', 'absolute', 'fullWidth', 'inset', 'middle', 'flexItem', 'light', 'vertical', 'withChildren', 'withChildrenVertical', 'textAlignRight', 'textAlignLeft', 'wrapper', 'wrapperVertical']);\nexport default dividerClasses;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"\n}), 'ErrorSharp');\n\nexports.default = _default;","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 (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})();\nimport { Size } from '../../primitives/size';\nimport { DrawingElement } from './drawing-element';\nimport { Rect } from '../../primitives/rect';\nimport { measurePath } from './../../utility/dom-util';\nimport { processPathData, splitArrayCollection, transformPath, getPathString } from '../../utility/path-util';\n/**\n * PathElement takes care of how to align the path based on offsetX and offsetY\n */\nvar PathElement = /** @class */ (function (_super) {\n __extends(PathElement, _super);\n /**\n * set the id for each element\n */\n function PathElement() {\n var _this = _super.call(this) || this;\n /**\n * Gets or sets the geometry of the path element\n */\n _this.pathData = '';\n /**\n * Gets/Sets whether the path has to be transformed to fit the given x,y, width, height\n */\n _this.transformPath = true;\n /**\n * Gets/Sets the equivalent path, that will have the origin as 0,0\n */\n _this.absolutePath = '';\n /** @private */\n _this.canMeasurePath = false;\n //Private variables\n /** @private */\n _this.absoluteBounds = new Rect();\n return _this;\n }\n Object.defineProperty(PathElement.prototype, \"data\", {\n /**\n * Gets the geometry of the path element\n */\n get: function () {\n return this.pathData;\n },\n /**\n * Sets the geometry of the path element\n */\n set: function (value) {\n if (this.pathData !== value) {\n this.pathData = value;\n this.isDirt = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Measures the minimum space that is required to render the element\n * @param availableSize\n */\n PathElement.prototype.measure = function (availableSize) {\n //Performance issue - Avoiding measuring the connector path\n if (this.staticSize && this.width !== undefined && this.height !== undefined) {\n this.absoluteBounds = new Rect(this.offsetX - this.width * this.pivot.x, this.offsetY - this.height * this.pivot.y, this.width, this.height);\n }\n else if (this.isDirt && (this.transformPath || (this.width === undefined || this.height === undefined))\n && (!this.absoluteBounds || this.absoluteBounds.height === 0) || this.canMeasurePath) {\n //Measure the element only whent the path data is changed/ size is not specified\n this.absoluteBounds = measurePath(this.data ? this.data : '');\n }\n if (this.width === undefined) {\n this.desiredSize = new Size(this.absoluteBounds.width, this.height || this.absoluteBounds.height);\n }\n else if (this.height === undefined) {\n this.desiredSize = new Size(this.width || this.absoluteBounds.width, this.absoluteBounds.height);\n }\n else {\n this.desiredSize = new Size(this.width, this.height);\n }\n this.desiredSize = this.validateDesiredSize(this.desiredSize, availableSize);\n this.canMeasurePath = false;\n return this.desiredSize;\n };\n /**\n * Arranges the path element\n * @param desiredSize\n */\n PathElement.prototype.arrange = function (desiredSize) {\n if (this.isDirt || this.actualSize.width !== desiredSize.width || this.actualSize.height !== desiredSize.height) {\n this.isDirt = true;\n this.absolutePath = this.updatePath(this.data, this.absoluteBounds, desiredSize);\n if (!this.staticSize) {\n this.points = null;\n }\n }\n this.actualSize = this.desiredSize;\n this.updateBounds();\n this.isDirt = false;\n return this.actualSize;\n };\n /**\n * Translates the path to 0,0 and scales the path based on the actual size\n * @param pathData\n * @param bounds\n * @param actualSize\n */\n PathElement.prototype.updatePath = function (pathData, bounds, actualSize) {\n var isScale = false;\n var newPathString = '';\n var scaleX = -bounds.x;\n var scaleY = -bounds.y;\n var arrayCollection = [];\n if (actualSize.width !== bounds.width || actualSize.height !== bounds.height) {\n scaleX = actualSize.width / Number(bounds.width ? bounds.width : 1);\n scaleY = actualSize.height / Number(bounds.height ? bounds.height : 1);\n isScale = true;\n }\n arrayCollection = processPathData(pathData);\n arrayCollection = splitArrayCollection(arrayCollection);\n if ((isScale || this.isDirt) && this.transformPath) {\n newPathString = transformPath(arrayCollection, scaleX, scaleY, isScale, bounds.x, bounds.y, 0, 0);\n }\n else {\n newPathString = getPathString(arrayCollection);\n }\n isScale = false;\n return newPathString;\n };\n return PathElement;\n}(DrawingElement));\nexport { PathElement };\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * HEX to RGB.\n * @param color HEX color\n * @return object RGB色值\n */\nvar hexToRgb = function hexToRgb(color) {\n var sColor = color.toLowerCase();\n if (sColor) {\n if (sColor.length === 4) {\n var sColorNew = '#';\n for (var i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n var sColorChange = [];\n for (var _i = 1; _i < 7; _i += 2) {\n sColorChange.push(parseInt('0x' + sColor.slice(_i, _i + 2)));\n }\n return { r: sColorChange[0], g: sColorChange[1], b: sColorChange[2], a: 1 };\n }\n return null;\n};\n\n/**\n * HSL to RGB.\n * form http://en.wikipedia.org/wiki/HSL_color_space.\n *\n * @param Number h 色相\n * @param Number s 饱和度\n * @param Number l 亮度\n * @return object RGB色值数值\n */\n\nvar hslToRgb = function hslToRgb(color) {\n var _getHsl = getHsl(color),\n h = _getHsl.h,\n s = _getHsl.s,\n l = _getHsl.l,\n a = _getHsl.a;\n\n var r = null;\n var g = null;\n var b = null;\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var hue2rgb = function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255), a: a };\n};\n\n// example: hsl(0, 100%, 50%)\nvar getHsl = function getHsl(color) {\n var begin = color.startsWith('hsla') ? 5 : 4;\n var length = color.length;\n var hslArray = color.slice(begin, length - 1).split(',');\n var h = hslArray[0];\n var s = percentToDecimal(hslArray[1]);\n var l = percentToDecimal(hslArray[2]);\n return { h: h, s: s, l: l, a: hslArray[3] || 1 };\n};\n// example: 10% to 0.1\nvar percentToDecimal = function percentToDecimal(percent) {\n var temp = percent.trim();\n return temp.slice(0, temp.length - 1);\n};\n\n/**\n * RGB to RGB.\n * @param color rgba\n * @return object RGB色值\n */\nvar rgbaToRgba = function rgbaToRgba(color) {\n var begin = color.startsWith('rgba') ? 5 : 4;\n var length = color.length;\n var rgbaArray = color.slice(begin, length - 1).split(',');\n var r = rgbaArray[0];\n var g = rgbaArray[1];\n var b = rgbaArray[2];\n return { r: r, g: g, b: b, a: rgbaArray[3] || 1 };\n};\n\nvar randomColor = exports.randomColor = function randomColor(i) {\n return i % 2 ? 'rgb(224,74,116)' : 'rgb(211,0,57)';\n};\n\nvar reg = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;\nvar getHoverRgbColor = exports.getHoverRgbColor = function getHoverRgbColor(color, opacity) {\n var rgba = null;\n if (!color) return randomColor();\n if (reg.test(color)) {\n rgba = hexToRgb(color);\n } else if (color.startsWith('hsl')) {\n rgba = hslToRgb(color);\n } else if (color.startsWith('rgb')) {\n rgba = rgbaToRgba(color);\n }\n return 'rgba(' + rgba.r + ', ' + rgba.g + ', ' + rgba.b + ', ' + (opacity || 0.65) + ')';\n};","import * as React from 'react';\nlet globalId = 0;\nexport default function useId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}","/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","import * as React from 'react';\nimport setRef from './setRef';\nexport default function useForkRef(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refA == null && refB == null) {\n return null;\n }\n\n return refValue => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}","/**\n * @hidden\n */\nvar AjaxHandler = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n * @param {PdfViewer} pdfviewer - The pdfviewer.\n * @private\n */\n function AjaxHandler(pdfviewer) {\n /**\n * Specifies the URL to which request to be sent.\n *\n * @default 'POST'\n */\n this.type = 'POST';\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n * @private\n */\n this.mode = true;\n /**\n * Specifies the ContentType to which request to be sent\n *\n * @default null\n * @private\n */\n this.contentType = 'application/json;charset=UTF-8';\n this.pdfViewer = pdfviewer;\n this.retryCount = pdfviewer.retryCount;\n }\n /**\n * Send the request to server\n *\n * @param {object} jsonObj - To send to service\n * @returns {void}\n * @private\n */\n AjaxHandler.prototype.send = function (jsonObj) {\n var _this = this;\n this.httpRequest = new XMLHttpRequest();\n if (!this.mode) {\n setTimeout(function () {\n _this.sendRequest(jsonObj);\n });\n }\n else {\n this.sendRequest(jsonObj);\n }\n this.httpRequest.onreadystatechange = function () {\n var isSkip = false;\n // eslint-disable-next-line\n var viewerBase = _this.pdfViewer.viewerBase;\n if (viewerBase && viewerBase.isPasswordAvailable && viewerBase.passwordData === '') {\n isSkip = true;\n _this.retryCount = 0;\n }\n if (_this.retryCount > 0) {\n isSkip = _this.resendRequest(_this, jsonObj);\n }\n if (!isSkip) {\n _this.stateChange(_this);\n }\n };\n this.httpRequest.onerror = function () {\n _this.error(_this);\n };\n };\n /**\n * Clear the http request\n * @returns {void}\n * @private\n */\n AjaxHandler.prototype.clear = function () {\n this.httpRequest && this.httpRequest.abort();\n this.onSuccess = null;\n this.onFailure = null;\n this.onError = null;\n };\n // eslint-disable-next-line\n AjaxHandler.prototype.resendRequest = function (proxy, jsonObj) {\n var isSkip = false;\n var status = proxy.httpRequest.status;\n var statusString = status.toString().split('')[0];\n if (proxy.httpRequest.readyState === 4 && status === 200) {\n // eslint-disable-next-line\n var data = void 0;\n if (this.responseType !== null) {\n data = proxy.httpRequest.response;\n }\n else {\n data = proxy.httpRequest.responseText;\n }\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // eslint-disable-next-line max-len\n if (data === 'Document stream does not exist in the cache' || data === 'Document Reference pointer does not exist in the cache') {\n isSkip = true;\n }\n }\n }\n }\n }\n if (statusString === '5' || isSkip) {\n isSkip = true;\n this.retryCount--;\n proxy.pdfViewer.fireAjaxRequestFailed(status, proxy.httpRequest.statusText, jsonObj.action, true);\n proxy.send(jsonObj);\n }\n return isSkip;\n };\n AjaxHandler.prototype.sendRequest = function (jsonObj) {\n this.httpRequest.open(this.type, this.url, this.mode);\n this.httpRequest.withCredentials = this.pdfViewer.ajaxRequestSettings.withCredentials;\n this.httpRequest.setRequestHeader('Content-Type', this.contentType);\n jsonObj = this.addExtraData(jsonObj);\n this.setCustomAjaxHeaders();\n if (this.responseType !== null) {\n this.httpRequest.responseType = this.responseType;\n }\n this.httpRequest.send(JSON.stringify(jsonObj)); // jshint ignore:line\n };\n AjaxHandler.prototype.addExtraData = function (jsonObject) {\n this.pdfViewer.viewerBase.ajaxData = '';\n this.pdfViewer.fireAjaxRequestInitiate(jsonObject);\n if (this.pdfViewer.viewerBase.ajaxData && this.pdfViewer.viewerBase.ajaxData !== '') {\n jsonObject = this.pdfViewer.viewerBase.ajaxData;\n }\n return jsonObject;\n };\n AjaxHandler.prototype.stateChange = function (proxy) {\n var status = proxy.httpRequest.status;\n var statusString = status.toString().split('')[0];\n if (proxy.httpRequest.readyState === 4 && status === 200) {\n // eslint-disable-next-line\n var data = void 0;\n if (this.responseType !== null) {\n data = proxy.httpRequest.response;\n }\n else {\n data = proxy.httpRequest.responseText;\n }\n // eslint-disable-next-line\n var result = {\n name: 'onSuccess',\n data: data,\n readyState: proxy.httpRequest.readyState,\n status: proxy.httpRequest.status\n };\n proxy.successHandler(result);\n }\n else if (proxy.httpRequest.readyState === 4 && (statusString === '4' || statusString === '5')) { // jshint ignore:line)\n // For handling 4xx and 5xx errors.\n // eslint-disable-next-line\n var result = {\n name: 'onFailure',\n status: proxy.httpRequest.status,\n statusText: proxy.httpRequest.statusText\n };\n proxy.failureHandler(result);\n }\n };\n AjaxHandler.prototype.error = function (proxy) {\n // eslint-disable-next-line\n var result = {\n name: 'onError',\n status: this.httpRequest.status,\n statusText: this.httpRequest.statusText\n };\n proxy.errorHandler(result);\n };\n // eslint-disable-next-line\n AjaxHandler.prototype.successHandler = function (response) {\n if (this.onSuccess) {\n this.onSuccess(response);\n }\n return response;\n };\n // eslint-disable-next-line\n AjaxHandler.prototype.failureHandler = function (response) {\n if (this.onFailure) {\n this.onFailure(response);\n }\n return response;\n };\n // eslint-disable-next-line\n AjaxHandler.prototype.errorHandler = function (response) {\n if (this.onError) {\n this.onError(response);\n }\n return response;\n };\n AjaxHandler.prototype.setCustomAjaxHeaders = function () {\n for (var i = 0; i < this.pdfViewer.ajaxRequestSettings.ajaxHeaders.length; i++) {\n // eslint-disable-next-line max-len\n this.httpRequest.setRequestHeader(this.pdfViewer.ajaxRequestSettings.ajaxHeaders[i].headerName, this.pdfViewer.ajaxRequestSettings.ajaxHeaders[i].headerValue);\n }\n };\n return AjaxHandler;\n}());\nexport { AjaxHandler };\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","// 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 isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.7.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","module.exports = require(\"core-js-pure/features/symbol\");","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","export { default } from './Input';\nexport { default as inputClasses } from './inputClasses';\nexport * from './inputClasses';","export { default } from './Chip';\nexport { default as chipClasses } from './chipClasses';\nexport * from './chipClasses';","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","var baseForOwn = require('./_baseForOwn'),\n castFunction = require('./_castFunction');\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, castFunction(iteratee));\n}\n\nmodule.exports = forOwn;\n","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n } // eslint-disable-next-line react/forbid-foreign-prop-types\n\n\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n\n return null;\n };\n\n return requireProp;\n}","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, stringify, COMMENT, rulesheet, middleware, prefixer, serialize, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar last = function last(arr) {\n return arr.length ? arr[arr.length - 1] : null;\n}; // based on https://github.com/thysultan/stylis.js/blob/e6843c373ebcbbfade25ebcc23f540ed8508da0a/src/Tokenizer.js#L239-L244\n\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // .length indicates if this rule contains pseudo or not\n !element.length) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return !!element && element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule') return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses && cache.compat !== true) {\n var prevElement = index > 0 ? children[index - 1] : null;\n\n if (prevElement && isIgnoringComment(last(prevElement.children))) {\n return;\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if ( key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {}; // $FlowFixMe\n\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport default createCache;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import hoistNonReactStatics$1 from 'hoist-non-react-statics';\n\n// this file isolates this package that is not tree-shakeable\n// and if this module doesn't actually contain any logic of its own\n// then Rollup just use 'hoist-non-react-statics' directly in other chunks\n\nvar hoistNonReactStatics = (function (targetComponent, sourceComponent) {\n return hoistNonReactStatics$1(targetComponent, sourceComponent);\n});\n\nexport default hoistNonReactStatics;\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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m7 10 5 5 5-5z\"\n}), 'ArrowDropDown');\n\nexports.default = _default;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"edge\", \"children\", \"className\", \"color\", \"disabled\", \"disableFocusRipple\", \"size\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport iconButtonClasses, { getIconButtonUtilityClass } from './iconButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disabled,\n color,\n edge,\n size\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', color !== 'default' && `color${capitalize(color)}`, edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`]\n };\n return composeClasses(slots, getIconButtonUtilityClass, classes);\n};\n\nconst IconButtonRoot = styled(ButtonBase, {\n name: 'MuiIconButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n textAlign: 'center',\n flex: '0 0 auto',\n fontSize: theme.typography.pxToRem(24),\n padding: 8,\n borderRadius: '50%',\n overflow: 'visible',\n // Explicitly set the default value to solve a bug on IE11.\n color: theme.palette.action.active,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shortest\n })\n}, !ownerState.disableRipple && {\n '&:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n}, ownerState.edge === 'start' && {\n marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n marginRight: ownerState.size === 'small' ? -3 : -12\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.color === 'inherit' && {\n color: 'inherit'\n}, ownerState.color !== 'inherit' && ownerState.color !== 'default' && _extends({\n color: theme.palette[ownerState.color].main\n}, !ownerState.disableRipple && {\n '&:hover': {\n backgroundColor: alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n}), ownerState.size === 'small' && {\n padding: 5,\n fontSize: theme.typography.pxToRem(18)\n}, ownerState.size === 'large' && {\n padding: 12,\n fontSize: theme.typography.pxToRem(28)\n}, {\n [`&.${iconButtonClasses.disabled}`]: {\n backgroundColor: 'transparent',\n color: theme.palette.action.disabled\n }\n}));\n/**\n * Refer to the [Icons](/components/icons/) section of the documentation\n * regarding the available icon options.\n */\n\nconst IconButton = /*#__PURE__*/React.forwardRef(function IconButton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiIconButton'\n });\n\n const {\n edge = false,\n children,\n className,\n color = 'default',\n disabled = false,\n disableFocusRipple = false,\n size = 'medium'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n edge,\n color,\n disabled,\n disableFocusRipple,\n size\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(IconButtonRoot, _extends({\n className: clsx(classes.root, className),\n centerRipple: true,\n focusRipple: !disableFocusRipple,\n disabled: disabled,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? IconButton.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The icon to display.\n */\n children: chainPropTypes(PropTypes.node, props => {\n const found = React.Children.toArray(props.children).some(child => /*#__PURE__*/React.isValidElement(child) && child.props.onClick);\n\n if (found) {\n return new Error(['MUI: You are providing an onClick event listener to a child of a button element.', 'Prefer applying it to the IconButton directly.', 'This guarantees that the whole \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.isColorPicker()) || !this.createPopupOnClick) {\n this.createPopup();\n }\n else {\n this.isPopupCreated = false;\n }\n };\n DropDownButton.prototype.isColorPicker = function () {\n if (!this.element) {\n return false;\n }\n var prevElem = this.element.previousSibling;\n if (prevElem && prevElem.classList && prevElem.classList.contains('e-split-colorpicker')) {\n return true;\n }\n return false;\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n var val = false;\n if (this.isPopupCreated) {\n val = this.getPopUpElement().classList.contains('e-popup-close');\n }\n return val;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n var attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.popupUnWireEvents();\n this.destroyPopup();\n this.isPopupCreated = false;\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.destroyPopup = function () {\n if (this.isPopupCreated) {\n this.dropDown.destroy();\n if (this.getPopUpElement()) {\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n }\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\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 if (!this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n };\n DropDownButton.prototype.popupWireEvents = function () {\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n if (popupElement) {\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n }\n this.rippleFn = rippleEffect(popupElement, { selector: '.' + classNames.ITEM });\n };\n DropDownButton.prototype.popupUnWireEvents = function () {\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n if (popupElement && popupElement.parentElement) {\n EventHandler.remove(popupElement, 'click', this.clickHandler);\n EventHandler.remove(popupElement, 'keydown', this.keyBoardHandler);\n }\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 && !this.isColorPicker())) {\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 var isReact = false;\n var popupElem = this.getPopUpElement();\n if (!this.target) {\n this.createItems(true);\n }\n else {\n if (this.activeElem.length > 1) {\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (splitButton.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n splitButton.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n }\n }\n }\n var ul = this.getULElement();\n this.popupWireEvents();\n var beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n 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 _this.popupUnWireEvents();\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 || _this.isColorPicker()) {\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 if (!this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n }\n };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 var _this = this;\n this.initialize();\n this.initRender();\n this.wireEvents();\n this.setZindex();\n this.renderComplete();\n if (this.element.tagName === 'EJS-SLIDER') {\n if (this.getTheme(this.sliderContainer) == \"none\") {\n setTimeout(function () {\n _this.refresh();\n }, 0);\n }\n }\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.isBootstrap5 = this.getTheme(this.sliderContainer) === 'bootstrap5';\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 this.firstHandle.classList.add(classNames.sliderTabHandle);\n }\n else {\n this.secondHandle.classList.add(classNames.sliderHandleFocused);\n this.secondHandle.classList.add(classNames.sliderTabHandle);\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 || this.isBootstrap5,\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.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.focusHandle = function () {\n if (!this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.getHandle().classList.add(classNames.sliderTabHandle);\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 this.focusHandle();\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 this.focusHandle();\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 var curTarget = event.currentTarget;\n if (this.tooltip.isVisible && this.tooltip.showOn !== 'Always' && this.tooltipObj && this.isMaterialTooltip &&\n !curTarget.classList.contains(classNames.sliderHandleFocused) &&\n !curTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeMaterialTooltip();\n }\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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"8\"\n}), 'FiberManualRecord');\n\nexports.default = _default;","'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 freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1.41 16.09V20h-2.67v-1.93c-1.71-.36-3.16-1.46-3.27-3.4h1.96c.1 1.05.82 1.87 2.65 1.87 1.96 0 2.4-.98 2.4-1.59 0-.83-.44-1.61-2.67-2.14-2.48-.6-4.18-1.62-4.18-3.67 0-1.72 1.39-2.84 3.11-3.21V4h2.67v1.95c1.86.45 2.79 1.86 2.85 3.39H14.3c-.05-1.11-.64-1.87-2.22-1.87-1.5 0-2.4.68-2.4 1.64 0 .84.65 1.39 2.67 1.91s4.18 1.39 4.18 3.91c-.01 1.83-1.38 2.83-3.12 3.16z\"\n}), 'MonetizationOn');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m22 9.24-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\"\n}), 'StarBorderOutlined');\n\nexports.default = _default;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes } 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.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 this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n this.updateInput();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType == 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\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 this.disabledDates();\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown touchstart', 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) {\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.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) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify(\"setMaskSelection\", {\n module: \"MaskedDateTime\"\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify(\"clearHandler\", {\n module: \"MaskedDateTime\"\n });\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[key];\n }\n }\n else {\n setStyle = this.htmlAttributes[key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n 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: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify(\"inputHandler\", {\n module: \"MaskedDateTime\"\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.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 if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && (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))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start == 0 && end == length_1) || (end !== length_1 && e.action == 'tab') || (start !== 0 && e.action == 'shiftTab')) {\n e.preventDefault();\n }\n this.notify(\"keyDownHandler\", {\n module: \"MaskedDateTime\",\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n 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.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)) {\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: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { type: 'dateTime', skeleton: '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 this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { 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) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.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: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify(\"setMaskSelection\", {\n module: \"MaskedDateTime\"\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +this.min && +this.value <= +this.max)) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper)) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n _super.prototype.destroy.call(this);\n this.keyboardModules.destroy();\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\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 this.keyboardModule.destroy();\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.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function () {\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 _super.prototype.render.call(this);\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: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\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 this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\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 this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.updateInput();\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n 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.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","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 { 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.parent.isAutoFitColumns = true;\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 wFooter = null;\n var wContent = null;\n if (gObj.getCurrentViewRecords().length) {\n wContent = this.createTable(contentTable, contentText, contentDivTag);\n }\n if (footerText.length) {\n wFooter = this.createTable(footerTable, footerText, footerDivTag);\n }\n var columnbyindex = gObj.getColumns()[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","import addDays from 'date-fns/addDays';\nimport addSeconds from 'date-fns/addSeconds';\nimport addMinutes from 'date-fns/addMinutes';\nimport addHours from 'date-fns/addHours';\nimport addWeeks from 'date-fns/addWeeks';\nimport addMonths from 'date-fns/addMonths';\nimport addYears from 'date-fns/addYears';\nimport differenceInYears from 'date-fns/differenceInYears';\nimport differenceInQuarters from 'date-fns/differenceInQuarters';\nimport differenceInMonths from 'date-fns/differenceInMonths';\nimport differenceInWeeks from 'date-fns/differenceInWeeks';\nimport differenceInDays from 'date-fns/differenceInDays';\nimport differenceInHours from 'date-fns/differenceInHours';\nimport differenceInMinutes from 'date-fns/differenceInMinutes';\nimport differenceInSeconds from 'date-fns/differenceInSeconds';\nimport differenceInMilliseconds from 'date-fns/differenceInMilliseconds';\nimport eachDayOfInterval from 'date-fns/eachDayOfInterval';\nimport endOfDay from 'date-fns/endOfDay';\nimport endOfWeek from 'date-fns/endOfWeek';\nimport endOfYear from 'date-fns/endOfYear';\nimport format from 'date-fns/format';\nimport getHours from 'date-fns/getHours';\nimport getSeconds from 'date-fns/getSeconds';\nimport getYear from 'date-fns/getYear';\nimport isAfter from 'date-fns/isAfter';\nimport isBefore from 'date-fns/isBefore';\nimport isEqual from 'date-fns/isEqual';\nimport isSameDay from 'date-fns/isSameDay';\nimport isSameYear from 'date-fns/isSameYear';\nimport isSameMonth from 'date-fns/isSameMonth';\nimport isSameHour from 'date-fns/isSameHour';\nimport isValid from 'date-fns/isValid';\nimport dateFnsParse from 'date-fns/parse';\nimport setHours from 'date-fns/setHours';\nimport setMinutes from 'date-fns/setMinutes';\nimport setMonth from 'date-fns/setMonth';\nimport getDaysInMonth from 'date-fns/getDaysInMonth';\nimport setSeconds from 'date-fns/setSeconds';\nimport setYear from 'date-fns/setYear';\nimport startOfDay from 'date-fns/startOfDay';\nimport startOfMonth from 'date-fns/startOfMonth';\nimport endOfMonth from 'date-fns/endOfMonth';\nimport startOfWeek from 'date-fns/startOfWeek';\nimport startOfYear from 'date-fns/startOfYear';\nimport isWithinInterval from 'date-fns/isWithinInterval';\nimport longFormatters from 'date-fns/_lib/format/longFormatters';\nimport defaultLocale from 'date-fns/locale/en-US';\n\nvar defaultFormats = {\n dayOfMonth: \"d\",\n fullDate: \"PP\",\n fullDateWithWeekday: \"PPPP\",\n fullDateTime: \"PP p\",\n fullDateTime12h: \"PP hh:mm aaa\",\n fullDateTime24h: \"PP HH:mm\",\n fullTime: \"p\",\n fullTime12h: \"hh:mm aaa\",\n fullTime24h: \"HH:mm\",\n hours12h: \"hh\",\n hours24h: \"HH\",\n keyboardDate: \"P\",\n keyboardDateTime: \"P p\",\n keyboardDateTime12h: \"P hh:mm aaa\",\n keyboardDateTime24h: \"P HH:mm\",\n minutes: \"mm\",\n month: \"LLLL\",\n monthAndDate: \"MMMM d\",\n monthAndYear: \"LLLL yyyy\",\n monthShort: \"MMM\",\n weekday: \"EEEE\",\n weekdayShort: \"EEE\",\n normalDate: \"d MMMM\",\n normalDateWithWeekday: \"EEE, MMM d\",\n seconds: \"ss\",\n shortDate: \"MMM d\",\n year: \"yyyy\",\n};\nvar DateFnsUtils = /** @class */ (function () {\n function DateFnsUtils(_a) {\n var _b = _a === void 0 ? {} : _a, locale = _b.locale, formats = _b.formats;\n this.lib = \"date-fns\";\n this.locale = locale;\n this.formats = Object.assign({}, defaultFormats, formats);\n }\n // Note: date-fns input types are more lenient than this adapter, so we need to expose our more\n // strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage.\n DateFnsUtils.prototype.is12HourCycleInCurrentLocale = function () {\n if (this.locale) {\n return /a/.test(this.locale.formatLong.time());\n }\n // By default date-fns is using en-US locale with am/pm enabled\n return true;\n };\n DateFnsUtils.prototype.getFormatHelperText = function (format) {\n // @see https://github.com/date-fns/date-fns/blob/master/src/format/index.js#L31\n var longFormatRegexp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n var locale = this.locale || defaultLocale;\n return format\n .match(longFormatRegexp)\n .map(function (token) {\n var firstCharacter = token[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(token, locale.formatLong, {});\n }\n return token;\n })\n .join(\"\")\n .replace(/(aaa|aa|a)/g, \"(a|p)m\")\n .toLocaleLowerCase();\n };\n DateFnsUtils.prototype.getCurrentLocaleCode = function () {\n var _a;\n return ((_a = this.locale) === null || _a === void 0 ? void 0 : _a.code) || \"en-US\";\n };\n DateFnsUtils.prototype.addSeconds = function (value, count) {\n return addSeconds(value, count);\n };\n DateFnsUtils.prototype.addMinutes = function (value, count) {\n return addMinutes(value, count);\n };\n DateFnsUtils.prototype.addHours = function (value, count) {\n return addHours(value, count);\n };\n DateFnsUtils.prototype.addDays = function (value, count) {\n return addDays(value, count);\n };\n DateFnsUtils.prototype.addWeeks = function (value, count) {\n return addWeeks(value, count);\n };\n DateFnsUtils.prototype.addMonths = function (value, count) {\n return addMonths(value, count);\n };\n DateFnsUtils.prototype.isValid = function (value) {\n return isValid(this.date(value));\n };\n DateFnsUtils.prototype.getDiff = function (value, comparing, unit) {\n switch (unit) {\n case \"years\":\n return differenceInYears(value, this.date(comparing));\n case \"quarters\":\n return differenceInQuarters(value, this.date(comparing));\n case \"months\":\n return differenceInMonths(value, this.date(comparing));\n case \"weeks\":\n return differenceInWeeks(value, this.date(comparing));\n case \"days\":\n return differenceInDays(value, this.date(comparing));\n case \"hours\":\n return differenceInHours(value, this.date(comparing));\n case \"minutes\":\n return differenceInMinutes(value, this.date(comparing));\n case \"seconds\":\n return differenceInSeconds(value, this.date(comparing));\n default: {\n return differenceInMilliseconds(value, this.date(comparing));\n }\n }\n };\n DateFnsUtils.prototype.isAfter = function (value, comparing) {\n return isAfter(value, comparing);\n };\n DateFnsUtils.prototype.isBefore = function (value, comparing) {\n return isBefore(value, comparing);\n };\n DateFnsUtils.prototype.startOfDay = function (value) {\n return startOfDay(value);\n };\n DateFnsUtils.prototype.endOfDay = function (value) {\n return endOfDay(value);\n };\n DateFnsUtils.prototype.getHours = function (value) {\n return getHours(value);\n };\n DateFnsUtils.prototype.setHours = function (value, count) {\n return setHours(value, count);\n };\n DateFnsUtils.prototype.setMinutes = function (value, count) {\n return setMinutes(value, count);\n };\n DateFnsUtils.prototype.getSeconds = function (value) {\n return getSeconds(value);\n };\n DateFnsUtils.prototype.setSeconds = function (value, count) {\n return setSeconds(value, count);\n };\n DateFnsUtils.prototype.isSameDay = function (value, comparing) {\n return isSameDay(value, comparing);\n };\n DateFnsUtils.prototype.isSameMonth = function (value, comparing) {\n return isSameMonth(value, comparing);\n };\n DateFnsUtils.prototype.isSameYear = function (value, comparing) {\n return isSameYear(value, comparing);\n };\n DateFnsUtils.prototype.isSameHour = function (value, comparing) {\n return isSameHour(value, comparing);\n };\n DateFnsUtils.prototype.startOfMonth = function (value) {\n return startOfMonth(value);\n };\n DateFnsUtils.prototype.endOfMonth = function (value) {\n return endOfMonth(value);\n };\n DateFnsUtils.prototype.startOfWeek = function (value) {\n return startOfWeek(value, { locale: this.locale });\n };\n DateFnsUtils.prototype.endOfWeek = function (value) {\n return endOfWeek(value, { locale: this.locale });\n };\n DateFnsUtils.prototype.getYear = function (value) {\n return getYear(value);\n };\n DateFnsUtils.prototype.setYear = function (value, count) {\n return setYear(value, count);\n };\n DateFnsUtils.prototype.date = function (value) {\n if (typeof value === \"undefined\") {\n return new Date();\n }\n if (value === null) {\n return null;\n }\n return new Date(value);\n };\n DateFnsUtils.prototype.toJsDate = function (value) {\n return value;\n };\n DateFnsUtils.prototype.parse = function (value, formatString) {\n if (value === \"\") {\n return null;\n }\n return dateFnsParse(value, formatString, new Date(), { locale: this.locale });\n };\n DateFnsUtils.prototype.format = function (date, formatKey) {\n return this.formatByString(date, this.formats[formatKey]);\n };\n DateFnsUtils.prototype.formatByString = function (date, formatString) {\n return format(date, formatString, { locale: this.locale });\n };\n DateFnsUtils.prototype.isEqual = function (date, comparing) {\n if (date === null && comparing === null) {\n return true;\n }\n return isEqual(date, comparing);\n };\n DateFnsUtils.prototype.isNull = function (date) {\n return date === null;\n };\n DateFnsUtils.prototype.isAfterDay = function (date, value) {\n return isAfter(date, endOfDay(value));\n };\n DateFnsUtils.prototype.isBeforeDay = function (date, value) {\n return isBefore(date, startOfDay(value));\n };\n DateFnsUtils.prototype.isBeforeYear = function (date, value) {\n return isBefore(date, startOfYear(value));\n };\n DateFnsUtils.prototype.isAfterYear = function (date, value) {\n return isAfter(date, endOfYear(value));\n };\n DateFnsUtils.prototype.isWithinRange = function (date, _a) {\n var start = _a[0], end = _a[1];\n return isWithinInterval(date, { start: start, end: end });\n };\n DateFnsUtils.prototype.formatNumber = function (numberToFormat) {\n return numberToFormat;\n };\n DateFnsUtils.prototype.getMinutes = function (date) {\n return date.getMinutes();\n };\n DateFnsUtils.prototype.getMonth = function (date) {\n return date.getMonth();\n };\n DateFnsUtils.prototype.getDaysInMonth = function (date) {\n return getDaysInMonth(date);\n };\n DateFnsUtils.prototype.setMonth = function (date, count) {\n return setMonth(date, count);\n };\n DateFnsUtils.prototype.getMeridiemText = function (ampm) {\n return ampm === \"am\" ? \"AM\" : \"PM\";\n };\n DateFnsUtils.prototype.getNextMonth = function (date) {\n return addMonths(date, 1);\n };\n DateFnsUtils.prototype.getPreviousMonth = function (date) {\n return addMonths(date, -1);\n };\n DateFnsUtils.prototype.getMonthArray = function (date) {\n var firstMonth = startOfYear(date);\n var monthArray = [firstMonth];\n while (monthArray.length < 12) {\n var prevMonth = monthArray[monthArray.length - 1];\n monthArray.push(this.getNextMonth(prevMonth));\n }\n return monthArray;\n };\n DateFnsUtils.prototype.mergeDateAndTime = function (date, time) {\n return this.setSeconds(this.setMinutes(this.setHours(date, this.getHours(time)), this.getMinutes(time)), this.getSeconds(time));\n };\n DateFnsUtils.prototype.getWeekdays = function () {\n var _this = this;\n var now = new Date();\n return eachDayOfInterval({\n start: startOfWeek(now, { locale: this.locale }),\n end: endOfWeek(now, { locale: this.locale }),\n }).map(function (day) { return _this.formatByString(day, \"EEEEEE\"); });\n };\n DateFnsUtils.prototype.getWeekArray = function (date) {\n var start = startOfWeek(startOfMonth(date), { locale: this.locale });\n var end = endOfWeek(endOfMonth(date), { locale: this.locale });\n var count = 0;\n var current = start;\n var nestedWeeks = [];\n while (isBefore(current, end)) {\n var weekNumber = Math.floor(count / 7);\n nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];\n nestedWeeks[weekNumber].push(current);\n current = addDays(current, 1);\n count += 1;\n }\n return nestedWeeks;\n };\n DateFnsUtils.prototype.getYearRange = function (start, end) {\n var startDate = startOfYear(start);\n var endDate = endOfYear(end);\n var years = [];\n var current = startDate;\n while (isBefore(current, endDate)) {\n years.push(current);\n current = addYears(current, 1);\n }\n return years;\n };\n return DateFnsUtils;\n}());\n\nexport default DateFnsUtils;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6.5 10h-2v7h2v-7zm6 0h-2v7h2v-7zm8.5 9H2v2h19v-2zm-2.5-9h-2v7h2v-7zm-7-6.74L16.71 6H6.29l5.21-2.74m0-2.26L2 6v2h19V6l-9.5-5z\"\n}), 'AccountBalanceOutlined');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z\"\n}), 'CreditCard');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V10h16v11zm0-13H4V5h16v3z\"\n}), 'CalendarTodayOutlined');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 1 3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 10.99h7c-.53 4.12-3.28 7.79-7 8.94V12H5V6.3l7-3.11v8.8z\"\n}), 'SecurityOutlined');\n\nexports.default = _default;","function resizeListener(e) {\r\n var win = e.target || e.srcElement\r\n if (win.__resizeRAF__) {\r\n cancelAnimationFrame(win.__resizeRAF__)\r\n }\r\n win.__resizeRAF__ = requestAnimationFrame(function () {\r\n var trigger = win.__resizeTrigger__\r\n var listeners = trigger && trigger.__resizeListeners__\r\n if (listeners) {\r\n listeners.forEach(function (fn) {\r\n fn.call(trigger, e)\r\n })\r\n }\r\n })\r\n}\r\n\r\nvar exports = function exports(element, fn) {\r\n var window = this\r\n var document = window.document\r\n var isIE\r\n\r\n var attachEvent = document.attachEvent\r\n if (typeof navigator !== 'undefined') {\r\n isIE = navigator.userAgent.match(/Trident/) ||\r\n navigator.userAgent.match(/Edge/)\r\n }\r\n\r\n function objectLoad() {\r\n this.contentDocument.defaultView.__resizeTrigger__ = this.__resizeElement__\r\n this.contentDocument.defaultView.addEventListener('resize', resizeListener)\r\n }\r\n\r\n if (!element.__resizeListeners__) {\r\n element.__resizeListeners__ = []\r\n if (attachEvent) {\r\n element.__resizeTrigger__ = element\r\n element.attachEvent('onresize', resizeListener)\r\n } else {\r\n if (getComputedStyle(element).position === 'static') {\r\n element.style.position = 'relative'\r\n }\r\n var obj = (element.__resizeTrigger__ = document.createElement('object'))\r\n obj.setAttribute(\r\n 'style',\r\n 'position: absolute; top: 0; left: 0; height: 100%; width: 100%; pointer-events: none; z-index: -1; opacity: 0;'\r\n )\r\n obj.setAttribute('class', 'resize-sensor')\r\n\r\n // prevent from stealing keyboard focus\r\n obj.setAttribute('tabindex', '-1');\r\n\r\n obj.__resizeElement__ = element\r\n obj.onload = objectLoad\r\n obj.type = 'text/html'\r\n if (isIE) {\r\n element.appendChild(obj)\r\n }\r\n obj.data = 'about:blank'\r\n if (!isIE) {\r\n element.appendChild(obj)\r\n }\r\n }\r\n }\r\n element.__resizeListeners__.push(fn)\r\n}\r\n\r\nmodule.exports = typeof window === 'undefined' ? exports : exports.bind(window)\r\n\r\nmodule.exports.unbind = function (element, fn) {\r\n var attachEvent = document.attachEvent\r\n var listeners = element.__resizeListeners__ || []\r\n if (fn) {\r\n var index = listeners.indexOf(fn)\r\n if (index !== -1) {\r\n listeners.splice(index, 1)\r\n }\r\n } else {\r\n listeners = element.__resizeListeners__ = []\r\n }\r\n if (!listeners.length) {\r\n if (attachEvent) {\r\n element.detachEvent('onresize', resizeListener)\r\n } else if (element.__resizeTrigger__) {\r\n var contentDocument = element.__resizeTrigger__.contentDocument;\r\n var defaultView = contentDocument && contentDocument.defaultView;\r\n if (defaultView) {\r\n defaultView.removeEventListener('resize', resizeListener);\r\n delete defaultView.__resizeTrigger__;\r\n }\r\n element.__resizeTrigger__ = !element.removeChild(\r\n element.__resizeTrigger__\r\n )\r\n }\r\n delete element.__resizeListeners__\r\n }\r\n}\r\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\"\n}), 'RefreshOutlined');\n\nexports.default = _default;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 _this.clickTriggered = 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 (event.target.tagName === 'INPUT' && this.clickTriggered) {\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['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.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(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 } 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 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 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 this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n 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)) || this.textboxWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n }\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 (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 /**\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};\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 { 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 this.clearAll();\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.formRendered();\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 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 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 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 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 /* 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 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 detach(this.actionButtons);\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 {\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 var fileDropArea = this.createElement('span', { className: DROP_AREA });\n fileDropArea.innerHTML = this.localizedTexts('dropFilesHint');\n this.dropAreaWrapper.appendChild(fileDropArea);\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 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 detach(selectedElement);\n index = this.fileList.indexOf(selectedElement);\n this.fileList.splice(index, 1);\n this.filesData.splice(index, 1);\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 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 (!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 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 (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 /* 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 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 this.filesData = this.filesData.concat(fileData);\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(fileData);\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.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)) {\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 this.removeActionButtons();\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 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 };\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 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 };\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 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 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 files.status = status;\n files.statusCode = statusCode;\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(files) && ((!isNullOrUndefined(this.filesData[i].id) &&\n !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_1 = _this.element.getAttribute('name');\n formData.append(name_1, 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 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 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 this.trigger('success', args, function (args) {\n _this.updateStatus(file, args.statusText, '2');\n _this.uploadedFilesData.push(file);\n _this.trigger('change', { file: _this.uploadedFilesData });\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 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_2 = _this.element.getAttribute('name');\n formData.append(name_2, 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_3 = sortedFileNames_1[_i];\n for (var i = 0; i < files.length; i++) {\n if (name_3 === 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 this.clearAll();\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 (!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 /**\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 _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 selectedFiles = [];\n if (this.asyncSettings.saveUrl === '' || isNullOrUndefined(this.asyncSettings.saveUrl)) {\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 for (var i = 0; i < selectedFiles.length; i++) {\n this.uploadFilesRequest(selectedFiles, i, custom);\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 var eventArgs = {\n fileData: selectedFiles[i],\n customFormData: [],\n cancel: false\n };\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n /* istanbul ignore next */\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_4 = this.element.getAttribute('name');\n formData.append(name_4, 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) {\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) {\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 (_this.isFormUpload()) {\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 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_5 = 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_5(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)) {\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 (isNullOrUndefined(index)) {\n return this.filesData;\n }\n else {\n return this.getSelectedFiles(index);\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","import { Children, cloneElement, isValidElement } from 'react';\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 */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) 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\nexport function 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\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return 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}\nexport function 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 (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = 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] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = 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}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\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/**\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\nvar TransitionGroup = /*#__PURE__*/function (_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(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\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 ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = 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 contextValue = this.state.contextValue;\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 /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\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.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.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.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.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.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.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","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 * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction Ripple(props) {\n const {\n className,\n classes,\n pulsate = false,\n rippleX,\n rippleY,\n rippleSize,\n in: inProp,\n onExited,\n timeout\n } = props;\n const [leaving, setLeaving] = React.useState(false);\n const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n const rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n\n if (!inProp && !leaving) {\n setLeaving(true);\n }\n\n React.useEffect(() => {\n if (!inProp && onExited != null) {\n // react-transition-group#onExited\n const timeoutId = setTimeout(onExited, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n\n return undefined;\n }, [onExited, inProp, timeout]);\n return /*#__PURE__*/_jsx(\"span\", {\n className: rippleClassName,\n style: rippleStyles,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: childClassName\n })\n });\n}\n\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"center\", \"classes\", \"className\"];\n\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { keyframes } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Ripple from './Ripple';\nimport touchRippleClasses from './touchRippleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes(_t || (_t = _`\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n`));\nconst exitKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`));\nconst pulsateKeyframe = keyframes(_t3 || (_t3 = _`\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n`));\nexport const TouchRippleRoot = styled('span', {\n name: 'MuiTouchRipple',\n slot: 'Root',\n skipSx: true\n})({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n}); // This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\n\nexport const TouchRippleRipple = styled(Ripple, {\n name: 'MuiTouchRipple',\n slot: 'Ripple'\n})(_t4 || (_t4 = _`\n opacity: 0;\n position: absolute;\n\n &.${0} {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n &.${0} {\n animation-duration: ${0}ms;\n }\n\n & .${0} {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & .${0} {\n opacity: 0;\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n & .${0} {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ${0};\n animation-duration: 2500ms;\n animation-timing-function: ${0};\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n`), touchRippleClasses.rippleVisible, enterKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.ripplePulsate, ({\n theme\n}) => theme.transitions.duration.shorter, touchRippleClasses.child, touchRippleClasses.childLeaving, exitKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.childPulsate, pulsateKeyframe, ({\n theme\n}) => theme.transitions.easing.easeInOut);\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\n\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTouchRipple'\n });\n\n const {\n center: centerProp = false,\n classes = {},\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const [ripples, setRipples] = React.useState([]);\n const nextKey = React.useRef(0);\n const rippleCallback = React.useRef(null);\n React.useEffect(() => {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]); // Used to filter out mouse emulated events on mobile.\n\n const ignoringMouseDown = React.useRef(false); // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n\n const startTimer = React.useRef(null); // This is the hook called once the previous timeout is ready.\n\n const startTimerCommit = React.useRef(null);\n const container = React.useRef(null);\n React.useEffect(() => {\n return () => {\n clearTimeout(startTimer.current);\n };\n }, []);\n const startCommit = React.useCallback(params => {\n const {\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n } = params;\n setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n classes: {\n ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(classes.child, touchRippleClasses.child),\n childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n },\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n }, nextKey.current)]);\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n const start = React.useCallback((event = {}, options = {}, cb) => {\n const {\n pulsate = false,\n center = centerProp || options.pulsate,\n fakeElement = false // For test purposes\n\n } = options;\n\n if (event.type === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n\n if (event.type === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n\n const element = fakeElement ? null : container.current;\n const rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n }; // Get the size of the ripple\n\n let rippleX;\n let rippleY;\n let rippleSize;\n\n if (center || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n const {\n clientX,\n clientY\n } = event.touches ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n\n if (center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3); // For some reason the animation is broken on Mobile Chrome if the size is even.\n\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n } // Touche devices\n\n\n if (event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = () => {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }; // Delay the execution of the ripple effect.\n\n\n startTimer.current = setTimeout(() => {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n }\n } else {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }\n }, [centerProp, startCommit]);\n const pulsate = React.useCallback(() => {\n start({}, {\n pulsate: true\n });\n }, [start]);\n const stop = React.useCallback((event, cb) => {\n clearTimeout(startTimer.current); // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n\n if (event.type === 'touchend' && startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.current = setTimeout(() => {\n stop(event, cb);\n });\n return;\n }\n\n startTimerCommit.current = null;\n setRipples(oldRipples => {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, []);\n React.useImperativeHandle(ref, () => ({\n pulsate,\n start,\n stop\n }), [pulsate, start, stop]);\n return /*#__PURE__*/_jsx(TouchRippleRoot, _extends({\n className: clsx(classes.root, touchRippleClasses.root, className),\n ref: container\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionGroup, {\n component: null,\n exit: true,\n children: ripples\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@mui/utils';\nimport composeClasses from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n\n return composedClasses;\n};\n\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\n\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n type\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const buttonRef = React.useRef(null);\n const rippleRef = React.useRef(null);\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible]);\n\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n return useEventCallback(event => {\n if (eventCallback) {\n eventCallback(event);\n }\n\n const ignore = skipRippleAction;\n\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n\n return true;\n });\n }\n\n const handleMouseDown = useRippleHandler('start', onMouseDown);\n const handleContextMenu = useRippleHandler('stop', onContextMenu);\n const handleDragLeave = useRippleHandler('stop', onDragLeave);\n const handleMouseUp = useRippleHandler('stop', onMouseUp);\n const handleMouseLeave = useRippleHandler('stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n const handleTouchStart = useRippleHandler('start', onTouchStart);\n const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n const handleTouchMove = useRippleHandler('stop', onTouchMove);\n const handleBlur = useRippleHandler('stop', event => {\n handleBlurVisible(event);\n\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n\n handleFocusVisible(event);\n\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n\n if (onFocus) {\n onFocus(event);\n }\n });\n\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n /**\n * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n\n\n const keydownRef = React.useRef(false);\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n rippleRef.current.stop(event, () => {\n rippleRef.current.start(event);\n });\n }\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n } // Keyboard accessibility for non interactive elements\n\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a \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\nvar Transition = /*#__PURE__*/function (_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; // 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 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 var _proto = Transition.prototype;\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 if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\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(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\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 || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\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(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\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 var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\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 _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\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'`), 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 * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\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 = 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. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\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 = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","/**\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 DIALOG_RESIZABLE = 'e-dlg-resizable';\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 if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === 'body' || 'document.body' || document.body ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\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 // 'document.querySelector' is used to find the elements rendered based on body\n if (!document.querySelector('.e-popup-open:not(.e-dialog)')) {\n this.hide(event);\n }\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 this.renderCloseIcon();\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 });\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 if (this.showCloseIcon) {\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 };\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 * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}\n * @public\n */\n Dialog.prototype.getDimension = function () {\n var dialogWidth = this.element.offsetWidth;\n var dialogHeight = this.element.offsetHeight;\n return { width: dialogWidth, height: dialogHeight };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Collection, ComplexFactory } from '@syncfusion/ej2-base';\n/** @private */\nvar getGradientType = function (obj) {\n switch (obj.type) {\n case 'Linear':\n return LinearGradient;\n case 'Radial':\n return RadialGradient;\n default:\n return LinearGradient;\n }\n};\n/**\n * Layout Model module defines the styles and types to arrange objects in containers\n */\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/**\n * Defines the space to be left between an object and its immediate parent\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(0)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Defines the different colors and the region of color transitions\n * ```html\n *
\n * ```\n * ```typescript\n * let stopscol: StopModel[] = [];\n * let stops1: StopModel = { color: 'white', offset: 0, opacity: 0.7 };\n * stopscol.push(stops1);\n * let stops2: StopModel = { color: 'red', offset: 0, opacity: 0.3 };\n * stopscol.push(stops2);\n * let gradient: RadialGradientModel = { cx: 50, cy: 50, fx: 50, fy: 50, stops: stopscol, type: 'Radial' };\n * let nodes: NodeModel[] = [{ id: 'node1', width: 100, height: 100,\n * style: { gradient: gradient }\n * }];\n * let diagram: Diagram = new Diagram({\n * ...\n * nodes: nodes,\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\nvar Stop = /** @class */ (function (_super) {\n __extends(Stop, _super);\n function Stop() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @private\n * Returns the name of class Stop\n */\n Stop.prototype.getClassName = function () {\n return 'Stop';\n };\n __decorate([\n Property('')\n ], Stop.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Stop.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], Stop.prototype, \"opacity\", void 0);\n return Stop;\n}(ChildProperty));\nexport { Stop };\n/**\n * Paints the node with a smooth transition from one color to another color\n */\nvar Gradient = /** @class */ (function (_super) {\n __extends(Gradient, _super);\n function Gradient() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Stop)\n ], Gradient.prototype, \"stops\", void 0);\n __decorate([\n Property('None')\n ], Gradient.prototype, \"type\", void 0);\n __decorate([\n Property('')\n ], Gradient.prototype, \"id\", void 0);\n return Gradient;\n}(ChildProperty));\nexport { Gradient };\n/**\n * Defines the linear gradient of styles\n * ```html\n *
\n * ```\n * ```typescript\n * let stopscol: StopModel[] = [];\n * let stops1: StopModel = { color: 'white', offset: 0, opacity: 0.7 };\n * stopscol.push(stops1);\n * let stops2: StopModel = { color: 'red', offset: 0, opacity: 0.3 };\n * stopscol.push(stops2);\n * let gradient: LinearGradientModel = { x1: 0, x2: 50, y1: 0, y2: 50, stops: stopscol, type: 'Linear' };\n * let nodes: NodeModel[] = [{ id: 'node1', width: 100, height: 100,\n * style: { gradient: gradient }\n * }];\n * let diagram: Diagram = new Diagram({\n * ...\n * nodes: nodes,\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\n/**\n * Paints the node with linear color transitions\n */\nvar LinearGradient = /** @class */ (function (_super) {\n __extends(LinearGradient, _super);\n function LinearGradient() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], LinearGradient.prototype, \"x1\", void 0);\n __decorate([\n Property(0)\n ], LinearGradient.prototype, \"x2\", void 0);\n __decorate([\n Property(0)\n ], LinearGradient.prototype, \"y1\", void 0);\n __decorate([\n Property(0)\n ], LinearGradient.prototype, \"y2\", void 0);\n return LinearGradient;\n}(Gradient));\nexport { LinearGradient };\n/**\n * A focal point defines the beginning of the gradient, and a circle defines the end point of the gradient\n * ```html\n *
\n * ```\n * ```typescript\n * let stopscol: StopModel[] = [];\n * let stops1: StopModel = { color: 'white', offset: 0, opacity: 0.7 };\n * stopscol.push(stops1);\n * let stops2: StopModel = { color: 'red', offset: 0, opacity: 0.3 };\n * stopscol.push(stops2);\n * let gradient: RadialGradientModel = { cx: 50, cy: 50, fx: 50, fy: 50, stops: stopscol, type: 'Radial' };\n * let nodes: NodeModel[] = [{ id: 'node1', width: 100, height: 100,\n * style: { gradient: gradient }\n * }];\n * let diagram: Diagram = new Diagram({\n * ...\n * nodes: nodes,\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\nvar RadialGradient = /** @class */ (function (_super) {\n __extends(RadialGradient, _super);\n function RadialGradient() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], RadialGradient.prototype, \"cx\", void 0);\n __decorate([\n Property(0)\n ], RadialGradient.prototype, \"cy\", void 0);\n __decorate([\n Property(0)\n ], RadialGradient.prototype, \"fx\", void 0);\n __decorate([\n Property(0)\n ], RadialGradient.prototype, \"fy\", void 0);\n __decorate([\n Property(50)\n ], RadialGradient.prototype, \"r\", void 0);\n return RadialGradient;\n}(Gradient));\nexport { RadialGradient };\n/**\n * Defines the style of shape/path\n */\nvar ShapeStyle = /** @class */ (function (_super) {\n __extends(ShapeStyle, _super);\n function ShapeStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('white')\n ], ShapeStyle.prototype, \"fill\", void 0);\n __decorate([\n Property('black')\n ], ShapeStyle.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('')\n ], ShapeStyle.prototype, \"strokeDashArray\", void 0);\n __decorate([\n Property(1)\n ], ShapeStyle.prototype, \"strokeWidth\", void 0);\n __decorate([\n Property(1)\n ], ShapeStyle.prototype, \"opacity\", void 0);\n __decorate([\n ComplexFactory(getGradientType)\n ], ShapeStyle.prototype, \"gradient\", void 0);\n return ShapeStyle;\n}(ChildProperty));\nexport { ShapeStyle };\n/**\n * Defines the stroke style of a path\n */\nvar StrokeStyle = /** @class */ (function (_super) {\n __extends(StrokeStyle, _super);\n function StrokeStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('transparent')\n ], StrokeStyle.prototype, \"fill\", void 0);\n return StrokeStyle;\n}(ShapeStyle));\nexport { StrokeStyle };\n/**\n * Defines the appearance of text\n * ```html\n *
\n * ```\n * ```typescript\n * let style: TextStyleModel = { strokeColor: 'black', opacity: 0.5, strokeWidth: 1 };\n * let node: NodeModel;\n * node = {\n * ...\n * id: 'node', width: 100, height: 100, offsetX: 100, offsetY: 100,\n * annotations : [{\n * content: 'text', style: style }];\n * ...\n * };\n * let diagram: Diagram = new Diagram({\n * ...\n * nodes: [node],\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\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('black')\n ], TextStyle.prototype, \"color\", void 0);\n __decorate([\n Property('Arial')\n ], TextStyle.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(12)\n ], TextStyle.prototype, \"fontSize\", void 0);\n __decorate([\n Property(false)\n ], TextStyle.prototype, \"italic\", void 0);\n __decorate([\n Property(false)\n ], TextStyle.prototype, \"bold\", void 0);\n __decorate([\n Property('CollapseSpace')\n ], TextStyle.prototype, \"whiteSpace\", void 0);\n __decorate([\n Property('WrapWithOverflow')\n ], TextStyle.prototype, \"textWrapping\", void 0);\n __decorate([\n Property('Center')\n ], TextStyle.prototype, \"textAlign\", void 0);\n __decorate([\n Property('None')\n ], TextStyle.prototype, \"textDecoration\", void 0);\n __decorate([\n Property('Wrap')\n ], TextStyle.prototype, \"textOverflow\", void 0);\n __decorate([\n Property('transparent')\n ], TextStyle.prototype, \"fill\", void 0);\n return TextStyle;\n}(ShapeStyle));\nexport { TextStyle };\n","import { identityMatrix, rotateMatrix, transformPointByMatrix } from './../primitives/matrix';\nimport { Container } from './../core/containers/container';\nimport { StrokeStyle } from './../core/appearance';\nimport { Point } from './../primitives/point';\nimport { TextElement } from '../core/elements/text-element';\nimport { rotatePoint } from './base-util';\n/**\n * Implements the drawing functionalities\n */\n/** @private */\nexport function findNearestPoint(reference, start, end) {\n var shortestPoint;\n var shortest = Point.findLength(start, reference);\n var shortest1 = Point.findLength(end, reference);\n if (shortest > shortest1) {\n shortestPoint = end;\n }\n else {\n shortestPoint = start;\n }\n var angleBWStAndEnd = Point.findAngle(start, end);\n var angleBWStAndRef = Point.findAngle(shortestPoint, reference);\n var r = Point.findLength(shortestPoint, reference);\n var vaAngle = angleBWStAndRef + ((angleBWStAndEnd - angleBWStAndRef) * 2);\n return {\n x: (shortestPoint.x + r * Math.cos(vaAngle * Math.PI / 180)),\n y: (shortestPoint.y + r * Math.sin(vaAngle * Math.PI / 180))\n };\n}\n/** @private */\nexport function findElementUnderMouse(obj, position, padding) {\n return findTargetElement(obj.wrapper, position, padding);\n}\n/** @private */\nexport function findTargetElement(container, position, padding) {\n for (var i = container.children.length - 1; i >= 0; i--) {\n var element = container.children[i];\n if (element && element.bounds.containsPoint(position, 0)) {\n if (element instanceof Container) {\n var target = this.findTargetElement(element, position);\n if (target) {\n return target;\n }\n }\n if (element.bounds.containsPoint(position, 0)) {\n return element;\n }\n }\n }\n if (container.bounds.containsPoint(position, padding) && container.style.fill !== 'none') {\n return container;\n }\n return null;\n}\n/** @private */\nexport function intersect3(lineUtil1, lineUtil2) {\n var point = { x: 0, y: 0 };\n var l1 = lineUtil1;\n var l2 = lineUtil2;\n var d = (l2.y2 - l2.y1) * (l1.x2 - l1.x1) - (l2.x2 - l2.x1) * (l1.y2 - l1.y1);\n var na = (l2.x2 - l2.x1) * (l1.y1 - l2.y1) - (l2.y2 - l2.y1) * (l1.x1 - l2.x1);\n var nb = (l1.x2 - l1.x1) * (l1.y1 - l2.y1) - (l1.y2 - l1.y1) * (l1.x1 - l2.x1);\n if (d === 0) {\n return { enabled: false, intersectPt: point };\n }\n var ua = na / d;\n var ub = nb / d;\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n point.x = l1.x1 + (ua * (l1.x2 - l1.x1));\n point.y = l1.y1 + (ua * (l1.y2 - l1.y1));\n return { enabled: true, intersectPt: point };\n }\n return { enabled: false, intersectPt: point };\n}\n/** @private */\nexport function intersect2(start1, end1, start2, end2) {\n var point = { x: 0, y: 0 };\n var lineUtil1 = getLineSegment(start1.x, start1.y, end1.x, end1.y);\n var lineUtil2 = getLineSegment(start2.x, start2.y, end2.x, end2.y);\n var line3 = intersect3(lineUtil1, lineUtil2);\n if (line3.enabled) {\n return line3.intersectPt;\n }\n else {\n return point;\n }\n}\n/** @private */\nexport function getLineSegment(x1, y1, x2, y2) {\n return { 'x1': Number(x1) || 0, 'y1': Number(y1) || 0, 'x2': Number(x2) || 0, 'y2': Number(y2) || 0 };\n}\n/** @private */\nexport function getPoints(element, corners, padding) {\n var line = [];\n padding = padding || 0;\n var left = { x: corners.topLeft.x - padding, y: corners.topLeft.y };\n var right = { x: corners.topRight.x + padding, y: corners.topRight.y };\n var top = { x: corners.bottomRight.x, y: corners.bottomRight.y - padding };\n var bottom = { x: corners.bottomLeft.x, y: corners.bottomLeft.y + padding };\n line.push(left);\n line.push(right);\n line.push(top);\n line.push(bottom);\n return line;\n}\n/** @private */\nexport function getBezierDirection(src, tar) {\n if (Math.abs(tar.x - src.x) > Math.abs(tar.y - src.y)) {\n return src.x < tar.x ? 'right' : 'left';\n }\n else {\n return src.y < tar.y ? 'bottom' : 'top';\n }\n}\n/** @private */\nexport function updateStyle(changedObject, target) {\n //since text style model is the super set of shape style model, we used text style model\n var style = target.style;\n var textElement = target;\n for (var _i = 0, _a = Object.keys(changedObject); _i < _a.length; _i++) {\n var key = _a[_i];\n switch (key) {\n case 'fill':\n style.fill = changedObject.fill;\n if (style instanceof StrokeStyle) {\n /* tslint:disable:no-string-literal */\n style['fill'] = 'transparent';\n }\n break;\n case 'textOverflow':\n style.textOverflow = changedObject.textOverflow;\n break;\n case 'opacity':\n style.opacity = changedObject.opacity;\n break;\n case 'strokeColor':\n style.strokeColor = changedObject.strokeColor;\n break;\n case 'strokeDashArray':\n style.strokeDashArray = changedObject.strokeDashArray;\n break;\n case 'strokeWidth':\n style.strokeWidth = changedObject.strokeWidth;\n break;\n case 'bold':\n style.bold = changedObject.bold;\n break;\n case 'color':\n style.color = changedObject.color;\n break;\n case 'textWrapping':\n style.textWrapping = changedObject.textWrapping;\n break;\n case 'fontFamily':\n style.fontFamily = changedObject.fontFamily;\n break;\n case 'fontSize':\n style.fontSize = changedObject.fontSize;\n break;\n case 'italic':\n style.italic = changedObject.italic;\n break;\n case 'textAlign':\n style.textAlign = changedObject.textAlign;\n break;\n case 'whiteSpace':\n style.whiteSpace = changedObject.whiteSpace;\n break;\n case 'textDecoration':\n style.textDecoration = changedObject.textDecoration;\n break;\n }\n }\n if (target instanceof TextElement) {\n textElement.refreshTextElement();\n }\n}\n/** @private */\nexport function scaleElement(element, sw, sh, refObject) {\n if (element.width !== undefined && element.height !== undefined) {\n element.width *= sw;\n element.height *= sh;\n }\n if (element instanceof Container) {\n var matrix = identityMatrix();\n var width = refObject.width || refObject.actualSize.width;\n var height = refObject.height || refObject.actualSize.height;\n if (width !== undefined && height !== undefined) {\n var x = refObject.offsetX - width * refObject.pivot.x;\n var y = refObject.offsetY - height * refObject.pivot.y;\n var refPoint = {\n x: x + width * refObject.pivot.x,\n y: y + height * refObject.pivot.y\n };\n refPoint = rotatePoint(refObject.rotateAngle, refObject.offsetX, refObject.offsetY, refPoint);\n rotateMatrix(matrix, -refObject.rotateAngle, refPoint.x, refPoint.y);\n // scaleMatrix(matrix, sw, sh, refPoint.x, refPoint.y);\n rotateMatrix(matrix, refObject.rotateAngle, refPoint.x, refPoint.y);\n for (var _i = 0, _a = element.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if (child.width !== undefined && child.height !== undefined) {\n var newPosition = transformPointByMatrix(matrix, { x: child.offsetX, y: child.offsetY });\n child.offsetX = newPosition.x;\n child.offsetY = newPosition.y;\n scaleElement(child, sw, sh, refObject);\n }\n }\n }\n }\n}\n/** @private */\nexport function contains(mousePosition, corner, padding) {\n if (mousePosition.x >= corner.x - padding && mousePosition.x <= corner.x + padding) {\n if (mousePosition.y >= corner.y - padding && mousePosition.y <= corner.y + padding) {\n return true;\n }\n }\n return false;\n}\n/** @private */\nexport function getPoint(x, y, w, h, angle, offsetX, offsetY, cornerPoint) {\n var pivot = { x: 0, y: 0 };\n var trans = identityMatrix();\n rotateMatrix(trans, angle, offsetX, offsetY);\n switch (cornerPoint.x) {\n case 0:\n switch (cornerPoint.y) {\n case 0:\n pivot = transformPointByMatrix(trans, ({ x: x, y: y }));\n break;\n case 0.5:\n pivot = transformPointByMatrix(trans, ({ x: x, y: y + h / 2 }));\n break;\n case 1:\n pivot = transformPointByMatrix(trans, ({ x: x, y: y + h }));\n break;\n }\n break;\n case 0.5:\n switch (cornerPoint.y) {\n case 0:\n pivot = transformPointByMatrix(trans, ({ x: x + w / 2, y: y }));\n break;\n case 0.5:\n pivot = transformPointByMatrix(trans, ({ x: x + w / 2, y: y + h / 2 }));\n break;\n case 1:\n pivot = transformPointByMatrix(trans, ({ x: x + w / 2, y: y + h }));\n break;\n }\n break;\n case 1:\n switch (cornerPoint.y) {\n case 0:\n pivot = transformPointByMatrix(trans, ({ x: x + w, y: y }));\n break;\n case 0.5:\n pivot = transformPointByMatrix(trans, ({ x: x + w, y: y + h / 2 }));\n break;\n case 1:\n pivot = transformPointByMatrix(trans, ({ x: x + w, y: y + h }));\n break;\n }\n break;\n }\n return { x: pivot.x, y: pivot.y };\n}\n","/** @license React v17.0.2\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'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){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;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(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(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(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 jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(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 mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=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!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!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=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=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();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=Xa(a.document)}return b}function Oe(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)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;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 Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(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(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){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,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta: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=d.sibling}d=\nWg(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=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(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||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&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}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,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.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(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);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.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(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\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 = 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","/** @license React v16.10.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';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar 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?Symbol.for(\"react.suspense_list\"):\n60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.fundamental\"):60117,w=b?Symbol.for(\"react.responder\"):60118,x=b?Symbol.for(\"react.scope\"):60119;function y(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 h:return a;default:return u}}case t:case r:case d:return u}}}function z(a){return y(a)===m}\nexports.typeOf=y;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;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=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===v||a.$$typeof===w||a.$$typeof===x)};exports.isAsyncMode=function(a){return z(a)||y(a)===l};exports.isConcurrentMode=z;exports.isContextConsumer=function(a){return y(a)===k};exports.isContextProvider=function(a){return y(a)===h};\nexports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return y(a)===n};exports.isFragment=function(a){return y(a)===e};exports.isLazy=function(a){return y(a)===t};exports.isMemo=function(a){return y(a)===r};exports.isPortal=function(a){return y(a)===d};exports.isProfiler=function(a){return y(a)===g};exports.isStrictMode=function(a){return y(a)===f};exports.isSuspense=function(a){return y(a)===p};\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","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;","function _extends() {\n module.exports = _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 module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","/** @license React v17.0.2\n * react-jsx-runtime.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'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","function _extends() {\n module.exports = _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 module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\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\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> 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 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 Gp[iteratorSymbol] = function() {\n return this;\n };\n\n 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, 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 Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(e.reduxLogger=e.reduxLogger||{})}(this,function(e){\"use strict\";function t(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}function r(e,t){Object.defineProperty(this,\"kind\",{value:e,enumerable:!0}),t&&t.length&&Object.defineProperty(this,\"path\",{value:t,enumerable:!0})}function n(e,t,r){n.super_.call(this,\"E\",e),Object.defineProperty(this,\"lhs\",{value:t,enumerable:!0}),Object.defineProperty(this,\"rhs\",{value:r,enumerable:!0})}function o(e,t){o.super_.call(this,\"N\",e),Object.defineProperty(this,\"rhs\",{value:t,enumerable:!0})}function i(e,t){i.super_.call(this,\"D\",e),Object.defineProperty(this,\"lhs\",{value:t,enumerable:!0})}function a(e,t,r){a.super_.call(this,\"A\",e),Object.defineProperty(this,\"index\",{value:t,enumerable:!0}),Object.defineProperty(this,\"item\",{value:r,enumerable:!0})}function f(e,t,r){var n=e.slice((r||t)+1||e.length);return e.length=t<0?e.length+t:t,e.push.apply(e,n),e}function u(e){var t=\"undefined\"==typeof e?\"undefined\":N(e);return\"object\"!==t?t:e===Math?\"math\":null===e?\"null\":Array.isArray(e)?\"array\":\"[object Date]\"===Object.prototype.toString.call(e)?\"date\":\"function\"==typeof e.toString&&/^\\/.*\\//.test(e.toString())?\"regexp\":\"object\"}function l(e,t,r,c,s,d,p){s=s||[],p=p||[];var g=s.slice(0);if(\"undefined\"!=typeof d){if(c){if(\"function\"==typeof c&&c(g,d))return;if(\"object\"===(\"undefined\"==typeof c?\"undefined\":N(c))){if(c.prefilter&&c.prefilter(g,d))return;if(c.normalize){var h=c.normalize(g,d,e,t);h&&(e=h[0],t=h[1])}}}g.push(d)}\"regexp\"===u(e)&&\"regexp\"===u(t)&&(e=e.toString(),t=t.toString());var y=\"undefined\"==typeof e?\"undefined\":N(e),v=\"undefined\"==typeof t?\"undefined\":N(t),b=\"undefined\"!==y||p&&p[p.length-1].lhs&&p[p.length-1].lhs.hasOwnProperty(d),m=\"undefined\"!==v||p&&p[p.length-1].rhs&&p[p.length-1].rhs.hasOwnProperty(d);if(!b&&m)r(new o(g,t));else if(!m&&b)r(new i(g,e));else if(u(e)!==u(t))r(new n(g,e,t));else if(\"date\"===u(e)&&e-t!==0)r(new n(g,e,t));else if(\"object\"===y&&null!==e&&null!==t)if(p.filter(function(t){return t.lhs===e}).length)e!==t&&r(new n(g,e,t));else{if(p.push({lhs:e,rhs:t}),Array.isArray(e)){var w;e.length;for(w=0;w=t.length?r(new a(g,w,new i(void 0,e[w]))):l(e[w],t[w],r,c,g,w,p);for(;w=0?(l(e[n],t[n],r,c,g,n,p),S=f(S,i)):l(e[n],void 0,r,c,g,n,p)}),S.forEach(function(e){l(void 0,t[e],r,c,g,e,p)})}p.length=p.length-1}else e!==t&&(\"number\"===y&&isNaN(e)&&isNaN(t)||r(new n(g,e,t)))}function c(e,t,r,n){return n=n||[],l(e,t,function(e){e&&n.push(e)},r),n.length?n:void 0}function s(e,t,r){if(r.path&&r.path.length){var n,o=e[t],i=r.path.length-1;for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign({},L,e),r=t.logger,n=t.stateTransformer,o=t.errorTransformer,i=t.predicate,a=t.logErrors,f=t.diffPredicate;if(\"undefined\"==typeof r)return function(){return function(e){return function(t){return e(t)}}};if(e.getState&&e.dispatch)return console.error(\"[redux-logger] redux-logger not installed. Make sure to pass logger instance as middleware:\\n// Logger with default options\\nimport { logger } from 'redux-logger'\\nconst store = createStore(\\n reducer,\\n applyMiddleware(logger)\\n)\\n// Or you can create your own logger with custom options http://bit.ly/redux-logger-options\\nimport createLogger from 'redux-logger'\\nconst logger = createLogger({\\n // ...options\\n});\\nconst store = createStore(\\n reducer,\\n applyMiddleware(logger)\\n)\\n\"),function(){return function(e){return function(t){return e(t)}}};var u=[];return function(e){var r=e.getState;return function(e){return function(l){if(\"function\"==typeof i&&!i(r,l))return e(l);var c={};u.push(c),c.started=O.now(),c.startedTime=new Date,c.prevState=n(r()),c.action=l;var s=void 0;if(a)try{s=e(l)}catch(e){c.error=o(e)}else s=e(l);c.took=O.now()-c.started,c.nextState=n(r());var d=t.diff&&\"function\"==typeof f?f(r,l):t.diff;if(x(u,Object.assign({},t,{diff:d})),u.length=0,c.error)throw c.error;return s}}}}var k,j,E=function(e,t){return new Array(t+1).join(e)},A=function(e,t){return E(\"0\",t-e.toString().length)+e},D=function(e){return A(e.getHours(),2)+\":\"+A(e.getMinutes(),2)+\":\"+A(e.getSeconds(),2)+\".\"+A(e.getMilliseconds(),3)},O=\"undefined\"!=typeof performance&&null!==performance&&\"function\"==typeof performance.now?performance:Date,N=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},P=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:{},t=e.dispatch,r=e.getState;return\"function\"==typeof t||\"function\"==typeof r?S()({dispatch:t,getState:r}):void console.error(\"\\n[redux-logger v3] BREAKING CHANGE\\n[redux-logger v3] Since 3.0.0 redux-logger exports by default logger with default settings.\\n[redux-logger v3] Change\\n[redux-logger v3] import createLogger from 'redux-logger'\\n[redux-logger v3] to\\n[redux-logger v3] import { createLogger } from 'redux-logger'\\n\")};e.defaults=L,e.createLogger=S,e.logger=T,e.default=T,Object.defineProperty(e,\"__esModule\",{value:!0})});\n","/*!\n * UAParser.js v0.7.22\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2019 Faisal Salman \n * Licensed under MIT License\n */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"0.7.22\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\";var util={extend:function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},has:function(str1,str2){if(typeof str1===\"string\"){return str2.toLowerCase().indexOf(str1.toLowerCase())!==-1}else{return false}},lowerize:function(str){return str.toLowerCase()},major:function(version){return typeof version===STR_TYPE?version.replace(/[^\\d\\.]/g,\"\").split(\".\")[0]:undefined},trim:function(str){return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\"\")}};var mapper={rgx:function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j= 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\nvar Scrollbars = function (_Component) {\n _inherits(Scrollbars, _Component);\n\n function Scrollbars(props) {\n var _ref;\n\n _classCallCheck(this, Scrollbars);\n\n for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n var _this = _possibleConstructorReturn(this, (_ref = Scrollbars.__proto__ || Object.getPrototypeOf(Scrollbars)).call.apply(_ref, [this, props].concat(rest)));\n\n _this.getScrollLeft = _this.getScrollLeft.bind(_this);\n _this.getScrollTop = _this.getScrollTop.bind(_this);\n _this.getScrollWidth = _this.getScrollWidth.bind(_this);\n _this.getScrollHeight = _this.getScrollHeight.bind(_this);\n _this.getClientWidth = _this.getClientWidth.bind(_this);\n _this.getClientHeight = _this.getClientHeight.bind(_this);\n _this.getValues = _this.getValues.bind(_this);\n _this.getThumbHorizontalWidth = _this.getThumbHorizontalWidth.bind(_this);\n _this.getThumbVerticalHeight = _this.getThumbVerticalHeight.bind(_this);\n _this.getScrollLeftForOffset = _this.getScrollLeftForOffset.bind(_this);\n _this.getScrollTopForOffset = _this.getScrollTopForOffset.bind(_this);\n\n _this.scrollLeft = _this.scrollLeft.bind(_this);\n _this.scrollTop = _this.scrollTop.bind(_this);\n _this.scrollToLeft = _this.scrollToLeft.bind(_this);\n _this.scrollToTop = _this.scrollToTop.bind(_this);\n _this.scrollToRight = _this.scrollToRight.bind(_this);\n _this.scrollToBottom = _this.scrollToBottom.bind(_this);\n\n _this.handleTrackMouseEnter = _this.handleTrackMouseEnter.bind(_this);\n _this.handleTrackMouseLeave = _this.handleTrackMouseLeave.bind(_this);\n _this.handleHorizontalTrackMouseDown = _this.handleHorizontalTrackMouseDown.bind(_this);\n _this.handleVerticalTrackMouseDown = _this.handleVerticalTrackMouseDown.bind(_this);\n _this.handleHorizontalThumbMouseDown = _this.handleHorizontalThumbMouseDown.bind(_this);\n _this.handleVerticalThumbMouseDown = _this.handleVerticalThumbMouseDown.bind(_this);\n _this.handleWindowResize = _this.handleWindowResize.bind(_this);\n _this.handleScroll = _this.handleScroll.bind(_this);\n _this.handleDrag = _this.handleDrag.bind(_this);\n _this.handleDragEnd = _this.handleDragEnd.bind(_this);\n\n _this.state = {\n didMountUniversal: false\n };\n return _this;\n }\n\n _createClass(Scrollbars, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.addListeners();\n this.update();\n this.componentDidMountUniversal();\n }\n }, {\n key: 'componentDidMountUniversal',\n value: function componentDidMountUniversal() {\n // eslint-disable-line react/sort-comp\n var universal = this.props.universal;\n\n if (!universal) return;\n this.setState({ didMountUniversal: true });\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.update();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.removeListeners();\n (0, _raf2.cancel)(this.requestFrame);\n clearTimeout(this.hideTracksTimeout);\n clearInterval(this.detectScrollingInterval);\n }\n }, {\n key: 'getScrollLeft',\n value: function getScrollLeft() {\n if (!this.view) return 0;\n return this.view.scrollLeft;\n }\n }, {\n key: 'getScrollTop',\n value: function getScrollTop() {\n if (!this.view) return 0;\n return this.view.scrollTop;\n }\n }, {\n key: 'getScrollWidth',\n value: function getScrollWidth() {\n if (!this.view) return 0;\n return this.view.scrollWidth;\n }\n }, {\n key: 'getScrollHeight',\n value: function getScrollHeight() {\n if (!this.view) return 0;\n return this.view.scrollHeight;\n }\n }, {\n key: 'getClientWidth',\n value: function getClientWidth() {\n if (!this.view) return 0;\n return this.view.clientWidth;\n }\n }, {\n key: 'getClientHeight',\n value: function getClientHeight() {\n if (!this.view) return 0;\n return this.view.clientHeight;\n }\n }, {\n key: 'getValues',\n value: function getValues() {\n var _ref2 = this.view || {},\n _ref2$scrollLeft = _ref2.scrollLeft,\n scrollLeft = _ref2$scrollLeft === undefined ? 0 : _ref2$scrollLeft,\n _ref2$scrollTop = _ref2.scrollTop,\n scrollTop = _ref2$scrollTop === undefined ? 0 : _ref2$scrollTop,\n _ref2$scrollWidth = _ref2.scrollWidth,\n scrollWidth = _ref2$scrollWidth === undefined ? 0 : _ref2$scrollWidth,\n _ref2$scrollHeight = _ref2.scrollHeight,\n scrollHeight = _ref2$scrollHeight === undefined ? 0 : _ref2$scrollHeight,\n _ref2$clientWidth = _ref2.clientWidth,\n clientWidth = _ref2$clientWidth === undefined ? 0 : _ref2$clientWidth,\n _ref2$clientHeight = _ref2.clientHeight,\n clientHeight = _ref2$clientHeight === undefined ? 0 : _ref2$clientHeight;\n\n return {\n left: scrollLeft / (scrollWidth - clientWidth) || 0,\n top: scrollTop / (scrollHeight - clientHeight) || 0,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth,\n scrollHeight: scrollHeight,\n clientWidth: clientWidth,\n clientHeight: clientHeight\n };\n }\n }, {\n key: 'getThumbHorizontalWidth',\n value: function getThumbHorizontalWidth() {\n var _props = this.props,\n thumbSize = _props.thumbSize,\n thumbMinSize = _props.thumbMinSize;\n var _view = this.view,\n scrollWidth = _view.scrollWidth,\n clientWidth = _view.clientWidth;\n\n var trackWidth = (0, _getInnerWidth2[\"default\"])(this.trackHorizontal);\n var width = Math.ceil(clientWidth / scrollWidth * trackWidth);\n if (trackWidth === width) return 0;\n if (thumbSize) return thumbSize;\n return Math.max(width, thumbMinSize);\n }\n }, {\n key: 'getThumbVerticalHeight',\n value: function getThumbVerticalHeight() {\n var _props2 = this.props,\n thumbSize = _props2.thumbSize,\n thumbMinSize = _props2.thumbMinSize;\n var _view2 = this.view,\n scrollHeight = _view2.scrollHeight,\n clientHeight = _view2.clientHeight;\n\n var trackHeight = (0, _getInnerHeight2[\"default\"])(this.trackVertical);\n var height = Math.ceil(clientHeight / scrollHeight * trackHeight);\n if (trackHeight === height) return 0;\n if (thumbSize) return thumbSize;\n return Math.max(height, thumbMinSize);\n }\n }, {\n key: 'getScrollLeftForOffset',\n value: function getScrollLeftForOffset(offset) {\n var _view3 = this.view,\n scrollWidth = _view3.scrollWidth,\n clientWidth = _view3.clientWidth;\n\n var trackWidth = (0, _getInnerWidth2[\"default\"])(this.trackHorizontal);\n var thumbWidth = this.getThumbHorizontalWidth();\n return offset / (trackWidth - thumbWidth) * (scrollWidth - clientWidth);\n }\n }, {\n key: 'getScrollTopForOffset',\n value: function getScrollTopForOffset(offset) {\n var _view4 = this.view,\n scrollHeight = _view4.scrollHeight,\n clientHeight = _view4.clientHeight;\n\n var trackHeight = (0, _getInnerHeight2[\"default\"])(this.trackVertical);\n var thumbHeight = this.getThumbVerticalHeight();\n return offset / (trackHeight - thumbHeight) * (scrollHeight - clientHeight);\n }\n }, {\n key: 'scrollLeft',\n value: function scrollLeft() {\n var left = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (!this.view) return;\n this.view.scrollLeft = left;\n }\n }, {\n key: 'scrollTop',\n value: function scrollTop() {\n var top = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (!this.view) return;\n this.view.scrollTop = top;\n }\n }, {\n key: 'scrollToLeft',\n value: function scrollToLeft() {\n if (!this.view) return;\n this.view.scrollLeft = 0;\n }\n }, {\n key: 'scrollToTop',\n value: function scrollToTop() {\n if (!this.view) return;\n this.view.scrollTop = 0;\n }\n }, {\n key: 'scrollToRight',\n value: function scrollToRight() {\n if (!this.view) return;\n this.view.scrollLeft = this.view.scrollWidth;\n }\n }, {\n key: 'scrollToBottom',\n value: function scrollToBottom() {\n if (!this.view) return;\n this.view.scrollTop = this.view.scrollHeight;\n }\n }, {\n key: 'addListeners',\n value: function addListeners() {\n /* istanbul ignore if */\n if (typeof document === 'undefined' || !this.view) return;\n var view = this.view,\n trackHorizontal = this.trackHorizontal,\n trackVertical = this.trackVertical,\n thumbHorizontal = this.thumbHorizontal,\n thumbVertical = this.thumbVertical;\n\n view.addEventListener('scroll', this.handleScroll);\n if (!(0, _getScrollbarWidth2[\"default\"])()) return;\n trackHorizontal.addEventListener('mouseenter', this.handleTrackMouseEnter);\n trackHorizontal.addEventListener('mouseleave', this.handleTrackMouseLeave);\n trackHorizontal.addEventListener('mousedown', this.handleHorizontalTrackMouseDown);\n trackVertical.addEventListener('mouseenter', this.handleTrackMouseEnter);\n trackVertical.addEventListener('mouseleave', this.handleTrackMouseLeave);\n trackVertical.addEventListener('mousedown', this.handleVerticalTrackMouseDown);\n thumbHorizontal.addEventListener('mousedown', this.handleHorizontalThumbMouseDown);\n thumbVertical.addEventListener('mousedown', this.handleVerticalThumbMouseDown);\n window.addEventListener('resize', this.handleWindowResize);\n }\n }, {\n key: 'removeListeners',\n value: function removeListeners() {\n /* istanbul ignore if */\n if (typeof document === 'undefined' || !this.view) return;\n var view = this.view,\n trackHorizontal = this.trackHorizontal,\n trackVertical = this.trackVertical,\n thumbHorizontal = this.thumbHorizontal,\n thumbVertical = this.thumbVertical;\n\n view.removeEventListener('scroll', this.handleScroll);\n if (!(0, _getScrollbarWidth2[\"default\"])()) return;\n trackHorizontal.removeEventListener('mouseenter', this.handleTrackMouseEnter);\n trackHorizontal.removeEventListener('mouseleave', this.handleTrackMouseLeave);\n trackHorizontal.removeEventListener('mousedown', this.handleHorizontalTrackMouseDown);\n trackVertical.removeEventListener('mouseenter', this.handleTrackMouseEnter);\n trackVertical.removeEventListener('mouseleave', this.handleTrackMouseLeave);\n trackVertical.removeEventListener('mousedown', this.handleVerticalTrackMouseDown);\n thumbHorizontal.removeEventListener('mousedown', this.handleHorizontalThumbMouseDown);\n thumbVertical.removeEventListener('mousedown', this.handleVerticalThumbMouseDown);\n window.removeEventListener('resize', this.handleWindowResize);\n // Possibly setup by `handleDragStart`\n this.teardownDragging();\n }\n }, {\n key: 'handleScroll',\n value: function handleScroll(event) {\n var _this2 = this;\n\n var _props3 = this.props,\n onScroll = _props3.onScroll,\n onScrollFrame = _props3.onScrollFrame;\n\n if (onScroll) onScroll(event);\n this.update(function (values) {\n var scrollLeft = values.scrollLeft,\n scrollTop = values.scrollTop;\n\n _this2.viewScrollLeft = scrollLeft;\n _this2.viewScrollTop = scrollTop;\n if (onScrollFrame) onScrollFrame(values);\n });\n this.detectScrolling();\n }\n }, {\n key: 'handleScrollStart',\n value: function handleScrollStart() {\n var onScrollStart = this.props.onScrollStart;\n\n if (onScrollStart) onScrollStart();\n this.handleScrollStartAutoHide();\n }\n }, {\n key: 'handleScrollStartAutoHide',\n value: function handleScrollStartAutoHide() {\n var autoHide = this.props.autoHide;\n\n if (!autoHide) return;\n this.showTracks();\n }\n }, {\n key: 'handleScrollStop',\n value: function handleScrollStop() {\n var onScrollStop = this.props.onScrollStop;\n\n if (onScrollStop) onScrollStop();\n this.handleScrollStopAutoHide();\n }\n }, {\n key: 'handleScrollStopAutoHide',\n value: function handleScrollStopAutoHide() {\n var autoHide = this.props.autoHide;\n\n if (!autoHide) return;\n this.hideTracks();\n }\n }, {\n key: 'handleWindowResize',\n value: function handleWindowResize() {\n this.update();\n }\n }, {\n key: 'handleHorizontalTrackMouseDown',\n value: function handleHorizontalTrackMouseDown(event) {\n event.preventDefault();\n var target = event.target,\n clientX = event.clientX;\n\n var _target$getBoundingCl = target.getBoundingClientRect(),\n targetLeft = _target$getBoundingCl.left;\n\n var thumbWidth = this.getThumbHorizontalWidth();\n var offset = Math.abs(targetLeft - clientX) - thumbWidth / 2;\n this.view.scrollLeft = this.getScrollLeftForOffset(offset);\n }\n }, {\n key: 'handleVerticalTrackMouseDown',\n value: function handleVerticalTrackMouseDown(event) {\n event.preventDefault();\n var target = event.target,\n clientY = event.clientY;\n\n var _target$getBoundingCl2 = target.getBoundingClientRect(),\n targetTop = _target$getBoundingCl2.top;\n\n var thumbHeight = this.getThumbVerticalHeight();\n var offset = Math.abs(targetTop - clientY) - thumbHeight / 2;\n this.view.scrollTop = this.getScrollTopForOffset(offset);\n }\n }, {\n key: 'handleHorizontalThumbMouseDown',\n value: function handleHorizontalThumbMouseDown(event) {\n event.preventDefault();\n this.handleDragStart(event);\n var target = event.target,\n clientX = event.clientX;\n var offsetWidth = target.offsetWidth;\n\n var _target$getBoundingCl3 = target.getBoundingClientRect(),\n left = _target$getBoundingCl3.left;\n\n this.prevPageX = offsetWidth - (clientX - left);\n }\n }, {\n key: 'handleVerticalThumbMouseDown',\n value: function handleVerticalThumbMouseDown(event) {\n event.preventDefault();\n this.handleDragStart(event);\n var target = event.target,\n clientY = event.clientY;\n var offsetHeight = target.offsetHeight;\n\n var _target$getBoundingCl4 = target.getBoundingClientRect(),\n top = _target$getBoundingCl4.top;\n\n this.prevPageY = offsetHeight - (clientY - top);\n }\n }, {\n key: 'setupDragging',\n value: function setupDragging() {\n (0, _domCss2[\"default\"])(document.body, _styles.disableSelectStyle);\n document.addEventListener('mousemove', this.handleDrag);\n document.addEventListener('mouseup', this.handleDragEnd);\n document.onselectstart = _returnFalse2[\"default\"];\n }\n }, {\n key: 'teardownDragging',\n value: function teardownDragging() {\n (0, _domCss2[\"default\"])(document.body, _styles.disableSelectStyleReset);\n document.removeEventListener('mousemove', this.handleDrag);\n document.removeEventListener('mouseup', this.handleDragEnd);\n document.onselectstart = undefined;\n }\n }, {\n key: 'handleDragStart',\n value: function handleDragStart(event) {\n this.dragging = true;\n event.stopImmediatePropagation();\n this.setupDragging();\n }\n }, {\n key: 'handleDrag',\n value: function handleDrag(event) {\n if (this.prevPageX) {\n var clientX = event.clientX;\n\n var _trackHorizontal$getB = this.trackHorizontal.getBoundingClientRect(),\n trackLeft = _trackHorizontal$getB.left;\n\n var thumbWidth = this.getThumbHorizontalWidth();\n var clickPosition = thumbWidth - this.prevPageX;\n var offset = -trackLeft + clientX - clickPosition;\n this.view.scrollLeft = this.getScrollLeftForOffset(offset);\n }\n if (this.prevPageY) {\n var clientY = event.clientY;\n\n var _trackVertical$getBou = this.trackVertical.getBoundingClientRect(),\n trackTop = _trackVertical$getBou.top;\n\n var thumbHeight = this.getThumbVerticalHeight();\n var _clickPosition = thumbHeight - this.prevPageY;\n var _offset = -trackTop + clientY - _clickPosition;\n this.view.scrollTop = this.getScrollTopForOffset(_offset);\n }\n return false;\n }\n }, {\n key: 'handleDragEnd',\n value: function handleDragEnd() {\n this.dragging = false;\n this.prevPageX = this.prevPageY = 0;\n this.teardownDragging();\n this.handleDragEndAutoHide();\n }\n }, {\n key: 'handleDragEndAutoHide',\n value: function handleDragEndAutoHide() {\n var autoHide = this.props.autoHide;\n\n if (!autoHide) return;\n this.hideTracks();\n }\n }, {\n key: 'handleTrackMouseEnter',\n value: function handleTrackMouseEnter() {\n this.trackMouseOver = true;\n this.handleTrackMouseEnterAutoHide();\n }\n }, {\n key: 'handleTrackMouseEnterAutoHide',\n value: function handleTrackMouseEnterAutoHide() {\n var autoHide = this.props.autoHide;\n\n if (!autoHide) return;\n this.showTracks();\n }\n }, {\n key: 'handleTrackMouseLeave',\n value: function handleTrackMouseLeave() {\n this.trackMouseOver = false;\n this.handleTrackMouseLeaveAutoHide();\n }\n }, {\n key: 'handleTrackMouseLeaveAutoHide',\n value: function handleTrackMouseLeaveAutoHide() {\n var autoHide = this.props.autoHide;\n\n if (!autoHide) return;\n this.hideTracks();\n }\n }, {\n key: 'showTracks',\n value: function showTracks() {\n clearTimeout(this.hideTracksTimeout);\n (0, _domCss2[\"default\"])(this.trackHorizontal, { opacity: 1 });\n (0, _domCss2[\"default\"])(this.trackVertical, { opacity: 1 });\n }\n }, {\n key: 'hideTracks',\n value: function hideTracks() {\n var _this3 = this;\n\n if (this.dragging) return;\n if (this.scrolling) return;\n if (this.trackMouseOver) return;\n var autoHideTimeout = this.props.autoHideTimeout;\n\n clearTimeout(this.hideTracksTimeout);\n this.hideTracksTimeout = setTimeout(function () {\n (0, _domCss2[\"default\"])(_this3.trackHorizontal, { opacity: 0 });\n (0, _domCss2[\"default\"])(_this3.trackVertical, { opacity: 0 });\n }, autoHideTimeout);\n }\n }, {\n key: 'detectScrolling',\n value: function detectScrolling() {\n var _this4 = this;\n\n if (this.scrolling) return;\n this.scrolling = true;\n this.handleScrollStart();\n this.detectScrollingInterval = setInterval(function () {\n if (_this4.lastViewScrollLeft === _this4.viewScrollLeft && _this4.lastViewScrollTop === _this4.viewScrollTop) {\n clearInterval(_this4.detectScrollingInterval);\n _this4.scrolling = false;\n _this4.handleScrollStop();\n }\n _this4.lastViewScrollLeft = _this4.viewScrollLeft;\n _this4.lastViewScrollTop = _this4.viewScrollTop;\n }, 100);\n }\n }, {\n key: 'raf',\n value: function raf(callback) {\n var _this5 = this;\n\n if (this.requestFrame) _raf3[\"default\"].cancel(this.requestFrame);\n this.requestFrame = (0, _raf3[\"default\"])(function () {\n _this5.requestFrame = undefined;\n callback();\n });\n }\n }, {\n key: 'update',\n value: function update(callback) {\n var _this6 = this;\n\n this.raf(function () {\n return _this6._update(callback);\n });\n }\n }, {\n key: '_update',\n value: function _update(callback) {\n var _props4 = this.props,\n onUpdate = _props4.onUpdate,\n hideTracksWhenNotNeeded = _props4.hideTracksWhenNotNeeded;\n\n var values = this.getValues();\n if ((0, _getScrollbarWidth2[\"default\"])()) {\n var scrollLeft = values.scrollLeft,\n clientWidth = values.clientWidth,\n scrollWidth = values.scrollWidth;\n\n var trackHorizontalWidth = (0, _getInnerWidth2[\"default\"])(this.trackHorizontal);\n var thumbHorizontalWidth = this.getThumbHorizontalWidth();\n var thumbHorizontalX = scrollLeft / (scrollWidth - clientWidth) * (trackHorizontalWidth - thumbHorizontalWidth);\n var thumbHorizontalStyle = {\n width: thumbHorizontalWidth,\n transform: 'translateX(' + thumbHorizontalX + 'px)'\n };\n var scrollTop = values.scrollTop,\n clientHeight = values.clientHeight,\n scrollHeight = values.scrollHeight;\n\n var trackVerticalHeight = (0, _getInnerHeight2[\"default\"])(this.trackVertical);\n var thumbVerticalHeight = this.getThumbVerticalHeight();\n var thumbVerticalY = scrollTop / (scrollHeight - clientHeight) * (trackVerticalHeight - thumbVerticalHeight);\n var thumbVerticalStyle = {\n height: thumbVerticalHeight,\n transform: 'translateY(' + thumbVerticalY + 'px)'\n };\n if (hideTracksWhenNotNeeded) {\n var trackHorizontalStyle = {\n visibility: scrollWidth > clientWidth ? 'visible' : 'hidden'\n };\n var trackVerticalStyle = {\n visibility: scrollHeight > clientHeight ? 'visible' : 'hidden'\n };\n (0, _domCss2[\"default\"])(this.trackHorizontal, trackHorizontalStyle);\n (0, _domCss2[\"default\"])(this.trackVertical, trackVerticalStyle);\n }\n (0, _domCss2[\"default\"])(this.thumbHorizontal, thumbHorizontalStyle);\n (0, _domCss2[\"default\"])(this.thumbVertical, thumbVerticalStyle);\n }\n if (onUpdate) onUpdate(values);\n if (typeof callback !== 'function') return;\n callback(values);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this7 = this;\n\n var scrollbarWidth = (0, _getScrollbarWidth2[\"default\"])();\n /* eslint-disable no-unused-vars */\n\n var _props5 = this.props,\n onScroll = _props5.onScroll,\n onScrollFrame = _props5.onScrollFrame,\n onScrollStart = _props5.onScrollStart,\n onScrollStop = _props5.onScrollStop,\n onUpdate = _props5.onUpdate,\n renderView = _props5.renderView,\n renderTrackHorizontal = _props5.renderTrackHorizontal,\n renderTrackVertical = _props5.renderTrackVertical,\n renderThumbHorizontal = _props5.renderThumbHorizontal,\n renderThumbVertical = _props5.renderThumbVertical,\n tagName = _props5.tagName,\n hideTracksWhenNotNeeded = _props5.hideTracksWhenNotNeeded,\n autoHide = _props5.autoHide,\n autoHideTimeout = _props5.autoHideTimeout,\n autoHideDuration = _props5.autoHideDuration,\n thumbSize = _props5.thumbSize,\n thumbMinSize = _props5.thumbMinSize,\n universal = _props5.universal,\n autoHeight = _props5.autoHeight,\n autoHeightMin = _props5.autoHeightMin,\n autoHeightMax = _props5.autoHeightMax,\n style = _props5.style,\n children = _props5.children,\n props = _objectWithoutProperties(_props5, ['onScroll', 'onScrollFrame', 'onScrollStart', 'onScrollStop', 'onUpdate', 'renderView', 'renderTrackHorizontal', 'renderTrackVertical', 'renderThumbHorizontal', 'renderThumbVertical', 'tagName', 'hideTracksWhenNotNeeded', 'autoHide', 'autoHideTimeout', 'autoHideDuration', 'thumbSize', 'thumbMinSize', 'universal', 'autoHeight', 'autoHeightMin', 'autoHeightMax', 'style', 'children']);\n /* eslint-enable no-unused-vars */\n\n var didMountUniversal = this.state.didMountUniversal;\n\n\n var containerStyle = _extends({}, _styles.containerStyleDefault, autoHeight && _extends({}, _styles.containerStyleAutoHeight, {\n minHeight: autoHeightMin,\n maxHeight: autoHeightMax\n }), style);\n\n var viewStyle = _extends({}, _styles.viewStyleDefault, {\n // Hide scrollbars by setting a negative margin\n marginRight: scrollbarWidth ? -scrollbarWidth : 0,\n marginBottom: scrollbarWidth ? -scrollbarWidth : 0\n }, autoHeight && _extends({}, _styles.viewStyleAutoHeight, {\n // Add scrollbarWidth to autoHeight in order to compensate negative margins\n minHeight: (0, _isString2[\"default\"])(autoHeightMin) ? 'calc(' + autoHeightMin + ' + ' + scrollbarWidth + 'px)' : autoHeightMin + scrollbarWidth,\n maxHeight: (0, _isString2[\"default\"])(autoHeightMax) ? 'calc(' + autoHeightMax + ' + ' + scrollbarWidth + 'px)' : autoHeightMax + scrollbarWidth\n }), autoHeight && universal && !didMountUniversal && {\n minHeight: autoHeightMin,\n maxHeight: autoHeightMax\n }, universal && !didMountUniversal && _styles.viewStyleUniversalInitial);\n\n var trackAutoHeightStyle = {\n transition: 'opacity ' + autoHideDuration + 'ms',\n opacity: 0\n };\n\n var trackHorizontalStyle = _extends({}, _styles.trackHorizontalStyleDefault, autoHide && trackAutoHeightStyle, (!scrollbarWidth || universal && !didMountUniversal) && {\n display: 'none'\n });\n\n var trackVerticalStyle = _extends({}, _styles.trackVerticalStyleDefault, autoHide && trackAutoHeightStyle, (!scrollbarWidth || universal && !didMountUniversal) && {\n display: 'none'\n });\n\n return (0, _react.createElement)(tagName, _extends({}, props, { style: containerStyle, ref: function ref(_ref3) {\n _this7.container = _ref3;\n } }), [(0, _react.cloneElement)(renderView({ style: viewStyle }), { key: 'view', ref: function ref(_ref4) {\n _this7.view = _ref4;\n } }, children), (0, _react.cloneElement)(renderTrackHorizontal({ style: trackHorizontalStyle }), { key: 'trackHorizontal', ref: function ref(_ref5) {\n _this7.trackHorizontal = _ref5;\n } }, (0, _react.cloneElement)(renderThumbHorizontal({ style: _styles.thumbHorizontalStyleDefault }), { ref: function ref(_ref6) {\n _this7.thumbHorizontal = _ref6;\n } })), (0, _react.cloneElement)(renderTrackVertical({ style: trackVerticalStyle }), { key: 'trackVertical', ref: function ref(_ref7) {\n _this7.trackVertical = _ref7;\n } }, (0, _react.cloneElement)(renderThumbVertical({ style: _styles.thumbVerticalStyleDefault }), { ref: function ref(_ref8) {\n _this7.thumbVertical = _ref8;\n } }))]);\n }\n }]);\n\n return Scrollbars;\n}(_react.Component);\n\nexports[\"default\"] = Scrollbars;\n\n\nScrollbars.propTypes = {\n onScroll: _propTypes2[\"default\"].func,\n onScrollFrame: _propTypes2[\"default\"].func,\n onScrollStart: _propTypes2[\"default\"].func,\n onScrollStop: _propTypes2[\"default\"].func,\n onUpdate: _propTypes2[\"default\"].func,\n renderView: _propTypes2[\"default\"].func,\n renderTrackHorizontal: _propTypes2[\"default\"].func,\n renderTrackVertical: _propTypes2[\"default\"].func,\n renderThumbHorizontal: _propTypes2[\"default\"].func,\n renderThumbVertical: _propTypes2[\"default\"].func,\n tagName: _propTypes2[\"default\"].string,\n thumbSize: _propTypes2[\"default\"].number,\n thumbMinSize: _propTypes2[\"default\"].number,\n hideTracksWhenNotNeeded: _propTypes2[\"default\"].bool,\n autoHide: _propTypes2[\"default\"].bool,\n autoHideTimeout: _propTypes2[\"default\"].number,\n autoHideDuration: _propTypes2[\"default\"].number,\n autoHeight: _propTypes2[\"default\"].bool,\n autoHeightMin: _propTypes2[\"default\"].oneOfType([_propTypes2[\"default\"].number, _propTypes2[\"default\"].string]),\n autoHeightMax: _propTypes2[\"default\"].oneOfType([_propTypes2[\"default\"].number, _propTypes2[\"default\"].string]),\n universal: _propTypes2[\"default\"].bool,\n style: _propTypes2[\"default\"].object,\n children: _propTypes2[\"default\"].node\n};\n\nScrollbars.defaultProps = {\n renderView: _defaultRenderElements.renderViewDefault,\n renderTrackHorizontal: _defaultRenderElements.renderTrackHorizontalDefault,\n renderTrackVertical: _defaultRenderElements.renderTrackVerticalDefault,\n renderThumbHorizontal: _defaultRenderElements.renderThumbHorizontalDefault,\n renderThumbVertical: _defaultRenderElements.renderThumbVerticalDefault,\n tagName: 'div',\n thumbMinSize: 30,\n hideTracksWhenNotNeeded: false,\n autoHide: false,\n autoHideTimeout: 1000,\n autoHideDuration: 200,\n autoHeight: false,\n autoHeightMin: 0,\n autoHeightMax: 200,\n universal: false\n};","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var div = null\nvar prefixes = [ 'Webkit', 'Moz', 'O', 'ms' ]\n\nmodule.exports = function prefixStyle (prop) {\n // re-use a dummy div\n if (!div) {\n div = document.createElement('div')\n }\n\n var style = div.style\n\n // prop exists without prefix\n if (prop in style) {\n return prop\n }\n\n // borderRadius -> BorderRadius\n var titleCase = prop.charAt(0).toUpperCase() + prop.slice(1)\n\n // find the vendor-prefixed prop\n for (var i = prefixes.length; i >= 0; i--) {\n var name = prefixes[i] + titleCase\n // e.g. WebkitBorderRadius or webkitBorderRadius\n if (name in style) {\n return name\n }\n }\n\n return false\n}\n","\nvar space = require('to-space-case')\n\n/**\n * Export.\n */\n\nmodule.exports = toCamelCase\n\n/**\n * Convert a `string` to camel case.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toCamelCase(string) {\n return space(string).replace(/\\s(\\w)/g, function (matches, letter) {\n return letter.toUpperCase()\n })\n}\n","\nvar clean = require('to-no-case')\n\n/**\n * Export.\n */\n\nmodule.exports = toSpaceCase\n\n/**\n * Convert a `string` to space case.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toSpaceCase(string) {\n return clean(string).replace(/[\\W_]+(.|$)/g, function (matches, match) {\n return match ? ' ' + match : ''\n }).trim()\n}\n","\n/**\n * Export.\n */\n\nmodule.exports = toNoCase\n\n/**\n * Test whether a string is camel-case.\n */\n\nvar hasSpace = /\\s/\nvar hasSeparator = /(_|-|\\.|:)/\nvar hasCamel = /([a-z][A-Z]|[A-Z][a-z])/\n\n/**\n * Remove any starting case from a `string`, like camel or snake, but keep\n * spaces and punctuation that may be important otherwise.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toNoCase(string) {\n if (hasSpace.test(string)) return string.toLowerCase()\n if (hasSeparator.test(string)) return (unseparate(string) || string).toLowerCase()\n if (hasCamel.test(string)) return uncamelize(string).toLowerCase()\n return string.toLowerCase()\n}\n\n/**\n * Separator splitter.\n */\n\nvar separatorSplitter = /[\\W_]+(.|$)/g\n\n/**\n * Un-separate a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction unseparate(string) {\n return string.replace(separatorSplitter, function (m, next) {\n return next ? ' ' + next : ''\n })\n}\n\n/**\n * Camelcase splitter.\n */\n\nvar camelSplitter = /(.)([A-Z]+)/g\n\n/**\n * Un-camelcase a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction uncamelize(string) {\n return string.replace(camelSplitter, function (m, previous, uppers) {\n return previous + ' ' + uppers.toLowerCase().split('').join(' ')\n })\n}\n","/* The following list is defined in React's core */\nvar IS_UNITLESS = {\n animationIterationCount: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n stopOpacity: true,\n strokeDashoffset: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\nmodule.exports = function(name, value) {\n if(typeof value === 'number' && !IS_UNITLESS[ name ]) {\n return value + 'px';\n } else {\n return value;\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = isString;\nfunction isString(maybe) {\n return typeof maybe === 'string';\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getScrollbarWidth;\n\nvar _domCss = require('dom-css');\n\nvar _domCss2 = _interopRequireDefault(_domCss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar scrollbarWidth = false;\n\nfunction getScrollbarWidth() {\n if (scrollbarWidth !== false) return scrollbarWidth;\n /* istanbul ignore else */\n if (typeof document !== 'undefined') {\n var div = document.createElement('div');\n (0, _domCss2[\"default\"])(div, {\n width: 100,\n height: 100,\n position: 'absolute',\n top: -9999,\n overflow: 'scroll',\n MsOverflowStyle: 'scrollbar'\n });\n document.body.appendChild(div);\n scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n } else {\n scrollbarWidth = 0;\n }\n return scrollbarWidth || 0;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = returnFalse;\nfunction returnFalse() {\n return false;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getInnerWidth;\nfunction getInnerWidth(el) {\n var clientWidth = el.clientWidth;\n\n var _getComputedStyle = getComputedStyle(el),\n paddingLeft = _getComputedStyle.paddingLeft,\n paddingRight = _getComputedStyle.paddingRight;\n\n return clientWidth - parseFloat(paddingLeft) - parseFloat(paddingRight);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getInnerHeight;\nfunction getInnerHeight(el) {\n var clientHeight = el.clientHeight;\n\n var _getComputedStyle = getComputedStyle(el),\n paddingTop = _getComputedStyle.paddingTop,\n paddingBottom = _getComputedStyle.paddingBottom;\n\n return clientHeight - parseFloat(paddingTop) - parseFloat(paddingBottom);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar containerStyleDefault = exports.containerStyleDefault = {\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: '100%'\n};\n\n// Overrides containerStyleDefault properties\nvar containerStyleAutoHeight = exports.containerStyleAutoHeight = {\n height: 'auto'\n};\n\nvar viewStyleDefault = exports.viewStyleDefault = {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: 'scroll',\n WebkitOverflowScrolling: 'touch'\n};\n\n// Overrides viewStyleDefault properties\nvar viewStyleAutoHeight = exports.viewStyleAutoHeight = {\n position: 'relative',\n top: undefined,\n left: undefined,\n right: undefined,\n bottom: undefined\n};\n\nvar viewStyleUniversalInitial = exports.viewStyleUniversalInitial = {\n overflow: 'hidden',\n marginRight: 0,\n marginBottom: 0\n};\n\nvar trackHorizontalStyleDefault = exports.trackHorizontalStyleDefault = {\n position: 'absolute',\n height: 6\n};\n\nvar trackVerticalStyleDefault = exports.trackVerticalStyleDefault = {\n position: 'absolute',\n width: 6\n};\n\nvar thumbHorizontalStyleDefault = exports.thumbHorizontalStyleDefault = {\n position: 'relative',\n display: 'block',\n height: '100%'\n};\n\nvar thumbVerticalStyleDefault = exports.thumbVerticalStyleDefault = {\n position: 'relative',\n display: 'block',\n width: '100%'\n};\n\nvar disableSelectStyle = exports.disableSelectStyle = {\n userSelect: 'none'\n};\n\nvar disableSelectStyleReset = exports.disableSelectStyleReset = {\n userSelect: ''\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nexports.renderViewDefault = renderViewDefault;\nexports.renderTrackHorizontalDefault = renderTrackHorizontalDefault;\nexports.renderTrackVerticalDefault = renderTrackVerticalDefault;\nexports.renderThumbHorizontalDefault = renderThumbHorizontalDefault;\nexports.renderThumbVerticalDefault = renderThumbVerticalDefault;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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\n/* eslint-disable react/prop-types */\n\nfunction renderViewDefault(props) {\n return _react2[\"default\"].createElement('div', props);\n}\n\nfunction renderTrackHorizontalDefault(_ref) {\n var style = _ref.style,\n props = _objectWithoutProperties(_ref, ['style']);\n\n var finalStyle = _extends({}, style, {\n right: 2,\n bottom: 2,\n left: 2,\n borderRadius: 3\n });\n return _react2[\"default\"].createElement('div', _extends({ style: finalStyle }, props));\n}\n\nfunction renderTrackVerticalDefault(_ref2) {\n var style = _ref2.style,\n props = _objectWithoutProperties(_ref2, ['style']);\n\n var finalStyle = _extends({}, style, {\n right: 2,\n bottom: 2,\n top: 2,\n borderRadius: 3\n });\n return _react2[\"default\"].createElement('div', _extends({ style: finalStyle }, props));\n}\n\nfunction renderThumbHorizontalDefault(_ref3) {\n var style = _ref3.style,\n props = _objectWithoutProperties(_ref3, ['style']);\n\n var finalStyle = _extends({}, style, {\n cursor: 'pointer',\n borderRadius: 'inherit',\n backgroundColor: 'rgba(0,0,0,.2)'\n });\n return _react2[\"default\"].createElement('div', _extends({ style: finalStyle }, props));\n}\n\nfunction renderThumbVerticalDefault(_ref4) {\n var style = _ref4.style,\n props = _objectWithoutProperties(_ref4, ['style']);\n\n var finalStyle = _extends({}, style, {\n cursor: 'pointer',\n borderRadius: 'inherit',\n backgroundColor: 'rgba(0,0,0,.2)'\n });\n return _react2[\"default\"].createElement('div', _extends({ style: finalStyle }, props));\n}","module.exports = require(\"core-js-pure/stable/reflect/construct\");","var parent = require('../../es/reflect/construct');\n\nmodule.exports = parent;\n","require('../../modules/es.reflect.construct');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Reflect.construct;\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar bind = require('../internals/function-bind');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\n\n// `Reflect.construct` method\n// https://tc39.github.io/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","module.exports = require(\"core-js-pure/stable/object/keys\");","var parent = require('../../es/object/keys');\n\nmodule.exports = parent;\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","module.exports = require(\"core-js-pure/stable/object/get-own-property-symbols\");","var parent = require('../../es/object/get-own-property-symbols');\n\nmodule.exports = parent;\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","module.exports = require(\"core-js-pure/stable/object/get-own-property-descriptor\");","var parent = require('../../es/object/get-own-property-descriptor');\n\nmodule.exports = parent;\n","require('../../modules/es.object.get-own-property-descriptor');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {\n return Object.getOwnPropertyDescriptor(it, key);\n};\n\nif (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","module.exports = require(\"core-js-pure/stable/object/get-own-property-descriptors\");","var parent = require('../../es/object/get-own-property-descriptors');\n\nmodule.exports = parent;\n","require('../../modules/es.object.get-own-property-descriptors');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getOwnPropertyDescriptors;\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","module.exports = require(\"core-js-pure/stable/object/define-properties\");","var parent = require('../../es/object/define-properties');\n\nmodule.exports = parent;\n","require('../../modules/es.object.define-properties');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperties = module.exports = function defineProperties(T, D) {\n return Object.defineProperties(T, D);\n};\n\nif (Object.defineProperties.sham) defineProperties.sham = true;\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperties: defineProperties\n});\n","module.exports = require(\"core-js-pure/stable/object/define-property\");","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperty: objectDefinePropertyModile.f\n});\n","var _Object$assign = require(\"@babel/runtime-corejs3/core-js/object/assign\");\n\nfunction _extends() {\n module.exports = _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\nmodule.exports = _extends;","module.exports = require(\"core-js-pure/features/object/assign\");","var parent = require('../../es/object/assign');\n\nmodule.exports = parent;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","var _Array$isArray = require(\"@babel/runtime-corejs3/core-js/array/is-array\");\n\nvar arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (_Array$isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","var parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.github.io/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n","var _Array$from = require(\"@babel/runtime-corejs3/core-js/array/from\");\n\nvar _isIterable = require(\"@babel/runtime-corejs3/core-js/is-iterable\");\n\nvar _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nfunction _iterableToArray(iter) {\n if (typeof _Symbol !== \"undefined\" && _isIterable(Object(iter))) return _Array$from(iter);\n}\n\nmodule.exports = _iterableToArray;","var parent = require('../../es/array/from');\n\nmodule.exports = parent;\n","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","require('../modules/web.dom-collections.iterator');\nrequire('../modules/es.string.iterator');\nvar isIterable = require('../internals/is-iterable');\n\nmodule.exports = isIterable;\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var classof = require('../internals/classof');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","var parent = require('../../es/symbol');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.observable');\nrequire('../../modules/esnext.symbol.pattern-match');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n","require('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\ndefineWellKnownSymbol('matchAll');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n","// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\ndefineWellKnownSymbol('replaceAll');\n","module.exports = require(\"core-js-pure/features/instance/slice\");","var parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n","require('../../../modules/es.array.slice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').slice;\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","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}\n\nmodule.exports = _nonIterableSpread;","var _indexOfInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/index-of\");\n\nvar _Object$getOwnPropertySymbols = require(\"@babel/runtime-corejs3/core-js/object/get-own-property-symbols\");\n\nvar objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _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 (_indexOfInstanceProperty(excluded).call(excluded, key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;","var parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n","require('../../../modules/es.array.index-of');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').indexOf;\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","module.exports = require(\"core-js-pure/features/object/get-own-property-symbols\");","var parent = require('../../es/object/get-own-property-symbols');\n\nmodule.exports = parent;\n","var _indexOfInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/index-of\");\n\nvar _Object$keys = require(\"@babel/runtime-corejs3/core-js/object/keys\");\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n\n var sourceKeys = _Object$keys(source);\n\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (_indexOfInstanceProperty(excluded).call(excluded, key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","module.exports = require(\"core-js-pure/features/object/keys\");","var parent = require('../../es/object/keys');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/features/symbol/iterator\");","var parent = require('../../es/symbol/iterator');\n\nmodule.exports = parent;\n","require('../../modules/es.symbol.iterator');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n","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;","var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nfunction _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\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;","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","var _Object$create = require(\"@babel/runtime-corejs3/core-js/object/create\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _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}\n\nmodule.exports = _inherits;","module.exports = require(\"core-js-pure/features/object/create\");","var parent = require('../../es/object/create');\n\nmodule.exports = parent;\n","require('../../modules/es.object.create');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nmodule.exports = function create(P, D) {\n return Object.create(P, D);\n};\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n create: create\n});\n","var _Object$setPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/set-prototype-of\");\n\nfunction _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var parent = require('../../es/object/set-prototype-of');\n\nmodule.exports = parent;\n","require('../../modules/es.object.set-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.setPrototypeOf;\n","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n","var _typeof = require(\"@babel/runtime-corejs3/helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","var _Object$getPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/get-prototype-of\");\n\nvar _Object$setPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/set-prototype-of\");\n\nfunction _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","module.exports = require(\"core-js-pure/features/object/get-prototype-of\");","var parent = require('../../es/object/get-prototype-of');\n\nmodule.exports = parent;\n","require('../../modules/es.object.get-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getPrototypeOf;\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nfunction _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;","module.exports = require(\"core-js-pure/stable/instance/index-of\");","var parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/instance/map\");","var parent = require('../../es/instance/map');\n\nmodule.exports = parent;\n","var map = require('../array/virtual/map');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.map;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.map) ? map : own;\n};\n","require('../../../modules/es.array.map');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').map;\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","module.exports = require(\"core-js-pure/stable/object/values\");","var parent = require('../../es/object/values');\n\nmodule.exports = parent;\n","require('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","module.exports = require(\"core-js-pure/stable/instance/for-each\");","require('../../modules/web.dom-collections.iterator');\nvar forEach = require('../array/virtual/for-each');\nvar classof = require('../../internals/classof');\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\n\nmodule.exports = function (it) {\n var own = it.forEach;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.forEach)\n // eslint-disable-next-line no-prototype-builtins\n || DOMIterables.hasOwnProperty(classof(it)) ? forEach : own;\n};\n","var parent = require('../../../es/array/virtual/for-each');\n\nmodule.exports = parent;\n","require('../../../modules/es.array.for-each');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","module.exports = require(\"core-js-pure/stable/array/is-array\");","var parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/instance/reduce\");","var parent = require('../../es/instance/reduce');\n\nmodule.exports = parent;\n","var reduce = require('../array/virtual/reduce');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.reduce;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.reduce) ? reduce : own;\n};\n","require('../../../modules/es.array.reduce');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').reduce;\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","module.exports = require(\"core-js-pure/stable/instance/splice\");","var parent = require('../../es/instance/splice');\n\nmodule.exports = parent;\n","var splice = require('../array/virtual/splice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.splice;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.splice) ? splice : own;\n};\n","require('../../../modules/es.array.splice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').splice;\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","module.exports = require(\"core-js-pure/stable/instance/sort\");","var parent = require('../../es/instance/sort');\n\nmodule.exports = parent;\n","var sort = require('../array/virtual/sort');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.sort;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.sort) ? sort : own;\n};\n","require('../../../modules/es.array.sort');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').sort;\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar test = [];\nvar nativeSort = test.sort;\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","module.exports = require(\"core-js-pure/stable/instance/concat\");","var parent = require('../../es/instance/concat');\n\nmodule.exports = parent;\n","var concat = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.concat;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.concat) ? concat : own;\n};\n","require('../../../modules/es.array.concat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').concat;\n","module.exports = require(\"core-js-pure/stable/instance/find-index\");","var parent = require('../../es/instance/find-index');\n\nmodule.exports = parent;\n","var findIndex = require('../array/virtual/find-index');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.findIndex;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.findIndex) ? findIndex : own;\n};\n","require('../../../modules/es.array.find-index');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').findIndex;\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX);\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","module.exports = require(\"core-js-pure/stable/instance/filter\");","var parent = require('../../es/instance/filter');\n\nmodule.exports = parent;\n","var filter = require('../array/virtual/filter');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.filter;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.filter) ? filter : own;\n};\n","require('../../../modules/es.array.filter');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').filter;\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","module.exports = require(\"core-js-pure/stable/object/assign\");","var parent = require('../../es/object/assign');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/instance/bind\");","var parent = require('../../es/instance/bind');\n\nmodule.exports = parent;\n","var bind = require('../function/virtual/bind');\n\nvar FunctionPrototype = Function.prototype;\n\nmodule.exports = function (it) {\n var own = it.bind;\n return it === FunctionPrototype || (it instanceof Function && own === FunctionPrototype.bind) ? bind : own;\n};\n","require('../../../modules/es.function.bind');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Function').bind;\n","var $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.github.io/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true }, {\n bind: bind\n});\n","module.exports = require(\"core-js-pure/stable/instance/some\");","var parent = require('../../es/instance/some');\n\nmodule.exports = parent;\n","var some = require('../array/virtual/some');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.some;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.some) ? some : own;\n};\n","require('../../../modules/es.array.some');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').some;\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('some');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","module.exports = require(\"core-js-pure/stable/instance/every\");","var parent = require('../../es/instance/every');\n\nmodule.exports = parent;\n","var every = require('../array/virtual/every');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.every;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.every) ? every : own;\n};\n","require('../../../modules/es.array.every');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').every;\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('every');\n\n// `Array.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","export { default } from './Table';\nexport { default as tableClasses } from './tableClasses';\nexport * from './tableClasses';","export { default } from './Tooltip';\nexport { default as tooltipClasses } from './tooltipClasses';\nexport * from './tooltipClasses';","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n});\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = assignWith;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity]\n * The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array ? array.length : 0;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity]\n * The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = find;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/**\n * lodash 3.0.1 (Custom Build) \n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","module.exports = require(\"core-js-pure/stable/instance/starts-with\");","var parent = require('../../es/instance/starts-with');\n\nmodule.exports = parent;\n","var startsWith = require('../string/virtual/starts-with');\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.startsWith;\n return typeof it === 'string' || it === StringPrototype\n || (it instanceof String && own === StringPrototype.startsWith) ? startsWith : own;\n};\n","require('../../../modules/es.string.starts-with');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').startsWith;\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","export { default } from './TableBody';\nexport { default as tableBodyClasses } from './tableBodyClasses';\nexport * from './tableBodyClasses';","module.exports = require(\"core-js-pure/stable/instance/slice\");","var parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n","export { default } from './TableRow';\nexport { default as tableRowClasses } from './tableRowClasses';\nexport * from './tableRowClasses';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'KeyboardArrowRight');\n\nexports.default = _default;","module.exports = require(\"core-js-pure/stable/instance/trim\");","var parent = require('../../es/instance/trim');\n\nmodule.exports = parent;\n","var trim = require('../string/virtual/trim');\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.trim;\n return typeof it === 'string' || it === StringPrototype\n || (it instanceof String && own === StringPrototype.trim) ? trim : own;\n};\n","require('../../../modules/es.string.trim');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').trim;\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","module.exports = require(\"core-js-pure/stable/url\");","var parent = require('../../web/url');\n\nmodule.exports = parent;\n","require('../modules/web.url');\nrequire('../modules/web.url.to-json');\nrequire('../modules/web.url-search-params');\nvar path = require('../internals/path');\n\nmodule.exports = path.URL;\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) {\n if (options && options.unsafe && target[key]) target[key] = src[key];\n else redefine(target, key, src[key], options);\n } return target;\n};\n","module.exports = require(\"core-js-pure/stable/parse-int\");","var parent = require('../es/parse-int');\n\nmodule.exports = parent;\n","require('../modules/es.parse-int');\nvar path = require('../internals/path');\n\nmodule.exports = path.parseInt;\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var _Array$isArray = require(\"@babel/runtime-corejs3/core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","var _getIterator = require(\"@babel/runtime-corejs3/core-js/get-iterator\");\n\nvar _isIterable = require(\"@babel/runtime-corejs3/core-js/is-iterable\");\n\nvar _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof _Symbol === \"undefined\" || !_isIterable(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 = _getIterator(arr), _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}\n\nmodule.exports = _iterableToArrayLimit;","module.exports = require(\"core-js-pure/features/get-iterator\");","require('../modules/web.dom-collections.iterator');\nrequire('../modules/es.string.iterator');\nvar getIterator = require('../internals/get-iterator');\n\nmodule.exports = getIterator;\n","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;","export { default } from './TableHead';\nexport { default as tableHeadClasses } from './tableHeadClasses';\nexport * from './tableHeadClasses';","module.exports = require(\"core-js-pure/stable/set-timeout\");","require('../modules/web.timers');\nvar path = require('../internals/path');\n\nmodule.exports = path.setTimeout;\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\n\nvar wrap = function (scheduler) {\n return function (handler, timeout /* , ...arguments */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : undefined;\n return scheduler(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof handler == 'function' ? handler : Function(handler)).apply(this, args);\n } : handler, timeout);\n };\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n$({ global: true, bind: true, forced: MSIE }, {\n // `setTimeout` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n setTimeout: wrap(global.setTimeout),\n // `setInterval` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n setInterval: wrap(global.setInterval)\n});\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z\"\n}), 'Help');\n\nexports.default = _default;","module.exports = require(\"core-js-pure/stable/object/entries\");","var parent = require('../../es/object/entries');\n\nmodule.exports = parent;\n","require('../../modules/es.object.entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.entries;\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.github.io/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","export * from './common';\nexport * from './interfaces';\nexport * from './hooks';\nexport * from './decorators';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM17 13l-5 5-5-5h3V9h4v4h3z\"\n}), 'CloudDownload');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z\"\n}), 'Print');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z\"\n}), 'ViewColumn');\n\nexports.default = _default;","/*! For license information please see index.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define(\"lib\",[\"react\",\"react-dom\"],t):\"object\"==typeof exports?exports.lib=t(require(\"react\"),require(\"react-dom\")):e.lib=t(e.react,e[\"react-dom\"])}(\"undefined\"!=typeof self?self:this,(function(e,t){return function(){\"use strict\";var n={655:function(e,t,n){n.r(t),n.d(t,{__extends:function(){return o},__assign:function(){return i},__rest:function(){return a},__decorate:function(){return l},__param:function(){return c},__metadata:function(){return u},__awaiter:function(){return s},__generator:function(){return f},__createBinding:function(){return d},__exportStar:function(){return p},__values:function(){return h},__read:function(){return y},__spread:function(){return v},__spreadArrays:function(){return b},__spreadArray:function(){return g},__await:function(){return m},__asyncGenerator:function(){return w},__asyncDelegator:function(){return _},__asyncValues:function(){return P},__makeTemplateObject:function(){return O},__importStar:function(){return x},__importDefault:function(){return j},__classPrivateFieldGet:function(){return T},__classPrivateFieldSet:function(){return A}});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function o(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var i=function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;l--)(o=e[l])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function c(e,t){return function(n,r){t(n,r,e)}}function u(e,t){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function s(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function l(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,l)}c((r=r.apply(e,t||[])).next())}))}function f(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function y(e,t){var n=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function v(){for(var e=[],t=0;t1||l(e,t)}))})}function l(e,t){try{(n=o[e](t)).value instanceof m?Promise.resolve(n.value.v).then(c,u):s(i[0][2],n)}catch(e){s(i[0][3],e)}var n}function c(e){l(\"next\",e)}function u(e){l(\"throw\",e)}function s(e,t){e(t),i.shift(),i.length&&l(i[0][0],i[0][1])}}function _(e){var t,n;return t={},r(\"next\"),r(\"throw\",(function(e){throw e})),r(\"return\"),t[Symbol.iterator]=function(){return this},t;function r(r,o){t[r]=e[r]?function(t){return(n=!n)?{value:m(e[r](t)),done:\"return\"===r}:o?o(t):t}:o}}function P(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=h(e),t={},r(\"next\"),r(\"throw\"),r(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,o){!function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)}(r,o,(t=e[n](t)).done,t.value)}))}}}function O(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e}var S=Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t};function x(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)\"default\"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&d(t,e,n);return S(t,e),t}function j(e){return e&&e.__esModule?e:{default:e}}function T(e,t,n,r){if(\"a\"===n&&!r)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof t?e!==t||!r:!t.has(e))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===n?r:\"a\"===n?r.call(e):r?r.value:t.get(e)}function A(e,t,n,r,o){if(\"m\"===r)throw new TypeError(\"Private method is not writable\");if(\"a\"===r&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof t?e!==t||!o:!t.has(e))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===r?o.call(e,n):o?o.value=n:t.set(e,n),n}},156:function(t){t.exports=e},111:function(e){e.exports=t}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return n[e](i,i.exports,o),i.exports}o.d=function(e,t){for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var i={};return function(){var e=i;Object.defineProperty(e,\"__esModule\",{value:!0}),e.useReactToPrint=e.PrintContextConsumer=void 0;var t=o(655),n=o(156),r=o(111),a=Object.prototype.hasOwnProperty.call(n,\"createContext\"),l=Object.prototype.hasOwnProperty.call(n,\"useMemo\")&&Object.prototype.hasOwnProperty.call(n,\"useCallback\"),c=a?n.createContext({}):null;e.PrintContextConsumer=c?c.Consumer:function(){return null};var u={copyStyles:!0,pageStyle:\"@page { size: auto; margin: 0mm; } @media print { body { -webkit-print-color-adjust: exact; } }\",removeAfterPrint:!1,suppressErrors:!1},s=function(e){function o(){var n=null!==e&&e.apply(this,arguments)||this;return n.startPrint=function(e){var t=n.props,r=t.onAfterPrint,o=t.onPrintError,i=t.print,a=t.documentTitle;setTimeout((function(){var t,l;if(e.contentWindow){if(e.contentWindow.focus(),i)i(e).then(n.handleRemoveIframe).catch((function(e){o?o(\"print\",e):n.logMessages([\"An error was thrown by the specified `print` function\"])}));else if(e.contentWindow.print){var c=null!==(l=null===(t=e.contentDocument)||void 0===t?void 0:t.title)&&void 0!==l?l:\"\",u=e.ownerDocument.title;a&&(e.ownerDocument.title=a,e.contentDocument&&(e.contentDocument.title=a)),e.contentWindow.print(),a&&(e.ownerDocument.title=u,e.contentDocument&&(e.contentDocument.title=c)),r&&r()}else n.logMessages([\"Printing for this browser is not currently possible: the browser does not have a `print` method available for iframes.\"]);n.handleRemoveIframe()}else n.logMessages([\"Printing failed because the `contentWindow` of the print iframe did not load. This is possibly an error with `react-to-print`. Please file an issue: https://github.com/gregnb/react-to-print/issues/\"])}),500)},n.triggerPrint=function(e){var t=n.props,r=t.onBeforePrint,o=t.onPrintError;if(r){var i=r();i&&\"function\"==typeof i.then?i.then((function(){n.startPrint(e)})).catch((function(e){o&&o(\"onBeforePrint\",e)})):n.startPrint(e)}else n.startPrint(e)},n.handleClick=function(){var e=n.props,t=e.onBeforeGetContent,r=e.onPrintError;if(t){var o=t();o&&\"function\"==typeof o.then?o.then(n.handlePrint).catch((function(e){r&&r(\"onBeforeGetContent\",e)})):n.handlePrint()}else n.handlePrint()},n.handlePrint=function(){var e=n.props,o=e.bodyClass,i=e.content,a=e.copyStyles,l=e.fonts,c=e.pageStyle,u=e.nonce,s=i();if(void 0!==s)if(null!==s){var f=document.createElement(\"iframe\");f.style.position=\"absolute\",f.style.top=\"-1000px\",f.style.left=\"-1000px\",f.id=\"printWindow\";var d=(0,r.findDOMNode)(s);if(d){var p=d instanceof Text,h=document.querySelectorAll(\"link[rel='stylesheet']\"),y=p?[]:d.querySelectorAll(\"img\");n.linkTotal=h.length+y.length,n.linksLoaded=[],n.linksErrored=[],n.fontsLoaded=[],n.fontsErrored=[];var v=function(e,t){t?n.linksLoaded.push(e):(n.logMessages(['\"react-to-print\" was unable to load a linked node. It may be invalid. \"react-to-print\" will continue attempting to print the page. The linked node that errored was:',e]),n.linksErrored.push(e)),n.linksLoaded.length+n.linksErrored.length+n.fontsLoaded.length+n.fontsErrored.length===n.linkTotal&&n.triggerPrint(f)};f.onload=function(){var e,r,i,s;f.onload=null;var h=f.contentDocument||(null===(r=f.contentWindow)||void 0===r?void 0:r.document);if(h){h.body.appendChild(d.cloneNode(!0)),l&&((null===(i=f.contentDocument)||void 0===i?void 0:i.fonts)&&(null===(s=f.contentWindow)||void 0===s?void 0:s.FontFace)?l.forEach((function(e){var t=new FontFace(e.family,e.source);f.contentDocument.fonts.add(t),t.loaded.then((function(e){n.fontsLoaded.push(e)})).catch((function(e){n.fontsErrored.push(t),n.logMessages(['\"react-to-print\" was unable to load a font. \"react-to-print\" will continue attempting to print the page. The font that failed to load is:',t,\"The error from loading the font is:\",e])}))})):n.logMessages(['\"react-to-print\" is not able to load custom fonts because the browser does not support the FontFace API']));var b=\"function\"==typeof c?c():c;if(\"string\"!=typeof b)n.logMessages(['\"react-to-print\" expected a \"string\" from `pageStyle` but received \"'.concat(typeof b,'\". Styles from `pageStyle` will not be applied.')]);else{var g=h.createElement(\"style\");u&&(g.setAttribute(\"nonce\",u),h.head.setAttribute(\"nonce\",u)),g.appendChild(h.createTextNode(b)),h.head.appendChild(g)}if(o&&(e=h.body.classList).add.apply(e,(0,t.__spreadArray)([],(0,t.__read)(o.split(\" \")),!1)),!p){for(var m=h.querySelectorAll(\"canvas\"),w=d.querySelectorAll(\"canvas\"),_=0,P=m.length;_ tag with an empty \"src\" attribute. It will not attempt to pre-load it. The is:',S],\"warning\"),v(S,!1)}var T=\"input\",A=d.querySelectorAll(T),k=h.querySelectorAll(T);for(_=0;_ tag with an empty \"href\" attribute. In addition to being invalid HTML, this can cause problems in many browsers, and so the was not loaded. The is:',W],\"warning\"),v(W,!0)}}0!==n.linkTotal&&a||n.triggerPrint(f)},n.handleRemoveIframe(!0),document.body.appendChild(f)}else n.logMessages(['\"react-to-print\" could not locate the DOM node corresponding with the `content` prop'])}else n.logMessages(['There is nothing to print because the \"content\" prop returned \"null\". Please ensure \"content\" is renderable before allowing \"react-to-print\" to be called.']);else n.logMessages([\"To print a functional component ensure it is wrapped with `React.forwardRef`, and ensure the forwarded ref is used. See the README for an example: https://github.com/gregnb/react-to-print#examples\"])},n.handleRemoveIframe=function(e){var t=n.props.removeAfterPrint;if(e||t){var r=document.getElementById(\"printWindow\");r&&document.body.removeChild(r)}},n.logMessages=function(e,t){void 0===t&&(t=\"error\"),n.props.suppressErrors||(\"error\"===t?console.error(e):\"warning\"===t&&console.warn(e))},n}return(0,t.__extends)(o,e),o.prototype.render=function(){var e=this.props,t=e.children,r=e.trigger;if(r)return n.cloneElement(r(),{onClick:this.handleClick});if(!c)return this.logMessages(['\"react-to-print\" requires React ^16.3.0 to be able to use \"PrintContext\"']),null;var o={handlePrint:this.handleClick};return n.createElement(c.Provider,{value:o},t)},o.defaultProps=u,o}(n.Component);e.default=s,e.useReactToPrint=l?function(e){var r=n.useMemo((function(){return new s((0,t.__assign)((0,t.__assign)({},u),e))}),[e]);return n.useCallback((function(){return r.handleClick()}),[r])}:function(e){e.suppressErrors||console.warn('\"react-to-print\" requires React ^16.8.0 to be able to use \"useReactToPrint\"')}}(),i}()}));","module.exports = require(\"core-js-pure/stable/json/stringify\");","var parent = require('../../es/json/stringify');\n\nmodule.exports = parent;\n","require('../../modules/es.json.stringify');\nvar core = require('../../internals/path');\n\nif (!core.JSON) core.JSON = { stringify: JSON.stringify };\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function stringify(it, replacer, space) {\n return core.JSON.stringify.apply(null, arguments);\n};\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar fails = require('../internals/fails');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar re = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar fix = function (match, offset, string) {\n var prev = string.charAt(offset - 1);\n var next = string.charAt(offset + 1);\n if ((low.test(match) && !hi.test(next)) || (hi.test(match) && !low.test(prev))) {\n return '\\\\u' + match.charCodeAt(0).toString(16);\n } return match;\n};\n\nvar FORCED = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nif ($stringify) {\n // https://github.com/tc39/proposal-well-formed-stringify\n $({ target: 'JSON', stat: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars\n stringify: function stringify(it, replacer, space) {\n var result = $stringify.apply(null, arguments);\n return typeof result == 'string' ? result.replace(re, fix) : result;\n }\n });\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\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends3 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _react = require(\"react\");\n\nvar _setDisplayName = _interopRequireDefault(require(\"./setDisplayName\"));\n\nvar _wrapDisplayName = _interopRequireDefault(require(\"./wrapDisplayName\"));\n\nvar withState = function withState(stateName, stateUpdaterName, initialState) {\n return function (BaseComponent) {\n var factory = (0, _react.createFactory)(BaseComponent);\n\n var WithState =\n /*#__PURE__*/\n function (_Component) {\n (0, _inheritsLoose2.default)(WithState, _Component);\n\n function WithState() {\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 = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n stateValue: typeof initialState === 'function' ? initialState(_this.props) : initialState\n };\n\n _this.updateStateValue = function (updateFn, callback) {\n return _this.setState(function (_ref) {\n var stateValue = _ref.stateValue;\n return {\n stateValue: typeof updateFn === 'function' ? updateFn(stateValue) : updateFn\n };\n }, callback);\n };\n\n return _this;\n }\n\n var _proto = WithState.prototype;\n\n _proto.render = function render() {\n var _extends2;\n\n return factory((0, _extends3.default)({}, this.props, (_extends2 = {}, _extends2[stateName] = this.state.stateValue, _extends2[stateUpdaterName] = this.updateStateValue, _extends2)));\n };\n\n return WithState;\n }(_react.Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'withState'))(WithState);\n }\n\n return WithState;\n };\n};\n\nvar _default = withState;\nexports.default = _default;","function _extends() {\n module.exports = _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\nmodule.exports = _extends;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _setStatic = _interopRequireDefault(require(\"./setStatic\"));\n\nvar setDisplayName = function setDisplayName(displayName) {\n return (0, _setStatic.default)('displayName', displayName);\n};\n\nvar _default = setDisplayName;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar setStatic = function setStatic(key, value) {\n return function (BaseComponent) {\n /* eslint-disable no-param-reassign */\n BaseComponent[key] = value;\n /* eslint-enable no-param-reassign */\n\n return BaseComponent;\n };\n};\n\nvar _default = setStatic;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _getDisplayName = _interopRequireDefault(require(\"./getDisplayName\"));\n\nvar wrapDisplayName = function wrapDisplayName(BaseComponent, hocName) {\n return hocName + \"(\" + (0, _getDisplayName.default)(BaseComponent) + \")\";\n};\n\nvar _default = wrapDisplayName;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar getDisplayName = function getDisplayName(Component) {\n if (typeof Component === 'string') {\n return Component;\n }\n\n if (!Component) {\n return undefined;\n }\n\n return Component.displayName || Component.name || 'Component';\n};\n\nvar _default = getDisplayName;\nexports.default = _default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flattenNames = undefined;\n\nvar _isString2 = require('lodash/isString');\n\nvar _isString3 = _interopRequireDefault(_isString2);\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _isPlainObject2 = require('lodash/isPlainObject');\n\nvar _isPlainObject3 = _interopRequireDefault(_isPlainObject2);\n\nvar _map2 = require('lodash/map');\n\nvar _map3 = _interopRequireDefault(_map2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar flattenNames = exports.flattenNames = function flattenNames() {\n var things = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var names = [];\n\n (0, _map3.default)(things, function (thing) {\n if (Array.isArray(thing)) {\n flattenNames(thing).map(function (name) {\n return names.push(name);\n });\n } else if ((0, _isPlainObject3.default)(thing)) {\n (0, _forOwn3.default)(thing, function (value, key) {\n value === true && names.push(key);\n names.push(key + '-' + value);\n });\n } else if ((0, _isString3.default)(thing)) {\n names.push(thing);\n }\n });\n\n return names;\n};\n\nexports.default = flattenNames;","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mergeClasses = undefined;\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _cloneDeep2 = require('lodash/cloneDeep');\n\nvar _cloneDeep3 = _interopRequireDefault(_cloneDeep2);\n\nvar _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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mergeClasses = exports.mergeClasses = function mergeClasses(classes) {\n var activeNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n var styles = classes.default && (0, _cloneDeep3.default)(classes.default) || {};\n activeNames.map(function (name) {\n var toMerge = classes[name];\n if (toMerge) {\n (0, _forOwn3.default)(toMerge, function (value, key) {\n if (!styles[key]) {\n styles[key] = {};\n }\n\n styles[key] = _extends({}, styles[key], toMerge[key]);\n });\n }\n\n return name;\n });\n return styles;\n};\n\nexports.default = mergeClasses;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.autoprefix = undefined;\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar transforms = {\n borderRadius: function borderRadius(value) {\n return {\n msBorderRadius: value,\n MozBorderRadius: value,\n OBorderRadius: value,\n WebkitBorderRadius: value,\n borderRadius: value\n };\n },\n boxShadow: function boxShadow(value) {\n return {\n msBoxShadow: value,\n MozBoxShadow: value,\n OBoxShadow: value,\n WebkitBoxShadow: value,\n boxShadow: value\n };\n },\n userSelect: function userSelect(value) {\n return {\n WebkitTouchCallout: value,\n KhtmlUserSelect: value,\n MozUserSelect: value,\n msUserSelect: value,\n WebkitUserSelect: value,\n userSelect: value\n };\n },\n\n flex: function flex(value) {\n return {\n WebkitBoxFlex: value,\n MozBoxFlex: value,\n WebkitFlex: value,\n msFlex: value,\n flex: value\n };\n },\n flexBasis: function flexBasis(value) {\n return {\n WebkitFlexBasis: value,\n flexBasis: value\n };\n },\n justifyContent: function justifyContent(value) {\n return {\n WebkitJustifyContent: value,\n justifyContent: value\n };\n },\n\n transition: function transition(value) {\n return {\n msTransition: value,\n MozTransition: value,\n OTransition: value,\n WebkitTransition: value,\n transition: value\n };\n },\n\n transform: function transform(value) {\n return {\n msTransform: value,\n MozTransform: value,\n OTransform: value,\n WebkitTransform: value,\n transform: value\n };\n },\n absolute: function absolute(value) {\n var direction = value && value.split(' ');\n return {\n position: 'absolute',\n top: direction && direction[0],\n right: direction && direction[1],\n bottom: direction && direction[2],\n left: direction && direction[3]\n };\n },\n extend: function extend(name, otherElementStyles) {\n var otherStyle = otherElementStyles[name];\n if (otherStyle) {\n return otherStyle;\n }\n return {\n 'extend': name\n };\n }\n};\n\nvar autoprefix = exports.autoprefix = function autoprefix(elements) {\n var prefixed = {};\n (0, _forOwn3.default)(elements, function (styles, element) {\n var expanded = {};\n (0, _forOwn3.default)(styles, function (value, key) {\n var transform = transforms[key];\n if (transform) {\n expanded = _extends({}, expanded, transform(value));\n } else {\n expanded[key] = value;\n }\n });\n prefixed[element] = expanded;\n });\n return prefixed;\n};\n\nexports.default = autoprefix;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hover = undefined;\n\nvar _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 _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\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 hover = exports.hover = function hover(Component) {\n var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n\n return function (_React$Component) {\n _inherits(Hover, _React$Component);\n\n function Hover() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Hover);\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, (_ref = Hover.__proto__ || Object.getPrototypeOf(Hover)).call.apply(_ref, [this].concat(args))), _this), _this.state = { hover: false }, _this.handleMouseOver = function () {\n return _this.setState({ hover: true });\n }, _this.handleMouseOut = function () {\n return _this.setState({ hover: false });\n }, _this.render = function () {\n return _react2.default.createElement(\n Span,\n { onMouseOver: _this.handleMouseOver, onMouseOut: _this.handleMouseOut },\n _react2.default.createElement(Component, _extends({}, _this.props, _this.state))\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return Hover;\n }(_react2.default.Component);\n};\n\nexports.default = hover;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.active = undefined;\n\nvar _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 _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\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 active = exports.active = function active(Component) {\n var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n\n return function (_React$Component) {\n _inherits(Active, _React$Component);\n\n function Active() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Active);\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, (_ref = Active.__proto__ || Object.getPrototypeOf(Active)).call.apply(_ref, [this].concat(args))), _this), _this.state = { active: false }, _this.handleMouseDown = function () {\n return _this.setState({ active: true });\n }, _this.handleMouseUp = function () {\n return _this.setState({ active: false });\n }, _this.render = function () {\n return _react2.default.createElement(\n Span,\n { onMouseDown: _this.handleMouseDown, onMouseUp: _this.handleMouseUp },\n _react2.default.createElement(Component, _extends({}, _this.props, _this.state))\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return Active;\n }(_react2.default.Component);\n};\n\nexports.default = active;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar loopable = function loopable(i, length) {\n var props = {};\n var setProp = function setProp(name) {\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n props[name] = value;\n };\n\n i === 0 && setProp('first-child');\n i === length - 1 && setProp('last-child');\n (i === 0 || i % 2 === 0) && setProp('even');\n Math.abs(i % 2) === 1 && setProp('odd');\n setProp('nth-child', i);\n\n return props;\n};\n\nexports.default = loopable;","/*! *****************************************************************************\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/* 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 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) : new P(function (resolve) { resolve(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 __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getCropSize = getCropSize;\nexports.restrictPosition = restrictPosition;\nexports.getDistanceBetweenPoints = getDistanceBetweenPoints;\nexports.getRotationBetweenPoints = getRotationBetweenPoints;\nexports.computeCroppedArea = computeCroppedArea;\nexports.getInitialCropFromCroppedAreaPixels = getInitialCropFromCroppedAreaPixels;\nexports.getCenter = getCenter;\nexports.rotateAroundMidPoint = rotateAroundMidPoint;\nexports.translateSize = translateSize;\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Compute the dimension of the crop area based on media size,\n * aspect ratio and optionally rotatation\n * @param {number} mediaWidth width of the src media in pixels\n * @param {number} mediaHeight height of the src media in pixels\n * @param {number} aspect aspect ratio of the crop\n * @param {rotation} rotation rotation in degrees\n */\nfunction getCropSize(mediaWidth, mediaHeight, aspect) {\n var rotation = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\n var _translateSize = translateSize(mediaWidth, mediaHeight, rotation),\n width = _translateSize.width,\n height = _translateSize.height;\n\n if (mediaWidth >= mediaHeight * aspect && width > mediaHeight * aspect) {\n return {\n width: mediaHeight * aspect,\n height: mediaHeight\n };\n }\n\n if (width > mediaHeight * aspect) {\n return {\n width: mediaWidth,\n height: mediaWidth / aspect\n };\n }\n\n if (width > height * aspect) {\n return {\n width: height * aspect,\n height: height\n };\n }\n\n return {\n width: width,\n height: width / aspect\n };\n}\n/**\n * Ensure a new media position stays in the crop area.\n * @param {{x: number, y number}} position new x/y position requested for the media\n * @param {{width: number, height: number}} mediaSize width/height of the src media\n * @param {{width: number, height: number}} cropSize width/height of the crop area\n * @param {number} zoom zoom value\n * @param {rotation} rotation rotation in degrees\n * @returns {{x: number, y number}}\n */\n\n\nfunction restrictPosition(position, mediaSize, cropSize, zoom) {\n var rotation = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\n var _translateSize2 = translateSize(mediaSize.width, mediaSize.height, rotation),\n width = _translateSize2.width,\n height = _translateSize2.height;\n\n return {\n x: restrictPositionCoord(position.x, width, cropSize.width, zoom),\n y: restrictPositionCoord(position.y, height, cropSize.height, zoom)\n };\n}\n\nfunction restrictPositionCoord(position, mediaSize, cropSize, zoom) {\n var maxPosition = mediaSize * zoom / 2 - cropSize / 2;\n return Math.min(maxPosition, Math.max(position, -maxPosition));\n}\n\nfunction getDistanceBetweenPoints(pointA, pointB) {\n return Math.sqrt(Math.pow(pointA.y - pointB.y, 2) + Math.pow(pointA.x - pointB.x, 2));\n}\n\nfunction getRotationBetweenPoints(pointA, pointB) {\n return Math.atan2(pointB.y - pointA.y, pointB.x - pointA.x) * 180 / Math.PI;\n}\n/**\n * Compute the output cropped area of the media in percentages and pixels.\n * x/y are the top-left coordinates on the src media\n * @param {{x: number, y number}} crop x/y position of the current center of the media\n * @param {{width: number, height: number, naturalWidth: number, naturelHeight: number}} mediaSize width/height of the src media (default is size on the screen, natural is the original size)\n * @param {{width: number, height: number}} cropSize width/height of the crop area\n * @param {number} aspect aspect value\n * @param {number} zoom zoom value\n * @param {number} rotation rotation value (in deg)\n * @param {boolean} restrictPosition whether we should limit or not the cropped area\n */\n\n\nfunction computeCroppedArea(crop, mediaSize, cropSize, aspect, zoom) {\n var rotation = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n var restrictPosition = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true;\n // if the media is rotated by the user, we cannot limit the position anymore\n // as it might need to be negative.\n var limitAreaFn = restrictPosition && rotation === 0 ? limitArea : noOp;\n var croppedAreaPercentages = {\n x: limitAreaFn(100, ((mediaSize.width - cropSize.width / zoom) / 2 - crop.x / zoom) / mediaSize.width * 100),\n y: limitAreaFn(100, ((mediaSize.height - cropSize.height / zoom) / 2 - crop.y / zoom) / mediaSize.height * 100),\n width: limitAreaFn(100, cropSize.width / mediaSize.width * 100 / zoom),\n height: limitAreaFn(100, cropSize.height / mediaSize.height * 100 / zoom) // we compute the pixels size naively\n\n };\n var widthInPixels = Math.round(limitAreaFn(mediaSize.naturalWidth, croppedAreaPercentages.width * mediaSize.naturalWidth / 100));\n var heightInPixels = Math.round(limitAreaFn(mediaSize.naturalHeight, croppedAreaPercentages.height * mediaSize.naturalHeight / 100));\n var isImgWiderThanHigh = mediaSize.naturalWidth >= mediaSize.naturalHeight * aspect; // then we ensure the width and height exactly match the aspect (to avoid rounding approximations)\n // if the media is wider than high, when zoom is 0, the crop height will be equals to iamge height\n // thus we want to compute the width from the height and aspect for accuracy.\n // Otherwise, we compute the height from width and aspect.\n\n var sizePixels = isImgWiderThanHigh ? {\n width: Math.round(heightInPixels * aspect),\n height: heightInPixels\n } : {\n width: widthInPixels,\n height: Math.round(widthInPixels / aspect)\n };\n\n var croppedAreaPixels = _objectSpread({}, sizePixels, {\n x: Math.round(limitAreaFn(mediaSize.naturalWidth - sizePixels.width, croppedAreaPercentages.x * mediaSize.naturalWidth / 100)),\n y: Math.round(limitAreaFn(mediaSize.naturalHeight - sizePixels.height, croppedAreaPercentages.y * mediaSize.naturalHeight / 100))\n });\n\n return {\n croppedAreaPercentages: croppedAreaPercentages,\n croppedAreaPixels: croppedAreaPixels\n };\n}\n/**\n * Ensure the returned value is between 0 and max\n * @param {number} max\n * @param {number} value\n */\n\n\nfunction limitArea(max, value) {\n return Math.min(max, Math.max(0, value));\n}\n\nfunction noOp(max, value) {\n return value;\n}\n/**\n * Compute the crop and zoom from the croppedAreaPixels\n * @param {{x: number, y: number, width: number, height: number}} croppedAreaPixels\n * @param {{width: number, height: number, naturalWidth: number, naturelHeight: number}} mediaSize width/height of the src media (default is size on the screen, natural is the original size)\n * @param {{width: number, height: number} | voiu} cropSize if this option is used by the user\n */\n\n\nfunction getZoomFromCroppedAreaPixels(croppedAreaPixels, mediaSize, cropSize) {\n var mediaZoom = mediaSize.width / mediaSize.naturalWidth;\n\n if (cropSize) {\n var _isHeightMaxSize = cropSize.height > cropSize.width;\n\n return _isHeightMaxSize ? cropSize.height / mediaZoom / croppedAreaPixels.height : cropSize.width / mediaZoom / croppedAreaPixels.width;\n }\n\n var aspect = croppedAreaPixels.width / croppedAreaPixels.height;\n var isHeightMaxSize = mediaSize.naturalWidth >= mediaSize.naturalHeight * aspect;\n return isHeightMaxSize ? mediaSize.naturalHeight / croppedAreaPixels.height : mediaSize.naturalWidth / croppedAreaPixels.width;\n}\n/**\n * Compute the crop and zoom from the croppedAreaPixels\n * @param {{x: number, y: number, width: number, height: number}} croppedAreaPixels\n * @param {{width: number, height: number, naturalWidth: number, naturelHeight: number}} mediaSize width/height of the src media (default is size on the screen, natural is the original size)\n * @param {{width: number, height: number} | voiu} cropSize if this option is used by the user\n */\n\n\nfunction getInitialCropFromCroppedAreaPixels(croppedAreaPixels, mediaSize, cropSize) {\n var mediaZoom = mediaSize.width / mediaSize.naturalWidth;\n var zoom = getZoomFromCroppedAreaPixels(croppedAreaPixels, mediaSize, cropSize);\n var cropZoom = mediaZoom * zoom;\n var crop = {\n x: ((mediaSize.naturalWidth - croppedAreaPixels.width) / 2 - croppedAreaPixels.x) * cropZoom,\n y: ((mediaSize.naturalHeight - croppedAreaPixels.height) / 2 - croppedAreaPixels.y) * cropZoom\n };\n return {\n crop: crop,\n zoom: zoom\n };\n}\n/**\n * Return the point that is the center of point a and b\n * @param {{x: number, y: number}} a\n * @param {{x: number, y: number}} b\n */\n\n\nfunction getCenter(a, b) {\n return {\n x: (b.x + a.x) / 2,\n y: (b.y + a.y) / 2\n };\n}\n/**\n *\n * Returns an x,y point once rotated around xMid,yMid\n * @param {number} x\n * @param {number} y\n * @param {number} xMid\n * @param {number} yMid\n * @param {number} degrees\n */\n\n\nfunction rotateAroundMidPoint(x, y, xMid, yMid, degrees) {\n var cos = Math.cos;\n var sin = Math.sin;\n var radian = degrees * Math.PI / 180; // Convert to radians\n // Subtract midpoints, so that midpoint is translated to origin\n // and add it in the end again\n\n var xr = (x - xMid) * cos(radian) - (y - yMid) * sin(radian) + xMid;\n var yr = (x - xMid) * sin(radian) + (y - yMid) * cos(radian) + yMid;\n return [xr, yr];\n}\n/**\n *\n * Returns the new bounding area of a rotated rectangle.\n * @param {number} width\n * @param {number} height\n * @param {number} rotation\n */\n\n\nfunction translateSize(width, height, rotation) {\n var centerX = width / 2;\n var centerY = height / 2;\n var outerBounds = [rotateAroundMidPoint(0, 0, centerX, centerY, rotation), rotateAroundMidPoint(width, 0, centerX, centerY, rotation), rotateAroundMidPoint(width, height, centerX, centerY, rotation), rotateAroundMidPoint(0, height, centerX, centerY, rotation)];\n\n var _outerBounds$reduce = outerBounds.reduce(function (res, _ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n x = _ref2[0],\n y = _ref2[1];\n\n return {\n minX: Math.min(x, 'minX' in res ? res.minX : x),\n maxX: Math.max(x, 'maxX' in res ? res.maxX : x),\n minY: Math.min(y, 'minY' in res ? res.minY : y),\n maxY: Math.max(y, 'maxY' in res ? res.maxY : y)\n };\n }, {}),\n minX = _outerBounds$reduce.minX,\n maxX = _outerBounds$reduce.maxX,\n minY = _outerBounds$reduce.minY,\n maxY = _outerBounds$reduce.maxY;\n\n return {\n width: maxX - minX,\n height: maxY - minY\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CropArea = exports.Video = exports.Img = exports.Container = void 0;\n\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Container = (0, _styled[\"default\"])('div')({\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: 'hidden',\n userSelect: 'none',\n touchAction: 'none',\n cursor: 'move'\n}, function (_ref) {\n var containerStyle = _ref.containerStyle;\n return _objectSpread({}, containerStyle);\n});\nexports.Container = Container;\nvar mediaStyles = {\n maxWidth: '100%',\n maxHeight: '100%',\n margin: 'auto',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n willChange: 'transform' // this improves performances and prevent painting issues on iOS Chrome\n\n};\nvar Img = (0, _styled[\"default\"])('img')(mediaStyles, function (_ref2) {\n var mediaStyle = _ref2.mediaStyle;\n return _objectSpread({}, mediaStyle);\n});\nexports.Img = Img;\nvar Video = (0, _styled[\"default\"])('video')(mediaStyles, function (_ref3) {\n var mediaStyle = _ref3.mediaStyle;\n return _objectSpread({}, mediaStyle);\n});\nexports.Video = Video;\nvar lineBorder = '1px solid rgba(255, 255, 255, 0.5)';\nvar cropperLines = {\n content: '\" \"',\n boxSizing: 'border-box',\n position: 'absolute',\n border: lineBorder\n};\nvar cropperArea = {\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n border: lineBorder,\n boxSizing: 'border-box',\n boxShadow: '0 0 0 9999em',\n color: 'rgba(0,0,0,0.5)',\n overflow: 'hidden'\n};\nvar gridLines = {\n '&::before': _objectSpread({}, cropperLines, {\n top: 0,\n bottom: 0,\n left: '33.33%',\n right: '33.33%',\n borderTop: 0,\n borderBottom: 0\n }),\n '&::after': _objectSpread({}, cropperLines, {\n top: '33.33%',\n bottom: '33.33%',\n left: 0,\n right: 0,\n borderLeft: 0,\n borderRight: 0\n })\n};\nvar roundShape = {\n borderRadius: '50%'\n};\nvar CropArea = (0, _styled[\"default\"])('div')({}, function (_ref4) {\n var cropShape = _ref4.cropShape,\n showGrid = _ref4.showGrid,\n cropAreaStyle = _ref4.cropAreaStyle;\n return _objectSpread({}, function () {\n switch (cropShape) {\n case 'round':\n return _objectSpread({}, cropperArea, roundShape);\n\n case 'rect':\n default:\n return cropperArea;\n }\n }(), showGrid ? gridLines : {}, cropAreaStyle);\n});\nexports.CropArea = CropArea;","/*!\n * Chart.js v2.9.4\n * https://www.chartjs.org\n * (c) 2020 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global = global || self, global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\nvar conversions = createCommonjsModule(function (module) {\n/* MIT license */\n\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in colorName) {\n\tif (colorName.hasOwnProperty(key)) {\n\t\treverseKeywords[colorName[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n};\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr),\n hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorName$1[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgba, a) {\n var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) \n + hexDouble(rgba[1])\n + hexDouble(rgba[2])\n + (\n (a >= 0 && a < 1)\n ? hexDouble(Math.round(a * 255))\n : \"\"\n );\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\nfunction isValidKey(key) {\r\n\treturn ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\r\n}\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: function(value) {\r\n\t\tif (Array.isArray && Array.isArray(value)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar type = Object.prototype.toString.call(value);\r\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is a finite number, else returns false\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t */\r\n\tisFinite: function(value) {\r\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {object|Array} loopable - The object or array to be iterated.\r\n\t * @param {function} fn - The function to call for each item.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see https://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = Object.create(source);\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @param {object} [options] - Merging options:\r\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {object} target - The target object in which all objects are merged into.\r\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\textend: Object.assign || function(target) {\r\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, dst, src) {\r\n\t\t\t\tdst[key] = src[key];\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t},\r\n\r\n\t_deprecated: function(scope, value, previous, current) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tconsole.warn(scope + ': \"' + previous +\r\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers_core = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nvar helpers_easing = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\r\nvar RAD_PER_DEG = PI / 180;\r\nvar DOUBLE_PI = PI * 2;\r\nvar HALF_PI = PI / 2;\r\nvar QUARTER_PI = PI / 4;\r\nvar TWO_THIRDS_PI = PI * 2 / 3;\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports$1 = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} width - The rectangle's width.\r\n\t * @param {number} height - The rectangle's height.\r\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\r\n\t\t\tvar left = x + r;\r\n\t\t\tvar top = y + r;\r\n\t\t\tvar right = x + width - r;\r\n\t\t\tvar bottom = y + height - r;\r\n\r\n\t\t\tctx.moveTo(x, top);\r\n\t\t\tif (left < right && top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\r\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\r\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\r\n\t\t\t} else if (left < right) {\r\n\t\t\t\tctx.moveTo(left, y);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\r\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\r\n\t\t\t} else if (top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\r\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\r\n\t\t\t} else {\r\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\r\n\t\t\t}\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\r\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.translate(x, y);\r\n\t\t\t\tctx.rotate(rad);\r\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\r\n\t\t\t\tctx.restore();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\r\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\r\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\r\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\r\n\t\t\t// circle with `radius`. For more details, see the following PRs:\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\r\n\t\t\tcornerRadius = radius * 0.516;\r\n\t\t\tsize = radius - cornerRadius;\r\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\r\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\r\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\r\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\r\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\r\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tif (!rotation) {\r\n\t\t\t\tsize = Math.SQRT1_2 * radius;\r\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'rectRot':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'cross':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the point is inside the rectangle\r\n\t * @param {object} point - The point to test\r\n\t * @param {object} area - The rectangle\r\n\t * @returns {boolean}\r\n\t * @private\r\n\t */\r\n\t_isPointInArea: function(point, area) {\r\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\r\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\r\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tvar stepped = target.steppedLine;\r\n\t\tif (stepped) {\r\n\t\t\tif (stepped === 'middle') {\r\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\r\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\r\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\r\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\nvar helpers_canvas = exports$1;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.clear = exports$1.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports$1.roundedRect.apply(exports$1, arguments);\r\n};\n\nvar defaults = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n// TODO(v3): remove 'global' from namespace. all default are global and\r\n// there's inconsistency around which options are under 'global'\r\ndefaults._set('global', {\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tdefaultLineHeight: 1.2,\r\n\tshowLines: true\r\n});\r\n\r\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\r\n\r\n/**\r\n * Converts the given font object into a CSS font string.\r\n * @param {object} font - A font object.\r\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n * @private\r\n */\r\nfunction toFontString(font) {\r\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (font.style ? font.style + ' ' : '')\r\n\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t+ font.size + 'px '\r\n\t\t+ font.family;\r\n}\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nvar helpers_options = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\r\n\t * else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers_core.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Parses font options and returns the font object.\r\n\t * @param {object} options - A object that contains font options to be parsed.\r\n\t * @return {object} The font object.\r\n\t * @todo Support font.* options and renamed to toFont().\r\n\t * @private\r\n\t */\r\n\t_parseFont: function(options) {\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\r\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\r\n\t\t\tweight: null,\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array} inputs - An array of values, falling back to the last value.\r\n\t * @param {object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @param {object} [info] - object to return information about resolution in\r\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index, info) {\r\n\t\tvar cacheable = true;\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\tif (info && !cacheable) {\r\n\t\t\t\t\tinfo.cacheable = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\n/**\r\n * @alias Chart.helpers.math\r\n * @namespace\r\n */\r\nvar exports$2 = {\r\n\t/**\r\n\t * Returns an array of factors sorted from 1 to sqrt(value)\r\n\t * @private\r\n\t */\r\n\t_factorize: function(value) {\r\n\t\tvar result = [];\r\n\t\tvar sqrt = Math.sqrt(value);\r\n\t\tvar i;\r\n\r\n\t\tfor (i = 1; i < sqrt; i++) {\r\n\t\t\tif (value % i === 0) {\r\n\t\t\t\tresult.push(i);\r\n\t\t\t\tresult.push(value / i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\r\n\t\t\tresult.push(sqrt);\r\n\t\t}\r\n\r\n\t\tresult.sort(function(a, b) {\r\n\t\t\treturn a - b;\r\n\t\t}).pop();\r\n\t\treturn result;\r\n\t},\r\n\r\n\tlog10: Math.log10 || function(x) {\r\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t// Check for whole powers of 10,\r\n\t\t// which due to floating point rounding error should be corrected.\r\n\t\tvar powerOf10 = Math.round(exponent);\r\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t}\r\n};\r\n\r\nvar helpers_math = exports$2;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\r\n * @namespace Chart.helpers.log10\r\n * @deprecated since version 2.9.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn rectX + rectX + width - x;\r\n\t\t},\r\n\t\tsetWidth: function(w) {\r\n\t\t\twidth = w;\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\tif (align === 'center') {\r\n\t\t\t\treturn align;\r\n\t\t\t}\r\n\t\t\treturn align === 'right' ? 'left' : 'right';\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x - value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, itemWidth) {\r\n\t\t\treturn x - itemWidth;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getLtrAdapter = function() {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn x;\r\n\t\t},\r\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\treturn align;\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x + value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\r\n\t\t\treturn x;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getAdapter = function(rtl, rectX, width) {\r\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\r\n};\r\n\r\nvar overrideTextDirection = function(ctx, direction) {\r\n\tvar style, original;\r\n\tif (direction === 'ltr' || direction === 'rtl') {\r\n\t\tstyle = ctx.canvas.style;\r\n\t\toriginal = [\r\n\t\t\tstyle.getPropertyValue('direction'),\r\n\t\t\tstyle.getPropertyPriority('direction'),\r\n\t\t];\r\n\r\n\t\tstyle.setProperty('direction', direction, 'important');\r\n\t\tctx.prevTextDirection = original;\r\n\t}\r\n};\r\n\r\nvar restoreTextDirection = function(ctx) {\r\n\tvar original = ctx.prevTextDirection;\r\n\tif (original !== undefined) {\r\n\t\tdelete ctx.prevTextDirection;\r\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\r\n\t}\r\n};\r\n\r\nvar helpers_rtl = {\r\n\tgetRtlAdapter: getAdapter,\r\n\toverrideTextDirection: overrideTextDirection,\r\n\trestoreTextDirection: restoreTextDirection,\r\n};\n\nvar helpers$1 = helpers_core;\r\nvar easing = helpers_easing;\r\nvar canvas = helpers_canvas;\r\nvar options = helpers_options;\r\nvar math = helpers_math;\r\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = chartjsColor(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = chartjsColor(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers$1.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers$1.extend(Element.prototype, {\r\n\t_type: undefined,\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers$1.extend({}, me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = helpers$1.extend({}, model);\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers$1.inherits;\r\n\r\nvar core_element = Element;\n\nvar exports$3 = core_element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\nvar core_animation = exports$3;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\n\ncore_defaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers$1.noop,\r\n\t\tonComplete: helpers$1.noop\r\n\t}\r\n});\r\n\r\nvar core_animations = {\r\n\tanimations: [],\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {number} duration - The animation duration in ms.\r\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\t\tanimation.startTime = Date.now();\r\n\t\tanimation.duration = duration;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tme.advance();\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function() {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart, numSteps, nextStep;\r\n\t\tvar i = 0;\r\n\r\n\t\t// 1 animation per chart, so we are looping charts here\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\t\t\tnumSteps = animation.numSteps;\r\n\r\n\t\t\t// Make sure that currentStep starts at 1\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\r\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\r\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\r\n\r\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= numSteps) {\r\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar resolve = helpers$1.options.resolve;\r\n\r\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n/**\r\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n */\r\nfunction listenArrayEvents(array, listener) {\r\n\tif (array._chartjs) {\r\n\t\tarray._chartjs.listeners.push(listener);\r\n\t\treturn;\r\n\t}\r\n\r\n\tObject.defineProperty(array, '_chartjs', {\r\n\t\tconfigurable: true,\r\n\t\tenumerable: false,\r\n\t\tvalue: {\r\n\t\t\tlisteners: [listener]\r\n\t\t}\r\n\t});\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\tvar base = array[key];\r\n\r\n\t\tObject.defineProperty(array, key, {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: function() {\r\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Removes the given array event listener and cleanup extra attached properties (such as\r\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n */\r\nfunction unlistenArrayEvents(array, listener) {\r\n\tvar stub = array._chartjs;\r\n\tif (!stub) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar listeners = stub.listeners;\r\n\tvar index = listeners.indexOf(listener);\r\n\tif (index !== -1) {\r\n\t\tlisteners.splice(index, 1);\r\n\t}\r\n\r\n\tif (listeners.length > 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tdelete array[key];\r\n\t});\r\n\r\n\tdelete array._chartjs;\r\n}\r\n\r\n// Base class for all dataset controllers (line, bar, etc)\r\nvar DatasetController = function(chart, datasetIndex) {\r\n\tthis.initialize(chart, datasetIndex);\r\n};\r\n\r\nhelpers$1.extend(DatasetController.prototype, {\r\n\r\n\t/**\r\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdatasetElementType: null,\r\n\r\n\t/**\r\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdataElementType: null,\r\n\r\n\t/**\r\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth'\r\n\t],\r\n\r\n\t/**\r\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'pointStyle'\r\n\t],\r\n\r\n\tinitialize: function(chart, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tme.chart = chart;\r\n\t\tme.index = datasetIndex;\r\n\t\tme.linkScales();\r\n\t\tme.addElements();\r\n\t\tme._type = me.getMeta().type;\r\n\t},\r\n\r\n\tupdateIndex: function(datasetIndex) {\r\n\t\tthis.index = datasetIndex;\r\n\t},\r\n\r\n\tlinkScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar chart = me.chart;\r\n\t\tvar scales = chart.scales;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scalesOpts = chart.options.scales;\r\n\r\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\r\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\r\n\t\t}\r\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\r\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\r\n\t\t}\r\n\t},\r\n\r\n\tgetDataset: function() {\r\n\t\treturn this.chart.data.datasets[this.index];\r\n\t},\r\n\r\n\tgetMeta: function() {\r\n\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t},\r\n\r\n\tgetScaleForId: function(scaleID) {\r\n\t\treturn this.chart.scales[scaleID];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScale: function() {\r\n\t\treturn this.getScaleForId(this._getValueScaleId());\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScale: function() {\r\n\t\treturn this.getScaleForId(this._getIndexScaleId());\r\n\t},\r\n\r\n\treset: function() {\r\n\t\tthis._update(true);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroy: function() {\r\n\t\tif (this._data) {\r\n\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t}\r\n\t},\r\n\r\n\tcreateMetaDataset: function() {\r\n\t\tvar me = this;\r\n\t\tvar type = me.datasetElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index\r\n\t\t});\r\n\t},\r\n\r\n\tcreateMetaData: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar type = me.dataElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index\r\n\t\t});\r\n\t},\r\n\r\n\taddElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data || [];\r\n\t\tvar metaData = meta.data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t}\r\n\r\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t},\r\n\r\n\taddElementAndReset: function(index) {\r\n\t\tvar element = this.createMetaData(index);\r\n\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\tthis.updateElement(element, index, true);\r\n\t},\r\n\r\n\tbuildOrUpdateElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t// the internal meta data accordingly.\r\n\t\tif (me._data !== data) {\r\n\t\t\tif (me._data) {\r\n\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (data && Object.isExtensible(data)) {\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t}\r\n\t\t\tme._data = data;\r\n\t\t}\r\n\r\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\tme.resyncElements();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the merged user-supplied and default dataset-level options\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tme._config = helpers$1.merge(Object.create(null), [\r\n\t\t\tme.chart.options.datasets[me._type],\r\n\t\t\tme.getDataset(),\r\n\t\t], {\r\n\t\t\tmerger: function(key, target, source) {\r\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\r\n\t\t\t\t\thelpers$1._merger(key, target, source);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_update: function(reset) {\r\n\t\tvar me = this;\r\n\t\tme._configure();\r\n\t\tme._cachedDataOpts = null;\r\n\t\tme.update(reset);\r\n\t},\r\n\r\n\tupdate: helpers$1.noop,\r\n\r\n\ttransition: function(easingValue) {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].transition(easingValue);\r\n\t\t}\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.draw();\r\n\t\t}\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].draw();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a set of predefined style properties that should be used to represent the dataset\r\n\t * or the data if the index is specified\r\n\t * @param {number} index - data index\r\n\t * @return {IStyleInterface} style object\r\n\t */\r\n\tgetStyle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = meta.dataset;\r\n\t\tvar style;\r\n\r\n\t\tme._configure();\r\n\t\tif (dataset && index === undefined) {\r\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\r\n\t\t} else {\r\n\t\t\tindex = index || 0;\r\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\r\n\t\t}\r\n\r\n\t\tif (style.fill === false || style.fill === null) {\r\n\t\t\tstyle.backgroundColor = style.borderColor;\r\n\t\t}\r\n\r\n\t\treturn style;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element, hover) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._datasetElementOptions;\r\n\t\tvar values = {};\r\n\t\tvar i, ilen, key, readKey;\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index,\r\n\t\t\thover: hover\r\n\t\t};\r\n\r\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\tkey = elementOptions[i];\r\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\r\n\t\t\tvalues[key] = resolve([\r\n\t\t\t\tcustom[readKey],\r\n\t\t\t\tdatasetOpts[readKey],\r\n\t\t\t\toptions[readKey]\r\n\t\t\t], context);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(element, index) {\r\n\t\tvar me = this;\r\n\t\tvar custom = element && element.custom;\r\n\t\tvar cached = me._cachedDataOpts;\r\n\t\tif (cached && !custom) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._dataElementOptions;\r\n\t\tvar values = {};\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\r\n\t\tvar info = {cacheable: !custom};\r\n\r\n\t\tvar keys, i, ilen, key;\r\n\r\n\t\tcustom = custom || {};\r\n\r\n\t\tif (helpers$1.isArray(elementOptions)) {\r\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\t\tkey = elementOptions[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tkeys = Object.keys(elementOptions);\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[elementOptions[key]],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (info.cacheable) {\r\n\t\t\tme._cachedDataOpts = Object.freeze(values);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tremoveHoverStyle: function(element) {\r\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\r\n\t\tdelete element.$previousStyle;\r\n\t},\r\n\r\n\tsetHoverStyle: function(element) {\r\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\tvar index = element._index;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar model = element._model;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\telement.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\r\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\r\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_removeDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\r\n\t\tif (element) {\r\n\t\t\tthis.removeHoverStyle(element);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_setDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\t\tvar prev = {};\r\n\t\tvar i, ilen, key, keys, hoverOptions, model;\r\n\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel = element._model;\r\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\r\n\r\n\t\tkeys = Object.keys(hoverOptions);\r\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\tkey = keys[i];\r\n\t\t\tprev[key] = model[key];\r\n\t\t\tmodel[key] = hoverOptions[key];\r\n\t\t}\r\n\r\n\t\telement.$previousStyle = prev;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tresyncElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data;\r\n\t\tvar numMeta = meta.data.length;\r\n\t\tvar numData = data.length;\r\n\r\n\t\tif (numData < numMeta) {\r\n\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t} else if (numData > numMeta) {\r\n\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinsertElements: function(start, count) {\r\n\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\tthis.addElementAndReset(start + i);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPush: function() {\r\n\t\tvar count = arguments.length;\r\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPop: function() {\r\n\t\tthis.getMeta().data.pop();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataShift: function() {\r\n\t\tthis.getMeta().data.shift();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataSplice: function(start, count) {\r\n\t\tthis.getMeta().data.splice(start, count);\r\n\t\tthis.insertElements(start, arguments.length - 2);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataUnshift: function() {\r\n\t\tthis.insertElements(0, arguments.length);\r\n\t}\r\n});\r\n\r\nDatasetController.extend = helpers$1.inherits;\r\n\r\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2,\r\n\t\t\tborderAlign: 'center'\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction clipArc(ctx, arc) {\r\n\tvar startAngle = arc.startAngle;\r\n\tvar endAngle = arc.endAngle;\r\n\tvar pixelMargin = arc.pixelMargin;\r\n\tvar angleMargin = pixelMargin / arc.outerRadius;\r\n\tvar x = arc.x;\r\n\tvar y = arc.y;\r\n\r\n\t// Draw an inner border by cliping the arc and drawing a double-width border\r\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\r\n\tctx.beginPath();\r\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\r\n\tif (arc.innerRadius > pixelMargin) {\r\n\t\tangleMargin = pixelMargin / arc.innerRadius;\r\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\r\n\t} else {\r\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\r\n\t}\r\n\tctx.closePath();\r\n\tctx.clip();\r\n}\r\n\r\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\r\n\tvar endAngle = arc.endAngle;\r\n\tvar i;\r\n\r\n\tif (inner) {\r\n\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\tclipArc(ctx, arc);\r\n\t\tarc.endAngle = endAngle;\r\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\r\n\t\t\tarc.endAngle += TAU;\r\n\t\t\tarc.fullCircles--;\r\n\t\t}\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction drawBorder(ctx, vm, arc) {\r\n\tvar inner = vm.borderAlign === 'inner';\r\n\r\n\tif (inner) {\r\n\t\tctx.lineWidth = vm.borderWidth * 2;\r\n\t\tctx.lineJoin = 'round';\r\n\t} else {\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tctx.lineJoin = 'bevel';\r\n\t}\r\n\r\n\tif (arc.fullCircles) {\r\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\r\n\t}\r\n\r\n\tif (inner) {\r\n\t\tclipArc(ctx, arc);\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n}\r\n\r\nvar element_arc = core_element.extend({\r\n\t_type: 'arc',\r\n\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\tvar pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar angle = pointRelativePosition.angle;\r\n\t\t\tvar distance = pointRelativePosition.distance;\r\n\r\n\t\t\t// Sanitise angle range\r\n\t\t\tvar startAngle = vm.startAngle;\r\n\t\t\tvar endAngle = vm.endAngle;\r\n\t\t\twhile (endAngle < startAngle) {\r\n\t\t\t\tendAngle += TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += TAU;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if within the range of the open/close angle\r\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\r\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\r\n\r\n\t\t\treturn (betweenAngles && withinRadius);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\r\n\t\treturn {\r\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\r\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\r\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\r\n\r\n\t\treturn {\r\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\r\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\r\n\t\tvar arc = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tinnerRadius: vm.innerRadius,\r\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\r\n\t\t\tpixelMargin: pixelMargin,\r\n\t\t\tstartAngle: vm.startAngle,\r\n\t\t\tendAngle: vm.endAngle,\r\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\r\n\t\t};\r\n\t\tvar i;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\r\n\t\tif (arc.fullCircles) {\r\n\t\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\t\tctx.closePath();\r\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\t\t\tctx.fill();\r\n\t\t\t}\r\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\tctx.closePath();\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tdrawBorder(ctx, vm, arc);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: defaultColor,\r\n\t\t\tborderCapStyle: 'butt',\r\n\t\t\tborderDash: [],\r\n\t\t\tborderDashOffset: 0.0,\r\n\t\t\tborderJoinStyle: 'miter',\r\n\t\t\tcapBezierPoints: true,\r\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar element_line = core_element.extend({\r\n\t_type: 'line',\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar vm = me._view;\r\n\t\tvar ctx = me._chart.ctx;\r\n\t\tvar spanGaps = vm.spanGaps;\r\n\t\tvar points = me._children.slice(); // clone array\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar closePath = me._loop;\r\n\t\tvar index, previous, currentVM;\r\n\r\n\t\tif (!points.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (me._loop) {\r\n\t\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\r\n\t\t\t\t// If the line has an open path, shift the point array\r\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\r\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\r\n\t\t\t\t\tclosePath = spanGaps;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If the line has a close path, add the first point again\r\n\t\t\tif (closePath) {\r\n\t\t\t\tpoints.push(points[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\t// Stroke Line Options\r\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\r\n\r\n\t\t// IE 9 and 10 do not support line dash\r\n\t\tif (ctx.setLineDash) {\r\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\r\n\t\t}\r\n\r\n\t\tctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\r\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\r\n\r\n\t\t// Stroke Line\r\n\t\tctx.beginPath();\r\n\r\n\t\t// First point moves to it's starting position no matter what\r\n\t\tcurrentVM = points[0]._view;\r\n\t\tif (!currentVM.skip) {\r\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\tlastDrawnIndex = 0;\r\n\t\t}\r\n\r\n\t\tfor (index = 1; index < points.length; ++index) {\r\n\t\t\tcurrentVM = points[index]._view;\r\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\r\n\r\n\t\t\tif (!currentVM.skip) {\r\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Line to next point\r\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\r\n\t\t\t\t}\r\n\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (closePath) {\r\n\t\t\tctx.closePath();\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor$1 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tpoint: {\r\n\t\t\tradius: 3,\r\n\t\t\tpointStyle: 'circle',\r\n\t\t\tbackgroundColor: defaultColor$1,\r\n\t\t\tborderColor: defaultColor$1,\r\n\t\t\tborderWidth: 1,\r\n\t\t\t// Hover\r\n\t\t\thitRadius: 1,\r\n\t\t\thoverRadius: 4,\r\n\t\t\thoverBorderWidth: 1\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction xRange(mouseX) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nfunction yRange(mouseY) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nvar element_point = core_element.extend({\r\n\t_type: 'point',\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\r\n\t},\r\n\r\n\tinLabelRange: xRange,\r\n\tinXRange: xRange,\r\n\tinYRange: yRange,\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tpadding: vm.radius + vm.borderWidth\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar vm = this._view;\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar pointStyle = vm.pointStyle;\r\n\t\tvar rotation = vm.rotation;\r\n\t\tvar radius = vm.radius;\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\r\n\r\n\t\tif (vm.skip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clipping for Points.\r\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaultColor$2,\r\n\t\t\tborderColor: defaultColor$2,\r\n\t\t\tborderSkipped: 'bottom',\r\n\t\t\tborderWidth: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction isVertical(vm) {\r\n\treturn vm && vm.width !== undefined;\r\n}\r\n\r\n/**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\r\nfunction getBarBounds(vm) {\r\n\tvar x1, x2, y1, y2, half;\r\n\r\n\tif (isVertical(vm)) {\r\n\t\thalf = vm.width / 2;\r\n\t\tx1 = vm.x - half;\r\n\t\tx2 = vm.x + half;\r\n\t\ty1 = Math.min(vm.y, vm.base);\r\n\t\ty2 = Math.max(vm.y, vm.base);\r\n\t} else {\r\n\t\thalf = vm.height / 2;\r\n\t\tx1 = Math.min(vm.x, vm.base);\r\n\t\tx2 = Math.max(vm.x, vm.base);\r\n\t\ty1 = vm.y - half;\r\n\t\ty2 = vm.y + half;\r\n\t}\r\n\r\n\treturn {\r\n\t\tleft: x1,\r\n\t\ttop: y1,\r\n\t\tright: x2,\r\n\t\tbottom: y2\r\n\t};\r\n}\r\n\r\nfunction swap(orig, v1, v2) {\r\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\r\n}\r\n\r\nfunction parseBorderSkipped(vm) {\r\n\tvar edge = vm.borderSkipped;\r\n\tvar res = {};\r\n\r\n\tif (!edge) {\r\n\t\treturn res;\r\n\t}\r\n\r\n\tif (vm.horizontal) {\r\n\t\tif (vm.base > vm.x) {\r\n\t\t\tedge = swap(edge, 'left', 'right');\r\n\t\t}\r\n\t} else if (vm.base < vm.y) {\r\n\t\tedge = swap(edge, 'bottom', 'top');\r\n\t}\r\n\r\n\tres[edge] = true;\r\n\treturn res;\r\n}\r\n\r\nfunction parseBorderWidth(vm, maxW, maxH) {\r\n\tvar value = vm.borderWidth;\r\n\tvar skip = parseBorderSkipped(vm);\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = +value.top || 0;\r\n\t\tr = +value.right || 0;\r\n\t\tb = +value.bottom || 0;\r\n\t\tl = +value.left || 0;\r\n\t} else {\r\n\t\tt = r = b = l = +value || 0;\r\n\t}\r\n\r\n\treturn {\r\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\r\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\r\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\r\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\r\n\t};\r\n}\r\n\r\nfunction boundingRects(vm) {\r\n\tvar bounds = getBarBounds(vm);\r\n\tvar width = bounds.right - bounds.left;\r\n\tvar height = bounds.bottom - bounds.top;\r\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\r\n\r\n\treturn {\r\n\t\touter: {\r\n\t\t\tx: bounds.left,\r\n\t\t\ty: bounds.top,\r\n\t\t\tw: width,\r\n\t\t\th: height\r\n\t\t},\r\n\t\tinner: {\r\n\t\t\tx: bounds.left + border.l,\r\n\t\t\ty: bounds.top + border.t,\r\n\t\t\tw: width - border.l - border.r,\r\n\t\t\th: height - border.t - border.b\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction inRange(vm, x, y) {\r\n\tvar skipX = x === null;\r\n\tvar skipY = y === null;\r\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\r\n\r\n\treturn bounds\r\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\r\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\r\n}\r\n\r\nvar element_rectangle = core_element.extend({\r\n\t_type: 'rectangle',\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar rects = boundingRects(vm);\r\n\t\tvar outer = rects.outer;\r\n\t\tvar inner = rects.inner;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\r\n\r\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\r\n\t\tctx.clip();\r\n\t\tctx.fillStyle = vm.borderColor;\r\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\r\n\t\tctx.fill('evenodd');\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\theight: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.base - vm.y;\r\n\t},\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\treturn inRange(this._view, mouseX, mouseY);\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn isVertical(vm)\r\n\t\t\t? inRange(vm, mouseX, null)\r\n\t\t\t: inRange(vm, null, mouseY);\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\treturn inRange(this._view, mouseX, null);\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\treturn inRange(this._view, null, mouseY);\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar x, y;\r\n\t\tif (isVertical(vm)) {\r\n\t\t\tx = vm.x;\r\n\t\t\ty = (vm.y + vm.base) / 2;\r\n\t\t} else {\r\n\t\t\tx = (vm.x + vm.base) / 2;\r\n\t\t\ty = vm.y;\r\n\t\t}\r\n\r\n\t\treturn {x: x, y: y};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\r\n\t\treturn isVertical(vm)\r\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\r\n\t\t\t: vm.height * Math.abs(vm.x - vm.base);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t}\r\n});\n\nvar elements = {};\r\nvar Arc = element_arc;\r\nvar Line = element_line;\r\nvar Point = element_point;\r\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\r\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('bar', {\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tbar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\r\nfunction computeMinSampleSize(scale, pixels) {\r\n\tvar min = scale._length;\r\n\tvar prev, curr, i, ilen;\r\n\r\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\r\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\r\n\t\tprev = curr;\r\n\t}\r\n\r\n\treturn min;\r\n}\r\n\r\n/**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\r\nfunction computeFitCategoryTraits(index, ruler, options) {\r\n\tvar thickness = options.barThickness;\r\n\tvar count = ruler.stackCount;\r\n\tvar curr = ruler.pixels[index];\r\n\tvar min = helpers$1.isNullOrUndef(thickness)\r\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\r\n\t\t: -1;\r\n\tvar size, ratio;\r\n\r\n\tif (helpers$1.isNullOrUndef(thickness)) {\r\n\t\tsize = min * options.categoryPercentage;\r\n\t\tratio = options.barPercentage;\r\n\t} else {\r\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\r\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\r\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\r\n\t\tsize = thickness * count;\r\n\t\tratio = 1;\r\n\t}\r\n\r\n\treturn {\r\n\t\tchunk: size / count,\r\n\t\tratio: ratio,\r\n\t\tstart: curr - (size / 2)\r\n\t};\r\n}\r\n\r\n/**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\r\nfunction computeFlexCategoryTraits(index, ruler, options) {\r\n\tvar pixels = ruler.pixels;\r\n\tvar curr = pixels[index];\r\n\tvar prev = index > 0 ? pixels[index - 1] : null;\r\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\r\n\tvar percent = options.categoryPercentage;\r\n\tvar start, size;\r\n\r\n\tif (prev === null) {\r\n\t\t// first data: its size is double based on the next point or,\r\n\t\t// if it's also the last data, we use the scale size.\r\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\r\n\t}\r\n\r\n\tif (next === null) {\r\n\t\t// last data: its size is also double based on the previous point.\r\n\t\tnext = curr + curr - prev;\r\n\t}\r\n\r\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\r\n\tsize = Math.abs(next - prev) / 2 * percent;\r\n\r\n\treturn {\r\n\t\tchunk: size / ruler.stackCount,\r\n\t\tratio: options.barPercentage,\r\n\t\tstart: start\r\n\t};\r\n}\r\n\r\nvar controller_bar = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Rectangle,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderSkipped',\r\n\t\t'borderWidth',\r\n\t\t'barPercentage',\r\n\t\t'barThickness',\r\n\t\t'categoryPercentage',\r\n\t\t'maxBarThickness',\r\n\t\t'minBarLength'\r\n\t],\r\n\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta, scaleOpts;\r\n\r\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\tmeta = me.getMeta();\r\n\t\tmeta.stack = me.getDataset().stack;\r\n\t\tmeta.bar = true;\r\n\r\n\t\tscaleOpts = me._getIndexScale().options;\r\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\r\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\r\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\r\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\r\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._ruler = me.getRuler();\r\n\r\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(rectangle, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\r\n\r\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\trectangle._datasetIndex = me.index;\r\n\t\trectangle._index = index;\r\n\t\trectangle._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderSkipped: options.borderSkipped,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\tdatasetLabel: dataset.label,\r\n\t\t\tlabel: me.chart.data.labels[index]\r\n\t\t};\r\n\r\n\t\tif (helpers$1.isArray(dataset.data[index])) {\r\n\t\t\trectangle._model.borderSkipped = null;\r\n\t\t}\r\n\r\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\r\n\r\n\t\trectangle.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\r\n\t\tvar me = this;\r\n\t\tvar model = rectangle._model;\r\n\t\tvar vscale = me._getValueScale();\r\n\t\tvar base = vscale.getBasePixel();\r\n\t\tvar horizontal = vscale.isHorizontal();\r\n\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\r\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\r\n\r\n\t\tmodel.horizontal = horizontal;\r\n\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stacks based on groups and bar visibility.\r\n\t * @param {number} [last] - The dataset index\r\n\t * @returns {string[]} The list of stack IDs\r\n\t * @private\r\n\t */\r\n\t_getStacks: function(last) {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar stacks = [];\r\n\t\tvar i, meta;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\t// stacked | meta.stack\r\n\t\t\t// | found | not found | undefined\r\n\t\t\t// false | x | x | x\r\n\t\t\t// true | | x |\r\n\t\t\t// undefined | | x | x\r\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\r\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\r\n\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t}\r\n\t\t\tif (meta.index === last) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn stacks;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t * @private\r\n\t */\r\n\tgetStackCount: function() {\r\n\t\treturn this._getStacks().length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t * @param {number} [datasetIndex] - The dataset index\r\n\t * @param {string} [name] - The stack name to find\r\n\t * @returns {number} The stack index\r\n\t * @private\r\n\t */\r\n\tgetStackIndex: function(datasetIndex, name) {\r\n\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\tvar index = (name !== undefined)\r\n\t\t\t? stacks.indexOf(name)\r\n\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\treturn (index === -1)\r\n\t\t\t? stacks.length - 1\r\n\t\t\t: index;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetRuler: function() {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar pixels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tpixels: pixels,\r\n\t\t\tstart: scale._startPixel,\r\n\t\t\tend: scale._endPixel,\r\n\t\t\tstackCount: me.getStackCount(),\r\n\t\t\tscale: scale\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Note: pixel values are not clamped to the scale area.\r\n\t * @private\r\n\t */\r\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\r\n\t\tvar minBarLength = options.minBarLength;\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar stack = me.getMeta().stack;\r\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\r\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\r\n\r\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\timeta = metasets[i];\r\n\r\n\t\t\t\tif (imeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (imeta.stack === stack) {\r\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\r\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\r\n\r\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\tstart += ivalue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbase = scale.getPixelForValue(start);\r\n\t\thead = scale.getPixelForValue(start + length);\r\n\t\tsize = head - base;\r\n\r\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\r\n\t\t\tsize = minBarLength;\r\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\r\n\t\t\t\thead = base - minBarLength;\r\n\t\t\t} else {\r\n\t\t\t\thead = base + minBarLength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tsize: size,\r\n\t\t\tbase: base,\r\n\t\t\thead: head,\r\n\t\t\tcenter: head + size / 2\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\r\n\t\tvar me = this;\r\n\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\tvar size = Math.min(\r\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\r\n\t\t\trange.chunk * range.ratio);\r\n\r\n\t\treturn {\r\n\t\t\tbase: center - size / 2,\r\n\t\t\thead: center + size / 2,\r\n\t\t\tcenter: center,\r\n\t\t\tsize: size\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar ilen = rects.length;\r\n\t\tvar i = 0;\r\n\r\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\r\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\r\n\t\t\t\trects[i].draw();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\r\n\t\tvar indexOpts = me._getIndexScale().options;\r\n\t\tvar valueOpts = me._getValueScale().options;\r\n\r\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\r\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\r\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\r\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\r\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\r\nvar resolve$1 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('bubble', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\r\n\t\t\tposition: 'bottom',\r\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\r\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_bubble = core_datasetController.extend({\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t\t'hoverRadius',\r\n\t\t'hitRadius',\r\n\t\t'pointStyle',\r\n\t\t'rotation'\r\n\t],\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data;\r\n\r\n\t\t// Update Points\r\n\t\thelpers$1.each(points, function(point, index) {\r\n\t\t\tme.updateElement(point, index, reset);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar data = me.getDataset().data[index];\r\n\t\tvar dsIndex = me.index;\r\n\r\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = dsIndex;\r\n\t\tpoint._index = index;\r\n\t\tpoint._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\thitRadius: options.hitRadius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t};\r\n\r\n\t\tpoint.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(point, index) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar data = dataset.data[index] || {};\r\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// In case values were cached (and thus frozen), we need to clone the values\r\n\t\tif (me._cachedDataOpts === values) {\r\n\t\t\tvalues = helpers$1.extend({}, values);\r\n\t\t}\r\n\r\n\t\t// Custom radius resolution\r\n\t\tvalues.radius = resolve$1([\r\n\t\t\tcustom.radius,\r\n\t\t\tdata.r,\r\n\t\t\tme._config.radius,\r\n\t\t\tchart.options.elements.point.radius\r\n\t\t], context, index);\r\n\r\n\t\treturn values;\r\n\t}\r\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\r\n\r\nvar PI$1 = Math.PI;\r\nvar DOUBLE_PI$1 = PI$1 * 2;\r\nvar HALF_PI$1 = PI$1 / 2;\r\n\r\ncore_defaults._set('doughnut', {\r\n\tanimation: {\r\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\r\n\t\tanimateRotate: true,\r\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\r\n\t\tanimateScale: false\r\n\t},\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t// toggle visibility of index if exists\r\n\t\t\t\tif (meta.data[index]) {\r\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// The percentage of the chart that we cut out of the middle.\r\n\tcutoutPercentage: 50,\r\n\r\n\t// The rotation of the chart, where the first data arc begins.\r\n\trotation: -HALF_PI$1,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: DOUBLE_PI$1,\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\r\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n\r\n\t\t\t\tif (helpers$1.isArray(dataLabel)) {\r\n\t\t\t\t\t// show value on first line of multiline label\r\n\t\t\t\t\t// need to clone because we are changing the value\r\n\t\t\t\t\tdataLabel = dataLabel.slice();\r\n\t\t\t\t\tdataLabel[0] += value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataLabel += value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_doughnut = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\tgetRingIndex: function(datasetIndex) {\r\n\t\tvar ringIndex = 0;\r\n\r\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t++ringIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringIndex;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar ratioX = 1;\r\n\t\tvar ratioY = 1;\r\n\t\tvar offsetX = 0;\r\n\t\tvar offsetY = 0;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar arcs = meta.data;\r\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\r\n\t\tvar circumference = opts.circumference;\r\n\t\tvar chartWeight = me._getRingWeight(me.index);\r\n\t\tvar maxWidth, maxHeight, i, ilen;\r\n\r\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\r\n\t\tif (circumference < DOUBLE_PI$1) {\r\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\r\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\r\n\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\tvar startX = Math.cos(startAngle);\r\n\t\t\tvar startY = Math.sin(startAngle);\r\n\t\t\tvar endX = Math.cos(endAngle);\r\n\t\t\tvar endY = Math.sin(endAngle);\r\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\r\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\r\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\r\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\r\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tratioX = (maxX - minX) / 2;\r\n\t\t\tratioY = (maxY - minY) / 2;\r\n\t\t\toffsetX = -(maxX + minX) / 2;\r\n\t\t\toffsetY = -(maxY + minY) / 2;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t}\r\n\r\n\t\tchart.borderWidth = me.getMaxBorderWidth();\r\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\r\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\r\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\r\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\r\n\t\tchart.offsetX = offsetX * chart.outerRadius;\r\n\t\tchart.offsetY = offsetY * chart.outerRadius;\r\n\r\n\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\r\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\r\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\tendAngle: endAngle,\r\n\t\t\t\tcircumference: circumference,\r\n\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar model = arc._model;\r\n\r\n\t\t// Set correct angles if not resetting\r\n\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t} else {\r\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t}\r\n\r\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t}\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcalculateTotal: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar total = 0;\r\n\t\tvar value;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tvalue = dataset.data[index];\r\n\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/* if (total === 0) {\r\n\t\t\ttotal = NaN;\r\n\t\t}*/\r\n\r\n\t\treturn total;\r\n\t},\r\n\r\n\tcalculateCircumference: function(value) {\r\n\t\tvar total = this.getMeta().total;\r\n\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// gets the max border or hover width to properly scale pie charts\r\n\tgetMaxBorderWidth: function(arcs) {\r\n\t\tvar me = this;\r\n\t\tvar max = 0;\r\n\t\tvar chart = me.chart;\r\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\r\n\r\n\t\tif (!arcs) {\r\n\t\t\t// Find the outmost visible dataset\r\n\t\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tarcs = meta.data;\r\n\t\t\t\t\tif (i !== me.index) {\r\n\t\t\t\t\t\tcontroller = meta.controller;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!arcs) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarc = arcs[i];\r\n\t\t\tif (controller) {\r\n\t\t\t\tcontroller._configure();\r\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\r\n\t\t\t} else {\r\n\t\t\t\toptions = arc._options;\r\n\t\t\t}\r\n\t\t\tif (options.borderAlign !== 'inner') {\r\n\t\t\t\tborderWidth = options.borderWidth;\r\n\t\t\t\thoverWidth = options.hoverBorderWidth;\r\n\r\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\r\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn max;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\r\n\t * @private\r\n\t */\r\n\t_getRingWeightOffset: function(datasetIndex) {\r\n\t\tvar ringWeightOffset = 0;\r\n\r\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\r\n\t\t\tif (this.chart.isDatasetVisible(i)) {\r\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringWeightOffset;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getRingWeight: function(dataSetIndex) {\r\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the sum of all visibile data set weights. This value can be 0.\r\n\t * @private\r\n\t */\r\n\t_getVisibleDatasetWeightTotal: function() {\r\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\r\n\t}\r\n});\n\ncore_defaults._set('horizontalBar', {\r\n\thover: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tposition: 'left',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}]\r\n\t},\r\n\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tborderSkipped: 'left'\r\n\t\t}\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\thorizontalBar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_horizontalBar = controller_bar.extend({\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t}\r\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\r\nvar resolve$2 = helpers$1.options.resolve;\r\nvar isPointInArea = helpers$1.canvas._isPointInArea;\r\n\r\ncore_defaults._set('line', {\r\n\tshowLines: true,\r\n\tspanGaps: false,\r\n\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tid: 'x-axis-0'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\nfunction scaleClip(scale, halfBorderWidth) {\r\n\tvar tickOpts = scale && scale.options.ticks || {};\r\n\tvar reverse = tickOpts.reverse;\r\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\r\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\r\n\treturn {\r\n\t\tstart: reverse ? max : min,\r\n\t\tend: reverse ? min : max\r\n\t};\r\n}\r\n\r\nfunction defaultClip(xScale, yScale, borderWidth) {\r\n\tvar halfBorderWidth = borderWidth / 2;\r\n\tvar x = scaleClip(xScale, halfBorderWidth);\r\n\tvar y = scaleClip(yScale, halfBorderWidth);\r\n\r\n\treturn {\r\n\t\ttop: y.end,\r\n\t\tright: x.end,\r\n\t\tbottom: y.start,\r\n\t\tleft: x.start\r\n\t};\r\n}\r\n\r\nfunction toClip(value) {\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = value.top;\r\n\t\tr = value.right;\r\n\t\tb = value.bottom;\r\n\t\tl = value.left;\r\n\t} else {\r\n\t\tt = r = b = l = value;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttop: t,\r\n\t\tright: r,\r\n\t\tbottom: b,\r\n\t\tleft: l\r\n\t};\r\n}\r\n\r\n\r\nvar controller_line = core_datasetController.extend({\r\n\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth',\r\n\t\t'cubicInterpolationMode',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar options = me.chart.options;\r\n\t\tvar config = me._config;\r\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\r\n\r\n\t\t// Update Line\r\n\t\tif (showLine) {\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\t\tconfig.lineTension = config.tension;\r\n\t\t\t}\r\n\r\n\t\t\t// Utility\r\n\t\t\tline._scale = me._yScale;\r\n\t\t\tline._datasetIndex = me.index;\r\n\t\t\t// Data\r\n\t\t\tline._children = points;\r\n\t\t\t// Model\r\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\t\tline.pivot();\r\n\t\t}\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t}\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar datasetIndex = me.index;\r\n\t\tvar value = dataset.data[index];\r\n\t\tvar xScale = me._xScale;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar x, y;\r\n\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\r\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t// Utility\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = datasetIndex;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\r\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element) {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = me.chart.options;\r\n\t\tvar lineOptions = options.elements.line;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\t// The default behavior of lines is to break at null values, according\r\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t// This option gives lines the ability to span gaps\r\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\r\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\r\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar sumPos = 0;\r\n\t\tvar sumNeg = 0;\r\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\r\n\r\n\t\tif (yScale.options.stacked) {\r\n\t\t\trightValue = +yScale.getRightValue(value);\r\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\r\n\t\t\tilen = metasets.length;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tdsMeta = metasets[i];\r\n\t\t\t\tif (dsMeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\r\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\r\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\r\n\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (rightValue < 0) {\r\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t}\r\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t}\r\n\t\treturn yScale.getPixelForValue(value);\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (lineModel.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\r\n\t\t\thelpers$1.splineCurveMonotone(points);\r\n\t\t} else {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\r\n\t\t\t\t\tlineModel.tension\r\n\t\t\t\t);\r\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (chart.options.elements.line.capBezierPoints) {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tif (isPointInArea(model, area)) {\r\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data || [];\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar i = 0;\r\n\t\tvar ilen = points.length;\r\n\t\tvar clip;\r\n\r\n\t\tif (me._showLine) {\r\n\t\t\tclip = meta.dataset._model.clip;\r\n\r\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\r\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\r\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\r\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\r\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t\t}\r\n\r\n\t\t// Draw the points\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tpoints[i].draw(area);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\r\n\t},\r\n});\n\nvar resolve$3 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('polarArea', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear',\r\n\t\tangleLines: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tgridLines: {\r\n\t\t\tcircular: true\r\n\t\t},\r\n\t\tpointLabels: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tbeginAtZero: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Boolean - Whether to animate the rotation of the chart\r\n\tanimation: {\r\n\t\tanimateRotate: true,\r\n\t\tanimateScale: true\r\n\t},\r\n\r\n\tstartAngle: -0.5 * Math.PI,\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_polarArea = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\tvar starts = me._starts = [];\r\n\t\tvar angles = me._angles = [];\r\n\t\tvar arcs = meta.data;\r\n\t\tvar i, ilen, angle;\r\n\r\n\t\tme._updateRadius();\r\n\r\n\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\tstarts[i] = start;\r\n\t\t\tangle = me._computeAngle(i);\r\n\t\t\tangles[i] = angle;\r\n\t\t\tstart += angle;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateRadius: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\r\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar scale = chart.scale;\r\n\t\tvar labels = chart.data.labels;\r\n\r\n\t\tvar centerX = scale.xCenter;\r\n\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar startAngle = me._starts[index];\r\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\t\t\t_scale: scale,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX,\r\n\t\t\t\ty: centerY,\r\n\t\t\t\tinnerRadius: 0,\r\n\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcountVisibleElements: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar count = 0;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn count;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeAngle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar count = this.getMeta().count;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\r\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: me.chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\treturn resolve$3([\r\n\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t(2 * Math.PI) / count\r\n\t\t], context, index);\r\n\t}\r\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\r\ncore_defaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\n// Pie charts are Doughnut chart with different defaults\r\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('radar', {\r\n\tspanGaps: false,\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\tfill: 'start',\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_radar = core_datasetController.extend({\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderWidth',\r\n\t\t'borderColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar config = me._config;\r\n\t\tvar i, ilen;\r\n\r\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\tconfig.lineTension = config.tension;\r\n\t\t}\r\n\r\n\t\t// Utility\r\n\t\tline._scale = scale;\r\n\t\tline._datasetIndex = me.index;\r\n\t\t// Data\r\n\t\tline._children = points;\r\n\t\tline._loop = true;\r\n\t\t// Model\r\n\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\tline.pivot();\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\t// Update bezier control points\r\n\t\tme.updateBezierControlPoints();\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar lineModel = me.getMeta().dataset._model;\r\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\r\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\r\n\r\n\t\t// Utility\r\n\t\tpoint._scale = scale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = me.index;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\r\n\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar options = me.chart.options;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar area = me.chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tmodel = points[i]._model;\r\n\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\r\n\t\t\t\tmodel,\r\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\r\n\t\t\t\tmodel.tension\r\n\t\t\t);\r\n\r\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\r\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\r\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\r\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\r\n\t}\r\n});\n\ncore_defaults._set('scatter', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\r\n\t\t\ttype: 'linear', // scatter should not use a category axis\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\tid: 'y-axis-1',\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\r\n\t\t\t},\r\n\t\t\tlabel: function(item) {\r\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tscatter: {\r\n\t\t\tshowLine: false\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// Scatter charts use line controllers\r\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\r\n// the class, and so must be CamelCase in order to be correctly retrieved\r\n// by the controller in core.controller.js (`controllers[meta.type]`).\r\n\r\nvar controllers = {\r\n\tbar: controller_bar,\r\n\tbubble: controller_bubble,\r\n\tdoughnut: controller_doughnut,\r\n\thorizontalBar: controller_horizontalBar,\r\n\tline: controller_line,\r\n\tpolarArea: controller_polarArea,\r\n\tpie: controller_pie,\r\n\tradar: controller_radar,\r\n\tscatter: controller_scatter\r\n};\n\n/**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {object} the event position\r\n */\r\nfunction getRelativePosition(e, chart) {\r\n\tif (e.native) {\r\n\t\treturn {\r\n\t\t\tx: e.x,\r\n\t\t\ty: e.y\r\n\t\t};\r\n\t}\r\n\r\n\treturn helpers$1.getRelativePosition(e, chart);\r\n}\r\n\r\n/**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param {Chart} chart - the chart\r\n * @param {function} handler - the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\tvar metadata, i, j, ilen, jlen, element;\r\n\r\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\r\n\t\tmetadata = metasets[i].data;\r\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\r\n\t\t\telement = metadata[j];\r\n\t\t\tif (!element._view.skip) {\r\n\t\t\t\thandler(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper function to get the items that intersect the event position\r\n * @param {ChartElement[]} items - elements to filter\r\n * @param {object} position - the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getIntersectItems(chart, position) {\r\n\tvar elements = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param {Chart} chart - the chart to look at elements from\r\n * @param {object} position - the point to be nearest to\r\n * @param {boolean} intersect - if true, only consider items that intersect the position\r\n * @param {function} distanceMetric - function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\r\n\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\tvar nearestItems = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar center = element.getCenterPoint();\r\n\t\tvar distance = distanceMetric(position, center);\r\n\t\tif (distance < minDistance) {\r\n\t\t\tnearestItems = [element];\r\n\t\t\tminDistance = distance;\r\n\t\t} else if (distance === minDistance) {\r\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\r\n\t\t\tnearestItems.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn nearestItems;\r\n}\r\n\r\n/**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {string} axis - the axis mode. x|y|xy\r\n */\r\nfunction getDistanceMetricForAxis(axis) {\r\n\tvar useX = axis.indexOf('x') !== -1;\r\n\tvar useY = axis.indexOf('y') !== -1;\r\n\r\n\treturn function(pt1, pt2) {\r\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\r\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\r\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n\t};\r\n}\r\n\r\nfunction indexMode(chart, e, options) {\r\n\tvar position = getRelativePosition(e, chart);\r\n\t// Default axis for index mode is 'x' to match old behaviour\r\n\toptions.axis = options.axis || 'x';\r\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\tvar elements = [];\r\n\r\n\tif (!items.length) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tchart._getSortedVisibleDatasetMetas().forEach(function(meta) {\r\n\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t// don't count items that are skipped (null data)\r\n\t\tif (element && !element._view.skip) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * @interface IInteractionOptions\r\n */\r\n/**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\r\n\r\n/**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\r\nvar core_interaction = {\r\n\t// Helper function for different modes\r\n\tmodes: {\r\n\t\tsingle: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar elements = [];\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\telements.push(element);\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn elements.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.label\r\n\t\t * @deprecated since version 2.4.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tlabel: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\r\n\t\t * @function Chart.Interaction.modes.index\r\n\t\t * @since v2.4.0\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tindex: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n\t\t * @function Chart.Interaction.modes.dataset\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tdataset: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.x-axis\r\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\t'x-axis': function(chart, e) {\r\n\t\t\treturn indexMode(chart, e, {intersect: false});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Point mode returns all elements that hit test based on the event position\r\n\t\t * of the event\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tpoint: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\treturn getIntersectItems(chart, position);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * nearest mode returns the element closest to the point\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tnearest: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * x mode returns the elements that hit-test at the current x coordinate\r\n\t\t * @function Chart.Interaction.modes.x\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tx: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inXRange(position.x)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * y mode returns the elements that hit-test at the current y coordinate\r\n\t\t * @function Chart.Interaction.modes.y\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\ty: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inYRange(position.y)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\t}\r\n};\n\nvar extend = helpers$1.extend;\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers$1.where(array, function(v) {\r\n\t\treturn v.pos === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\treturn array.sort(function(a, b) {\r\n\t\tvar v0 = reverse ? b : a;\r\n\t\tvar v1 = reverse ? a : b;\r\n\t\treturn v0.weight === v1.weight ?\r\n\t\t\tv0.index - v1.index :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n}\r\n\r\nfunction wrapBoxes(boxes) {\r\n\tvar layoutBoxes = [];\r\n\tvar i, ilen, box;\r\n\r\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\r\n\t\tbox = boxes[i];\r\n\t\tlayoutBoxes.push({\r\n\t\t\tindex: i,\r\n\t\t\tbox: box,\r\n\t\t\tpos: box.position,\r\n\t\t\thorizontal: box.isHorizontal(),\r\n\t\t\tweight: box.weight\r\n\t\t});\r\n\t}\r\n\treturn layoutBoxes;\r\n}\r\n\r\nfunction setLayoutDims(layouts, params) {\r\n\tvar i, ilen, layout;\r\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\r\n\t\tlayout = layouts[i];\r\n\t\t// store width used instead of chartArea.w in fitBoxes\r\n\t\tlayout.width = layout.horizontal\r\n\t\t\t? layout.box.fullWidth && params.availableWidth\r\n\t\t\t: params.vBoxMaxWidth;\r\n\t\t// store height used instead of chartArea.h in fitBoxes\r\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\r\n\t}\r\n}\r\n\r\nfunction buildLayoutBoxes(boxes) {\r\n\tvar layoutBoxes = wrapBoxes(boxes);\r\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\r\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\r\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\r\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\r\n\r\n\treturn {\r\n\t\tleftAndTop: left.concat(top),\r\n\t\trightAndBottom: right.concat(bottom),\r\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\r\n\t\tvertical: left.concat(right),\r\n\t\thorizontal: top.concat(bottom)\r\n\t};\r\n}\r\n\r\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\r\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\r\n}\r\n\r\nfunction updateDims(chartArea, params, layout) {\r\n\tvar box = layout.box;\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\tvar newWidth, newHeight;\r\n\r\n\tif (layout.size) {\r\n\t\t// this layout was already counted for, lets first reduce old size\r\n\t\tchartArea[layout.pos] -= layout.size;\r\n\t}\r\n\tlayout.size = layout.horizontal ? box.height : box.width;\r\n\tchartArea[layout.pos] += layout.size;\r\n\r\n\tif (box.getPadding) {\r\n\t\tvar boxPadding = box.getPadding();\r\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\r\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\r\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\r\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\r\n\t}\r\n\r\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\r\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\r\n\r\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\r\n\t\tchartArea.w = newWidth;\r\n\t\tchartArea.h = newHeight;\r\n\r\n\t\t// return true if chart area changed in layout's direction\r\n\t\tvar sizes = layout.horizontal ? [newWidth, chartArea.w] : [newHeight, chartArea.h];\r\n\t\treturn sizes[0] !== sizes[1] && (!isNaN(sizes[0]) || !isNaN(sizes[1]));\r\n\t}\r\n}\r\n\r\nfunction handleMaxPadding(chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction updatePos(pos) {\r\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\r\n\t\tchartArea[pos] += change;\r\n\t\treturn change;\r\n\t}\r\n\tchartArea.y += updatePos('top');\r\n\tchartArea.x += updatePos('left');\r\n\tupdatePos('right');\r\n\tupdatePos('bottom');\r\n}\r\n\r\nfunction getMargins(horizontal, chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction marginForPositions(positions) {\r\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\r\n\t\tpositions.forEach(function(pos) {\r\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\r\n\t\t});\r\n\t\treturn margin;\r\n\t}\r\n\r\n\treturn horizontal\r\n\t\t? marginForPositions(['left', 'right'])\r\n\t\t: marginForPositions(['top', 'bottom']);\r\n}\r\n\r\nfunction fitBoxes(boxes, chartArea, params) {\r\n\tvar refitBoxes = [];\r\n\tvar i, ilen, layout, box, refit, changed;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\r\n\t\tbox.update(\r\n\t\t\tlayout.width || chartArea.w,\r\n\t\t\tlayout.height || chartArea.h,\r\n\t\t\tgetMargins(layout.horizontal, chartArea)\r\n\t\t);\r\n\t\tif (updateDims(chartArea, params, layout)) {\r\n\t\t\tchanged = true;\r\n\t\t\tif (refitBoxes.length) {\r\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\r\n\t\t\t\t// -> we have to refit those\r\n\t\t\t\trefit = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\r\n\t\t\trefitBoxes.push(layout);\r\n\t\t}\r\n\t}\r\n\r\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\r\n}\r\n\r\nfunction placeBoxes(boxes, chartArea, params) {\r\n\tvar userPadding = params.padding;\r\n\tvar x = chartArea.x;\r\n\tvar y = chartArea.y;\r\n\tvar i, ilen, layout, box;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\t\tif (layout.horizontal) {\r\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\r\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\r\n\t\t\tbox.top = y;\r\n\t\t\tbox.bottom = y + box.height;\r\n\t\t\tbox.width = box.right - box.left;\r\n\t\t\ty = box.bottom;\r\n\t\t} else {\r\n\t\t\tbox.left = x;\r\n\t\t\tbox.right = x + box.width;\r\n\t\t\tbox.top = chartArea.top;\r\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\r\n\t\t\tbox.height = box.bottom - box.top;\r\n\t\t\tx = box.right;\r\n\t\t}\r\n\t}\r\n\r\n\tchartArea.x = x;\r\n\tchartArea.y = y;\r\n}\r\n\r\ncore_defaults._set('global', {\r\n\tlayout: {\r\n\t\tpadding: {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * @interface ILayoutItem\r\n * @prop {string} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {function} getPadding - Returns an object with padding on the edges\r\n * @prop {number} width - Width of item. Must be valid after update()\r\n * @prop {number} height - Height of item. Must be valid after update()\r\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\r\n\r\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\r\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\r\n// It is this service's responsibility of carrying out that layout.\r\nvar core_layouts = {\r\n\tdefaults: {},\r\n\r\n\t/**\r\n\t * Register a box to a chart.\r\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n\t * @param {Chart} chart - the chart to use\r\n\t * @param {ILayoutItem} item - the item to add to be layed out\r\n\t */\r\n\taddBox: function(chart, item) {\r\n\t\tif (!chart.boxes) {\r\n\t\t\tchart.boxes = [];\r\n\t\t}\r\n\r\n\t\t// initialize item with default values\r\n\t\titem.fullWidth = item.fullWidth || false;\r\n\t\titem.position = item.position || 'top';\r\n\t\titem.weight = item.weight || 0;\r\n\t\titem._layers = item._layers || function() {\r\n\t\t\treturn [{\r\n\t\t\t\tz: 0,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\titem.draw.apply(item, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t};\r\n\r\n\t\tchart.boxes.push(item);\r\n\t},\r\n\r\n\t/**\r\n\t * Remove a layoutItem from a chart\r\n\t * @param {Chart} chart - the chart to remove the box from\r\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\r\n\t */\r\n\tremoveBox: function(chart, layoutItem) {\r\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\r\n\t\tif (index !== -1) {\r\n\t\t\tchart.boxes.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets (or updates) options on the given `item`.\r\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n\t * @param {ILayoutItem} item - the item to configure with the given options\r\n\t * @param {object} options - the new item options.\r\n\t */\r\n\tconfigure: function(chart, item, options) {\r\n\t\tvar props = ['fullWidth', 'position', 'weight'];\r\n\t\tvar ilen = props.length;\r\n\t\tvar i = 0;\r\n\t\tvar prop;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tprop = props[i];\r\n\t\t\tif (options.hasOwnProperty(prop)) {\r\n\t\t\t\titem[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fits boxes of the given chart into the given size by having each box measure itself\r\n\t * then running a fitting algorithm\r\n\t * @param {Chart} chart - the chart\r\n\t * @param {number} width - the width to fit into\r\n\t * @param {number} height - the height to fit into\r\n\t */\r\n\tupdate: function(chart, width, height) {\r\n\t\tif (!chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar layoutOptions = chart.options.layout || {};\r\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\r\n\r\n\t\tvar availableWidth = width - padding.width;\r\n\t\tvar availableHeight = height - padding.height;\r\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\r\n\t\tvar verticalBoxes = boxes.vertical;\r\n\t\tvar horizontalBoxes = boxes.horizontal;\r\n\r\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\r\n\t\t// Our canvas looks like the following.\r\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\r\n\t\t// B1 is the bottom axis\r\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\r\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\r\n\t\t// an error will be thrown.\r\n\t\t//\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | T1 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | | | T2 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | C1 | | C2 | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | | |\r\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\r\n\t\t// | | | | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | C3 | | C4 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | B1 | |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | B2 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t//\r\n\r\n\t\tvar params = Object.freeze({\r\n\t\t\touterWidth: width,\r\n\t\t\touterHeight: height,\r\n\t\t\tpadding: padding,\r\n\t\t\tavailableWidth: availableWidth,\r\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\r\n\t\t\thBoxMaxHeight: availableHeight / 2\r\n\t\t});\r\n\t\tvar chartArea = extend({\r\n\t\t\tmaxPadding: extend({}, padding),\r\n\t\t\tw: availableWidth,\r\n\t\t\th: availableHeight,\r\n\t\t\tx: padding.left,\r\n\t\t\ty: padding.top\r\n\t\t}, padding);\r\n\r\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\r\n\r\n\t\t// First fit vertical boxes\r\n\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\r\n\t\t// Then fit horizontal boxes\r\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\r\n\t\t\t// if the area changed, re-fit vertical boxes\r\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\t\t}\r\n\r\n\t\thandleMaxPadding(chartArea);\r\n\r\n\t\t// Finally place the boxes to correct coordinates\r\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\r\n\r\n\t\t// Move to opposite side of chart\r\n\t\tchartArea.x += chartArea.w;\r\n\t\tchartArea.y += chartArea.h;\r\n\r\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\r\n\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: chartArea.left,\r\n\t\t\ttop: chartArea.top,\r\n\t\t\tright: chartArea.left + chartArea.w,\r\n\t\t\tbottom: chartArea.top + chartArea.h\r\n\t\t};\r\n\r\n\t\t// Finally update boxes in chartArea (radial scale for example)\r\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\r\n\t\t\tvar box = layout.box;\r\n\t\t\textend(box, chart.chartArea);\r\n\t\t\tbox.update(chartArea.w, chartArea.h);\r\n\t\t});\r\n\t}\r\n};\n\n/**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\r\n\r\nvar platform_basic = {\r\n\tacquireContext: function(item) {\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\treturn item && item.getContext('2d') || null;\r\n\t}\r\n};\n\nvar platform_dom = \"/*\\r\\n * DOM element rendering detection\\r\\n * https://davidwalsh.name/detect-node-insertion\\r\\n */\\r\\n@keyframes chartjs-render-animation {\\r\\n\\tfrom { opacity: 0.99; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n\\r\\n.chartjs-render-monitor {\\r\\n\\tanimation: chartjs-render-animation 0.001s;\\r\\n}\\r\\n\\r\\n/*\\r\\n * DOM element resizing detection\\r\\n * https://github.com/marcj/css-element-queries\\r\\n */\\r\\n.chartjs-size-monitor,\\r\\n.chartjs-size-monitor-expand,\\r\\n.chartjs-size-monitor-shrink {\\r\\n\\tposition: absolute;\\r\\n\\tdirection: ltr;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\toverflow: hidden;\\r\\n\\tpointer-events: none;\\r\\n\\tvisibility: hidden;\\r\\n\\tz-index: -1;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-expand > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 1000000px;\\r\\n\\theight: 1000000px;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-shrink > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 200%;\\r\\n\\theight: 200%;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\r\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\r\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\r\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\r\n\r\n/**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\r\nvar EVENT_TYPES = {\r\n\ttouchstart: 'mousedown',\r\n\ttouchmove: 'mousemove',\r\n\ttouchend: 'mouseup',\r\n\tpointerenter: 'mouseenter',\r\n\tpointerdown: 'mousedown',\r\n\tpointermove: 'mousemove',\r\n\tpointerup: 'mouseup',\r\n\tpointerleave: 'mouseout',\r\n\tpointerout: 'mouseout'\r\n};\r\n\r\n/**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {number} Size in pixels or undefined if unknown.\r\n */\r\nfunction readUsedSize(element, property) {\r\n\tvar value = helpers$1.getStyle(element, property);\r\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\r\n\treturn matches ? Number(matches[1]) : undefined;\r\n}\r\n\r\n/**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\r\nfunction initCanvas(canvas, config) {\r\n\tvar style = canvas.style;\r\n\r\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\r\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\r\n\tvar renderHeight = canvas.getAttribute('height');\r\n\tvar renderWidth = canvas.getAttribute('width');\r\n\r\n\t// Chart.js modifies some canvas values that we want to restore on destroy\r\n\tcanvas[EXPANDO_KEY] = {\r\n\t\tinitial: {\r\n\t\t\theight: renderHeight,\r\n\t\t\twidth: renderWidth,\r\n\t\t\tstyle: {\r\n\t\t\t\tdisplay: style.display,\r\n\t\t\t\theight: style.height,\r\n\t\t\t\twidth: style.width\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Force canvas to display as block to avoid extra space caused by inline\r\n\t// elements, which would interfere with the responsive resize process.\r\n\t// https://github.com/chartjs/Chart.js/issues/2538\r\n\tstyle.display = style.display || 'block';\r\n\r\n\tif (renderWidth === null || renderWidth === '') {\r\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\r\n\t\tif (displayWidth !== undefined) {\r\n\t\t\tcanvas.width = displayWidth;\r\n\t\t}\r\n\t}\r\n\r\n\tif (renderHeight === null || renderHeight === '') {\r\n\t\tif (canvas.style.height === '') {\r\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\r\n\t\t\t// which one can be specified by the user but also by charts as default option\r\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\r\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\r\n\t\t} else {\r\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\r\n\t\t\tif (displayWidth !== undefined) {\r\n\t\t\t\tcanvas.height = displayHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn canvas;\r\n}\r\n\r\n/**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\r\nvar supportsEventListenerOptions = (function() {\r\n\tvar supports = false;\r\n\ttry {\r\n\t\tvar options = Object.defineProperty({}, 'passive', {\r\n\t\t\t// eslint-disable-next-line getter-return\r\n\t\t\tget: function() {\r\n\t\t\t\tsupports = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('e', null, options);\r\n\t} catch (e) {\r\n\t\t// continue regardless of error\r\n\t}\r\n\treturn supports;\r\n}());\r\n\r\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\r\n// https://github.com/chartjs/Chart.js/issues/4287\r\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\r\n\r\nfunction addListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeListener(node, type, listener) {\r\n\tnode.removeEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction createEvent(type, chart, x, y, nativeEvent) {\r\n\treturn {\r\n\t\ttype: type,\r\n\t\tchart: chart,\r\n\t\tnative: nativeEvent || null,\r\n\t\tx: x !== undefined ? x : null,\r\n\t\ty: y !== undefined ? y : null,\r\n\t};\r\n}\r\n\r\nfunction fromNativeEvent(event, chart) {\r\n\tvar type = EVENT_TYPES[event.type] || event.type;\r\n\tvar pos = helpers$1.getRelativePosition(event, chart);\r\n\treturn createEvent(type, chart, pos.x, pos.y, event);\r\n}\r\n\r\nfunction throttled(fn, thisArg) {\r\n\tvar ticking = false;\r\n\tvar args = [];\r\n\r\n\treturn function() {\r\n\t\targs = Array.prototype.slice.call(arguments);\r\n\t\tthisArg = thisArg || this;\r\n\r\n\t\tif (!ticking) {\r\n\t\t\tticking = true;\r\n\t\t\thelpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tticking = false;\r\n\t\t\t\tfn.apply(thisArg, args);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction createDiv(cls) {\r\n\tvar el = document.createElement('div');\r\n\tel.className = cls || '';\r\n\treturn el;\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar maxSize = 1000000;\r\n\r\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\r\n\t// https://github.com/chartjs/Chart.js/issues/5902\r\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\r\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\r\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\r\n\r\n\texpand.appendChild(createDiv());\r\n\tshrink.appendChild(createDiv());\r\n\r\n\tresizer.appendChild(expand);\r\n\tresizer.appendChild(shrink);\r\n\tresizer._reset = function() {\r\n\t\texpand.scrollLeft = maxSize;\r\n\t\texpand.scrollTop = maxSize;\r\n\t\tshrink.scrollLeft = maxSize;\r\n\t\tshrink.scrollTop = maxSize;\r\n\t};\r\n\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\r\n\r\n\treturn resizer;\r\n}\r\n\r\n// https://davidwalsh.name/detect-node-insertion\r\nfunction watchForRender(node, handler) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\tvar proxy = expando.renderProxy = function(e) {\r\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\r\n\t\t\thandler();\r\n\t\t}\r\n\t};\r\n\r\n\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddListener(node, type, proxy);\r\n\t});\r\n\r\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\r\n\t// is removed then added back immediately (same animation frame?). Accessing the\r\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\r\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\r\n\t// https://github.com/chartjs/Chart.js/issues/4737\r\n\texpando.reflow = !!node.offsetParent;\r\n\r\n\tnode.classList.add(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction unwatchForRender(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar proxy = expando.renderProxy;\r\n\r\n\tif (proxy) {\r\n\t\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveListener(node, type, proxy);\r\n\t\t});\r\n\r\n\t\tdelete expando.renderProxy;\r\n\t}\r\n\r\n\tnode.classList.remove(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction addResizeListener(node, listener, chart) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\r\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\r\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = chart.options.maintainAspectRatio && node.parentNode;\r\n\t\t\tvar w = container ? container.clientWidth : 0;\r\n\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\r\n\t\t\t\t// If the container size shrank during chart resize, let's assume\r\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\r\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\r\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\r\n\t\t\t\t// events are ignored during this whole 2 resize process.\r\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\r\n\t\t\t\t// twice in a frame (potential performance issue)\r\n\t\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\t}\r\n\t\t}\r\n\t}));\r\n\r\n\t// The resizer needs to be attached to the node parent, so we first need to be\r\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\r\n\twatchForRender(node, function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = node.parentNode;\r\n\t\t\tif (container && container !== resizer.parentNode) {\r\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\r\n\t\t\t}\r\n\r\n\t\t\t// The container size might have changed, let's reset the resizer state.\r\n\t\t\tresizer._reset();\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction removeResizeListener(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar resizer = expando.resizer;\r\n\r\n\tdelete expando.resizer;\r\n\tunwatchForRender(node);\r\n\r\n\tif (resizer && resizer.parentNode) {\r\n\t\tresizer.parentNode.removeChild(resizer);\r\n\t}\r\n}\r\n\r\n/**\r\n * Injects CSS styles inline if the styles are not already present.\r\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the
');\n }\n else {\n printDocument.write('');\n printDocument.write(''\n + '
');\n }\n }\n }\n if (Browser.isIE || Browser.info.name === 'edge') {\n try {\n if (this.pdfViewer.printMode === 'Default') {\n this.pdfViewerBase.showPrintLoadingIndicator(false);\n this.iframe.contentWindow.document.execCommand('print', false, null);\n }\n else {\n this.printWindow.document.execCommand('print', false, null);\n }\n }\n catch (e) {\n if (this.pdfViewer.printMode === 'Default') {\n this.pdfViewerBase.showPrintLoadingIndicator(false);\n this.iframe.contentWindow.print();\n }\n else {\n this.printWindow.print();\n }\n }\n }\n else {\n setTimeout(function () {\n if (_this.pdfViewer.printMode === 'Default') {\n _this.pdfViewerBase.showPrintLoadingIndicator(false);\n _this.iframe.contentWindow.print();\n _this.iframe.contentWindow.focus();\n document.body.removeChild(_this.iframe);\n }\n else {\n if (_this.printWindow) {\n _this.printWindow.print();\n _this.printWindow.focus();\n _this.printWindow.close();\n }\n }\n }, 200);\n }\n };\n // eslint-disable-next-line\n Print.prototype.createPrintLoadingIndicator = function (element) {\n // eslint-disable-next-line\n var printWindowContainer = createElement('div', {\n id: this.pdfViewer.element.id + '_printWindowcontainer'\n });\n printWindowContainer.style.height = '100%';\n printWindowContainer.style.width = '100%';\n printWindowContainer.style.position = 'absolute';\n printWindowContainer.style.zIndex = 2000;\n printWindowContainer.style.left = 0;\n printWindowContainer.style.top = 0;\n printWindowContainer.style.overflow = 'auto';\n printWindowContainer.style.backgroundColor = 'rgba(0, 0, 0, 0.3)';\n element.appendChild(printWindowContainer);\n var printWaitingPopup = createElement('div', {\n id: this.pdfViewer.element.id + '_printLoadingContainer'\n });\n printWaitingPopup.style.position = 'absolute';\n printWaitingPopup.style.width = '50px';\n printWaitingPopup.style.height = '50px';\n printWaitingPopup.style.left = '46%';\n printWaitingPopup.style.top = '45%';\n printWindowContainer.style.zIndex = 3000;\n printWindowContainer.appendChild(printWaitingPopup);\n // eslint-disable-next-line\n var printImageContainer = new Image();\n // eslint-disable-next-line\n printImageContainer.src = 'data:image/gif;base64,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';\n printImageContainer.style.width = '50px';\n printImageContainer.style.height = '50px';\n printWaitingPopup.appendChild(printImageContainer);\n var printLabelContainer = createElement('div', {\n id: this.pdfViewer.element.id + '_printLabelContainer'\n });\n printLabelContainer.style.position = 'absolute';\n printLabelContainer.textContent = 'Loading ...';\n printLabelContainer.style.fontWeight = 'Bold';\n printLabelContainer.style.left = '46%';\n printLabelContainer.style.top = '54.5%';\n printLabelContainer.style.zIndex = '3000';\n printWindowContainer.appendChild(printLabelContainer);\n };\n /**\n * @private\n */\n Print.prototype.destroy = function () {\n this.printViewerContainer = undefined;\n this.frameDoc = undefined;\n this.printWindow = undefined;\n };\n /**\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'Print';\n };\n return Print;\n}());\nexport { Print };\n","/* eslint-disable */\nimport { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * The `TextSelection` module is used to handle the text selection of PDF viewer.\n */\nvar TextSelection = /** @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function TextSelection(pdfViewer, pdfViewerBase) {\n var _this = this;\n /**\n * @private\n */\n this.isTextSelection = false;\n /**\n * @private\n */\n this.selectionStartPage = null;\n this.isBackwardPropagatedSelection = false;\n this.contextMenuHeight = 144;\n /**\n * @private\n */\n this.selectionRangeArray = [];\n this.selectionAnchorTouch = null;\n this.selectionFocusTouch = null;\n // eslint-disable-next-line\n this.scrollMoveTimer = 0;\n this.isMouseLeaveSelection = false;\n this.isTouchSelection = false;\n this.previousScrollDifference = 0;\n this.topStoreLeft = null;\n this.topStoreRight = null;\n this.isTextSearched = false;\n this.isSelectionStartTriggered = false;\n this.onLeftTouchSelectElementTouchStart = function (event) {\n _this.initiateSelectionByTouch();\n };\n this.onRightTouchSelectElementTouchStart = function (event) {\n _this.initiateSelectionByTouch();\n };\n this.onLeftTouchSelectElementTouchEnd = function (event) {\n _this.terminateSelectionByTouch(event);\n };\n this.onRightTouchSelectElementTouchEnd = function (event) {\n _this.terminateSelectionByTouch(event);\n };\n this.onLeftTouchSelectElementTouchMove = function (event) {\n var range;\n var nodeElement;\n event.preventDefault();\n event.target.style.zIndex = '0';\n var rightElement = _this.dropDivElementRight;\n var isTouchedWithinViewerContainer = _this.isTouchedWithinContainer(event);\n if (rightElement && isTouchedWithinViewerContainer) {\n var dropBounds = rightElement.getBoundingClientRect();\n var xTouch = event.changedTouches[0].clientX;\n var yTouch = event.changedTouches[0].clientY;\n event.target.style.zIndex = '1000';\n nodeElement = _this.getNodeElement(range, xTouch, yTouch, event, nodeElement);\n if (nodeElement) {\n // eslint-disable-next-line max-len\n var currentDifference = Math.sqrt((yTouch - dropBounds.top) * (yTouch - dropBounds.top) + (xTouch - dropBounds.left) * (xTouch - dropBounds.left));\n var isCloserMovement = _this.isCloserTouchScroll(currentDifference);\n var isTextSelected = false;\n if (yTouch <= dropBounds.top) {\n _this.dropElementLeft.style.transform = 'rotate(0deg)';\n _this.dropElementRight.style.transform = 'rotate(-90deg)';\n isTextSelected = _this.selectTextByTouch(nodeElement.parentElement, xTouch, yTouch, false, 'left', isCloserMovement);\n }\n else {\n _this.dropElementLeft.style.transform = 'rotate(-90deg)';\n _this.dropElementRight.style.transform = 'rotate(0deg)';\n isTextSelected = _this.selectTextByTouch(nodeElement.parentElement, xTouch, yTouch, true, 'left', isCloserMovement);\n }\n if (isTextSelected) {\n var elementClientRect = _this.dropDivElementLeft.getBoundingClientRect();\n var pageTopValue = _this.pdfViewerBase.pageSize[_this.pdfViewerBase.currentPageNumber - 1].top;\n var topClientValue = _this.getClientValueTop(yTouch, _this.pdfViewerBase.currentPageNumber - 1);\n // eslint-disable-next-line max-len\n var currentPageLeft = _this.pdfViewerBase.getElement('_pageDiv_' + (_this.pdfViewerBase.currentPageNumber - 1)).getBoundingClientRect().left;\n var currentRangeLeft = xTouch - currentPageLeft;\n // eslint-disable-next-line max-len\n _this.dropDivElementLeft.style.top = pageTopValue * _this.pdfViewerBase.getZoomFactor() + topClientValue + 'px';\n _this.topStoreLeft = { pageTop: pageTopValue, topClientValue: _this.getMagnifiedValue(topClientValue), pageNumber: _this.pdfViewerBase.currentPageNumber - 1, left: _this.getMagnifiedValue(currentRangeLeft), isHeightNeeded: false };\n // eslint-disable-next-line max-len\n _this.dropDivElementLeft.style.left = xTouch - _this.pdfViewerBase.viewerContainer.getBoundingClientRect().left - (elementClientRect.width / 2) + 'px';\n _this.previousScrollDifference = currentDifference;\n }\n }\n }\n };\n // eslint-disable-next-line\n this.onRightTouchSelectElementTouchMove = function (event) {\n var range;\n var nodeElement;\n event.preventDefault();\n event.target.style.zIndex = '0';\n var leftElement = _this.dropDivElementLeft;\n var isTouchedWithinViewerContainer = _this.isTouchedWithinContainer(event);\n if (leftElement && isTouchedWithinViewerContainer) {\n var dropPosition = leftElement.getBoundingClientRect();\n var touchX = event.changedTouches[0].clientX;\n var touchY = event.changedTouches[0].clientY;\n event.target.style.zIndex = '1000';\n nodeElement = _this.getNodeElement(range, touchX, touchY, event, nodeElement);\n if (nodeElement) {\n // eslint-disable-next-line max-len\n var currentDifference = Math.sqrt((touchY - dropPosition.top) * (touchY - dropPosition.top) + (touchX - dropPosition.left) * (touchX - dropPosition.left));\n var isCloserMovement = _this.isCloserTouchScroll(currentDifference);\n var isTextSelected = false;\n if (touchY >= dropPosition.top) {\n _this.dropElementRight.style.transform = 'rotate(-90deg)';\n _this.dropElementLeft.style.transform = 'rotate(0deg)';\n isTextSelected = _this.selectTextByTouch(nodeElement.parentElement, touchX, touchY, true, 'right', isCloserMovement);\n }\n else {\n _this.dropElementRight.style.transform = 'rotate(0deg)';\n _this.dropElementLeft.style.transform = 'rotate(-90deg)';\n isTextSelected = _this.selectTextByTouch(nodeElement.parentElement, touchX, touchY, false, 'right', isCloserMovement);\n }\n if (isTextSelected) {\n var pageTopValue = _this.pdfViewerBase.pageSize[_this.pdfViewerBase.currentPageNumber - 1].top;\n var topClientValue = _this.getClientValueTop(touchY, _this.pdfViewerBase.currentPageNumber - 1);\n var elementClientRect = _this.dropDivElementRight.getBoundingClientRect();\n _this.dropDivElementRight.style.top = pageTopValue * _this.pdfViewerBase.getZoomFactor() + topClientValue + 'px';\n // eslint-disable-next-line max-len\n var currentPageLeft = _this.pdfViewerBase.getElement('_pageDiv_' + (_this.pdfViewerBase.currentPageNumber - 1)).getBoundingClientRect().left;\n var currentRangeLeft = touchX - currentPageLeft;\n // eslint-disable-next-line max-len\n _this.topStoreRight = { pageTop: pageTopValue, topClientValue: _this.getMagnifiedValue(topClientValue), pageNumber: _this.pdfViewerBase.currentPageNumber - 1, left: _this.getMagnifiedValue(currentRangeLeft), isHeightNeeded: false };\n // eslint-disable-next-line max-len\n _this.dropDivElementRight.style.left = touchX - _this.pdfViewerBase.viewerContainer.getBoundingClientRect().left - (elementClientRect.width / 2) + 'px';\n _this.previousScrollDifference = currentDifference;\n }\n }\n }\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param target\n * @param x\n * @param y\n * @param isExtended\n * @private\n */\n TextSelection.prototype.textSelectionOnMouseMove = function (target, x, y, isExtended) {\n var targetElement = target;\n this.isTextSearched = true;\n if (targetElement.nodeType === targetElement.TEXT_NODE) {\n if (!this.isSelectionStartTriggered && !this.pdfViewerBase.getTextMarkupAnnotationMode()) {\n this.pdfViewer.fireTextSelectionStart(this.pdfViewerBase.currentPageNumber);\n this.isSelectionStartTriggered = true;\n }\n this.isBackwardPropagatedSelection = false;\n var range = targetElement.ownerDocument.createRange();\n var selection = window.getSelection();\n if (selection.anchorNode !== null) {\n var position = selection.anchorNode.compareDocumentPosition(selection.focusNode);\n if (!position && selection.anchorOffset > selection.focusOffset || position === Node.DOCUMENT_POSITION_PRECEDING) {\n this.isBackwardPropagatedSelection = true;\n }\n }\n range.selectNodeContents(targetElement);\n var currentPosition = 0;\n var endPosition = range.endOffset;\n while (currentPosition < endPosition) {\n range.setStart(targetElement, currentPosition);\n range.setEnd(targetElement, currentPosition + 1);\n var rangeBounds = range.getBoundingClientRect();\n var rightBounds = rangeBounds.right;\n if (isExtended) {\n // eslint-disable-next-line\n rightBounds = parseInt(rangeBounds.right.toString());\n }\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (rangeBounds.left <= x && rightBounds >= x && parseInt(rangeBounds.top.toString()) <= y && rangeBounds.bottom >= y) {\n if (selection.anchorNode !== null && selection.anchorNode.parentNode.classList.contains('e-pv-text')) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n }\n selection.removeAllRanges();\n selection.addRange(range);\n if (!this.isTextSelection) {\n this.selectionStartPage = this.pdfViewerBase.currentPageNumber - 1;\n }\n this.isTextSelection = true;\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (!isIE) {\n if (this.isBackwardPropagatedSelection) {\n selection.extend(targetElement, currentPosition);\n }\n else if (isExtended) {\n selection.extend(targetElement, currentPosition);\n }\n else {\n selection.extend(targetElement, currentPosition + 1);\n }\n }\n range.detach();\n }\n currentPosition += 1;\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotationModule;\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.isEnableTextMarkupResizer(annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode)) {\n // eslint-disable-next-line\n var leftDivElement = document.getElementById(this.pdfViewer.element.id + '_droplet_left');\n if (this.pdfViewerBase.isSelection && selection && selection.rangeCount > 0) {\n // eslint-disable-next-line\n var currentrange = selection.getRangeAt(0);\n // eslint-disable-next-line\n var rect = currentrange.getBoundingClientRect();\n var left = rect.left;\n var top_1 = rect.top;\n this.pdfViewer.annotation.textMarkupAnnotationModule.updateLeftposition(left, top_1);\n this.pdfViewerBase.isSelection = false;\n }\n else if ((leftDivElement && leftDivElement.style.display === 'none')) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.updateLeftposition(x, y);\n }\n this.pdfViewer.annotation.textMarkupAnnotationModule.updatePosition(x, y);\n }\n }\n else {\n for (var i = 0; i < targetElement.childNodes.length; i++) {\n if (targetElement.childNodes[i].nodeType === targetElement.TEXT_NODE) {\n var range = this.getSelectionRange(i, targetElement);\n var rangeBounds = range.getBoundingClientRect();\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (rangeBounds.left <= x && rangeBounds.right >= parseInt(x.toString()) && parseInt(rangeBounds.top.toString()) <= y && rangeBounds.bottom >= y) {\n range.detach();\n this.textSelectionOnMouseMove(targetElement.childNodes[i], x, y, isExtended);\n }\n else {\n range.detach();\n }\n }\n }\n }\n };\n /**\n * @param target\n * @param x\n * @param y\n * @param isforward\n * @param target\n * @param x\n * @param y\n * @param isforward\n * @param target\n * @param x\n * @param y\n * @param isforward\n * @private\n */\n TextSelection.prototype.textSelectionOnDrag = function (target, x, y, isforward) {\n var targetElement = target;\n this.isTextSearched = true;\n if (targetElement.nodeType === targetElement.TEXT_NODE) {\n this.isBackwardPropagatedSelection = false;\n var range = targetElement.ownerDocument.createRange();\n var selection = window.getSelection();\n if (selection.anchorNode !== null) {\n var position = selection.anchorNode.compareDocumentPosition(selection.focusNode);\n if (!position && selection.anchorOffset > selection.focusOffset || position === Node.DOCUMENT_POSITION_PRECEDING) {\n this.isBackwardPropagatedSelection = true;\n }\n }\n range.selectNodeContents(targetElement);\n var currentPosition = 0;\n var endPosition = range.endOffset;\n while (currentPosition < endPosition) {\n range.setStart(targetElement, currentPosition);\n range.setEnd(targetElement, currentPosition + 1);\n var rangeBounds = range.getBoundingClientRect();\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (rangeBounds.left <= x && rangeBounds.right >= x && parseInt(rangeBounds.top.toString()) <= y && rangeBounds.bottom >= y) {\n if (isforward) {\n // eslint-disable-next-line max-len\n if (selection.anchorNode !== null && selection.anchorNode.parentNode.classList.contains('e-pv-text')) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n }\n selection.removeAllRanges();\n selection.addRange(range);\n selection.extend(targetElement, currentPosition);\n }\n else if (selection.focusNode) {\n range.setEnd(selection.focusNode, selection.focusOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (!this.isTextSelection) {\n this.selectionStartPage = this.pdfViewerBase.currentPageNumber - 1;\n }\n this.isTextSelection = true;\n range.detach();\n return true;\n }\n currentPosition += 1;\n }\n if (this.pdfViewerBase.isSelection) {\n // eslint-disable-next-line\n var currentrange = selection.getRangeAt(0);\n // eslint-disable-next-line\n var rect = currentrange.getBoundingClientRect();\n var left = rect.left;\n var top_2 = rect.top;\n this.pdfViewer.annotation.textMarkupAnnotationModule.updateLeftposition(left, top_2);\n this.pdfViewerBase.isSelection = false;\n }\n this.pdfViewer.annotation.textMarkupAnnotationModule.updatePosition(x, y);\n }\n else {\n for (var i = 0; i < targetElement.childNodes.length; i++) {\n if (targetElement.childNodes[i].nodeType === targetElement.TEXT_NODE) {\n var range = this.getSelectionRange(i, targetElement);\n var rangeBounds = range.getBoundingClientRect();\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (rangeBounds.left <= x && rangeBounds.right >= x && parseInt(rangeBounds.top.toString()) <= y && rangeBounds.bottom >= y) {\n range.detach();\n this.textSelectionOnDrag(targetElement.childNodes[i], x, y, isforward);\n }\n else {\n range.detach();\n }\n }\n }\n }\n return null;\n };\n /**\n * Select the target text region in the PDF document of the given bounds.\n *\n * @param {number} pageNumbers - Specifies the page number\n * @param {IRectangle[]} bounds - Specifies the bounds of the texts.\n * @returns void\n */\n TextSelection.prototype.selectTextRegion = function (pageNumbers, bounds) {\n // eslint-disable-next-line\n var element = null;\n var pageNumber = (pageNumbers - 1);\n for (var k = 0; k < bounds.length; k++) {\n // eslint-disable-next-line\n var bound = bounds[k];\n var x = (bound.left ? bound.left : bound.Left) * this.pdfViewerBase.getZoomFactor();\n var y = (bound.top ? bound.top : bound.Top) * this.pdfViewerBase.getZoomFactor();\n var width = (bound.width ? bound.width : bound.Width) * this.pdfViewerBase.getZoomFactor();\n var height = bound.height ? bound.height : bound.Height;\n // eslint-disable-next-line\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageNumber);\n if (textLayer) {\n // eslint-disable-next-line\n var textDivs = textLayer.childNodes;\n for (var n = 0; n < textDivs.length; n++) {\n if (textDivs[n]) {\n // eslint-disable-next-line\n var rangebounds = textDivs[n].getBoundingClientRect();\n var top_3 = this.getClientValueTop(rangebounds.top, pageNumber);\n // eslint-disable-next-line max-len\n var currentLeft = rangebounds.left - this.pdfViewerBase.getElement('_pageDiv_' + pageNumber).getBoundingClientRect().left;\n var totalLeft = currentLeft + rangebounds.width;\n // eslint-disable-next-line\n var textDiVLeft = parseInt(textDivs[n].style.left);\n // eslint-disable-next-line\n var currentTop = parseInt(textDivs[n].style.top);\n var isLeftBounds = this.checkLeftBounds(currentLeft, textDiVLeft, totalLeft, x);\n var isTopBounds = this.checkTopBounds(top_3, currentTop, y);\n if (isLeftBounds && isTopBounds) {\n element = textDivs[n];\n break;\n }\n }\n }\n if (element != null) {\n // eslint-disable-next-line\n var boundingRect = this.pdfViewerBase.getElement('_textLayer_' + pageNumber).getBoundingClientRect();\n this.textSelectionOnMouseMove(element, x + boundingRect.left, y + boundingRect.top, false);\n if ((bounds.length - 1) === k) {\n // eslint-disable-next-line max-len\n this.textSelectionOnMouseMove(element, x + boundingRect.left + width, y + boundingRect.top, false);\n }\n }\n }\n }\n };\n /**\n * @param left\n * @param textDiVLeft\n * @param totalLeft\n * @param x\n * @private\n */\n TextSelection.prototype.checkLeftBounds = function (left, textDiVLeft, totalLeft, x) {\n var isExists = false;\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (left === parseInt(x.toString()) || parseInt(left.toString()) === parseInt(x.toString()) || (left + 1) === parseInt(x.toString()) || (left - 1) === parseInt(x.toString())\n // eslint-disable-next-line\n || textDiVLeft === parseInt(x.toString()) || textDiVLeft === x || (totalLeft >= x && left <= x)) {\n isExists = true;\n }\n return isExists;\n };\n /**\n * @param top\n * @param currentTop\n * @param y\n * @param top\n * @param currentTop\n * @param y\n * @private\n */\n TextSelection.prototype.checkTopBounds = function (top, currentTop, y) {\n var isExists = false;\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if ((top === parseInt(y.toString()) || parseInt(top.toString()) === parseInt(y.toString()) || parseInt((top + 1).toString()) === parseInt(y.toString()) || parseInt((top - 1).toString()) === parseInt(y.toString())\n // eslint-disable-next-line\n || currentTop === parseInt(y.toString()) || currentTop === y)) {\n isExists = true;\n }\n return isExists;\n };\n /**\n * @param event\n * @private\n */\n TextSelection.prototype.textSelectionOnMouseLeave = function (event) {\n var _this = this;\n event.preventDefault();\n var viewerTop = this.pdfViewerBase.viewerContainer.offsetTop;\n if (this.pdfViewer.magnificationModule) {\n if (this.pdfViewer.magnificationModule.fitType === 'fitToPage') {\n return;\n }\n }\n if (event.clientY > viewerTop) {\n this.scrollMoveTimer = setInterval(function () {\n _this.scrollForwardOnSelection();\n }, 500);\n }\n else {\n this.scrollMoveTimer = setInterval(function () {\n _this.scrollBackwardOnSelection();\n }, 500);\n }\n };\n TextSelection.prototype.scrollForwardOnSelection = function () {\n this.isMouseLeaveSelection = true;\n this.pdfViewerBase.viewerContainer.scrollTop = this.pdfViewerBase.viewerContainer.scrollTop + 200;\n this.stichSelectionOnScroll(this.pdfViewerBase.currentPageNumber - 1);\n };\n TextSelection.prototype.scrollBackwardOnSelection = function () {\n this.isMouseLeaveSelection = true;\n this.pdfViewerBase.viewerContainer.scrollTop = this.pdfViewerBase.viewerContainer.scrollTop - 200;\n this.stichSelectionOnScroll(this.pdfViewerBase.currentPageNumber - 1);\n };\n /**\n * @private\n */\n TextSelection.prototype.clear = function () {\n if (this.scrollMoveTimer) {\n this.isMouseLeaveSelection = false;\n clearInterval(this.scrollMoveTimer);\n }\n };\n /**\n * @param element\n * @param x\n * @param y\n * @param isStoreSelection\n * @param element\n * @param x\n * @param y\n * @param isStoreSelection\n * @param element\n * @param x\n * @param y\n * @param isStoreSelection\n * @private\n */\n // eslint-disable-next-line\n TextSelection.prototype.selectAWord = function (element, x, y, isStoreSelection) {\n if (element.nodeType === element.TEXT_NODE) {\n var selection = window.getSelection();\n var range = element.ownerDocument.createRange();\n range.selectNodeContents(element);\n var currentPosition = 0;\n var endPosition = range.endOffset;\n while (currentPosition < endPosition) {\n range.setStart(element, currentPosition);\n range.setEnd(element, currentPosition + 1);\n var rangeBounds = range.getBoundingClientRect();\n if (rangeBounds.left <= x && rangeBounds.right >= x && rangeBounds.top <= y && rangeBounds.bottom >= y) {\n var textContent = element.textContent;\n var indices = [];\n var startPosition = void 0;\n var endPos = void 0;\n for (var i = 0; i < textContent.length; i++) {\n if (textContent[i] === ' ') {\n indices.push(i);\n }\n }\n for (var j = 0; j < indices.length; j++) {\n if (currentPosition === indices[j]) {\n startPosition = indices[j];\n endPos = indices[j];\n }\n if (indices[0] > currentPosition) {\n startPosition = 0;\n endPos = indices[j];\n break;\n }\n if (currentPosition > indices[j] && currentPosition < indices[j + 1]) {\n startPosition = indices[j];\n endPos = indices[j + 1];\n }\n else if (currentPosition > indices[j]) {\n if (!indices[j + 1]) {\n startPosition = indices[j];\n }\n }\n }\n if (!endPos) {\n endPos = textContent.length;\n }\n if (startPosition === 0) {\n range.setStart(element, startPosition);\n }\n else {\n range.setStart(element, startPosition + 1);\n }\n range.setEnd(element, endPos);\n selection.removeAllRanges();\n selection.addRange(range);\n this.isTextSelection = true;\n // eslint-disable-next-line max-len\n var startParent = isNullOrUndefined(range.startContainer.parentElement) ? range.startContainer.parentNode : range.startContainer.parentElement;\n // eslint-disable-next-line radix\n this.selectionStartPage = parseInt(startParent.id.split('_text_')[1]);\n if (isStoreSelection) {\n // eslint-disable-next-line max-len\n this.selectionAnchorTouch = { anchorNode: selection.anchorNode.parentElement.id, anchorOffset: selection.anchorOffset };\n this.selectionFocusTouch = { focusNode: selection.focusNode.parentElement.id, focusOffset: selection.focusOffset };\n }\n if (!Browser.isIE) {\n range.detach();\n }\n break;\n }\n currentPosition += 1;\n }\n }\n else {\n for (var i = 0; i < element.childNodes.length; i++) {\n var range = this.getSelectionRange(i, element);\n var rangeBounds = range.getBoundingClientRect();\n if (rangeBounds.left <= x && rangeBounds.right >= x && rangeBounds.top <= y && rangeBounds.bottom >= y) {\n range.detach();\n this.selectAWord(element.childNodes[i], x, y, isStoreSelection);\n }\n else {\n range.detach();\n }\n }\n }\n };\n TextSelection.prototype.getSelectionRange = function (index, element) {\n var range = element.childNodes[index].ownerDocument.createRange();\n range.selectNodeContents(element.childNodes[index]);\n return range;\n };\n /**\n * @param event\n * @private\n */\n TextSelection.prototype.selectEntireLine = function (event) {\n var textIds = [];\n var targetElement = event.target;\n var targetRect = targetElement.getBoundingClientRect();\n // eslint-disable-next-line\n var targetcentre = parseInt((targetRect.top + (targetRect.height / 2)).toString());\n // eslint-disable-next-line radix\n var pageNumber = parseInt(event.target.id.split('_text_')[1]);\n var textDivs = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_text_' + pageNumber + '\"]');\n if (targetElement.classList.contains('e-pv-text')) {\n this.pdfViewer.fireTextSelectionStart(pageNumber + 1);\n for (var i = 0; i < textDivs.length; i++) {\n var rect = textDivs[i].getBoundingClientRect();\n // eslint-disable-next-line radix\n var topValue = parseInt(rect.top.toString());\n // eslint-disable-next-line radix\n var bottomValue = parseInt(rect.bottom.toString());\n if ((topValue <= targetcentre && bottomValue > targetcentre) && (targetRect.bottom + 10 > bottomValue)) {\n var textId = textDivs[i].id;\n if (textId !== '') {\n textIds.push(textId);\n }\n }\n }\n var selection = window.getSelection();\n selection.removeAllRanges();\n var range = document.createRange();\n var lengths = (textIds.length - 1);\n var d1 = document.getElementById(textIds[0]);\n var d2 = document.getElementById(textIds[lengths]);\n var childNodes = d2.childNodes.length;\n if (childNodes > 0) {\n range.setStart(d1.childNodes[0], 0);\n range.setEnd(d2.childNodes[0], d2.textContent.length);\n }\n else {\n range.setStart(d1.childNodes[0], 0);\n range.setEnd(d2, 1);\n }\n // eslint-disable-next-line radix\n this.selectionStartPage = parseInt(range.startContainer.parentElement.id.split('_text_')[1]);\n selection.addRange(range);\n this.isTextSelection = true;\n if (selection != null && this.pdfViewer.contextMenuSettings.contextMenuAction === 'MouseUp') {\n this.calculateContextMenuPosition(event.clientY, event.clientY);\n }\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.enableTextSelectionMode = function () {\n this.pdfViewerBase.isTextSelectionDisabled = false;\n this.pdfViewerBase.viewerContainer.classList.remove('e-disable-text-selection');\n this.pdfViewerBase.viewerContainer.classList.add('e-enable-text-selection');\n this.pdfViewerBase.viewerContainer.addEventListener('selectstart', function () {\n return true;\n });\n };\n TextSelection.prototype.clearTextSelection = function () {\n if (this.isTextSelection) {\n this.pdfViewerBase.textLayer.clearDivSelection();\n if (window.getSelection) {\n if (window.getSelection().removeAllRanges) {\n window.getSelection().removeAllRanges();\n }\n }\n if (this.pdfViewer.linkAnnotationModule) {\n var lowerPageIndex = this.pdfViewerBase.currentPageNumber - 3;\n lowerPageIndex = (lowerPageIndex < 0) ? 0 : lowerPageIndex;\n var higherPageIndex = this.pdfViewer.currentPageNumber + 1;\n // eslint-disable-next-line max-len\n higherPageIndex = (higherPageIndex < (this.pdfViewerBase.pageCount - 1)) ? higherPageIndex : (this.pdfViewerBase.pageCount - 1);\n for (var i = lowerPageIndex; i <= higherPageIndex; i++) {\n this.pdfViewer.linkAnnotationModule.modifyZindexForTextSelection(i, false);\n }\n }\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n this.selectionRangeArray = [];\n this.isTextSelection = false;\n this.isTouchSelection = false;\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n this.pdfViewerBase.contextMenuModule.close();\n this.removeTouchElements();\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.removeTouchElements = function () {\n if (this.dropDivElementLeft) {\n this.dropDivElementLeft.parentElement.removeChild(this.dropDivElementLeft);\n this.dropDivElementLeft = null;\n this.dropElementLeft.style.transform = 'rotate(0deg)';\n }\n if (this.dropDivElementRight) {\n this.dropDivElementRight.parentElement.removeChild(this.dropDivElementRight);\n this.dropDivElementRight = null;\n this.dropElementRight.style.transform = 'rotate(-90deg)';\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.resizeTouchElements = function () {\n var viewerContainerLeft = this.pdfViewerBase.viewerContainer.getBoundingClientRect().left;\n if (this.dropDivElementLeft) {\n var elementClientRect = this.dropDivElementLeft.getBoundingClientRect();\n var dropElementHeight = 0;\n // eslint-disable-next-line max-len\n var leftCurrentPagePosition = this.pdfViewerBase.getElement('_pageDiv_' + this.topStoreLeft.pageNumber).getBoundingClientRect();\n this.dropDivElementLeft.style.left = parseFloat(this.topStoreLeft.left.toString()) * this.pdfViewerBase.getZoomFactor() + leftCurrentPagePosition.left - viewerContainerLeft - (elementClientRect.width / 2) + 'px';\n if (this.topStoreLeft.isHeightNeeded) {\n dropElementHeight = (elementClientRect.height / 2) * this.pdfViewerBase.getZoomFactor();\n }\n // eslint-disable-next-line max-len\n this.dropDivElementLeft.style.top = parseFloat(this.topStoreLeft.pageTop.toString()) * this.pdfViewerBase.getZoomFactor() + parseFloat(this.topStoreLeft.topClientValue.toString()) * this.pdfViewerBase.getZoomFactor() + dropElementHeight + 'px';\n }\n if (this.dropDivElementRight) {\n var elementClientRect = this.dropDivElementRight.getBoundingClientRect();\n var dropElementHeight = 0;\n // eslint-disable-next-line max-len\n var rightCurrentPagePosition = this.pdfViewerBase.getElement('_pageDiv_' + this.topStoreRight.pageNumber).getBoundingClientRect();\n this.dropDivElementRight.style.left = parseFloat(this.topStoreRight.left.toString()) * this.pdfViewerBase.getZoomFactor() + rightCurrentPagePosition.left - viewerContainerLeft - (elementClientRect.width / 2) + 'px';\n if (this.topStoreRight.isHeightNeeded) {\n dropElementHeight = (elementClientRect.height / 2) * this.pdfViewerBase.getZoomFactor();\n }\n // eslint-disable-next-line max-len\n this.dropDivElementRight.style.top = parseFloat(this.topStoreRight.pageTop.toString()) * this.pdfViewerBase.getZoomFactor() + parseFloat(this.topStoreRight.topClientValue.toString()) * this.pdfViewerBase.getZoomFactor() + dropElementHeight + 'px';\n }\n };\n /**\n * @param event\n * @private\n */\n TextSelection.prototype.textSelectionOnMouseup = function (event) {\n this.clear();\n if (window.getSelection().anchorNode !== null) {\n this.isMouseLeaveSelection = false;\n this.isSelectionStartTriggered = false;\n this.maintainSelectionOnZoom(true, false);\n this.fireTextSelectEnd();\n var isTextSearch = this.pdfViewerBase.textLayer.getTextSearchStatus();\n if (isTextSearch) {\n this.pdfViewerBase.textLayer.clearDivSelection();\n // eslint-disable-next-line\n var indexes = this.pdfViewer.textSearchModule.getIndexes();\n var lowerPageValue = parseFloat(indexes.lowerPageValue.toString());\n var higherPageValue = parseFloat(indexes.higherPageValue.toString());\n for (var i = lowerPageValue; i < higherPageValue; i++) {\n this.applySelectionRangeOnScroll(i);\n }\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n else {\n this.applySpanForSelection();\n }\n if (this.pdfViewer.linkAnnotationModule) {\n this.pdfViewer.linkAnnotationModule.modifyZindexForTextSelection(this.pdfViewerBase.currentPageNumber - 1, false);\n }\n if (this.isTextSearched && this.pdfViewer.contextMenuSettings.contextMenuAction === 'MouseUp') {\n this.calculateContextMenuPosition(event.clientY, event.clientX);\n this.isTextSearched = false;\n }\n }\n else {\n this.pdfViewerBase.textLayer.clearDivSelection();\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n this.pdfViewerBase.contextMenuModule.close();\n this.removeTouchElements();\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.fireTextSelectEnd = function () {\n if (this.selectionRangeArray.length !== 0) {\n var selectEndPageIndex = 0;\n var selectedText = '';\n // eslint-disable-next-line\n var selectedBounds = [];\n for (var k = 0; k < this.selectionRangeArray.length; k++) {\n selectedText += this.selectionRangeArray[k].textContent;\n for (var j = 0; j < this.selectionRangeArray[k].rectangleBounds.length; j++) {\n var currentBound = this.selectionRangeArray[k].rectangleBounds[j];\n // eslint-disable-next-line max-len\n selectedBounds.push({ left: currentBound.left, right: currentBound.right, top: currentBound.top, bottom: currentBound.bottom, width: currentBound.width, height: currentBound.height, pageIndex: this.selectionRangeArray[k].pageNumber + 1 });\n }\n if (this.selectionRangeArray[k].isBackward && k === 0) {\n selectEndPageIndex = this.selectionRangeArray[k].pageNumber + 1;\n }\n else if (!this.selectionRangeArray[k].isBackward && k === this.selectionRangeArray.length - 1) {\n selectEndPageIndex = this.selectionRangeArray[k].pageNumber + 1;\n }\n }\n this.pdfViewer.fireTextSelectionEnd(selectEndPageIndex, selectedText, selectedBounds);\n }\n };\n /**\n * @param isMaintainSelection\n * @param isStich\n * @param isMaintainSelection\n * @param isStich\n * @private\n */\n TextSelection.prototype.maintainSelectionOnZoom = function (isMaintainSelection, isStich) {\n var selection = window.getSelection();\n if (selection.type === 'Range' || (!selection.type && !selection.isCollapsed)) {\n var isBackward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (selection.anchorNode !== null) {\n // eslint-disable-next-line radix\n var anchorPageId = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n // eslint-disable-next-line radix\n var focusPageId = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n if (this.isTouchSelection && isNaN(focusPageId)) {\n var focusElement = selection.focusNode;\n if (focusElement === this.pdfViewerBase.pageContainer) {\n var lastChildNode = this.pdfViewerBase.pageContainer.lastChild;\n if (lastChildNode.classList.contains('e-pv-touch-select-drop')) {\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastChildNode.previousSibling.previousSibling.id.split('_pageDiv_')[1]);\n }\n else if (lastChildNode.classList.contains('e-pv-page-div')) {\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastChildNode.id.split('_pageDiv_')[1]);\n }\n }\n }\n if (!isBackward) {\n for (var i = anchorPageId; i <= focusPageId; i++) {\n this.maintainSelectionOnScroll(i, isStich);\n }\n }\n else {\n for (var i = anchorPageId; i >= focusPageId; i--) {\n this.maintainSelectionOnScroll(i, isStich);\n }\n }\n }\n if (!isMaintainSelection) {\n selection.removeAllRanges();\n }\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n TextSelection.prototype.isSelectionAvailableOnScroll = function (pageNumber) {\n var isSelectionAvailable = false;\n var ranges = this.selectionRangeArray;\n for (var i = 0; i < ranges.length; i++) {\n if (ranges[i] !== null) {\n if (pageNumber === ranges[i].pageNumber) {\n isSelectionAvailable = true;\n if (this.isTouchSelection && !this.pdfViewerBase.getMagnified()) {\n isSelectionAvailable = false;\n }\n break;\n }\n }\n }\n return isSelectionAvailable;\n };\n /**\n * @param pageNumber\n * @private\n */\n TextSelection.prototype.applySelectionRangeOnScroll = function (pageNumber) {\n if (this.isMouseLeaveSelection) {\n this.applySelectionMouseScroll(pageNumber);\n }\n else {\n this.applySelectionRange(pageNumber);\n }\n };\n // eslint-disable-next-line\n TextSelection.prototype.getSelectionRangeFromArray = function (pageNumber) {\n var isSelectionAvailable = false;\n var selectionRange = null;\n var ranges = this.selectionRangeArray;\n for (var i = 0; i < ranges.length; i++) {\n if (ranges[i] !== null) {\n if (pageNumber === ranges[i].pageNumber) {\n selectionRange = ranges[i];\n isSelectionAvailable = true;\n break;\n }\n }\n }\n return { isSelectionAvailable: isSelectionAvailable, selectionRange: selectionRange };\n };\n TextSelection.prototype.applySelectionRange = function (pageNumber) {\n var selectionObject = this.getSelectionRangeFromArray(pageNumber);\n var isSelectionAvailable = selectionObject.isSelectionAvailable;\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageNumber);\n if (textLayer) {\n if (isSelectionAvailable && textLayer.childNodes.length !== 0) {\n var selectionRange = selectionObject.selectionRange;\n var anchorOffsetDiv = void 0;\n var focusOffsetDiv = void 0;\n var anchorOffset = void 0;\n var focusOffset = void 0;\n if (selectionRange.isBackward) {\n // eslint-disable-next-line radix\n var startId = parseInt(selectionRange.endNode.split('_text_')[1].split('_')[1]);\n // eslint-disable-next-line radix\n var endId = parseInt(selectionRange.startNode.split('_text_')[1].split('_')[1]);\n if (startId < endId) {\n anchorOffsetDiv = startId;\n anchorOffset = selectionRange.endOffset;\n focusOffset = selectionRange.startOffset;\n focusOffsetDiv = endId;\n }\n else {\n anchorOffsetDiv = endId;\n anchorOffset = selectionRange.endOffset;\n focusOffsetDiv = startId;\n focusOffset = selectionRange.startOffset;\n }\n }\n else {\n // eslint-disable-next-line radix\n anchorOffsetDiv = parseInt(selectionRange.startNode.split('text_')[1].split('_')[1]);\n // eslint-disable-next-line radix\n focusOffsetDiv = parseInt(selectionRange.endNode.split('text_')[1].split('_')[1]);\n anchorOffset = selectionRange.startOffset;\n focusOffset = selectionRange.endOffset;\n }\n window.getSelection().removeAllRanges();\n // eslint-disable-next-line max-len\n this.pdfViewerBase.textLayer.applySpanForSelection(pageNumber, pageNumber, anchorOffsetDiv, focusOffsetDiv, anchorOffset, focusOffset);\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n }\n }\n };\n TextSelection.prototype.applySelectionMouseScroll = function (pageNumber) {\n var selectionObject = this.getSelectionRangeFromArray(pageNumber);\n var isSelectionAvailable = selectionObject.isSelectionAvailable;\n if (isSelectionAvailable) {\n var selectionRange = selectionObject.selectionRange;\n var selection = window.getSelection();\n var anchorNode = document.getElementById(selectionRange.startNode).childNodes[0];\n var focusNode = document.getElementById(selectionRange.endNode).childNodes[0];\n var range = document.createRange();\n if (selection.anchorNode === null) {\n if (!selectionRange.isBackward) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n }\n }\n else {\n // eslint-disable-next-line\n var anchorPageIndex = isNaN(parseInt(selection.anchorNode.parentElement.id.split('_text_')[1])) ? parseInt(selection.anchorNode.id.split('_pageDiv_')[1]) : parseInt(selection.anchorNode.parentElement.id.split('_text_')[1]);\n if (isNaN(anchorPageIndex)) {\n // eslint-disable-next-line radix\n anchorPageIndex = parseInt(selection.anchorNode.id.split('_text_')[1]);\n }\n // eslint-disable-next-line\n var focusPageIndex = isNaN(parseInt(selection.focusNode.parentElement.id.split('_text_')[1])) ? parseInt(selection.focusNode.id.split('_pageDiv_')[1]) : parseInt(selection.focusNode.parentElement.id.split('_text_')[1]);\n // eslint-disable-next-line radix\n var currentAnchorIndex = parseInt(selectionRange.startNode.split('_text_')[1]);\n if ((anchorPageIndex === focusPageIndex) && (anchorPageIndex === currentAnchorIndex)) {\n if (!selectionRange.isBackward) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n }\n }\n else if (!isNaN(anchorPageIndex)) {\n if (!isNaN(anchorPageIndex) && !selectionRange.isBackward) {\n // eslint-disable-next-line max-len\n if (anchorPageIndex < currentAnchorIndex && currentAnchorIndex < focusPageIndex && anchorPageIndex !== focusPageIndex) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else if (anchorPageIndex < currentAnchorIndex) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n }\n else {\n var isBackward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n // eslint-disable-next-line max-len\n if (anchorPageIndex > currentAnchorIndex && currentAnchorIndex > focusPageIndex && anchorPageIndex !== focusPageIndex) {\n if (!isBackward) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else {\n selection.extend(selection.focusNode, selection.focusOffset);\n }\n // eslint-disable-next-line max-len\n }\n else if (anchorPageIndex < currentAnchorIndex && currentAnchorIndex < focusPageIndex && anchorPageIndex !== focusPageIndex) {\n if (!isBackward) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else {\n selection.extend(selection.focusNode, selection.focusOffset);\n }\n }\n else if (anchorPageIndex < currentAnchorIndex) {\n if (!isBackward) {\n if (currentAnchorIndex !== this.selectionRangeArray[0].pageNumber) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n }\n }\n else {\n if (currentAnchorIndex !== this.selectionRangeArray[0].pageNumber) {\n this.extendCurrentSelection(focusNode.parentElement, selectionRange.endOffset, selection, range);\n }\n else {\n this.extendCurrentSelection(anchorNode.parentElement, selectionRange.startOffset, selection, range);\n }\n }\n }\n else if (anchorPageIndex === currentAnchorIndex) {\n if (currentAnchorIndex === focusPageIndex) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n range = document.createRange();\n selection.extend(focusNode, selectionRange.endOffset);\n }\n else {\n if (isBackward) {\n this.extendCurrentSelection(focusNode.parentElement, selectionRange.endOffset, selection, range);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n }\n }\n else if (focusPageIndex === currentAnchorIndex) {\n if (isBackward) {\n selection.extend(selection.focusNode, selection.focusOffset);\n }\n else {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n }\n else if (anchorPageIndex > currentAnchorIndex) {\n // eslint-disable-next-line radix\n var currentAnchorOffset = parseInt(selectionRange.startNode.split('_' + currentAnchorIndex + '_')[1]);\n // eslint-disable-next-line radix\n var currentFocusOffset = parseInt(selectionRange.endNode.split('_' + currentAnchorIndex + '_')[1]);\n if (isBackward) {\n if (currentAnchorIndex !== this.selectionRangeArray[0].pageNumber) {\n if (currentAnchorOffset < currentFocusOffset) {\n this.extendCurrentSelection(anchorNode.parentElement, selectionRange.startOffset, selection, range);\n }\n else {\n range.setStart(focusNode.parentElement, selectionRange.endOffset);\n range.setEnd(selection.anchorNode, selection.anchorOffset);\n }\n }\n else {\n this.extendCurrentSelection(focusNode.parentElement, selectionRange.endOffset, selection, range);\n }\n }\n else {\n if (currentAnchorOffset < currentFocusOffset) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n }\n }\n }\n }\n else if (isNaN(anchorPageIndex)) {\n if (!selectionRange.isBackward) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n }\n }\n }\n if (range.toString() !== '') {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n };\n /**\n * @param pageNumber\n * @param isStich\n * @param pageNumber\n * @param isStich\n * @private\n */\n TextSelection.prototype.maintainSelectionOnScroll = function (pageNumber, isStich) {\n var isSelectionAvailable = this.isSelectionAvailableOnScroll(pageNumber);\n if (this.isTextSelection && !isSelectionAvailable) {\n this.maintainSelection(pageNumber, isStich);\n }\n };\n /**\n * @param pageNumber\n * @param isStich\n * @private\n */\n TextSelection.prototype.maintainSelection = function (pageNumber, isStich) {\n var selection = window.getSelection();\n if (this.isTextSelection && (selection.type === 'Range' || (!selection.type && !selection.isCollapsed))) {\n // eslint-disable-next-line\n var anchorPageId = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n // eslint-disable-next-line\n var focusPageId = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n if (isNaN(focusPageId) && selection.anchorNode !== null) {\n var backward_1 = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (!backward_1) {\n // eslint-disable-next-line radix\n var lastChildNode = this.pdfViewerBase.pageContainer.lastChild;\n if (lastChildNode.classList.contains('e-pv-touch-select-drop')) {\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastChildNode.previousSibling.previousSibling.id.split('_pageDiv_')[1]);\n }\n else {\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastChildNode.id.split('_pageDiv_')[1]);\n }\n }\n else {\n // eslint-disable-next-line radix\n focusPageId = parseInt(this.pdfViewerBase.pageContainer.firstChild.id.split('_pageDiv_')[1]);\n }\n }\n var backward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (this.isTouchSelection && pageNumber > focusPageId && pageNumber > anchorPageId) {\n return;\n }\n if (anchorPageId === focusPageId) {\n var selectionObject = null;\n var selectionBounds = this.getSelectionBounds(selection.getRangeAt(0), pageNumber);\n var selectionRectBounds = this.getSelectionRectangleBounds(selection.getRangeAt(0), pageNumber);\n // eslint-disable-next-line max-len\n var anchorOffsetValue = (this.getNodeElementFromNode(selection.anchorNode).childNodes.length === 1) ? selection.anchorOffset : this.getCorrectOffset(selection.anchorNode, selection.anchorOffset);\n var focusOffsetValue = (this.getNodeElementFromNode(selection.focusNode).childNodes.length === 1) ? selection.focusOffset : this.getCorrectOffset(selection.focusNode, selection.focusOffset);\n selectionObject = {\n isBackward: backward, startNode: this.getNodeElementFromNode(selection.anchorNode).id,\n startOffset: anchorOffsetValue, endNode: this.getNodeElementFromNode(selection.focusNode).id,\n // eslint-disable-next-line max-len\n endOffset: focusOffsetValue, textContent: selection.toString(), pageNumber: pageNumber, bound: selectionBounds, rectangleBounds: selectionRectBounds\n };\n this.pushSelectionRangeObject(selectionObject, pageNumber);\n }\n else {\n var selectionObject = this.createRangeObjectOnScroll(pageNumber, anchorPageId, focusPageId);\n if (selectionObject) {\n this.pushSelectionRangeObject(selectionObject, pageNumber);\n if (isStich) {\n this.stichSelection(backward, selection, pageNumber);\n }\n }\n }\n }\n };\n TextSelection.prototype.getCorrectOffset = function (node, offset) {\n var offsetValue = 0;\n var parentElement = this.getNodeElementFromNode(node);\n for (var i = 0; i < parentElement.childNodes.length; i++) {\n if (parentElement.childNodes[i] === node) {\n offsetValue = offsetValue + offset;\n break;\n }\n else {\n offsetValue = offsetValue + parentElement.childNodes[i].textContent.length;\n }\n }\n return offsetValue;\n };\n TextSelection.prototype.pushSelectionRangeObject = function (selectionObject, pageNumber) {\n if (this.isTouchSelection) {\n var currentObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (obj.pageNumber === pageNumber);\n });\n if (currentObject.length > 0) {\n var currentObjectIndex = this.selectionRangeArray.indexOf(currentObject[0]);\n this.selectionRangeArray.splice(currentObjectIndex, 1, selectionObject);\n return;\n }\n }\n var nextPageObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (obj.pageNumber === (pageNumber + 1));\n });\n if (nextPageObject.length === 0) {\n if (this.isTouchSelection && this.selectionRangeArray.length !== 0) {\n var prevPageObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (obj.pageNumber === (pageNumber - 1));\n });\n if (prevPageObject.length !== 0) {\n var prevIndex = this.selectionRangeArray.indexOf(prevPageObject[0]);\n this.selectionRangeArray.splice(prevIndex + 1, 0, selectionObject);\n }\n else {\n var firstObject = this.selectionRangeArray[0];\n if (pageNumber < firstObject.pageNumber) {\n this.selectionRangeArray.splice(0, 0, selectionObject);\n }\n else {\n this.selectionRangeArray.push(selectionObject);\n }\n }\n }\n else {\n this.selectionRangeArray.push(selectionObject);\n }\n }\n else {\n var index = this.selectionRangeArray.indexOf(nextPageObject[0]);\n this.selectionRangeArray.splice(index, 0, selectionObject);\n }\n };\n TextSelection.prototype.extendCurrentSelection = function (element, offset, selection, range) {\n var currentFocusOffset = selection.focusOffset;\n var currentFocusElement = selection.focusNode.parentElement.id;\n // eslint-disable-next-line\n var focusPageId = isNaN(parseInt(currentFocusElement.split('_text_')[1])) ? parseInt(selection.focusNode.id.split('_pageDiv_')[1]) : parseInt(currentFocusElement.split('_text_')[1]);\n // eslint-disable-next-line radix\n if (isNaN(parseInt(currentFocusElement.split('_text_')[1]))) {\n // eslint-disable-next-line\n currentFocusElement = this.pdfViewerBase.getElement('_textLayer_' + (focusPageId + 1)).firstChild.id;\n }\n range.setStart(element.childNodes[0], offset);\n range.setEnd(element.childNodes[0], offset);\n selection.removeAllRanges();\n selection.addRange(range);\n selection.extend(document.getElementById(currentFocusElement).childNodes[0], currentFocusOffset);\n };\n TextSelection.prototype.stichSelection = function (backward, selection, pageNumber) {\n var range = document.createRange();\n var nextPageElement;\n if (backward) {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber - 1));\n if (nextPageElement) {\n var lastElement = nextPageElement.lastChild;\n if (lastElement) {\n this.extendCurrentSelection(lastElement, this.getTextLastLength(lastElement), selection, range);\n }\n else {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber - 2));\n lastElement = nextPageElement.lastChild;\n this.extendCurrentSelection(lastElement, this.getTextLastLength(lastElement), selection, range);\n }\n }\n else {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber + 1));\n var lastElement = nextPageElement.firstChild;\n this.extendCurrentSelection(lastElement, 0, selection, range);\n }\n }\n else {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber + 1));\n if (nextPageElement) {\n var firstElement = nextPageElement.firstChild;\n if (!firstElement) {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber + 2));\n firstElement = nextPageElement.firstChild;\n range.setStart(firstElement.childNodes[0], 0);\n }\n else {\n range.setStart(firstElement.childNodes[0], 0);\n }\n range.setEnd(selection.focusNode, selection.focusOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n };\n /**\n * @param currentPageNumber\n * @private\n */\n TextSelection.prototype.textSelectionOnMouseWheel = function (currentPageNumber) {\n this.isMouseLeaveSelection = true;\n this.stichSelectionOnScroll(currentPageNumber);\n };\n /**\n * @param currentPageNumber\n * @private\n */\n TextSelection.prototype.stichSelectionOnScroll = function (currentPageNumber) {\n var selection = window.getSelection();\n if (this.isTextSelection) {\n // eslint-disable-next-line radix\n var anchorPageId = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n // eslint-disable-next-line radix\n var focusPageId = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n var nextPageElement = void 0;\n if (anchorPageId !== currentPageNumber && focusPageId !== currentPageNumber) {\n var backward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (!backward) {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (currentPageNumber - 1));\n if (nextPageElement) {\n var lastElement = nextPageElement.lastChild;\n if (lastElement) {\n if (lastElement.childNodes[0]) {\n this.extendSelectionStich(lastElement.childNodes[0], this.getTextLastLength(lastElement), selection);\n }\n else {\n this.extendSelectionStich(lastElement, this.getTextLastLength(lastElement), selection);\n }\n }\n else {\n nextPageElement = this.pdfViewerBase.getElement('_textLayer_' + currentPageNumber);\n var lastElement_1 = nextPageElement.firstChild;\n this.extendSelectionStich(lastElement_1.childNodes[0], 0, selection);\n }\n }\n }\n else {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (currentPageNumber - 1));\n if (nextPageElement) {\n var lastElement = nextPageElement.firstChild;\n if (lastElement) {\n this.extendSelectionStich(lastElement.childNodes[0], 0, selection);\n }\n }\n }\n }\n this.maintainSelectionArray();\n }\n };\n TextSelection.prototype.extendSelectionStich = function (node, offset, selection) {\n if (selection.extend) {\n selection.extend(node, offset);\n }\n };\n /**\n * @param pageNumber\n * @param anchorPageId\n * @param focusPageId\n * @param pageNumber\n * @param anchorPageId\n * @param focusPageId\n * @private\n */\n TextSelection.prototype.createRangeObjectOnScroll = function (pageNumber, anchorPageId, focusPageId) {\n var selectionObject = null;\n var selection = window.getSelection();\n if (selection.anchorNode !== null) {\n var backward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n var firstElement = void 0;\n var lastElement = void 0;\n var startOffset = void 0;\n var endOffset = void 0;\n var element = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageNumber);\n if (element.childNodes) {\n if (!backward) {\n if (pageNumber === anchorPageId) {\n firstElement = this.getNodeElementFromNode(selection.anchorNode);\n // eslint-disable-next-line max-len\n lastElement = element.lastChild;\n startOffset = this.getCorrectOffset(selection.anchorNode, selection.anchorOffset);\n endOffset = this.getTextLastLength(lastElement);\n }\n else if (pageNumber > anchorPageId && pageNumber < focusPageId) {\n // eslint-disable-next-line max-len\n firstElement = element.firstChild;\n // eslint-disable-next-line max-len\n lastElement = element.lastChild;\n startOffset = 0;\n endOffset = this.getTextLastLength(lastElement);\n }\n else if (pageNumber === focusPageId) {\n // eslint-disable-next-line max-len\n firstElement = element.firstChild;\n var pageNumberIndex = this.getNodeElementFromNode(selection.focusNode).id.indexOf(focusPageId.toString());\n if (pageNumberIndex !== -1) {\n lastElement = this.getNodeElementFromNode(selection.focusNode);\n endOffset = this.getCorrectOffset(selection.focusNode, selection.focusOffset);\n }\n else {\n // eslint-disable-next-line max-len\n lastElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + focusPageId).lastChild;\n endOffset = this.getTextLastLength(lastElement);\n }\n startOffset = 0;\n }\n }\n else {\n if (pageNumber === anchorPageId) {\n firstElement = this.getNodeElementFromNode(selection.anchorNode);\n // eslint-disable-next-line max-len\n lastElement = element.firstChild;\n startOffset = this.getCorrectOffset(selection.anchorNode, selection.anchorOffset);\n endOffset = 0;\n }\n else if (pageNumber < anchorPageId && pageNumber > focusPageId) {\n // eslint-disable-next-line max-len\n firstElement = element.firstChild;\n // eslint-disable-next-line max-len\n lastElement = element.lastChild;\n startOffset = 0;\n endOffset = this.getTextLastLength(lastElement);\n }\n else if (pageNumber === focusPageId) {\n firstElement = this.getNodeElementFromNode(selection.focusNode);\n // eslint-disable-next-line max-len\n lastElement = element.lastChild;\n startOffset = this.getCorrectOffset(selection.focusNode, selection.focusOffset);\n endOffset = this.getTextLastLength(lastElement);\n }\n }\n if (firstElement && lastElement) {\n // eslint-disable-next-line max-len\n var selectionRangeObject = this.getSelectionRangeObject(firstElement.id, startOffset, lastElement.id, endOffset, pageNumber);\n var selectionString = selectionRangeObject.toString();\n var selectionBound = this.getSelectionBounds(selectionRangeObject, pageNumber);\n var selectionRectBounds = this.getSelectionRectangleBounds(selectionRangeObject, pageNumber);\n // eslint-disable-next-line max-len\n return selectionObject = { isBackward: backward, startNode: firstElement.id, startOffset: startOffset, endNode: lastElement.id, endOffset: endOffset, textContent: selectionString, pageNumber: pageNumber, bound: selectionBound, rectangleBounds: selectionRectBounds };\n }\n else {\n return null;\n }\n }\n }\n return null;\n };\n TextSelection.prototype.getSelectionRangeObject = function (startNode, startOffset, endNode, endOffset, pageNumber) {\n var startElement = document.getElementById(startNode);\n var endElement = document.getElementById(endNode);\n if (startElement.childNodes[0]) {\n startElement = startElement.childNodes[0];\n }\n if (endElement.childNodes[0]) {\n endElement = endElement.childNodes[0];\n }\n // eslint-disable-next-line radix\n var currentAnchorOffset = parseInt(startNode.split('_' + pageNumber + '_')[1]);\n // eslint-disable-next-line radix\n var currentFocusOffset = parseInt(endNode.split('_' + pageNumber + '_')[1]);\n var range = document.createRange();\n if (currentAnchorOffset <= currentFocusOffset) {\n range.setStart(startElement, startOffset);\n range.setEnd(endElement, endOffset);\n }\n else {\n range.setStart(endElement, endOffset);\n range.setEnd(startElement, startOffset);\n }\n return range;\n };\n TextSelection.prototype.getSelectionBounds = function (range, pageNumber) {\n var startElement = this.getNodeElementFromNode(range.startContainer);\n var endElement = this.getNodeElementFromNode(range.endContainer);\n var bounds = null;\n if (startElement !== endElement) {\n var newStartRange = document.createRange();\n // eslint-disable-next-line max-len\n var startRange = this.createRangeForSelection(range.startContainer, range.endContainer, range.startOffset, range.endOffset, newStartRange);\n bounds = this.normalizeBounds(startRange.getBoundingClientRect(), pageNumber);\n }\n else {\n bounds = this.normalizeBounds(range.getBoundingClientRect(), pageNumber);\n }\n return bounds;\n };\n TextSelection.prototype.getSelectionRectangleBounds = function (range, pageNumber) {\n var selectionBounds = [];\n var startElement = this.getNodeElementFromNode(range.startContainer);\n var endElement = this.getNodeElementFromNode(range.endContainer);\n var bounds = null;\n if (startElement !== endElement) {\n var startOffset = 0;\n var endOffset = 0;\n var currentId = 0;\n var anchorPageId = this.pdfViewerBase.textLayer.getPageIndex(range.startContainer);\n var anchorTextId = this.pdfViewerBase.textLayer.getTextIndex(range.startContainer, anchorPageId);\n var focusPageId = this.pdfViewerBase.textLayer.getPageIndex(range.endContainer);\n var focusTextId = this.pdfViewerBase.textLayer.getTextIndex(range.endContainer, focusPageId);\n var textDivs = this.pdfViewerBase.getElement('_textLayer_' + focusPageId).childNodes;\n if (pageNumber === anchorPageId) {\n currentId = anchorTextId;\n }\n else {\n currentId = 0;\n }\n for (var j = currentId; j < textDivs.length; j++) {\n var textElement = textDivs[j];\n if (j === anchorTextId) {\n startOffset = range.startOffset;\n }\n else {\n startOffset = 0;\n }\n if (j === focusTextId) {\n endOffset = range.endOffset;\n }\n else {\n endOffset = textElement.textContent.length;\n }\n if (startOffset !== 0 || endOffset !== 0) {\n var newRange = document.createRange();\n for (var k = 0; k < textElement.childNodes.length; k++) {\n var node = textElement.childNodes[k];\n newRange.setStart(node, startOffset);\n newRange.setEnd(node, endOffset);\n }\n var boundingRect = this.normalizeBounds(newRange.getBoundingClientRect(), pageNumber);\n selectionBounds.push(boundingRect);\n newRange.detach();\n if (j === focusTextId) {\n break;\n }\n }\n }\n }\n else {\n bounds = this.normalizeBounds(range.getBoundingClientRect(), pageNumber);\n selectionBounds.push(bounds);\n }\n return selectionBounds;\n };\n TextSelection.prototype.getTextId = function (elementId) {\n var index = elementId.lastIndexOf('_');\n var divId = elementId.substring(index + 1, elementId.length);\n // eslint-disable-next-line radix\n return parseInt(divId);\n };\n TextSelection.prototype.normalizeBounds = function (bound, pageNumber) {\n var newBounds = null;\n var currentPageElement = this.pdfViewerBase.getElement('_pageDiv_' + pageNumber);\n if (this.pdfViewerBase.isMixedSizeDocument) {\n var currentTextElement = this.pdfViewerBase.getElement('_textLayer_' + pageNumber);\n if (currentTextElement) {\n currentPageElement = currentTextElement;\n }\n }\n var currentPageRect = currentPageElement.getBoundingClientRect();\n newBounds = {\n bottom: this.getMagnifiedValue(bound.bottom - currentPageRect.top), height: this.getMagnifiedValue(bound.height),\n left: this.getMagnifiedValue(bound.left - currentPageRect.left), top: this.getMagnifiedValue(bound.top - currentPageRect.top),\n right: this.getMagnifiedValue(bound.right - currentPageRect.left), width: this.getMagnifiedValue(bound.width)\n };\n return newBounds;\n };\n TextSelection.prototype.getMagnifiedValue = function (value) {\n return value / this.pdfViewerBase.getZoomFactor();\n };\n /**\n * @param pageNumber\n * @private\n */\n TextSelection.prototype.getCurrentSelectionBounds = function (pageNumber) {\n var bound = null;\n var ranges = this.selectionRangeArray;\n for (var i = 0; i < ranges.length; i++) {\n if (ranges[i] !== null) {\n if (pageNumber === ranges[i].pageNumber) {\n bound = ranges[i].bound;\n }\n }\n }\n return bound;\n };\n TextSelection.prototype.createRangeForSelection = function (start, end, startOffset, endOffset, range) {\n range.setStart(start, startOffset);\n range.setEnd(end, endOffset);\n return range;\n };\n TextSelection.prototype.maintainSelectionArray = function () {\n var _this = this;\n if (this.selectionRangeArray.length !== 0) {\n var selection = window.getSelection();\n var isBackward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n // eslint-disable-next-line\n var anchorPage = isNaN(parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1])) ? parseInt(selection.anchorNode.id.split('_pageDiv_')[1]) : parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n if (isNaN(anchorPage)) {\n // eslint-disable-next-line radix\n anchorPage = parseInt(selection.anchorNode.id.split('_text_')[1]);\n }\n // eslint-disable-next-line\n var focusPage_1 = isNaN(parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1])) ? parseInt(selection.focusNode.id.split('_pageDiv_')[1]) : parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n if (isNaN(focusPage_1)) {\n // eslint-disable-next-line\n focusPage_1 = isNaN(parseInt(selection.focusNode.id.split('_text_')[1])) ? parseInt(selection.focusNode.id.split('_textLayer_')[1]) : parseInt(selection.focusNode.id.split('_text_')[1]);\n }\n var arrayObject = [];\n if (!isBackward) {\n arrayObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (!((_this.selectionStartPage <= obj.pageNumber) && (obj.pageNumber < focusPage_1)));\n });\n }\n else {\n arrayObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (!((focusPage_1 < obj.pageNumber) && (obj.pageNumber <= _this.selectionStartPage)));\n });\n }\n if (arrayObject.length > 0) {\n for (var i = 0; i < arrayObject.length; i++) {\n var indexInArray = this.selectionRangeArray.indexOf(arrayObject[i]);\n if (indexInArray !== -1) {\n this.selectionRangeArray.splice(indexInArray, 1);\n }\n }\n if (this.selectionRangeArray.length === 1) {\n // eslint-disable-next-line max-len\n if (this.selectionRangeArray[0].pageNumber === anchorPage || this.selectionRangeArray[0].pageNumber === focusPage_1) {\n arrayObject = [];\n }\n }\n }\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.applySpanForSelection = function () {\n var selection = window.getSelection();\n // eslint-disable-next-line max-len\n if (selection.anchorNode === selection.focusNode && selection.anchorOffset === selection.focusOffset && !selection.isCollapsed) {\n selection.removeAllRanges();\n }\n // eslint-disable-next-line max-len\n if (selection.anchorNode !== null && this.pdfViewerBase.viewerContainer.contains(this.getNodeElementFromNode(selection.anchorNode))) {\n var isBackWardSelection = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n var anchorPageId = void 0;\n var focusPageId = void 0;\n var anchorOffsetDiv = void 0;\n var focusOffsetDiv = void 0;\n var anchorOffset = void 0;\n var focusOffset = void 0;\n if (isBackWardSelection) {\n // eslint-disable-next-line radix\n anchorPageId = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n // eslint-disable-next-line radix\n focusPageId = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n // eslint-disable-next-line radix\n anchorOffsetDiv = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1].split('_')[1]);\n // eslint-disable-next-line radix\n focusOffsetDiv = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1].split('_')[1]);\n anchorOffset = selection.focusOffset;\n focusOffset = selection.anchorOffset;\n }\n else {\n var anchorElement = this.getNodeElementFromNode(selection.anchorNode);\n var focusElement = this.getNodeElementFromNode(selection.focusNode);\n // eslint-disable-next-line\n anchorPageId = (anchorElement.id.indexOf('text_') !== -1) ? parseInt(anchorElement.id.split('text_')[1]) : parseInt(anchorElement.id.split('_textLayer_')[1]);\n // eslint-disable-next-line\n focusPageId = (focusElement.id.indexOf('text_') !== -1) ? parseInt(focusElement.id.split('text_')[1]) : parseInt(focusElement.id.split('_textLayer_')[1]);\n var isFocusChanged = false;\n if (this.isTouchSelection) {\n if (selection.focusNode === this.pdfViewerBase.pageContainer) {\n var lastChildNode = this.pdfViewerBase.pageContainer.lastChild;\n if (lastChildNode.classList.contains('e-pv-touch-select-drop')) {\n var lastPageDiv = lastChildNode.previousSibling.previousSibling;\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastPageDiv.id.split('_pageDiv_')[1]);\n focusElement = this.pdfViewerBase.getElement('_textLayer_' + focusPageId).lastChild;\n isFocusChanged = true;\n }\n else if (lastChildNode.classList.contains('e-pv-page-div')) {\n var lastPageDiv = lastChildNode;\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastPageDiv.id.split('_pageDiv_')[1]);\n focusElement = this.pdfViewerBase.getElement('_textLayer_' + focusPageId).lastChild;\n isFocusChanged = true;\n }\n }\n }\n if (anchorElement.classList.contains('e-pv-maintaincontent')) {\n anchorElement = this.getNodeElementFromNode(anchorElement);\n // eslint-disable-next-line radix\n anchorPageId = parseInt(anchorElement.id.split('text_')[1]);\n }\n if (focusElement.classList.contains('e-pv-maintaincontent')) {\n focusElement = this.getNodeElementFromNode(focusElement);\n // eslint-disable-next-line radix\n focusPageId = parseInt(focusElement.id.split('text_')[1]);\n }\n if (anchorPageId === focusPageId) {\n if (anchorElement.contains(focusElement)) {\n anchorElement = focusElement;\n }\n if (focusElement.contains(anchorElement)) {\n focusElement = anchorElement;\n }\n }\n // eslint-disable-next-line radix\n anchorOffsetDiv = (anchorElement.id.split('text_')[1]) ? parseInt(anchorElement.id.split('text_')[1].split('_')[1]) : null;\n // eslint-disable-next-line radix\n focusOffsetDiv = (focusElement.id.split('text_')[1]) ? parseInt(focusElement.id.split('text_')[1].split('_')[1]) : null;\n anchorOffsetDiv = isNaN(anchorOffsetDiv) ? focusOffsetDiv : anchorOffsetDiv;\n focusOffsetDiv = isNaN(focusOffsetDiv) ? anchorOffsetDiv : focusOffsetDiv;\n anchorOffset = selection.anchorOffset;\n focusOffset = !isFocusChanged ? selection.focusOffset : focusElement.textContent.length;\n }\n if (this.pdfViewerBase.checkIsNormalText()) {\n selection.removeAllRanges();\n this.pdfViewerBase.textLayer.clearDivSelection();\n // eslint-disable-next-line max-len\n this.pdfViewerBase.textLayer.applySpanForSelection(anchorPageId, focusPageId, anchorOffsetDiv, focusOffsetDiv, anchorOffset, focusOffset);\n }\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n }\n };\n /**\n * @param event\n * @param x\n * @param y\n * @private\n */\n TextSelection.prototype.initiateTouchSelection = function (event, x, y) {\n if (this.pdfViewerBase.isShapeBasedAnnotationsEnabled()) {\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n this.pdfViewer.clearSelection(this.pdfViewer.selectedItems.annotations[0].pageIndex);\n }\n }\n // eslint-disable-next-line\n var element = event.target;\n var belowElements = document.elementsFromPoint(event.touches[0].clientX, event.touches[0].clientY);\n if (belowElements.length !== 0) {\n if (belowElements[0].classList.contains('e-pv-hyperlink') && belowElements[1].classList.contains('e-pv-text')) {\n element = belowElements[1];\n }\n }\n var pageNumber = parseFloat(element.id.split('_')[2]);\n this.pdfViewer.fireTextSelectionStart(pageNumber + 1);\n this.selectAWord(element, x, y, true);\n this.createTouchSelectElement(event);\n this.maintainSelectionOnZoom(true, false);\n this.fireTextSelectEnd();\n this.applySpanForSelection();\n };\n // eslint-disable-next-line\n TextSelection.prototype.selectTextByTouch = function (element, x, y, isForwardSelection, target, isCloserMovement) {\n var isTextSelected = false;\n if (element.nodeType === element.TEXT_NODE) {\n var rangeObject = element.ownerDocument.createRange();\n var selection = window.getSelection();\n rangeObject.selectNodeContents(element);\n var currentPosition = 0;\n var endPosition = rangeObject.endOffset;\n while (currentPosition < endPosition) {\n rangeObject.setStart(element, currentPosition);\n rangeObject.setEnd(element, currentPosition + 1);\n var rangeBounds = rangeObject.getBoundingClientRect();\n if (rangeBounds.left <= x && rangeBounds.right >= x && rangeBounds.top <= y && rangeBounds.bottom >= y) {\n if (selection.anchorNode != null) {\n if (isForwardSelection) {\n rangeObject.setStart(selection.anchorNode, selection.anchorOffset);\n }\n // eslint-disable-next-line max-len\n rangeObject = this.setTouchSelectionStartPosition(selection, rangeObject, isForwardSelection, target, element, currentPosition, isCloserMovement);\n if (isForwardSelection) {\n selection.extend(element, currentPosition);\n }\n isTextSelected = true;\n }\n rangeObject.detach();\n return isTextSelected;\n }\n currentPosition += 1;\n }\n }\n else {\n for (var i = 0; i < element.childNodes.length; i++) {\n var range = element.childNodes[i].ownerDocument.createRange();\n range.selectNodeContents(element.childNodes[i]);\n var rangeBounds = range.getBoundingClientRect();\n if (rangeBounds.left <= x && rangeBounds.right >= x && rangeBounds.top <= y && rangeBounds.bottom >= y) {\n range.detach();\n return (this.selectTextByTouch(element.childNodes[i], x, y, isForwardSelection, target, isCloserMovement));\n }\n else {\n range.detach();\n }\n }\n }\n return isTextSelected;\n };\n // eslint-disable-next-line\n TextSelection.prototype.setTouchSelectionStartPosition = function (selection, range, isForwardSelection, target, element, currentPosition, isCloserMovement) {\n if (isForwardSelection) {\n if (target === 'left') {\n // eslint-disable-next-line\n var startNode = this.getTouchFocusElement(selection, true);\n range.setStart(startNode.focusNode, startNode.focusOffset);\n range.setEnd(element, currentPosition);\n this.selectionAnchorTouch = { anchorNode: range.endContainer.parentElement.id, anchorOffset: range.endOffset };\n }\n else if (target === 'right') {\n // eslint-disable-next-line\n var startNode = this.getTouchAnchorElement(selection, false);\n range.setStart(startNode.anchorNode, startNode.anchorOffset);\n range.setEnd(element, currentPosition);\n this.selectionFocusTouch = { focusNode: range.endContainer.parentElement.id, focusOffset: range.endOffset };\n }\n }\n else {\n if (target === 'left') {\n if (!isCloserMovement) {\n // eslint-disable-next-line\n var startNode = this.getTouchFocusElement(selection, false);\n range.setStart(element, currentPosition);\n // eslint-disable-next-line radix\n range.setEnd(startNode.focusNode, startNode.focusOffset);\n if (range.toString() === '') {\n range.setStart(element, currentPosition);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n this.selectionAnchorTouch = { anchorNode: range.startContainer.parentElement.id, anchorOffset: range.startOffset };\n }\n else {\n range.setStart(element, currentPosition);\n range.setEnd(selection.focusNode, selection.focusOffset);\n this.selectionAnchorTouch = { anchorNode: range.startContainer.parentElement.id, anchorOffset: range.startOffset };\n }\n }\n else if (target === 'right') {\n // eslint-disable-next-line\n var startNode = this.getTouchAnchorElement(selection, true);\n range.setStart(element, currentPosition);\n range.setEnd(startNode.anchorNode, startNode.anchorOffset);\n if (range.toString() === '') {\n range.setStart(startNode.anchorNode, startNode.anchorOffset);\n range.setEnd(element, currentPosition);\n }\n this.selectionFocusTouch = { focusNode: range.startContainer.parentElement.id, focusOffset: range.startOffset };\n }\n }\n selection.removeAllRanges();\n selection.addRange(range);\n return range;\n };\n TextSelection.prototype.getTouchAnchorElement = function (selection, isCurrentFocus) {\n var element = document.getElementById(this.selectionAnchorTouch.anchorNode.toString());\n var startNode = null;\n var offset = 0;\n if (element) {\n startNode = element.childNodes[0];\n // eslint-disable-next-line radix\n offset = parseInt(this.selectionAnchorTouch.anchorOffset.toString());\n }\n else {\n if (isCurrentFocus) {\n startNode = selection.focusNode;\n offset = selection.focusOffset;\n }\n else {\n startNode = selection.anchorNode;\n offset = selection.anchorOffset;\n }\n }\n return { anchorNode: startNode, anchorOffset: offset };\n };\n TextSelection.prototype.getTouchFocusElement = function (selection, isCurrentAnchor) {\n var element = document.getElementById(this.selectionFocusTouch.focusNode.toString());\n var startNode = null;\n var offset = 0;\n if (element) {\n startNode = element.childNodes[0];\n // eslint-disable-next-line radix\n offset = parseInt(this.selectionFocusTouch.focusOffset.toString());\n }\n else {\n if (isCurrentAnchor) {\n startNode = selection.anchorNode;\n offset = selection.anchorOffset;\n }\n else {\n startNode = selection.focusNode;\n offset = selection.focusOffset;\n }\n }\n return { focusNode: startNode, focusOffset: offset };\n };\n TextSelection.prototype.createTouchSelectElement = function (event) {\n var topMargin = 10;\n this.isTouchSelection = true;\n var selection = window.getSelection();\n if (selection.type === 'Range') {\n // eslint-disable-next-line max-len\n this.dropDivElementLeft = createElement('div', { id: this.pdfViewer.element.id + '_touchSelect_droplet_left', className: 'e-pv-touch-select-drop' });\n // eslint-disable-next-line max-len\n this.dropDivElementRight = createElement('div', { id: this.pdfViewer.element.id + '_touchSelect_droplet_right', className: 'e-pv-touch-select-drop' });\n this.dropElementLeft = createElement('div', { className: 'e-pv-touch-ellipse' });\n this.dropElementLeft.style.transform = 'rotate(0deg)';\n this.dropDivElementLeft.appendChild(this.dropElementLeft);\n this.dropElementRight = createElement('div', { className: 'e-pv-touch-ellipse' });\n this.dropElementRight.style.transform = 'rotate(-90deg)';\n this.dropElementRight.style.margin = '0 9px 0 0';\n this.dropDivElementRight.appendChild(this.dropElementRight);\n this.pdfViewerBase.pageContainer.appendChild(this.dropDivElementLeft);\n this.pdfViewerBase.pageContainer.appendChild(this.dropDivElementRight);\n var range = selection.getRangeAt(0);\n var rangePosition = range.getBoundingClientRect();\n var dropElementRect = this.dropDivElementLeft.getBoundingClientRect();\n // eslint-disable-next-line max-len\n var pageTopValue = this.pdfViewerBase.pageSize[this.pdfViewerBase.currentPageNumber - 1].top;\n var viewerLeftPosition = this.pdfViewerBase.viewerContainer.getBoundingClientRect().left;\n var topClientValue = this.getClientValueTop(rangePosition.top, this.pdfViewerBase.currentPageNumber - 1);\n // eslint-disable-next-line max-len\n var topPositionValue = topClientValue + pageTopValue * this.pdfViewerBase.getZoomFactor() + (dropElementRect.height / 2) * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropDivElementLeft.style.top = topPositionValue;\n this.dropDivElementLeft.style.left = rangePosition.left - (viewerLeftPosition + (dropElementRect.width)) + 'px';\n this.dropDivElementRight.style.top = topPositionValue;\n // eslint-disable-next-line max-len\n this.dropDivElementRight.style.left = rangePosition.left + rangePosition.width - viewerLeftPosition + 'px';\n var currentPageLeft = this.pdfViewerBase.getElement('_pageDiv_' + (this.pdfViewerBase.currentPageNumber - 1)).getBoundingClientRect().left;\n var currentRangeLeft = rangePosition.left - currentPageLeft;\n // eslint-disable-next-line max-len\n this.topStoreLeft = { pageTop: pageTopValue, topClientValue: this.getMagnifiedValue(topClientValue), pageNumber: this.pdfViewerBase.currentPageNumber - 1, left: this.getMagnifiedValue(currentRangeLeft), isHeightNeeded: true };\n // eslint-disable-next-line max-len\n this.topStoreRight = { pageTop: pageTopValue, topClientValue: this.getMagnifiedValue(topClientValue), pageNumber: this.pdfViewerBase.currentPageNumber - 1, left: this.getMagnifiedValue(currentRangeLeft + rangePosition.width), isHeightNeeded: true };\n this.dropDivElementLeft.addEventListener('touchstart', this.onLeftTouchSelectElementTouchStart);\n this.dropDivElementLeft.addEventListener('touchmove', this.onLeftTouchSelectElementTouchMove);\n this.dropDivElementLeft.addEventListener('touchend', this.onLeftTouchSelectElementTouchEnd);\n this.dropDivElementRight.addEventListener('touchstart', this.onRightTouchSelectElementTouchStart);\n this.dropDivElementRight.addEventListener('touchmove', this.onRightTouchSelectElementTouchMove);\n this.dropDivElementRight.addEventListener('touchend', this.onRightTouchSelectElementTouchEnd);\n // eslint-disable-next-line max-len\n this.calculateContextMenuPosition((event.touches[0].clientY + this.dropDivElementLeft.clientHeight + topMargin), (parseInt(this.dropDivElementLeft.style.left, 10) - topMargin));\n }\n };\n /**\n * @param top\n * @param left\n * @private\n */\n // eslint-disable-next-line\n TextSelection.prototype.calculateContextMenuPosition = function (top, left) {\n var _this = this;\n var topMargin = 10;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line\n var contextTop = top - this.contextMenuHeight;\n if (contextTop < this.pdfViewerBase.toolbarHeight) {\n top = top + this.contextMenuHeight;\n }\n else {\n top = contextTop;\n }\n if ((top + this.contextMenuHeight) > window.innerHeight) {\n top = top - this.contextMenuHeight;\n }\n }\n if (this.pdfViewer.contextMenuSettings.contextMenuAction === 'MouseUp') {\n left = left - 50;\n }\n var proxy = this;\n setTimeout(function () {\n var leftValue = 35;\n var selectedContent = document.getElementsByClassName(\"e-pv-maintaincontent\")[0] ? document.getElementsByClassName(\"e-pv-maintaincontent\")[0].getBoundingClientRect() : null;\n if (selectedContent) {\n if ((selectedContent.bottom + proxy.contextMenuHeight + proxy.pdfViewerBase.toolbarHeight) > window.innerHeight) {\n top = selectedContent.top - (proxy.contextMenuHeight + proxy.pdfViewerBase.toolbarHeight - topMargin);\n }\n else {\n top = selectedContent.bottom + proxy.pdfViewerBase.toolbarHeight - topMargin;\n }\n left = selectedContent.left - leftValue;\n var toolbarModule = _this.pdfViewer.toolbarModule ? _this.pdfViewer.toolbarModule.annotationToolbarModule : 'null';\n if (!toolbarModule || !toolbarModule.textMarkupToolbarElement || toolbarModule.textMarkupToolbarElement.children.length === 0) {\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.contextMenuModule.open(top, left, proxy.pdfViewerBase.viewerContainer);\n }\n }\n });\n };\n /**\n * @private\n */\n TextSelection.prototype.initiateSelectionByTouch = function () {\n this.pdfViewerBase.textLayer.clearDivSelection();\n this.pdfViewerBase.contextMenuModule.close();\n var lowerPageIndex = this.pdfViewerBase.currentPageNumber - 3;\n lowerPageIndex = (lowerPageIndex < 0) ? 0 : lowerPageIndex;\n var higherPageIndex = this.pdfViewer.currentPageNumber + 1;\n // eslint-disable-next-line max-len\n higherPageIndex = (higherPageIndex < (this.pdfViewerBase.pageCount - 1)) ? higherPageIndex : (this.pdfViewerBase.pageCount - 1);\n for (var i = lowerPageIndex; i <= higherPageIndex; i++) {\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + i);\n if (textLayer) {\n if (textLayer.childNodes !== null) {\n this.applySelectionMouseScroll(i);\n }\n }\n }\n if (this.selectionRangeArray.length > 0) {\n this.pdfViewer.fireTextSelectionStart(this.selectionRangeArray[0].pageNumber + 1);\n }\n };\n // eslint-disable-next-line\n TextSelection.prototype.terminateSelectionByTouch = function (event) {\n var topMargin = 10;\n this.maintainSelectionOnZoom(true, false);\n this.applySpanForSelection();\n if (this.pdfViewerBase.getTextMarkupAnnotationMode()) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations(this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode);\n }\n else {\n this.fireTextSelectEnd();\n var top_4 = event.changedTouches[0].clientY + event.currentTarget.clientHeight;\n var spanBounds = this.getSpanBounds();\n if ((spanBounds.bottom + this.contextMenuHeight + this.pdfViewerBase.toolbarHeight) > window.innerHeight) {\n top_4 = spanBounds.top - (this.contextMenuHeight + this.pdfViewerBase.toolbarHeight);\n }\n else {\n top_4 = spanBounds.bottom + this.pdfViewerBase.toolbarHeight - topMargin;\n }\n this.pdfViewerBase.contextMenuModule.open(top_4, (spanBounds.right - spanBounds.left) / 2, this.pdfViewerBase.viewerContainer);\n }\n };\n TextSelection.prototype.getSpanBounds = function () {\n var spanWidth = [];\n var spanRight = [];\n var spanLeft = [];\n var spanHeight = 0;\n var selectedContent = document.getElementsByClassName(\"e-pv-maintaincontent\");\n if (selectedContent.length > 0) {\n for (var i = 0; i < selectedContent.length; i++) {\n var spanElement = selectedContent[i].getBoundingClientRect();\n spanHeight = spanHeight + spanElement.height;\n spanWidth.push(spanElement.width);\n spanRight.push(spanElement.right);\n spanLeft.push(spanElement.left);\n }\n // eslint-disable-next-line max-len\n return { top: selectedContent[0].getBoundingClientRect().top, bottom: selectedContent[selectedContent.length - 1].getBoundingClientRect().bottom, left: Math.min.apply(null, spanLeft), right: Math.max.apply(null, spanRight), width: Math.max.apply(null, spanWidth), height: spanHeight };\n }\n };\n TextSelection.prototype.getNodeElement = function (range, touchX, touchY, event, nodeElement) {\n if (document.caretRangeFromPoint) {\n range = document.caretRangeFromPoint(touchX, touchY);\n nodeElement = this.onTouchElementScroll(range, nodeElement, touchY, event);\n // eslint-disable-next-line\n }\n else if (document.caretPositionFromPoint) {\n // eslint-disable-next-line\n var start = document.caretPositionFromPoint(touchX, touchY);\n // eslint-disable-next-line\n var end = document.caretPositionFromPoint(touchX, touchY);\n range = document.createRange();\n range.setStart(start.offsetNode, start.offset);\n range.setEnd(end.offsetNode, end.offset);\n nodeElement = this.onTouchElementScroll(range, nodeElement, touchY, event);\n }\n return nodeElement;\n };\n TextSelection.prototype.isTouchedWithinContainer = function (event) {\n var elements = document.elementsFromPoint(event.touches[0].clientX, event.touches[0].clientY);\n var isTouchedWithinContainer = false;\n if (elements.length !== 0) {\n isTouchedWithinContainer = true;\n }\n return isTouchedWithinContainer;\n };\n TextSelection.prototype.onTouchElementScroll = function (range, nodeElement, touchY, event) {\n var viewerScrollTop = this.pdfViewerBase.viewerContainer.scrollTop;\n if (range != null) {\n nodeElement = range.startContainer;\n var isScrollBar = this.isScrolledOnScrollBar(event);\n if (!this.pdfViewerBase.viewerContainer.contains(nodeElement.parentElement) || isScrollBar) {\n if (touchY < this.pdfViewerBase.viewerContainer.clientHeight) {\n this.pdfViewerBase.viewerContainer.scrollTop = viewerScrollTop - 30;\n }\n else {\n this.pdfViewerBase.viewerContainer.scrollTop = viewerScrollTop + 30;\n }\n }\n }\n else {\n if (touchY < this.pdfViewerBase.viewerContainer.clientHeight) {\n this.pdfViewerBase.viewerContainer.scrollTop = viewerScrollTop - 30;\n }\n else {\n this.pdfViewerBase.viewerContainer.scrollTop = viewerScrollTop + 30;\n }\n }\n return nodeElement;\n };\n TextSelection.prototype.isCloserTouchScroll = function (currentDifference) {\n var isForwardMovement = false;\n if (this.previousScrollDifference > currentDifference) {\n isForwardMovement = true;\n }\n return isForwardMovement;\n };\n TextSelection.prototype.getClientValueTop = function (clientValue, pageNumber) {\n if (this.pdfViewerBase.getElement('_pageDiv_' + pageNumber)) {\n // eslint-disable-next-line max-len\n return clientValue - this.pdfViewerBase.getElement('_pageDiv_' + pageNumber).getBoundingClientRect().top;\n }\n else {\n return clientValue;\n }\n };\n TextSelection.prototype.isScrolledOnScrollBar = function (event) {\n var isScrollBar = false;\n // eslint-disable-next-line max-len\n if (event.touches && (this.pdfViewerBase.viewerContainer.clientHeight + this.pdfViewerBase.viewerContainer.offsetTop) < event.touches[0].clientY && event.touches[0].clientY < (this.pdfViewerBase.viewerContainer.offsetHeight + this.pdfViewerBase.viewerContainer.offsetTop)) {\n isScrollBar = true;\n }\n return isScrollBar;\n };\n TextSelection.prototype.getTextLastLength = function (element) {\n if (element) {\n return element.textContent.length;\n }\n else {\n return 0;\n }\n };\n TextSelection.prototype.getNodeElementFromNode = function (node) {\n if (node.parentElement) {\n return node.parentElement;\n }\n else {\n return node.parentNode;\n }\n };\n /**\n * Copy the selected text in the PDF Document.\n *\n * @returns void\n */\n TextSelection.prototype.copyText = function () {\n var selectionText = '';\n this.maintainSelectionOnZoom(true, false);\n if (this.selectionRangeArray.length > 0) {\n for (var i = 0; i < this.selectionRangeArray.length; i++) {\n selectionText += this.selectionRangeArray[i].textContent;\n }\n }\n if (selectionText.length > 0) {\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.isShapeCopied = false;\n }\n var textArea = document.createElement('textarea');\n textArea.contentEditable = 'true';\n textArea.textContent = selectionText;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.freeTextAnnotationModule) {\n this.pdfViewer.annotation.freeTextAnnotationModule.selectedText = selectionText;\n }\n textArea.style.position = 'fixed';\n document.body.appendChild(textArea);\n textArea.select();\n try {\n document.execCommand('copy');\n }\n catch (ex) {\n console.warn('Copy to clipboard failed.', ex);\n }\n finally {\n if (textArea) {\n document.body.removeChild(textArea);\n }\n }\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.destroy = function () {\n this.clear();\n };\n /**\n * @private\n */\n TextSelection.prototype.getModuleName = function () {\n return 'TextSelection';\n };\n return TextSelection;\n}());\nexport { TextSelection };\n","/* eslint-disable */\nimport { createElement, Browser, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { AjaxHandler } from '../index';\nimport { createSpinner, showSpinner, hideSpinner } from '../index';\n/**\n * TextSearch module\n */\nvar TextSearch = /** @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function TextSearch(pdfViewer, pdfViewerBase) {\n var _this = this;\n /**\n * @private\n */\n this.isTextSearch = false;\n /**\n * @private\n */\n this.searchCount = 0;\n this.searchIndex = 0;\n this.currentSearchIndex = 0;\n this.startIndex = null;\n this.searchPageIndex = null;\n this.searchString = null;\n this.isMatchCase = false;\n this.searchRequestHandler = null;\n // eslint-disable-next-line\n this.textContents = new Array();\n // eslint-disable-next-line\n this.searchMatches = new Array();\n // eslint-disable-next-line\n this.searchCollection = new Array();\n this.searchedPages = [];\n this.isPrevSearch = false;\n // eslint-disable-next-line\n this.tempElementStorage = new Array();\n /**\n * @private\n */\n this.isMessagePopupOpened = false;\n /**\n * @private\n */\n this.isTextRetrieved = false;\n this.isTextSearched = false;\n this.isTextSearchEventTriggered = false;\n this.isSearchText = false;\n // eslint-disable-next-line\n this.checkBoxOnChange = function (event) {\n if (isBlazor()) {\n if (event.currentTarget && event.currentTarget.checked) {\n _this.isMatchCase = true;\n }\n else {\n _this.isMatchCase = false;\n }\n }\n else {\n if (event.checked) {\n _this.isMatchCase = true;\n }\n else {\n _this.isMatchCase = false;\n }\n }\n if (_this.isTextSearch) {\n _this.resetVariables();\n _this.clearAllOccurrences();\n var inputString = _this.searchInput.value;\n _this.searchIndex = 0;\n _this.textSearch(inputString);\n }\n };\n this.searchKeypressHandler = function (event) {\n _this.enableNextButton(true);\n _this.enablePrevButton(true);\n if (event.which === 13) {\n _this.initiateTextSearch(_this.searchInput);\n _this.updateSearchInputIcon(false);\n }\n else {\n _this.resetVariables();\n }\n };\n this.searchClickHandler = function (event) {\n _this.searchButtonClick(_this.searchBtn, _this.searchInput);\n };\n this.nextButtonOnClick = function (event) {\n _this.nextSearch();\n };\n this.prevButtonOnClick = function (event) {\n _this.prevSearch();\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n */\n TextSearch.prototype.createTextSearchBox = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n this.searchBox = createElement('div', { id: this.pdfViewer.element.id + '_search_box', className: 'e-pv-search-bar' });\n var toolbarElement;\n if (isBlazor()) {\n toolbarElement = document.getElementById('toolbarContainer');\n }\n else {\n toolbarElement = this.pdfViewerBase.getElement('_toolbarContainer');\n }\n if (toolbarElement) {\n if (isBlazor()) {\n this.searchBox.style.top = toolbarElement.clientHeight + 'px';\n }\n else {\n this.searchBox.style.top = toolbarElement.clientHeight + 'px';\n }\n }\n var searchElementsContainer = createElement('div', { id: this.pdfViewer.element.id + '_search_box_elements', className: 'e-pv-search-bar-elements' });\n // eslint-disable-next-line max-len\n var searchInputContainer = createElement('div', { id: this.pdfViewer.element.id + '_search_input_container', className: 'e-input-group e-pv-search-input' });\n this.searchInput = createElement('input', { id: this.pdfViewer.element.id + '_search_input', className: 'e-input' });\n this.searchInput.type = 'text';\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Findindocument');\n promise.then(function (value) {\n _this.searchInput.placeholder = value;\n });\n }\n else {\n this.searchInput.placeholder = this.pdfViewer.localeObj.getConstant('Find in document');\n }\n // eslint-disable-next-line max-len\n this.searchBtn = createElement('span', { id: this.pdfViewer.element.id + '_search_box-icon', className: 'e-input-group-icon e-input-search-group-icon e-pv-search-icon' });\n searchInputContainer.appendChild(this.searchInput);\n searchInputContainer.appendChild(this.searchBtn);\n searchElementsContainer.appendChild(searchInputContainer);\n if (this.pdfViewer.enableRtl) {\n this.prevSearchBtn = this.createSearchBoxButtons('prev_occurrence', 'e-pv-next-search');\n }\n else {\n this.prevSearchBtn = this.createSearchBoxButtons('prev_occurrence', 'e-pv-prev-search');\n }\n this.prevSearchBtn.setAttribute('aria-label', 'Previous Search text');\n searchElementsContainer.appendChild(this.prevSearchBtn);\n if (this.pdfViewer.enableRtl) {\n this.nextSearchBtn = this.createSearchBoxButtons('next_occurrence', 'e-pv-prev-search');\n }\n else {\n this.nextSearchBtn = this.createSearchBoxButtons('next_occurrence', 'e-pv-next-search');\n }\n this.nextSearchBtn.setAttribute('aria-label', 'Next Search text');\n searchElementsContainer.appendChild(this.nextSearchBtn);\n // eslint-disable-next-line max-len\n var matchCaseContainer = createElement('div', { id: this.pdfViewer.element.id + '_match_case_container', className: 'e-pv-match-case-container' });\n var matchCaseInput = createElement('input', { id: this.pdfViewer.element.id + '_match_case' });\n matchCaseInput.type = 'checkbox';\n if (isBlazor()) {\n matchCaseInput.style.height = '17px';\n matchCaseInput.style.width = '17px';\n matchCaseInput.addEventListener('change', this.checkBoxOnChange.bind(this));\n }\n matchCaseContainer.appendChild(matchCaseInput);\n this.searchBox.appendChild(searchElementsContainer);\n this.searchBox.appendChild(matchCaseContainer);\n this.pdfViewerBase.mainContainer.appendChild(this.searchBox);\n if (isBlazor()) {\n // eslint-disable-next-line max-len\n var matchCaseText_1 = createElement('span', { id: this.pdfViewer.element.id + '_search_box_text', styles: 'position: absolute; padding-top: 3px; padding-left: 8px; padding-right: 8px; font-size: 13px' });\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Matchcase');\n promise.then(function (value) {\n matchCaseText_1.textContent = value;\n });\n matchCaseContainer.appendChild(matchCaseText_1);\n }\n else {\n // eslint-disable-next-line max-len\n var checkBox = new CheckBox({ cssClass: 'e-pv-match-case', label: this.pdfViewer.localeObj.getConstant('Match case'), change: this.checkBoxOnChange.bind(this) });\n checkBox.appendTo(matchCaseInput);\n }\n var waitingPopup = createElement('div', { id: this.pdfViewer.element.id + '_textSearchLoadingIndicator' });\n searchInputContainer.appendChild(waitingPopup);\n waitingPopup.style.position = 'absolute';\n waitingPopup.style.top = '15px';\n waitingPopup.style.left = searchInputContainer.clientWidth - 46 + 'px';\n createSpinner({ target: waitingPopup, cssClass: 'e-spin-center' });\n this.setLoaderProperties(waitingPopup);\n this.showSearchBox(false);\n if (this.pdfViewer.enableRtl) {\n this.searchBox.classList.add('e-rtl');\n this.searchBox.style.left = '88.3px';\n }\n else {\n this.searchBox.classList.remove('e-rtl');\n this.searchBox.style.right = '88.3px';\n }\n this.searchInput.addEventListener('focus', function () {\n _this.searchInput.parentElement.classList.add('e-input-focus');\n });\n this.searchInput.addEventListener('blur', function () {\n _this.searchInput.parentElement.classList.remove('e-input-focus');\n });\n this.searchInput.addEventListener('keydown', this.searchKeypressHandler.bind(this));\n this.searchBtn.addEventListener('click', this.searchClickHandler.bind(this));\n this.nextSearchBtn.addEventListener('click', this.nextButtonOnClick.bind(this));\n this.prevSearchBtn.addEventListener('click', this.prevButtonOnClick.bind(this));\n };\n TextSearch.prototype.setLoaderProperties = function (element) {\n var spinnerElement = element.firstChild.firstChild.firstChild;\n if (spinnerElement) {\n spinnerElement.style.height = '18px';\n spinnerElement.style.width = '18px';\n spinnerElement.style.transformOrigin = '9px 9px 9px';\n }\n };\n TextSearch.prototype.showLoadingIndicator = function (isShow) {\n var waitingPopup = document.getElementById(this.pdfViewer.element.id + '_textSearchLoadingIndicator');\n if (waitingPopup) {\n if (isShow) {\n showSpinner(waitingPopup);\n }\n else {\n hideSpinner(waitingPopup);\n }\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.textSearchBoxOnResize = function () {\n if (this.pdfViewer.toolbarModule && this.pdfViewer.enableToolbar) {\n var secondaryToolbar = this.pdfViewerBase.getElement('_toolbarContainer_popup');\n if (secondaryToolbar) {\n if (secondaryToolbar.contains(this.pdfViewerBase.getElement('_search').parentElement)) {\n this.searchBox.style.right = '0px';\n }\n }\n }\n else {\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.viewerContainer.clientWidth + this.pdfViewerBase.viewerContainer.offsetLeft < this.searchBox.offsetLeft + this.searchBox.clientWidth) {\n this.searchBox.style.right = '0px';\n // eslint-disable-next-line\n this.searchBox.style.width = parseInt(this.searchBox.style.width) - ((this.searchBox.offsetLeft + this.searchBox.clientWidth) - (this.pdfViewerBase.viewerContainer.clientWidth)) + 'px';\n // eslint-disable-next-line\n this.searchInput.style.width = parseInt(this.searchInput.style.width) - ((this.searchBox.offsetLeft + this.searchBox.clientWidth) - (this.pdfViewerBase.viewerContainer.clientWidth)) + 'px';\n }\n else {\n this.searchBox.style.right = '88.3px';\n this.searchBox.style.width = '';\n this.searchInput.style.width = '';\n }\n }\n };\n /**\n * @param isShow\n * @private\n */\n TextSearch.prototype.showSearchBox = function (isShow) {\n if (isShow) {\n this.searchBox.style.display = 'block';\n }\n else {\n this.searchBox.style.display = 'none';\n this.searchInput.value = '';\n }\n this.onTextSearchClose();\n };\n /**\n * @private\n */\n TextSearch.prototype.searchAfterSelection = function () {\n if (this.isTextSearch) {\n this.initSearch(this.searchPageIndex, true);\n this.highlightOthers();\n }\n };\n TextSearch.prototype.initiateTextSearch = function (searchElement) {\n var inputString = searchElement.value;\n if (inputString && inputString.length > 0 && inputString[inputString.length - 1] === ' ') {\n inputString = inputString.slice(0, inputString.length - 1);\n }\n this.initiateSearch(inputString);\n };\n /**\n * @param inputString\n * @private\n */\n TextSearch.prototype.initiateSearch = function (inputString) {\n if (inputString !== this.searchString) {\n this.isTextSearch = false;\n this.searchPageIndex = this.pdfViewerBase.currentPageNumber - 1;\n }\n this.clearAllOccurrences();\n if (inputString !== '') {\n // eslint-disable-next-line\n if (this.searchMatches[this.searchPageIndex] && inputString === this.searchString) {\n if (this.searchMatches[this.searchPageIndex].length === 0) {\n this.initSearch(this.searchPageIndex, false);\n }\n else {\n this.nextSearch();\n }\n }\n else {\n this.resetVariables();\n this.searchIndex = 0;\n this.textSearch(inputString);\n }\n }\n };\n TextSearch.prototype.textSearch = function (inputString) {\n if (inputString !== '' || inputString) {\n this.searchString = inputString;\n this.isTextSearch = true;\n this.isSearchText = true;\n this.searchPageIndex = this.pdfViewerBase.currentPageNumber - 1;\n this.searchCount = 0;\n this.isTextSearchEventTriggered = false;\n this.showLoadingIndicator(true);\n this.pdfViewer.fireTextSearchStart(inputString, this.isMatchCase);\n if (this.pdfViewer.isExtractText) {\n if (this.isTextRetrieved) {\n for (var i = 0; i < this.pdfViewerBase.pageCount; i++) {\n this.initSearch(i, false, true);\n }\n }\n else {\n this.isTextSearched = true;\n for (var i = 0; i < this.documentTextCollection.length; i++) {\n this.initSearch(i, false, true);\n }\n }\n }\n this.initSearch(this.searchPageIndex, false);\n this.highlightOthers();\n }\n };\n TextSearch.prototype.nextSearch = function () {\n this.isPrevSearch = false;\n this.isTextSearch = true;\n this.isSearchText = false;\n if (this.searchString) {\n this.clearAllOccurrences();\n this.searchIndex = this.searchIndex + 1;\n if (this.searchMatches[this.searchPageIndex]) {\n // eslint-disable-next-line max-len\n if (this.searchIndex >= this.searchMatches[this.searchPageIndex].length) {\n this.searchIndex = 0;\n this.searchPageIndex = ((this.searchPageIndex + 1) < this.pdfViewerBase.pageCount) ? (this.searchPageIndex + 1) : 0;\n if (this.pdfViewerBase.pageCount > 1) {\n this.initSearch(this.searchPageIndex, false);\n }\n else {\n this.initSearch(this.searchPageIndex, true);\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.pdfViewerBase.updateScrollTop(this.searchPageIndex);\n }\n this.showLoadingIndicator(true);\n }\n else {\n this.highlightSearchedTexts(this.searchPageIndex, false);\n this.showLoadingIndicator(false);\n }\n this.highlightOthers(true);\n }\n else {\n this.initiateTextSearch(this.searchInput);\n }\n }\n else {\n this.initiateTextSearch(this.searchInput);\n }\n };\n TextSearch.prototype.prevSearch = function () {\n this.isPrevSearch = true;\n this.isTextSearch = true;\n this.isSearchText = false;\n if (this.searchString) {\n this.clearAllOccurrences();\n this.searchIndex = this.searchIndex - 1;\n if (this.searchIndex < 0) {\n this.searchPageIndex = ((this.searchPageIndex - 1) < 0) ? (this.pdfViewerBase.pageCount - 1) : this.searchPageIndex - 1;\n this.initSearch(this.searchPageIndex, false);\n this.showLoadingIndicator(true);\n }\n else {\n this.highlightSearchedTexts(this.searchPageIndex, false);\n this.showLoadingIndicator(false);\n }\n this.highlightOthers(true);\n }\n else {\n this.searchIndex = this.searchIndex - 1;\n this.searchPageIndex = ((this.searchPageIndex - 1) < 0) ? (this.pdfViewerBase.pageCount - 1) : this.searchPageIndex - 1;\n var inputString = this.searchInput.value;\n this.textSearch(inputString);\n }\n };\n TextSearch.prototype.initSearch = function (pageIndex, isSinglePageSearch, isCount) {\n // eslint-disable-next-line\n var storedData = this.pdfViewerBase.getStoredData(pageIndex, true);\n var pageText = null;\n var textContents = null;\n // eslint-disable-next-line\n var characterBounds = null;\n if (isCount) {\n if (this.documentTextCollection.length !== 0) {\n // eslint-disable-next-line\n var documentIndex = this.documentTextCollection[pageIndex][pageIndex];\n var pageTextData = documentIndex.pageText ? documentIndex.pageText : documentIndex.PageText;\n if (this.documentTextCollection[pageIndex] && documentIndex) {\n // eslint-disable-next-line max-len\n this.getSearchTextContent(pageIndex, this.searchString, pageTextData, textContents, isSinglePageSearch, this.documentTextCollection[pageIndex]);\n }\n }\n }\n else {\n if (storedData) {\n // eslint-disable-next-line\n pageText = storedData['pageText'];\n // eslint-disable-next-line\n textContents = storedData['textContent'];\n characterBounds = this.pdfViewerBase.textLayer.characterBound[pageIndex];\n this.textContents[pageIndex] = textContents;\n this.getPossibleMatches(pageIndex, this.searchString, pageText, textContents, isSinglePageSearch, characterBounds);\n }\n else {\n if (!isSinglePageSearch) {\n this.createRequestForSearch(pageIndex);\n }\n }\n }\n if (this.pdfViewerBase.pageCount === (this.searchMatches && this.searchMatches.length)) {\n if (!this.isTextSearchEventTriggered) {\n this.isTextSearchEventTriggered = true;\n this.pdfViewer.fireTextSearchComplete(this.searchString, this.isMatchCase);\n }\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.getPossibleMatches = function (pageIndex, searchString, pageString, textContents, isSinglePageSearch, characterBounds) {\n if (this.searchMatches && !this.searchMatches[pageIndex]) {\n var pageText = pageString;\n var searchText = searchString;\n var queryLength = searchString.length;\n if (!this.isMatchCase) {\n searchText = searchString.toLowerCase();\n pageText = pageString.toLowerCase();\n }\n var matches = [];\n var matchIndex = -queryLength;\n var newIndex = -queryLength;\n while (matchIndex !== 0 || matchIndex === 0) {\n if (searchText === '' || searchText === ' ' || !searchText) {\n break;\n }\n matchIndex = pageText.indexOf(searchText, matchIndex + queryLength);\n if (searchText.indexOf(' ') !== -1) {\n var newString = searchString.replace(' ', '\\r\\n');\n newIndex = pageText.indexOf(newString, newIndex + queryLength);\n if (!(newIndex <= -1)) {\n if (newIndex < matchIndex) {\n matches.push(newIndex);\n }\n }\n }\n if (matchIndex <= -1 && newIndex <= -1) {\n break;\n }\n if (!(matchIndex <= -1)) {\n matches.push(matchIndex);\n }\n if (newIndex > matchIndex && !(newIndex <= -1)) {\n matches.push(newIndex);\n }\n }\n if (this.searchMatches && matches.length > 0) {\n this.searchMatches[pageIndex] = matches;\n }\n }\n if (!isSinglePageSearch) {\n if (this.searchedPages.indexOf(pageIndex) === -1) {\n this.searchedPages.push(pageIndex);\n this.startIndex = this.searchedPages[0];\n }\n this.updateSearchInputIcon(false);\n }\n if (this.searchMatches && this.searchMatches[pageIndex] && this.searchMatches[pageIndex].length !== 0) {\n if (!isSinglePageSearch) {\n if (this.isPrevSearch) {\n this.searchIndex = this.searchMatches[pageIndex].length - 1;\n }\n if ((this.pdfViewerBase.currentPageNumber - 1) !== this.searchPageIndex) {\n // eslint-disable-next-line max-len\n if (this.searchMatches.length > 0 && (this.searchIndex === 0 || this.searchIndex === -1) && (this.searchPageIndex) === this.currentSearchIndex) {\n if (!this.isMessagePopupOpened && !this.isSearchText) {\n this.onMessageBoxOpen();\n }\n this.searchPageIndex = this.getSearchPage(this.pdfViewerBase.currentPageNumber - 1);\n this.searchedPages = [this.searchPageIndex];\n }\n // eslint-disable-next-line max-len\n else if (this.isPrevSearch && this.searchMatches && this.searchMatches.length > 0 && this.searchMatches[this.searchPageIndex].length > 0 && this.searchedPages.length === this.pdfViewerBase.pageCount && this.startIndex - 1 === this.searchPageIndex) {\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.searchedPages = [this.startIndex];\n }\n this.pdfViewerBase.updateScrollTop(this.searchPageIndex);\n }\n else if (this.searchMatches && this.searchMatches[this.searchPageIndex].length > 0 && this.searchedPages.length === this.pdfViewerBase.pageCount && this.startIndex === this.searchPageIndex && this.pdfViewerBase.pageCount > 1) {\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.searchedPages = [this.startIndex];\n }\n }\n this.highlightSearchedTexts(pageIndex, isSinglePageSearch);\n }\n else {\n if (!isSinglePageSearch) {\n if (this.isPrevSearch) {\n this.searchPageIndex = ((this.searchPageIndex - 1) < 0) ? (this.pdfViewerBase.pageCount - 1) : this.searchPageIndex - 1;\n }\n else {\n this.searchPageIndex = ((this.searchPageIndex + 1) < this.pdfViewerBase.pageCount) ? (this.searchPageIndex + 1) : 0;\n }\n if (this.searchedPages.indexOf(this.searchPageIndex) === -1 && this.searchedPages.length !== this.pdfViewerBase.pageCount) {\n this.showLoadingIndicator(true);\n this.initSearch(this.searchPageIndex, false);\n }\n else {\n var searchPageIndex = this.getSearchPage(pageIndex);\n // eslint-disable-next-line max-len\n if (this.searchMatches && isNullOrUndefined(this.searchMatches[this.searchPageIndex]) && this.searchedPages.length === this.pdfViewerBase.pageCount) {\n // eslint-disable-next-line max-len\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.pdfViewerBase.updateScrollTop(this.startIndex);\n // eslint-disable-next-line max-len\n }\n else if (this.searchMatches && this.searchMatches.length > 0 && (this.searchIndex === 0 || this.searchIndex === -1) && (searchPageIndex) === this.currentSearchIndex) {\n if (this.isPrevSearch) {\n // eslint-disable-next-line max-len\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.searchPageIndex = searchPageIndex;\n this.searchedPages = [searchPageIndex];\n this.searchIndex = -1;\n }\n else {\n if (!this.isMessagePopupOpened && this.pdfViewerBase.currentPageNumber !== 1 && !this.isSearchText) {\n this.onMessageBoxOpen();\n }\n this.searchPageIndex = searchPageIndex;\n this.searchedPages = [searchPageIndex];\n this.searchIndex = 0;\n }\n this.highlightSearchedTexts(this.searchPageIndex, isSinglePageSearch);\n }\n else if (this.searchMatches && this.searchMatches[this.searchPageIndex].length > 0 && this.searchedPages.length === this.pdfViewerBase.pageCount) {\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.searchPageIndex = this.startIndex;\n this.searchedPages = [this.searchPageIndex];\n this.searchIndex = 0;\n this.pdfViewerBase.updateScrollTop(this.startIndex);\n this.highlightSearchedTexts(this.searchPageIndex, isSinglePageSearch);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.getSearchTextContent = function (pageIndex, searchString, pageString, textContents, isSinglePageSearch, characterBounds) {\n var pageText = pageString;\n var searchText = searchString;\n var queryLength = searchString.length;\n if (!this.isMatchCase) {\n searchText = searchString.toLowerCase();\n pageText = pageString.toLowerCase();\n }\n var matches = [];\n var matchIndex = -queryLength;\n var newIndex = -queryLength;\n while (matchIndex !== 0) {\n if (searchText === '' || searchText === ' ' || !searchText) {\n break;\n }\n matchIndex = pageText.indexOf(searchText, matchIndex + queryLength);\n if (searchText.indexOf(' ') !== -1) {\n var newString = searchString.replace(' ', '\\r\\n');\n newIndex = pageText.indexOf(newString, newIndex + queryLength);\n if (!(newIndex <= -1)) {\n if (newIndex < matchIndex) {\n matches.push(newIndex);\n }\n }\n }\n if (matchIndex <= -1 && newIndex <= -1) {\n break;\n }\n if (!(matchIndex <= -1)) {\n matches.push(matchIndex);\n }\n if (newIndex > matchIndex && !(newIndex <= -1)) {\n matches.push(newIndex);\n }\n }\n if (matches.length !== 0) {\n this.searchCount = this.searchCount + matches.length;\n }\n this.searchMatches[pageIndex] = matches;\n };\n TextSearch.prototype.getSearchPage = function (pageIndex) {\n var pageNumber = null;\n if (this.isPrevSearch) {\n for (var i = pageIndex; i >= 0; i--) {\n if (i !== pageIndex && this.searchMatches[i]) {\n pageNumber = i;\n break;\n }\n }\n if (!pageNumber) {\n for (var j = this.pdfViewerBase.pageCount - 1; j > pageIndex; j--) {\n if (this.searchMatches[j]) {\n pageNumber = j;\n break;\n }\n }\n }\n }\n else {\n for (var i = pageIndex; i < this.pdfViewerBase.pageCount; i++) {\n if (i !== pageIndex && this.searchMatches[i]) {\n pageNumber = i;\n break;\n }\n }\n if (!pageNumber) {\n if (pageIndex === 0) {\n pageNumber = pageIndex;\n }\n else {\n for (var j = 0; j < pageIndex; j++) {\n if (this.searchMatches[j]) {\n pageNumber = j;\n break;\n }\n }\n }\n }\n }\n return pageNumber;\n };\n TextSearch.prototype.highlightSearchedTexts = function (pageIndex, isSinglePageSearch) {\n // eslint-disable-next-line\n var matches = this.searchMatches[pageIndex];\n var prevEnd = null;\n // eslint-disable-next-line\n var scrollPoint = { y: -100, x: -100 };\n var startId;\n var className;\n // eslint-disable-next-line\n var characterBounds = this.pdfViewerBase.textLayer.characterBound[pageIndex];\n var isHighlight = false;\n if (isSinglePageSearch && (this.pdfViewerBase.currentPageNumber - 1) !== this.searchPageIndex) {\n if (this.searchMatches.length > 0) {\n if (pageIndex === this.getSearchPage(this.pdfViewerBase.currentPageNumber - 1)) {\n isHighlight = true;\n }\n }\n }\n if (characterBounds) {\n for (var i = 0; i < matches.length; i++) {\n if (i === this.searchIndex && pageIndex === this.searchPageIndex) {\n className = 'e-pv-search-text-highlight';\n }\n else {\n className = 'e-pv-search-text-highlightother';\n }\n this.addDivForSearch(i, pageIndex, characterBounds, this.searchString.length, className);\n }\n if (pageIndex === this.searchPageIndex && !isSinglePageSearch) {\n var element = this.pdfViewerBase.getElement('_searchtext_' + pageIndex + '_' + this.searchIndex);\n if (element) {\n var targetScrollElement = this.getScrollElement(element);\n this.scrollToSearchStr(targetScrollElement, scrollPoint);\n }\n else {\n this.pdfViewerBase.updateScrollTop(pageIndex);\n var element_1 = this.pdfViewerBase.getElement('_searchtext_' + pageIndex + '_' + this.searchIndex);\n if (element_1) {\n var targetScrollElement = this.getScrollElement(element_1);\n this.scrollToSearchStr(targetScrollElement, scrollPoint);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.addDivForSearch = function (index, pageIndex, characterBounds, queryLength, className) {\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageIndex);\n if (isNullOrUndefined(textLayer) && className === 'e-pv-search-text-highlight') {\n if (this.pdfViewer.navigation) {\n this.pdfViewer.navigation.goToPage(pageIndex + 1);\n }\n }\n var count = this.searchMatches[pageIndex][index];\n var initial = count;\n var divCount = 0;\n while (count < initial + queryLength) {\n count = this.addDivElement(count, characterBounds, queryLength, className, index, pageIndex, initial, divCount);\n divCount++;\n }\n if (className === 'e-pv-search-text-highlight') {\n this.showLoadingIndicator(false);\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.addDivElement = function (count, characterBounds, queryLength, className, index, pageIndex, initial, divCount) {\n var height = 0;\n var width = 0;\n var top = 0;\n var left = 0;\n var isRTL = false;\n if (characterBounds[count]) {\n left = characterBounds[count].X;\n top = characterBounds[count].Y;\n }\n var v = 0;\n if ((count - initial) !== 0) {\n v = count - initial;\n queryLength += 1;\n }\n for (v = v; v < queryLength; v++) {\n if (characterBounds[count]) {\n // eslint-disable-next-line\n var charBound = characterBounds[count];\n if (left > charBound.X) {\n isRTL = true;\n }\n top = (top < charBound.Y) ? top : charBound.Y;\n var topDifference = (top < charBound.Y) ? (charBound.Y - top) : (top - charBound.Y);\n height = (height > (topDifference + charBound.Height)) ? height : (topDifference + charBound.Height);\n count++;\n }\n }\n var isContinuation = false;\n if (!isRTL) {\n if (initial + queryLength !== count) {\n isContinuation = true;\n if (characterBounds[count - 1]) {\n width = (characterBounds[count - 1].X - left);\n }\n }\n else {\n isContinuation = false;\n // eslint-disable-next-line\n var storedData = this.pdfViewerBase.getStoredData(pageIndex, true);\n var pageText = null;\n if (storedData) {\n pageText = storedData['pageText'];\n }\n else if (this.pdfViewer.isExtractText && this.documentTextCollection.length !== 0) {\n // eslint-disable-next-line\n var documentIndex = this.documentTextCollection[pageIndex][pageIndex];\n pageText = documentIndex.pageText ? documentIndex.pageText : documentIndex.PageText;\n }\n if (characterBounds[count]) {\n if (pageText && (pageText[count] === '' || pageText[count] === ' ' || pageText[count] === '\\r' || pageText[count] === '\\n') && (characterBounds[count].Width) === 0) {\n width = (characterBounds[count - 1].X - left) + characterBounds[count - 1].Width;\n }\n else {\n width = (characterBounds[count].X - left);\n }\n }\n else {\n if (characterBounds[count - 1]) {\n width = (characterBounds[count - 1].X - left);\n }\n }\n }\n }\n else {\n var charBound = characterBounds[(initial + queryLength) - 1];\n left = charBound.X;\n width = characterBounds[initial].X - characterBounds[(initial + queryLength) - 1].X;\n top = (top < charBound.Y) ? top : charBound.Y;\n var topDifference = (top < charBound.Y) ? (charBound.Y - top) : (top - charBound.Y);\n height = (height > (topDifference + charBound.Height)) ? height : (topDifference + charBound.Height);\n //some RTL character calculated width is zero and width difference value calculated from Y possition difference in the same line.\n var widthDifference = characterBounds[initial - 1].Y - characterBounds[initial].Y;\n for (var j = (initial + queryLength) - 1; j >= initial; j--) {\n charBound = characterBounds[j];\n if (charBound.Width === 0) {\n widthDifference = charBound.Y - characterBounds[j - 1].Y;\n }\n }\n width = width + widthDifference;\n }\n this.createSearchTextDiv(index, pageIndex, height, width, top, left, className, isContinuation, divCount);\n return count;\n };\n // eslint-disable-next-line\n TextSearch.prototype.createSearchTextDiv = function (index, pageIndex, height, width, top, left, className, isContinuation, divCount) {\n var idString = '_searchtext_' + pageIndex + '_' + index;\n if (isContinuation) {\n idString += '_' + divCount;\n }\n if (!this.pdfViewerBase.getElement(idString)) {\n var textDiv = createElement('div', { id: this.pdfViewer.element.id + idString });\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n this.calculateBounds(textDiv, height, width, top, left, pageDetails);\n textDiv.classList.add(className);\n if (className === 'e-pv-search-text-highlight') {\n // eslint-disable-next-line max-len\n textDiv.style.backgroundColor = (this.pdfViewer.textSearchColorSettings.searchHighlightColor === '') ? '#fdd835' : this.pdfViewer.textSearchColorSettings.searchHighlightColor;\n var bounds = { left: left, top: top, width: width, height: height };\n this.pdfViewer.fireTextSearchHighlight(this.searchString, this.isMatchCase, bounds, (pageIndex + 1));\n }\n else if (className === 'e-pv-search-text-highlightother') {\n // eslint-disable-next-line max-len\n textDiv.style.backgroundColor = (this.pdfViewer.textSearchColorSettings.searchColor === '') ? '#8b4c12' : this.pdfViewer.textSearchColorSettings.searchColor;\n }\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageIndex);\n if (textLayer) {\n textLayer.appendChild(textDiv);\n }\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.calculateBounds = function (textDiv, height, width, top, left, pageDetails) {\n if (pageDetails.rotation === 0 || pageDetails.rotation === 2) {\n textDiv.style.height = height * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.width = width * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.top = top * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.left = left * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else if (pageDetails.rotation === 1) {\n textDiv.style.height = width * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.width = height * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.top = left * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.left = (pageDetails.height - top - height) * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else if (pageDetails.rotation === 3) {\n textDiv.style.height = width * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.width = height * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.left = ((pageDetails.width - pageDetails.height) + top) * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.top = (pageDetails.height - left - width) * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n };\n TextSearch.prototype.isClassAvailable = function () {\n var isClass = false;\n for (var j = 0; j < this.tempElementStorage.length; j++) {\n if (this.tempElementStorage[j].classString) {\n // eslint-disable-next-line max-len\n if (this.tempElementStorage[j].classString === 'e-pv-search-text-highlight' || this.tempElementStorage[j].classString === 'e-pv-search-text-highlightother') {\n isClass = true;\n break;\n }\n }\n }\n return isClass;\n };\n TextSearch.prototype.getScrollElement = function (element) {\n var targetElement = element;\n if (element.childNodes.length > 0) {\n for (var i = 0; i < element.childNodes.length; i++) {\n if (element.childNodes[i].classList) {\n if (element.childNodes[i].classList.contains('e-pv-search-text-highlight')) {\n targetElement = element.childNodes[i];\n }\n }\n }\n }\n return targetElement;\n };\n // eslint-disable-next-line\n TextSearch.prototype.scrollToSearchStr = function (element, scrollPoint) {\n var parent = element.offsetParent;\n var offsetY = element.offsetTop + element.clientTop;\n var offsetX = element.offsetLeft + element.clientLeft;\n while (parent.id !== this.pdfViewerBase.viewerContainer.id) {\n offsetY += parent.offsetTop;\n offsetX += parent.offsetLeft;\n parent = parent.offsetParent;\n }\n if (scrollPoint) {\n offsetY += scrollPoint.y;\n offsetX += scrollPoint.x;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n parent.scrollLeft = offsetX;\n }\n else {\n if (this.pdfViewerBase.getZoomFactor() > 1.5) {\n parent.scrollLeft = offsetX;\n }\n }\n }\n parent.scrollTop = offsetY;\n this.pdfViewerBase.updateMobileScrollerPosition();\n };\n /**\n * @param pageIndex\n * @private\n */\n TextSearch.prototype.resizeSearchElements = function (pageIndex) {\n var searchDivs = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_searchtext_' + pageIndex + '\"]');\n for (var i = 0; i < searchDivs.length; i++) {\n var textDiv = searchDivs[i];\n var previousZoomFactor = 1;\n if (this.pdfViewer.magnificationModule) {\n previousZoomFactor = this.pdfViewer.magnificationModule.previousZoomFactor;\n }\n // eslint-disable-next-line max-len\n var outputdata = pageIndex + '_' + previousZoomFactor + '_' + this.pdfViewerBase.getZoomFactor();\n if (textDiv.getAttribute('name') !== outputdata) {\n // eslint-disable-next-line\n textDiv.style.width = (parseFloat(textDiv.style.width) / previousZoomFactor) * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line\n textDiv.style.height = (parseFloat(textDiv.style.height) / previousZoomFactor) * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line\n textDiv.style.top = (parseFloat(textDiv.style.top) / previousZoomFactor) * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line\n textDiv.style.left = (parseFloat(textDiv.style.left) / previousZoomFactor) * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.setAttribute('name', outputdata);\n }\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n TextSearch.prototype.highlightOtherOccurrences = function (pageNumber) {\n this.initSearch(pageNumber, true);\n };\n TextSearch.prototype.highlightOthers = function (isSearched) {\n var indexes = this.getIndexes();\n var lowerPageValue = parseFloat(indexes.lowerPageValue.toString());\n var higherPageValue = parseFloat(indexes.higherPageValue.toString());\n for (var i = lowerPageValue; i <= higherPageValue; i++) {\n this.highlightOtherOccurrences(i);\n }\n if (isSearched) {\n this.showLoadingIndicator(false);\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.clearAllOccurrences = function () {\n var searchTextDivs = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_searchtext_\"]');\n for (var i = 0; i < searchTextDivs.length; i++) {\n searchTextDivs[i].parentElement.removeChild(searchTextDivs[i]);\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n TextSearch.prototype.getIndexes = function () {\n var lowerPageValue = this.pdfViewerBase.currentPageNumber - 3;\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n var higherPageValue = this.pdfViewerBase.currentPageNumber + 1;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n return { lowerPageValue: lowerPageValue, higherPageValue: higherPageValue };\n };\n TextSearch.prototype.applyTextSelection = function () {\n if (this.pdfViewer.textSelectionModule && !this.pdfViewerBase.isTextSelectionDisabled) {\n var indexes = this.getIndexes();\n var lowerPageValue = parseFloat(indexes.lowerPageValue.toString());\n var higherPageValue = parseFloat(indexes.higherPageValue.toString());\n for (var i = lowerPageValue; i <= higherPageValue; i++) {\n this.pdfViewer.textSelectionModule.applySelectionRangeOnScroll(i);\n }\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.resetTextSearch = function () {\n this.resetVariables();\n this.onTextSearchClose();\n this.searchPageIndex = null;\n this.searchIndex = 0;\n this.updateSearchInputIcon(true);\n this.enableNextButton(false);\n this.enablePrevButton(false);\n this.documentTextCollection = [];\n this.isTextRetrieved = false;\n this.isTextSearched = false;\n this.isSearchText = false;\n if (this.searchRequestHandler) {\n this.searchRequestHandler.clear();\n }\n };\n TextSearch.prototype.onTextSearchClose = function () {\n this.isPrevSearch = false;\n this.isTextSearch = false;\n if (this.pdfViewerBase.pageCount > 0) {\n this.clearAllOccurrences();\n }\n };\n TextSearch.prototype.createRequestForSearch = function (pageIndex) {\n var proxy = this;\n var viewPortWidth = 816;\n var viewPortHeight = this.pdfViewer.element.clientHeight;\n var pageWidth = this.pdfViewerBase.pageSize[pageIndex].width;\n var pageHeight = this.pdfViewerBase.pageSize[pageIndex].height;\n var tileCount = this.pdfViewerBase.getTileCount(pageWidth);\n var noTileX = viewPortWidth >= pageWidth ? 1 : tileCount;\n var noTileY = viewPortWidth >= pageWidth ? 1 : tileCount;\n var isTileRendering = false;\n var tileSettings = this.pdfViewer.tileRenderingSettings;\n if (tileSettings.enableTileRendering && tileSettings.x > 0 && tileSettings.y > 0) {\n noTileX = viewPortWidth >= pageWidth ? 1 : tileSettings.x;\n noTileY = viewPortWidth >= pageWidth ? 1 : tileSettings.y;\n }\n if (noTileX > 1 && noTileY > 1) {\n isTileRendering = true;\n }\n var _loop_1 = function (x) {\n var _loop_2 = function (y) {\n var jsonObject = void 0;\n // eslint-disable-next-line max-len\n jsonObject = { xCoordinate: x, yCoordinate: y, pageNumber: pageIndex, viewPortWidth: viewPortWidth, viewPortHeight: viewPortHeight, documentId: proxy.pdfViewerBase.getDocumentId(), hashId: proxy.pdfViewerBase.hashId, zoomFactor: proxy.pdfViewerBase.getZoomFactor(), tilecount: tileCount, action: 'Search', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId,\n tileXCount: noTileX, tileYCount: noTileY };\n if (this_1.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this_1.pdfViewerBase.jsonDocumentId;\n }\n this_1.searchRequestHandler = new AjaxHandler(this_1.pdfViewer);\n this_1.searchRequestHandler.url = this_1.pdfViewer.serviceUrl + '/' + this_1.pdfViewer.serverActionSettings.renderPages;\n this_1.searchRequestHandler.responseType = 'json';\n this_1.searchRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this_1.searchRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, this.pdfViewer.serverActionSettings.renderPages);\n data = null;\n }\n }\n if (data) {\n if (!isNullOrUndefined(data.pageText) && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.renderPages, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n if (viewPortWidth >= pageWidth) {\n proxy.pdfViewerBase.storeWinData(data, pageNumber);\n }\n else {\n proxy.pdfViewerBase.storeWinData(data, pageNumber, data.tileX, data.tileY);\n }\n if (!isTileRendering) {\n proxy.initSearch(pageIndex, false);\n }\n else {\n if (x === (noTileX - 1) && y === (noTileY - 1)) {\n proxy.initSearch(pageIndex, false);\n }\n }\n }\n else if (isTileRendering && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.renderPages, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n proxy.pdfViewerBase.storeWinData(data, pageNumber, data.tileX, data.tileY);\n if (x === (noTileX - 1) && y === (noTileY - 1)) {\n proxy.initSearch(pageIndex, false);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n this_1.searchRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, this.pdfViewer.serverActionSettings.renderPages);\n };\n // eslint-disable-next-line\n this_1.searchRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, this.pdfViewer.serverActionSettings.renderPages);\n };\n };\n for (var y = 0; y < noTileY; y++) {\n _loop_2(y);\n }\n };\n var this_1 = this;\n for (var x = 0; x < noTileX; x++) {\n _loop_1(x);\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.getPDFDocumentTexts = function () {\n var startIndex = 0;\n var endIndex = 50;\n var pageCount = this.pdfViewerBase.pageCount;\n if (endIndex >= pageCount) {\n endIndex = pageCount;\n }\n this.createRequestForGetPdfTexts(startIndex, endIndex);\n };\n /**\n * @param startIndex\n * @param endIndex\n * @private\n */\n TextSearch.prototype.createRequestForGetPdfTexts = function (startIndex, endIndex) {\n var proxy = this;\n var jsonObject;\n // eslint-disable-next-line max-len\n jsonObject = { pageStartIndex: startIndex, pageEndIndex: endIndex, documentId: proxy.pdfViewerBase.getDocumentId(), hashId: proxy.pdfViewerBase.hashId, action: 'RenderPdfTexts', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId };\n if (this.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;\n }\n this.searchRequestHandler = new AjaxHandler(this.pdfViewer);\n this.searchRequestHandler.url = this.pdfViewer.serviceUrl + '/' + this.pdfViewer.serverActionSettings.renderTexts;\n this.searchRequestHandler.responseType = 'json';\n this.searchRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.searchRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, this.pdfViewer.serverActionSettings.renderTexts);\n data = null;\n }\n }\n if (data) {\n if (data.documentTextCollection && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.renderTexts, data);\n if (proxy.documentTextCollection.length > 0) {\n proxy.documentTextCollection = data.documentTextCollection.concat(proxy.documentTextCollection);\n proxy.documentTextCollection = proxy.orderPdfTextCollections(proxy.documentTextCollection);\n }\n else {\n proxy.documentTextCollection = data.documentTextCollection;\n }\n var pageCount = proxy.pdfViewerBase.pageCount;\n if (endIndex !== pageCount) {\n startIndex = endIndex;\n endIndex = endIndex + 50;\n if (endIndex >= pageCount) {\n endIndex = pageCount;\n }\n proxy.createRequestForGetPdfTexts(startIndex, endIndex);\n }\n else {\n proxy.isTextRetrieved = true;\n proxy.pdfViewer.fireTextExtractionCompleted(proxy.documentTextCollection);\n if (proxy.isTextSearched && proxy.searchString.length > 0) {\n proxy.textSearch(proxy.searchString);\n proxy.isTextSearched = false;\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n this.searchRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, this.pdfViewer.serverActionSettings.renderTexts);\n };\n // eslint-disable-next-line\n this.searchRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, this.pdfViewer.serverActionSettings.renderTexts);\n };\n };\n // eslint-disable-next-line\n TextSearch.prototype.orderPdfTextCollections = function (oldCollection) {\n // eslint-disable-next-line\n var annotationCollectionList = [];\n for (var i = 0; i < oldCollection.length; i++) {\n if (annotationCollectionList.length === 0) {\n annotationCollectionList.push(oldCollection[i]);\n }\n else {\n // eslint-disable-next-line\n if (parseInt(Object.keys(oldCollection[i])[0]) > parseInt(Object.keys(annotationCollectionList[annotationCollectionList.length - 1])[0])) {\n annotationCollectionList.push(oldCollection[i]);\n }\n else {\n for (var j = 0; j < annotationCollectionList.length; j++) {\n // eslint-disable-next-line\n if ((parseInt(Object.keys(oldCollection[i])[0]) < parseInt(Object.keys(annotationCollectionList[j])[0]))) {\n annotationCollectionList.splice(j, 0, oldCollection[i]);\n break;\n }\n }\n }\n }\n }\n return annotationCollectionList;\n };\n TextSearch.prototype.createSearchBoxButtons = function (id, className) {\n // eslint-disable-next-line max-len\n var button = createElement('button', { id: this.pdfViewer.element.id + '_' + id, className: 'e-btn e-icon-btn e-pv-search-btn ' + className });\n button.setAttribute('type', 'button');\n // eslint-disable-next-line max-len\n var iconSpan = createElement('span', { id: this.pdfViewer.element.id + '_' + id + 'Icon', className: 'e-pv-icon-search ' + className + '-icon' });\n button.disabled = true;\n button.appendChild(iconSpan);\n return button;\n };\n TextSearch.prototype.enablePrevButton = function (isEnable) {\n if ((!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n if (isEnable) {\n this.prevSearchBtn.removeAttribute('disabled');\n }\n else {\n if (this.prevSearchBtn) {\n this.prevSearchBtn.disabled = true;\n }\n }\n }\n };\n TextSearch.prototype.enableNextButton = function (isEnable) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (isEnable) {\n this.nextSearchBtn.removeAttribute('disabled');\n }\n else {\n if (this.nextSearchBtn) {\n this.nextSearchBtn.disabled = true;\n }\n }\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.resetVariables = function () {\n this.searchedPages = [];\n // eslint-disable-next-line\n this.searchMatches = new Array();\n };\n /**\n * @param element\n * @param inputElement\n * @private\n */\n TextSearch.prototype.searchButtonClick = function (element, inputElement) {\n this.isMessagePopupOpened = false;\n if (isBlazor() && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n var searchElement = this.pdfViewerBase.getElement('_search_box-icon');\n element = searchElement.children[0].children[0];\n inputElement = this.pdfViewerBase.getElement('_search_input');\n }\n if (element.classList.contains('e-pv-search-icon')) {\n this.initiateTextSearch(inputElement);\n }\n else if (element.classList.contains('e-pv-search-close')) {\n this.showLoadingIndicator(false);\n inputElement.value = '';\n this.resetTextSearch();\n inputElement.focus();\n }\n };\n TextSearch.prototype.updateSearchInputIcon = function (isEnable) {\n if (isBlazor()) {\n if (this.searchBtn && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n this.searchBtn = this.pdfViewerBase.getElement('_search_box-icon').children[0].children[0];\n }\n }\n if (this.searchBtn) {\n if (isEnable) {\n this.searchBtn.classList.remove('e-pv-search-close');\n this.searchBtn.classList.add('e-pv-search-icon');\n }\n else {\n this.searchBtn.classList.remove('e-pv-search-icon');\n this.searchBtn.classList.add('e-pv-search-close');\n }\n }\n };\n TextSearch.prototype.onMessageBoxOpen = function () {\n var _this = this;\n this.showLoadingIndicator(false);\n this.pdfViewerBase.getElement('_search_input').blur();\n this.isMessagePopupOpened = true;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Nomatches');\n promise.then(function (value) {\n _this.pdfViewerBase.textLayer.createNotificationPopup(value);\n });\n }\n else {\n this.pdfViewerBase.textLayer.createNotificationPopup(this.pdfViewer.localeObj.getConstant('No matches'));\n }\n }\n else {\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_NoTextFound');\n promise.then(function (value) {\n _this.pdfViewerBase.navigationPane.createTooltipMobile(value);\n });\n }\n else {\n this.pdfViewerBase.navigationPane.createTooltipMobile(this.pdfViewer.localeObj.getConstant('No Text Found'));\n }\n }\n };\n /**\n * Searches the target text in the PDF document and highlights the occurrences in the pages\n *\n * @param {string} searchText - Specifies the searchText content\n * @param {boolean} isMatchCase - If set true , its highlights the MatchCase content\n * @returns void\n */\n TextSearch.prototype.searchText = function (searchText, isMatchCase) {\n if (searchText && searchText.length > 0 && searchText[searchText.length - 1] === ' ') {\n searchText = searchText.slice(0, searchText.length - 1);\n }\n this.searchString = searchText;\n this.isMatchCase = isMatchCase;\n this.searchIndex = 0;\n this.textSearch(searchText);\n };\n /**\n * Searches the next occurrence of the searched text from the current occurrence of the PdfViewer.\n *\n * @returns void\n */\n TextSearch.prototype.searchNext = function () {\n this.nextSearch();\n };\n /**\n * Searches the previous occurrence of the searched text from the current occurrence of the PdfViewer.\n *\n * @returns void\n */\n TextSearch.prototype.searchPrevious = function () {\n this.prevSearch();\n };\n /**\n * Cancels the text search of the PdfViewer.\n *\n * @returns void\n */\n TextSearch.prototype.cancelTextSearch = function () {\n this.resetTextSearch();\n };\n /**\n * @private\n */\n TextSearch.prototype.destroy = function () {\n this.searchMatches = undefined;\n };\n /**\n * @private\n */\n TextSearch.prototype.getModuleName = function () {\n return 'TextSearch';\n };\n return TextSearch;\n}());\nexport { TextSearch };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ViewsDirective` represent a view of the react Schedule.\n * It must be contained in a Schedule component(`SchduleComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar ViewDirective = /** @class */ (function (_super) {\n __extends(ViewDirective, _super);\n function ViewDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ViewDirective.moduleName = 'view';\n ViewDirective.complexTemplate = { 'timeScaleMinorSlotTemplate': 'timeScale.minorSlotTemplate', 'timeScaleMajorSlotTemplate': 'timeScale.majorSlotTemplate', 'groupHeaderTooltipTemplate': 'group.headerTooltipTemplate' };\n return ViewDirective;\n}(ComplexBase));\nexport { ViewDirective };\nvar ViewsDirective = /** @class */ (function (_super) {\n __extends(ViewsDirective, _super);\n function ViewsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ViewsDirective.propertyName = 'views';\n ViewsDirective.moduleName = 'views';\n return ViewsDirective;\n}(ComplexBase));\nexport { ViewsDirective };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { VerticalView } from './vertical-view';\n/**\n * day view\n */\nvar Day = /** @class */ (function (_super) {\n __extends(Day, _super);\n /**\n * Constructor for day view\n *\n * @param {Schedule} parent Accepts the schedule instance\n */\n function Day(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-day-view';\n return _this;\n }\n /**\n * Get module name.\n *\n * @returns {string} Returns the module name.\n */\n Day.prototype.getModuleName = function () {\n return 'day';\n };\n return Day;\n}(VerticalView));\nexport { Day };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { VerticalView } from './vertical-view';\n/**\n * week view\n */\nvar Week = /** @class */ (function (_super) {\n __extends(Week, _super);\n /**\n * Constructor for week view\n *\n * @param {Schedule} parent Accepts the schedule instance\n */\n function Week(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-week-view';\n return _this;\n }\n Week.prototype.startDate = function () {\n return this.getViewStartDate();\n };\n Week.prototype.endDate = function () {\n return this.getViewEndDate();\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the module name.\n */\n Week.prototype.getModuleName = function () {\n return 'week';\n };\n return Week;\n}(VerticalView));\nexport { Week };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { VerticalView } from './vertical-view';\n/**\n * work week view\n */\nvar WorkWeek = /** @class */ (function (_super) {\n __extends(WorkWeek, _super);\n /**\n * Constructor for work week view\n *\n * @param {Schedule} parent Accepts the schedule instance\n */\n function WorkWeek(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-work-week-view';\n return _this;\n }\n WorkWeek.prototype.startDate = function () {\n return this.getViewStartDate();\n };\n WorkWeek.prototype.endDate = function () {\n return this.getViewEndDate();\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the module name.\n */\n WorkWeek.prototype.getModuleName = function () {\n return 'workWeek';\n };\n return WorkWeek;\n}(VerticalView));\nexport { WorkWeek };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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-explicit-any */\nimport { EventHandler, formatUnit, isNullOrUndefined, createElement, addClass, append, prepend, remove } from '@syncfusion/ej2-base';\nimport { ViewBase } from './view-base';\nimport { MonthEvent } from '../event-renderer/month';\nimport * as util from '../base/util';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * month view\n */\nvar Month = /** @class */ (function (_super) {\n __extends(Month, _super);\n function Month(parent) {\n var _this = _super.call(this, parent) || this;\n _this.dayNameFormat = 'wide';\n _this.viewClass = 'e-month-view';\n _this.isInverseTableSelect = false;\n _this.monthEvent = null;\n _this.monthDates = {};\n return _this;\n }\n Month.prototype.addEventListener = function () {\n this.parent.on(event.scrollUiUpdate, this.onScrollUIUpdate, this);\n this.parent.on(event.dataReady, this.onDataReady, this);\n this.parent.on(event.cellClick, this.onCellClick, this);\n };\n Month.prototype.removeEventListener = function () {\n if (this.parent) {\n this.parent.off(event.scrollUiUpdate, this.onScrollUIUpdate);\n this.parent.off(event.dataReady, this.onDataReady);\n this.parent.off(event.cellClick, this.onCellClick);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Month.prototype.onDataReady = function (args) {\n this.monthEvent = new MonthEvent(this.parent);\n this.monthEvent.renderAppointments();\n this.parent.notify(event.eventsLoaded, {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Month.prototype.onCellClick = function (event) { };\n Month.prototype.onContentScroll = function (e) {\n this.parent.removeNewEventElement();\n this.parent.notify(event.virtualScroll, e);\n this.scrollTopPanel(e.target);\n this.scrollLeftPanel(e.target);\n this.setPersistence();\n };\n Month.prototype.scrollLeftPanel = function (target) {\n var leftPanel = this.getLeftPanelElement();\n if (leftPanel) {\n leftPanel.scrollTop = target.scrollTop;\n }\n };\n Month.prototype.getLeftPanelElement = function () {\n return this.element.querySelector('.' + cls.WEEK_NUMBER_WRAPPER_CLASS);\n };\n Month.prototype.onScrollUIUpdate = function (args) {\n var headerHeight = this.getHeaderBarHeight();\n var header = this.getDatesHeaderElement();\n var content = this.getContentAreaElement();\n var height = this.parent.element.offsetHeight - headerHeight - header.offsetHeight;\n var leftPanel = this.getLeftPanelElement();\n if (this.parent.height !== 'auto') {\n this.setContentHeight(content, leftPanel, height);\n }\n var scrollBarWidth = util.getScrollBarWidth();\n header.firstElementChild.style[args.cssProperties.rtlBorder] = '';\n header.style[args.cssProperties.rtlPadding] = '';\n if (content.offsetWidth - content.clientWidth > 0) {\n header.firstElementChild.style[args.cssProperties.border] = scrollBarWidth > 0 ? '1px' : '0px';\n header.style[args.cssProperties.padding] = scrollBarWidth > 0 ? scrollBarWidth - 1 + 'px' : '0px';\n }\n else {\n header.firstElementChild.style[args.cssProperties.border] = '';\n header.style[args.cssProperties.padding] = '';\n }\n this.setColWidth(content);\n if (args.scrollPosition) {\n if (leftPanel) {\n leftPanel.scrollTop = args.scrollPosition.top;\n }\n content.scrollTop = args.scrollPosition.top;\n content.scrollLeft = args.scrollPosition.left;\n }\n else {\n var headerCell = this.element.querySelector('.' + cls.HEADER_CELLS_CLASS + '[data-date=\"'\n + this.parent.selectedDate.getTime().toString() + '\"]');\n if (!isNullOrUndefined(headerCell)) {\n content.scrollLeft = !this.parent.enableRtl ?\n headerCell.offsetLeft : -(this.parent.getContentTable().offsetWidth - headerCell.offsetLeft - headerCell.offsetWidth);\n }\n else {\n content.scrollLeft = 0;\n }\n }\n this.retainScrollPosition();\n };\n Month.prototype.setContentHeight = function (content, leftPanelElement, height) {\n content.style.height = 'auto';\n if (this.parent.currentView === 'Month') {\n content.style.height = formatUnit(height);\n }\n if (leftPanelElement) {\n if (this.parent.currentView === 'MonthAgenda') {\n height = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS).offsetHeight;\n }\n leftPanelElement.style.height = 'auto';\n leftPanelElement.style.height = formatUnit(height - this.getScrollXIndent(content));\n }\n };\n Month.prototype.generateColumnLevels = function () {\n var colLevels = [];\n var level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n colLevels = this.parent.resourceBase.generateResourceLevels(level);\n if (this.parent.currentView === 'MonthAgenda') {\n colLevels = [level];\n }\n if (this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.lastResourceLevel.length > 0) {\n var resourceLevel = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n colLevels = [this.getDateSlots(resourceLevel.renderDates, resourceLevel.workDays)];\n }\n }\n else {\n colLevels.push(level);\n }\n this.colLevels = colLevels;\n return colLevels;\n };\n Month.prototype.getDateSlots = function (renderDates, workDays) {\n var count = this.parent.activeViewOptions.showWeekend ? util.WEEK_LENGTH : workDays.length;\n var dateSlots = [];\n var isCurrentMonth = this.isCurrentMonth(this.parent.selectedDate);\n for (var col = 0; col < count; col++) {\n var classList = [cls.HEADER_CELLS_CLASS];\n var currentDateIndex = renderDates.slice(0, count).map(function (date) { return date.getDay(); });\n if (isCurrentMonth && currentDateIndex.indexOf(this.parent.getCurrentTime().getDay()) === col) {\n classList.push(cls.CURRENT_DAY_CLASS);\n }\n dateSlots.push({ date: renderDates[col], type: 'monthDay', className: classList, colSpan: 1, workDays: workDays });\n }\n return dateSlots;\n };\n Month.prototype.getDayNameFormat = function () {\n if (this.parent.isAdaptive || this.parent.activeViewOptions.group.resources.length > 0) {\n return 'abbreviated';\n }\n return 'wide';\n };\n Month.prototype.renderLayout = function (type) {\n this.dayNameFormat = this.getDayNameFormat();\n this.setPanel(createElement('div', { className: cls.TABLE_WRAP_CLASS }));\n var clsList = [this.viewClass];\n clsList.push(type);\n if (this.parent.activeViewOptions.group.byDate) {\n clsList.push('e-by-date');\n }\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n clsList.push(cls.VIRTUAL_SCROLL_CLASS);\n }\n if (this.parent.rowAutoHeight && this.parent.eventSettings.ignoreWhitespace) {\n clsList.push(cls.IGNORE_WHITESPACE);\n }\n addClass([this.element], clsList);\n this.renderPanel(type);\n this.element.appendChild(this.createTableLayout(cls.OUTER_TABLE_CLASS));\n this.element.querySelector('table').setAttribute('role', 'presentation');\n this.colLevels = this.generateColumnLevels();\n this.renderHeader();\n this.renderContent();\n var target = (this.parent.currentView === 'MonthAgenda') ? this.parent.activeView.getPanel() : this.parent.element;\n if (this.parent.uiStateValues.isGroupAdaptive && !target.querySelector('.' + cls.RESOURCE_TOOLBAR_CONTAINER)) {\n this.renderResourceMobileLayout();\n }\n this.parent.notify(event.contentReady, {});\n if (this.parent.uiStateValues.isCustomMonth) {\n this.parent.uiStateValues.isCustomMonth = false;\n }\n };\n Month.prototype.refreshHeader = function () {\n remove(this.element.querySelector('tbody tr'));\n this.renderHeader();\n this.parent.notify(event.contentReady, {});\n };\n Month.prototype.wireCellEvents = function (element) {\n EventHandler.add(element, 'mousedown', this.parent.workCellAction.cellMouseDown, this.parent.workCellAction);\n EventHandler.add(element, 'click', this.parent.workCellAction.cellClick, this.parent.workCellAction);\n if (!this.parent.isAdaptive) {\n EventHandler.add(element, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);\n }\n };\n Month.prototype.renderHeader = function () {\n var tr = createElement('tr');\n this.renderLeftIndent(tr);\n var dateTd = createElement('td');\n dateTd.appendChild(this.renderDatesHeader());\n tr.appendChild(dateTd);\n prepend([tr], this.element.querySelector('tbody'));\n };\n Month.prototype.renderLeftIndent = function (tr) {\n if (this.parent.activeViewOptions.showWeekNumber) {\n tr.appendChild(createElement('td', { className: 'e-left-indent' }));\n }\n };\n Month.prototype.renderContent = function () {\n var tr = createElement('tr');\n if (this.parent.activeViewOptions.showWeekNumber) {\n tr.appendChild(this.renderWeekNumberContent());\n }\n var workTd = createElement('td');\n var wrap = createElement('div', { className: cls.CONTENT_WRAP_CLASS });\n var contentArea = this.renderContentArea();\n if (this.parent.currentView === 'Month') {\n wrap.appendChild(contentArea);\n }\n else {\n var monthAgendaWrapper = createElement('div', { className: cls.TABLE_CONTAINER_CLASS });\n monthAgendaWrapper.appendChild(contentArea);\n wrap.appendChild(monthAgendaWrapper);\n }\n EventHandler.add(wrap, 'scroll', this.onContentScroll, this);\n workTd.appendChild(wrap);\n tr.appendChild(workTd);\n this.element.querySelector('tbody').appendChild(tr);\n this.renderAppointmentContainer();\n };\n Month.prototype.renderWeekNumberContent = function () {\n var dateCol = this.renderDates.map(function (date) { return new Date(+date); });\n var td = createElement('td');\n var contentWrapper = createElement('div', { className: cls.WEEK_NUMBER_WRAPPER_CLASS });\n td.appendChild(contentWrapper);\n var contentWrapTable = this.createTableLayout();\n contentWrapper.appendChild(contentWrapTable);\n var noOfDays = this.parent.activeViewOptions.showWeekend ? util.WEEK_LENGTH :\n this.parent.activeViewOptions.workDays.length;\n for (var i = 0, length_1 = (this.renderDates.length / noOfDays); i < length_1; i++) {\n var dates = dateCol.splice(0, noOfDays);\n var weekNumber = this.parent.getWeekNumberContent(dates);\n contentWrapTable.querySelector('tbody').appendChild(this.createWeekNumberElement(weekNumber));\n }\n return td;\n };\n Month.prototype.renderAppointmentContainer = function () {\n //Here needs to render mobile view appointment details on selected date\n };\n Month.prototype.renderDatesHeader = function () {\n var container = createElement('div', { className: cls.DATE_HEADER_CONTAINER_CLASS });\n var wrap = createElement('div', { className: cls.DATE_HEADER_WRAP_CLASS });\n container.appendChild(wrap);\n var table = this.createTableLayout();\n this.createColGroup(table, this.colLevels[this.colLevels.length - 1]);\n var trEle = createElement('tr');\n for (var i = 0; i < this.colLevels.length; i++) {\n var level = this.colLevels[i];\n var ntr = trEle.cloneNode();\n for (var j = 0; j < level.length; j++) {\n var td = level[j];\n ntr.appendChild(this.createHeaderCell(td));\n }\n table.querySelector('tbody').appendChild(ntr);\n }\n wrap.appendChild(table);\n return container;\n };\n Month.prototype.createHeaderCell = function (td) {\n var tdEle = createElement('td');\n this.addAttributes(td, tdEle);\n if (td.type === 'monthDay') {\n var ele = createElement('span', { innerHTML: util.capitalizeFirstWord(this.parent.getDayNames(this.dayNameFormat)[td.date.getDay()], 'single') });\n tdEle.appendChild(ele);\n }\n if (td.type === 'resourceHeader') {\n this.setResourceHeaderContent(tdEle, td);\n }\n if (td.type === 'dateHeader') {\n addClass([tdEle], cls.DATE_HEADER_CLASS);\n tdEle.setAttribute('data-date', td.date.getTime().toString());\n if (this.parent.activeViewOptions.dateHeaderTemplate) {\n var cellArgs = { date: td.date, type: td.type };\n var elementId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;\n var templateId = elementId + viewName + 'dateHeaderTemplate';\n var dateTemplate = [].slice.call(this.parent.getDateHeaderTemplate()(cellArgs, this.parent, 'dateHeaderTemplate', templateId, false));\n if (dateTemplate && dateTemplate.length) {\n append(dateTemplate, tdEle);\n }\n }\n else {\n var ele = createElement('span', { className: cls.NAVIGATE_CLASS });\n var skeleton = 'full';\n var title = this.parent.globalize.formatDate(td.date, { skeleton: skeleton, calendar: this.parent.getCalendarMode() });\n ele.setAttribute('title', util.capitalizeFirstWord(title, 'multiple'));\n var innerText = (this.parent.calendarUtil.isMonthStart(td.date) && !this.isCurrentDate(td.date) && !this.parent.isAdaptive) ?\n this.parent.globalize.formatDate(td.date, { format: 'MMM d', calendar: this.parent.getCalendarMode() }) :\n this.parent.globalize.formatDate(td.date, { skeleton: 'd', calendar: this.parent.getCalendarMode() });\n ele.innerHTML = util.capitalizeFirstWord(innerText, 'single');\n tdEle.appendChild(ele);\n }\n this.wireCellEvents(tdEle);\n }\n var args = { elementType: td.type, element: tdEle, date: td.date, groupIndex: td.groupIndex };\n this.parent.trigger(event.renderCell, args);\n return tdEle;\n };\n Month.prototype.getContentSlots = function () {\n if (!(this.colLevels[this.colLevels.length - 1] && this.colLevels[this.colLevels.length - 1][0])) {\n return [];\n }\n var slotDatas = [];\n var prepareSlots = function (rowIndex, renderDate, resData, classList) {\n var data = {\n date: new Date(+renderDate), groupIndex: resData.groupIndex, workDays: resData.workDays,\n type: 'monthCells', className: classList || [cls.WORK_CELLS_CLASS]\n };\n if (!slotDatas[rowIndex]) {\n slotDatas[rowIndex] = [];\n }\n slotDatas[rowIndex].push(data);\n };\n var includeResource = this.parent.currentView !== 'MonthAgenda' &&\n this.parent.activeViewOptions.group.resources.length > 0;\n if (includeResource && !this.parent.uiStateValues.isGroupAdaptive && !this.parent.activeViewOptions.group.byDate) {\n for (var _i = 0, _a = this.colLevels[this.colLevels.length - 2]; _i < _a.length; _i++) {\n var res = _a[_i];\n var dates = res.renderDates.map(function (date) { return new Date(+date); });\n var count = this.parent.activeViewOptions.showWeekend ? util.WEEK_LENGTH : res.workDays.length;\n for (var i = 0; i < (res.renderDates.length / count); i++) {\n var colDates = dates.splice(0, count);\n for (var _b = 0, colDates_1 = colDates; _b < colDates_1.length; _b++) {\n var colDate = colDates_1[_b];\n prepareSlots(i, colDate, res);\n }\n }\n }\n }\n else {\n var dates = this.renderDates.map(function (date) { return new Date(+date); });\n var count = this.parent.activeViewOptions.showWeekend ? util.WEEK_LENGTH :\n this.parent.activeViewOptions.workDays.length;\n for (var i = 0; i < (this.renderDates.length / count); i++) {\n var colDates = dates.splice(0, count);\n for (var _c = 0, colDates_2 = colDates; _c < colDates_2.length; _c++) {\n var colDate = colDates_2[_c];\n if (includeResource) {\n var lastRow = this.colLevels[(this.colLevels.length - 1)];\n var resourcesTd = lastRow.slice(0, lastRow.length / count);\n for (var resIndex = 0; resIndex < resourcesTd.length; resIndex++) {\n var clsList = void 0;\n if (resIndex !== 0) {\n clsList = [cls.WORK_CELLS_CLASS, cls.DISABLE_DATE];\n }\n prepareSlots(i, colDate, resourcesTd[resIndex], clsList);\n }\n }\n else {\n prepareSlots(i, colDate, this.colLevels[this.colLevels.length - 1][0]);\n }\n }\n }\n }\n return slotDatas;\n };\n Month.prototype.updateClassList = function (data) {\n if (!this.isCustomMonth() && this.isOtherMonth(data.date)) {\n data.className.push(cls.OTHERMONTH_CLASS);\n }\n if (!this.parent.isMinMaxDate(data.date)) {\n data.className.push(cls.DISABLE_DATES);\n }\n if (this.parent.currentView === 'MonthAgenda' && this.parent.isSelectedDate(data.date)) {\n data.className.push(cls.SELECTED_CELL_CLASS);\n }\n };\n Month.prototype.isOtherMonth = function (date) {\n return date.getTime() < this.monthDates.start.getTime() || date.getTime() > this.monthDates.end.getTime();\n };\n Month.prototype.renderContentArea = function () {\n var tbl = this.createTableLayout(cls.CONTENT_TABLE_CLASS);\n this.addAutoHeightClass(tbl);\n if (this.parent.currentView === 'TimelineMonth') {\n this.createColGroup(tbl, this.colLevels[this.colLevels.length - 1]);\n }\n var monthDate = new Date(this.parent.selectedDate.getTime());\n this.monthDates = {\n start: this.parent.calendarUtil.firstDateOfMonth(monthDate),\n end: this.parent.calendarUtil.lastDateOfMonth(util.addMonths(monthDate, this.parent.activeViewOptions.interval - 1))\n };\n var tBody = tbl.querySelector('tbody');\n append(this.getContentRows(), tBody);\n this.wireCellEvents(tBody);\n return tbl;\n };\n Month.prototype.getContentRows = function () {\n var trows = [];\n var tr = createElement('tr', { attrs: { role: 'row' } });\n var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });\n var slotDatas = this.getContentSlots();\n for (var row = 0; row < slotDatas.length; row++) {\n var ntr = tr.cloneNode();\n for (var col = 0; col < slotDatas[row].length; col++) {\n var ntd = this.createContentTd(slotDatas[row][col], td);\n ntr.appendChild(ntd);\n }\n trows.push(ntr);\n }\n return trows;\n };\n Month.prototype.createContentTd = function (data, td) {\n var ntd = td.cloneNode();\n if (data.colSpan) {\n ntd.setAttribute('colspan', data.colSpan.toString());\n }\n this.updateClassList(data);\n var type = data.type;\n if (data.className.indexOf(cls.RESOURCE_PARENT_CLASS) !== -1) {\n data.className.push(cls.RESOURCE_GROUP_CELLS_CLASS);\n type = 'resourceGroupCells';\n }\n if (this.parent.workHours.highlight && this.isWorkDay(data.date, data.workDays)) {\n data.className.push(cls.WORKDAY_CLASS);\n }\n if (this.isCurrentDate(data.date)) {\n data.className.push(cls.CURRENTDATE_CLASS);\n }\n addClass([ntd], data.className);\n ntd.setAttribute('data-date', data.date.getTime().toString());\n if (!isNullOrUndefined(data.groupIndex) || this.parent.uiStateValues.isGroupAdaptive) {\n var groupIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex :\n data.groupIndex;\n ntd.setAttribute('data-group-index', '' + groupIndex);\n }\n this.renderDateHeaderElement(data, ntd);\n if (this.parent.activeViewOptions.cellTemplate) {\n var args_1 = { date: data.date, type: type, groupIndex: data.groupIndex };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.cellTemplateName;\n var templateId = scheduleId + viewName + 'cellTemplate';\n var cellTemplate = [].slice.call(this.parent.getCellTemplate()(args_1, this.parent, 'cellTemplate', templateId, false));\n append(cellTemplate, ntd);\n }\n var args = { elementType: type, element: ntd, date: data.date, groupIndex: data.groupIndex };\n this.parent.trigger(event.renderCell, args);\n return ntd;\n };\n Month.prototype.renderDateHeaderElement = function (data, ntd) {\n if (this.parent.currentView === 'TimelineMonth') {\n return;\n }\n var dateHeader = createElement('div', { className: cls.DATE_HEADER_CLASS });\n if (this.parent.activeViewOptions.cellHeaderTemplate) {\n var args = { date: data.date, type: data.type, groupIndex: data.groupIndex };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.cellHeaderTemplateName;\n var templateId = scheduleId + viewName + 'cellHeaderTemplate';\n var cellHeaderTemplate = [].slice.call(this.parent.getCellHeaderTemplate()(args, this.parent, 'cellHeaderTemplate', templateId, false));\n append(cellHeaderTemplate, dateHeader);\n }\n else {\n var innerText = (this.parent.calendarUtil.isMonthStart(data.date) && !this.isCurrentDate(data.date) && !this.parent.isAdaptive) ?\n this.parent.globalize.formatDate(data.date, { format: 'MMM d', calendar: this.parent.getCalendarMode() }) :\n this.parent.globalize.formatDate(data.date, { skeleton: 'd', calendar: this.parent.getCalendarMode() });\n dateHeader.innerHTML = util.capitalizeFirstWord(innerText, 'single');\n }\n ntd.appendChild(dateHeader);\n if (this.getModuleName() === 'month') {\n addClass([dateHeader], cls.NAVIGATE_CLASS);\n var skeleton = 'full';\n var announcementText = this.parent.globalize.formatDate(data.date, { skeleton: skeleton, calendar: this.parent.getCalendarMode() });\n dateHeader.setAttribute('aria-label', announcementText);\n }\n };\n Month.prototype.getMonthStart = function (currentDate) {\n var useDisplayDate = this.parent.currentView === 'Month' && !isNullOrUndefined(this.parent.activeViewOptions.displayDate) && (this.parent.uiStateValues.isCustomMonth || this.isCustomRange());\n var date = useDisplayDate ? this.parent.activeViewOptions.displayDate : !(this.parent.uiStateValues.isCustomMonth ||\n this.isCustomRange()) && this.isCustomMonth() ? currentDate : this.parent.calendarUtil.firstDateOfMonth(currentDate);\n var monthStart = util.getWeekFirstDate(date, this.parent.activeViewOptions.firstDayOfWeek);\n return new Date(monthStart.getFullYear(), monthStart.getMonth(), monthStart.getDate());\n };\n Month.prototype.getMonthEnd = function (currentDate) {\n if (this.isCustomMonth()) {\n var start = this.getMonthStart(currentDate);\n var numberOfDays = util.WEEK_LENGTH * (this.parent.activeViewOptions.numberOfWeeks > 0 ?\n this.parent.activeViewOptions.numberOfWeeks : util.DEFAULT_WEEKS);\n return util.addDays(start, (numberOfDays - 1));\n }\n else {\n var endDate = util.addMonths(currentDate, this.parent.activeViewOptions.interval - 1);\n var lastWeekOfMonth = util.getWeekFirstDate(this.parent.calendarUtil.lastDateOfMonth(endDate), this.parent.activeViewOptions.firstDayOfWeek);\n return util.addDays(lastWeekOfMonth, util.WEEK_LENGTH - 1);\n }\n };\n Month.prototype.isCustomRange = function () {\n var dates = this.parent.getCurrentViewDates();\n if (dates && dates.length > 0) {\n var selectedTime = util.resetTime(this.parent.selectedDate).getTime();\n var weekFirstDate = util.getWeekFirstDate(dates[dates.length - 1], this.parent.activeViewOptions.firstDayOfWeek);\n return !(selectedTime >= util.getWeekFirstDate(dates[0], this.parent.activeViewOptions.firstDayOfWeek).getTime() &&\n selectedTime <= util.addDays(weekFirstDate, 6).getTime());\n }\n return false;\n };\n Month.prototype.getRenderDates = function (workDays) {\n var renderDates = [];\n var currentDate = util.resetTime(this.parent.selectedDate);\n var start = this.getMonthStart(currentDate);\n var monthEnd = this.getMonthEnd(currentDate);\n do {\n if (this.parent.activeViewOptions.showWeekend) {\n renderDates.push(start);\n }\n else {\n if (this.isWorkDay(start, workDays)) {\n renderDates.push(start);\n }\n }\n start = util.addDays(start, 1);\n if (start.getHours() > 0) {\n start = util.resetTime(start);\n }\n } while (start.getTime() <= monthEnd.getTime());\n if (!workDays) {\n this.renderDates = renderDates;\n }\n if (this.parent.headerModule) {\n this.parent.headerModule.previousNextIconHandler();\n }\n return renderDates;\n };\n Month.prototype.getNextPreviousDate = function (type) {\n if (this.isCustomMonth()) {\n var dates = this.parent.getCurrentViewDates();\n var date = util.getWeekFirstDate(type === 'next' ? dates[dates.length - 1]\n : dates[0], this.parent.activeViewOptions.firstDayOfWeek);\n return util.addDays(date, type === 'next' ? util.WEEK_LENGTH : -(this.parent.activeViewOptions.numberOfWeeks > 0 ?\n this.parent.activeViewOptions.numberOfWeeks : util.DEFAULT_WEEKS) * util.WEEK_LENGTH);\n }\n else {\n return util.addMonths(this.parent.selectedDate, ((type === 'next' ? 1 : -1) * this.parent.activeViewOptions.interval));\n }\n };\n Month.prototype.getStartDate = function () {\n return this.getMonthStart(this.parent.selectedDate);\n };\n Month.prototype.getEndDate = function () {\n return this.getMonthEnd(this.parent.selectedDate);\n };\n Month.prototype.getEndDateFromStartDate = function (start) {\n return util.addDays(new Date(start.getTime()), 1);\n };\n Month.prototype.getDateRangeText = function () {\n if (this.parent.isAdaptive || isNullOrUndefined(this.parent.activeViewOptions.dateFormat)) {\n var startDate = this.parent.selectedDate;\n var endDate = void 0;\n var updateCustomRange = false;\n if (this.isCustomMonth()) {\n var dates = this.parent.getCurrentViewDates();\n updateCustomRange = dates[0].getMonth() !== dates[dates.length - 1].getMonth() ||\n dates[0].getFullYear() !== dates[dates.length - 1].getFullYear();\n if (updateCustomRange) {\n startDate = dates[0];\n endDate = dates[dates.length - 1];\n }\n }\n var isUpdateDateRange = (this.parent.currentView !== 'Month' || !this.isCustomMonth());\n if (this.parent.activeViewOptions.interval > 1 && isUpdateDateRange || updateCustomRange) {\n endDate = endDate ? endDate : util.addMonths(util.lastDateOfMonth(startDate), this.parent.activeViewOptions.interval - 1);\n if (startDate.getFullYear() === endDate.getFullYear()) {\n var monthNames = (this.parent.globalize.formatDate(startDate, { format: 'MMMM', calendar: this.parent.getCalendarMode() })) + ' - ' +\n (this.parent.globalize.formatDate(endDate, { format: 'MMMM ', calendar: this.parent.getCalendarMode() })) +\n this.parent.globalize.formatDate(endDate, { skeleton: 'y', calendar: this.parent.getCalendarMode() });\n return util.capitalizeFirstWord(monthNames, 'single');\n }\n var text = (this.parent.globalize.formatDate(startDate, { format: 'MMMM', calendar: this.parent.getCalendarMode() })) + ' ' +\n startDate.getFullYear() + ' - ' +\n this.parent.globalize.formatDate(endDate, { format: 'MMMM ', calendar: this.parent.getCalendarMode() }) +\n this.parent.globalize.formatDate(endDate, { skeleton: 'y', calendar: this.parent.getCalendarMode() });\n return util.capitalizeFirstWord(text, 'single');\n }\n var format = (this.parent.activeViewOptions.dateFormat) ? this.parent.activeViewOptions.dateFormat : 'MMMM y';\n return util.capitalizeFirstWord(this.parent.globalize.formatDate(startDate, { format: format, calendar: this.parent.getCalendarMode() }), 'single');\n }\n return this.formatDateRange(this.parent.selectedDate);\n };\n Month.prototype.getLabelText = function (view) {\n return this.parent.localeObj.getConstant(view) + ' of ' + util.capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { format: 'MMMM y', calendar: this.parent.getCalendarMode() }), 'single');\n };\n Month.prototype.createWeekNumberElement = function (text) {\n var tr = createElement('tr');\n var td = createElement('td', {\n className: cls.WEEK_NUMBER_CLASS,\n attrs: { 'title': (text ? this.parent.localeObj.getConstant('week') + ' ' + text : '') },\n innerHTML: (text || '')\n });\n tr.appendChild(td);\n var args = { elementType: 'weekNumberCell', element: td };\n this.parent.trigger(event.renderCell, args);\n return tr;\n };\n Month.prototype.unWireEvents = function () {\n var contentScrollableEle = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (contentScrollableEle) {\n EventHandler.remove(contentScrollableEle, 'scroll', this.onContentScroll);\n }\n };\n Month.prototype.isCustomMonth = function () {\n return this.parent.currentView === 'Month' &&\n (!isNullOrUndefined(this.parent.activeViewOptions.displayDate) || this.parent.activeViewOptions.numberOfWeeks > 0);\n };\n Month.prototype.getModuleName = function () {\n return 'month';\n };\n Month.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n if (this.element) {\n if (this.monthEvent) {\n this.monthEvent.destroy();\n this.monthEvent = null;\n }\n this.unWireEvents();\n if (this.parent.resourceBase) {\n this.parent.resourceBase.destroy();\n }\n if (this.parent.scheduleTouchModule) {\n this.parent.scheduleTouchModule.resetValues();\n }\n _super.prototype.destroy.call(this);\n }\n };\n return Month;\n}(ViewBase));\nexport { Month };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nimport * as React from 'react';\nimport { MuiPickersAdapterContext } from '../../../LocalizationProvider'; // Required for babel https://github.com/vercel/next.js/issues/7882. Replace with `export type` in future\n\nfunction useLocalizationContext() {\n const localization = React.useContext(MuiPickersAdapterContext);\n\n if (localization === null) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `Can not find utils in context. It looks like you forgot to wrap your component in LocalizationProvider, or pass dateAdapter prop directly.` : _formatMuiErrorMessage(13));\n }\n\n return localization;\n}\n\nexport function useUtils() {\n return useLocalizationContext().utils;\n}\nexport function useDefaultDates() {\n return useLocalizationContext().defaultDates;\n}\nexport function useNow() {\n const utils = useUtils();\n const now = React.useRef(utils.date());\n return now.current;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"openTo\", \"views\", \"minDate\", \"maxDate\"];\nimport { useThemeProps } from '@mui/material/styles';\nimport { useDefaultDates, useUtils } from '../internal/pickers/hooks/useUtils';\nexport const isYearOnlyView = views => views.length === 1 && views[0] === 'year';\nexport const isYearAndMonthViews = views => views.length === 2 && views.indexOf('month') !== -1 && views.indexOf('year') !== -1;\n\nconst getFormatAndMaskByViews = (views, utils) => {\n if (isYearOnlyView(views)) {\n return {\n mask: '____',\n inputFormat: utils.formats.year\n };\n }\n\n if (isYearAndMonthViews(views)) {\n return {\n disableMaskedInput: true,\n inputFormat: utils.formats.monthAndYear\n };\n }\n\n return {\n mask: '__/__/____',\n inputFormat: utils.formats.keyboardDate\n };\n};\n\nexport function useDatePickerDefaultizedProps(_ref, name) {\n let {\n openTo = 'day',\n views = ['year', 'day'],\n minDate: minDateProp,\n maxDate: maxDateProp\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const minDate = minDateProp != null ? minDateProp : defaultDates.minDate;\n const maxDate = maxDateProp != null ? maxDateProp : defaultDates.maxDate; // This is technically unsound if the type parameters appear in optional props.\n // Optional props can be filled by `useThemeProps` with types that don't match the type parameters.\n\n return useThemeProps({\n props: _extends({\n views,\n openTo,\n minDate,\n maxDate\n }, getFormatAndMaskByViews(views, utils), other),\n name\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar _ClockIcon, _CalendarIcon, _PenIcon;\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/core';\nimport PenIcon from '../svg-icons/Pen';\nimport CalendarIcon from '../svg-icons/Calendar';\nimport ClockIcon from '../svg-icons/Clock';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst classes = generateUtilityClasses('PrivatePickersToolbar', ['root', 'dateTitleContainer']);\nconst PickersToolbarRoot = styled('div', {\n skipSx: true\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n padding: theme.spacing(2, 3)\n}, ownerState.isLandscape && {\n height: 'auto',\n maxWidth: 160,\n padding: 16,\n justifyContent: 'flex-start',\n flexWrap: 'wrap'\n}));\nconst PickersToolbarGrid = styled(Grid, {\n skipSx: true\n})({\n flex: 1\n});\n\nconst getViewTypeIcon = viewType => viewType === 'clock' ? _ClockIcon || (_ClockIcon = /*#__PURE__*/_jsx(ClockIcon, {\n color: \"inherit\"\n})) : _CalendarIcon || (_CalendarIcon = /*#__PURE__*/_jsx(CalendarIcon, {\n color: \"inherit\"\n}));\n\nfunction defaultGetKeyboardInputSwitchingButtonText(isKeyboardInputOpen, viewType) {\n return isKeyboardInputOpen ? `text input view is open, go to ${viewType} view` : `${viewType} view is open, go to text input view`;\n}\n\nconst PickersToolbar = /*#__PURE__*/React.forwardRef(function PickersToolbar(props, ref) {\n const {\n children,\n className,\n getMobileKeyboardInputViewButtonText = defaultGetKeyboardInputSwitchingButtonText,\n isLandscape,\n isMobileKeyboardViewOpen,\n landscapeDirection = 'column',\n penIconClassName,\n toggleMobileKeyboardView,\n toolbarTitle,\n viewType = 'calendar'\n } = props;\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersToolbarRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n variant: \"overline\",\n children: toolbarTitle\n }), /*#__PURE__*/_jsxs(PickersToolbarGrid, {\n container: true,\n justifyContent: \"space-between\",\n className: classes.dateTitleContainer,\n direction: isLandscape ? landscapeDirection : 'row',\n alignItems: isLandscape ? 'flex-start' : 'flex-end',\n children: [children, /*#__PURE__*/_jsx(IconButton, {\n onClick: toggleMobileKeyboardView,\n className: penIconClassName,\n color: \"inherit\",\n \"aria-label\": getMobileKeyboardInputViewButtonText(isMobileKeyboardViewOpen, viewType),\n children: isMobileKeyboardViewOpen ? getViewTypeIcon(viewType) : _PenIcon || (_PenIcon = /*#__PURE__*/_jsx(PenIcon, {\n color: \"inherit\"\n }))\n })]\n })]\n });\n});\nexport default PickersToolbar;","import * as React from 'react';\nimport { createSvgIcon } from '@mui/material/utils';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Pen');","import * as React from 'react';\nimport { createSvgIcon } from '@mui/material/utils';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z\"\n}), 'Calendar');","import * as React from 'react';\nimport { createSvgIcon } from '@mui/material/utils';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Clock');","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"date\", \"isLandscape\", \"isMobileKeyboardViewOpen\", \"onChange\", \"toggleMobileKeyboardView\", \"toolbarFormat\", \"toolbarPlaceholder\", \"toolbarTitle\", \"views\"];\nimport * as React from 'react';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/core';\nimport PickersToolbar from '../internal/pickers/PickersToolbar';\nimport { useUtils } from '../internal/pickers/hooks/useUtils';\nimport { isYearAndMonthViews, isYearOnlyView } from './shared';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst classes = generateUtilityClasses('PrivateDatePickerToolbar', ['penIcon']);\nconst DatePickerToolbarRoot = styled(PickersToolbar, {\n skipSx: true\n})({\n [`& .${classes.penIcon}`]: {\n position: 'relative',\n top: 4\n }\n});\nconst DatePickerToolbarTitle = styled(Typography, {\n skipSx: true\n})(({\n ownerState\n}) => _extends({}, ownerState.isLandscape && {\n margin: 'auto 16px auto auto'\n}));\n/**\n * @ignore - internal component.\n */\n\nconst DatePickerToolbar = /*#__PURE__*/React.forwardRef(function DatePickerToolbar(props, ref) {\n const {\n date,\n isLandscape,\n isMobileKeyboardViewOpen,\n toggleMobileKeyboardView,\n toolbarFormat,\n toolbarPlaceholder = '––',\n toolbarTitle = 'Select date',\n views\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const utils = useUtils();\n const dateText = React.useMemo(() => {\n if (!date) {\n return toolbarPlaceholder;\n }\n\n if (toolbarFormat) {\n return utils.formatByString(date, toolbarFormat);\n }\n\n if (isYearOnlyView(views)) {\n return utils.format(date, 'year');\n }\n\n if (isYearAndMonthViews(views)) {\n return utils.format(date, 'month');\n } // Little localization hack (Google is doing the same for android native pickers):\n // For english localization it is convenient to include weekday into the date \"Mon, Jun 1\".\n // For other locales using strings like \"June 1\", without weekday.\n\n\n return /en/.test(utils.getCurrentLocaleCode()) ? utils.format(date, 'normalDateWithWeekday') : utils.format(date, 'normalDate');\n }, [date, toolbarFormat, toolbarPlaceholder, utils, views]);\n const ownerState = props;\n return /*#__PURE__*/_jsx(DatePickerToolbarRoot, _extends({\n ref: ref,\n toolbarTitle: toolbarTitle,\n isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: toggleMobileKeyboardView,\n isLandscape: isLandscape,\n penIconClassName: classes.penIcon,\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(DatePickerToolbarTitle, {\n variant: \"h4\",\n align: isLandscape ? 'left' : 'center',\n ownerState: ownerState,\n children: dateText\n })\n }));\n});\nexport default DatePickerToolbar;","import * as React from 'react';\n\n/**\n * TODO consider getting rid from wrapper variant\n * @ignore - internal component.\n */\nexport const WrapperVariantContext = /*#__PURE__*/React.createContext(null);\n/**\n * @ignore - internal component.\n */\n\nexport const IsStaticVariantContext = /*#__PURE__*/React.createContext(false);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Grow from '@mui/material/Grow';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport TrapFocus from '@mui/material/Unstable_TrapFocus';\nimport { useForkRef, useEventCallback, ownerDocument } from '@mui/material/utils';\nimport { styled } from '@mui/material/styles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PickersPopperRoot = styled(Popper, {\n skipSx: true\n})(({\n theme\n}) => ({\n zIndex: theme.zIndex.modal\n}));\nconst PickersPopperPaper = styled(Paper, {\n skipSx: true\n})(({\n ownerState\n}) => _extends({\n transformOrigin: 'top center',\n outline: 0\n}, ownerState.placement === 'top' && {\n transformOrigin: 'bottom center'\n}));\n\nfunction clickedRootScrollbar(event, doc) {\n return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Based on @mui/material/ClickAwayListener without the customization.\n * We can probably strip away even more since children won't be portaled.\n * @param onClickAway\n * @param onClick\n * @param onTouchStart\n */\n\n\nfunction useClickAwayListener(active, onClickAway) {\n const movedRef = React.useRef(false);\n const syntheticEventRef = React.useRef(false);\n const nodeRef = React.useRef(null);\n const activatedRef = React.useRef(false);\n React.useEffect(() => {\n if (!active) {\n return undefined;\n } // Ensure that this hook is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n\n\n function armClickAwayListener() {\n activatedRef.current = true;\n }\n\n document.addEventListener('mousedown', armClickAwayListener, true);\n document.addEventListener('touchstart', armClickAwayListener, true);\n return () => {\n document.removeEventListener('mousedown', armClickAwayListener, true);\n document.removeEventListener('touchstart', armClickAwayListener, true);\n activatedRef.current = false;\n };\n }, [active]); // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviors like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n\n const handleClickAway = useEventCallback(event => {\n if (!activatedRef.current) {\n return;\n } // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n\n\n const insideReactTree = syntheticEventRef.current;\n syntheticEventRef.current = false;\n const doc = ownerDocument(nodeRef.current); // 1. IE11 support, which trigger the handleClickAway even after the unbind\n // 2. The child might render null.\n // 3. Behave like a blur listener.\n\n if (!nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n return;\n } // Do not act if user performed touchmove\n\n\n if (movedRef.current) {\n movedRef.current = false;\n return;\n }\n\n let insideDOM; // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n\n if (event.composedPath) {\n insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n } else {\n insideDOM = !doc.documentElement.contains(event.target) || nodeRef.current.contains(event.target);\n }\n\n if (!insideDOM && !insideReactTree) {\n onClickAway(event);\n }\n }); // Keep track of mouse/touch events that bubbled up through the portal.\n\n const handleSynthetic = () => {\n syntheticEventRef.current = true;\n };\n\n React.useEffect(() => {\n if (active) {\n const doc = ownerDocument(nodeRef.current);\n\n const handleTouchMove = () => {\n movedRef.current = true;\n };\n\n doc.addEventListener('touchstart', handleClickAway);\n doc.addEventListener('touchmove', handleTouchMove);\n return () => {\n doc.removeEventListener('touchstart', handleClickAway);\n doc.removeEventListener('touchmove', handleTouchMove);\n };\n }\n\n return undefined;\n }, [active, handleClickAway]);\n React.useEffect(() => {\n // TODO This behavior is not tested automatically\n // It's unclear whether this is due to different update semantics in test (batched in act() vs discrete on click).\n // Or if this is a timing related issues due to different Transition components\n // Once we get rid of all the manual scheduling (e.g. setTimeout(update, 0)) we can revisit this code+test.\n if (active) {\n const doc = ownerDocument(nodeRef.current);\n doc.addEventListener('click', handleClickAway);\n return () => {\n doc.removeEventListener('click', handleClickAway); // cleanup `handleClickAway`\n\n syntheticEventRef.current = false;\n };\n }\n\n return undefined;\n }, [active, handleClickAway]);\n return [nodeRef, handleSynthetic, handleSynthetic];\n}\n\nconst PickersPopper = props => {\n const {\n anchorEl,\n children,\n containerRef = null,\n onClose,\n open,\n PopperProps,\n role,\n TransitionComponent = Grow,\n TrapFocusProps\n } = props;\n React.useEffect(() => {\n function handleKeyDown(nativeEvent) {\n // IE11, Edge (prior to using Bink?) use 'Esc'\n if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {\n onClose();\n }\n }\n\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [onClose]);\n const lastFocusedElementRef = React.useRef(null);\n React.useEffect(() => {\n if (role === 'tooltip') {\n return;\n }\n\n if (open) {\n lastFocusedElementRef.current = document.activeElement;\n } else if (lastFocusedElementRef.current && lastFocusedElementRef.current instanceof HTMLElement) {\n lastFocusedElementRef.current.focus();\n }\n }, [open, role]);\n const [clickAwayRef, onPaperClick, onPaperTouchStart] = useClickAwayListener(open, onClose);\n const paperRef = React.useRef(null);\n const handleRef = useForkRef(paperRef, containerRef);\n const handlePaperRef = useForkRef(handleRef, clickAwayRef);\n const ownerState = props;\n return /*#__PURE__*/_jsx(PickersPopperRoot, _extends({\n transition: true,\n role: role,\n open: open,\n anchorEl: anchorEl,\n ownerState: ownerState\n }, PopperProps, {\n children: ({\n TransitionProps,\n placement\n }) => /*#__PURE__*/_jsx(TrapFocus, _extends({\n open: open,\n disableAutoFocus: true,\n disableEnforceFocus: role === 'tooltip',\n isEnabled: () => true\n }, TrapFocusProps, {\n children: /*#__PURE__*/_jsx(TransitionComponent, _extends({}, TransitionProps, {\n children: /*#__PURE__*/_jsx(PickersPopperPaper, {\n tabIndex: -1,\n elevation: 8,\n ref: handlePaperRef,\n onClick: onPaperClick,\n onTouchStart: onPaperTouchStart,\n ownerState: _extends({}, ownerState, {\n placement\n }),\n children: children\n })\n }))\n }))\n }));\n};\n\nexport default PickersPopper;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useForkRef } from '@mui/material/utils';\nimport { WrapperVariantContext } from './WrapperVariantContext';\nimport PickersPopper from '../PickersPopper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nfunction DesktopWrapper(props) {\n const {\n children,\n DateInputProps,\n KeyboardDateInputComponent,\n onDismiss,\n open,\n PopperProps,\n TransitionComponent\n } = props;\n const ownInputRef = React.useRef(null);\n const inputRef = useForkRef(DateInputProps.inputRef, ownInputRef);\n return /*#__PURE__*/_jsxs(WrapperVariantContext.Provider, {\n value: \"desktop\",\n children: [/*#__PURE__*/_jsx(KeyboardDateInputComponent, _extends({}, DateInputProps, {\n inputRef: inputRef\n })), /*#__PURE__*/_jsx(PickersPopper, {\n role: \"dialog\",\n open: open,\n anchorEl: ownInputRef.current,\n TransitionComponent: TransitionComponent,\n PopperProps: PopperProps,\n onClose: onDismiss,\n children: children\n })]\n });\n}\n\nexport default DesktopWrapper;","/* Use it instead of .includes method for IE support */\nexport function arrayIncludes(array, itemOrItems) {\n if (Array.isArray(itemOrItems)) {\n return itemOrItems.every(item => array.indexOf(item) !== -1);\n }\n\n return array.indexOf(itemOrItems) !== -1;\n}\nexport const onSpaceOrEnter = (innerFn, onFocus) => event => {\n if (event.key === 'Enter' || event.key === ' ') {\n innerFn(); // prevent any side effects\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onFocus) {\n onFocus(event);\n }\n};\n/* Quick untyped helper to improve function composition readability */\n\nexport const pipe = (...fns) => fns.reduceRight((prevFn, nextFn) => (...args) => nextFn(prevFn(...args)), value => value);\nexport const executeInTheNextEventLoopTick = fn => {\n setTimeout(fn, 0);\n};\nexport function createDelegatedEventHandler(fn, onEvent) {\n return event => {\n fn(event);\n\n if (onEvent) {\n onEvent(event);\n }\n };\n}\nexport const doNothing = () => {};","import * as React from 'react';\nimport { useControlled } from '@mui/material/utils';\nimport { arrayIncludes } from '../utils';\nexport function useViews({\n onChange,\n onViewChange,\n openTo,\n view,\n views\n}) {\n var _views, _views2;\n\n const [openView, setOpenView] = useControlled({\n name: 'Picker',\n state: 'view',\n controlled: view,\n default: openTo && arrayIncludes(views, openTo) ? openTo : views[0]\n });\n const previousView = (_views = views[views.indexOf(openView) - 1]) != null ? _views : null;\n const nextView = (_views2 = views[views.indexOf(openView) + 1]) != null ? _views2 : null;\n const changeView = React.useCallback(newView => {\n setOpenView(newView);\n\n if (onViewChange) {\n onViewChange(newView);\n }\n }, [setOpenView, onViewChange]);\n const openNext = React.useCallback(() => {\n if (nextView) {\n changeView(nextView);\n }\n }, [nextView, changeView]);\n const handleChangeAndOpenNext = React.useCallback((date, currentViewSelectionState) => {\n const isSelectionFinishedOnCurrentView = currentViewSelectionState === 'finish';\n const globalSelectionState = isSelectionFinishedOnCurrentView && Boolean(nextView) ? 'partial' : currentViewSelectionState;\n onChange(date, globalSelectionState);\n\n if (isSelectionFinishedOnCurrentView) {\n openNext();\n }\n }, [nextView, onChange, openNext]);\n return {\n handleChangeAndOpenNext,\n nextView,\n previousView,\n openNext,\n openView,\n setOpenView: changeView\n };\n}","export const CLOCK_WIDTH = 220;\nexport const CLOCK_HOUR_WIDTH = 36;\nconst clockCenter = {\n x: CLOCK_WIDTH / 2,\n y: CLOCK_WIDTH / 2\n};\nconst baseClockPoint = {\n x: clockCenter.x,\n y: 0\n};\nconst cx = baseClockPoint.x - clockCenter.x;\nconst cy = baseClockPoint.y - clockCenter.y;\n\nconst rad2deg = rad => rad * (180 / Math.PI);\n\nconst getAngleValue = (step, offsetX, offsetY) => {\n const x = offsetX - clockCenter.x;\n const y = offsetY - clockCenter.y;\n const atan = Math.atan2(cx, cy) - Math.atan2(x, y);\n let deg = rad2deg(atan);\n deg = Math.round(deg / step) * step;\n deg %= 360;\n const value = Math.floor(deg / step) || 0;\n const delta = x ** 2 + y ** 2;\n const distance = Math.sqrt(delta);\n return {\n value,\n distance\n };\n};\n\nexport const getMinutes = (offsetX, offsetY, step = 1) => {\n const angleStep = step * 6;\n let {\n value\n } = getAngleValue(angleStep, offsetX, offsetY);\n value = value * step % 60;\n return value;\n};\nexport const getHours = (offsetX, offsetY, ampm) => {\n const {\n value,\n distance\n } = getAngleValue(30, offsetX, offsetY);\n let hour = value || 12;\n\n if (!ampm) {\n if (distance < CLOCK_WIDTH / 2 - CLOCK_HOUR_WIDTH) {\n hour += 12;\n hour %= 24;\n }\n } else {\n hour %= 12;\n }\n\n return hour;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"hasSelected\", \"isInner\", \"type\", \"value\"];\nimport * as React from 'react';\nimport { styled } from '@mui/material/styles';\nimport { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from './shared';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ClockPointerRoot = styled('div', {\n skipSx: true\n})(({\n theme,\n ownerState\n}) => _extends({\n width: 2,\n backgroundColor: theme.palette.primary.main,\n position: 'absolute',\n left: 'calc(50% - 1px)',\n bottom: '50%',\n transformOrigin: 'center bottom 0px'\n}, ownerState.toAnimateTransform && {\n transition: theme.transitions.create(['transform', 'height'])\n}));\nconst ClockPointerThumb = styled('div', {\n skipSx: true\n})(({\n theme,\n ownerState\n}) => _extends({\n width: 4,\n height: 4,\n backgroundColor: theme.palette.primary.contrastText,\n borderRadius: '50%',\n position: 'absolute',\n top: -21,\n left: `calc(50% - ${CLOCK_HOUR_WIDTH / 2}px)`,\n border: `${(CLOCK_HOUR_WIDTH - 4) / 2}px solid ${theme.palette.primary.main}`,\n boxSizing: 'content-box'\n}, ownerState.hasSelected && {\n backgroundColor: theme.palette.primary.main\n}));\n/**\n * @ignore - internal component.\n */\n\nclass ClockPointer extends React.Component {\n constructor(...args) {\n super(...args);\n this.state = {\n toAnimateTransform: false,\n previousType: undefined\n };\n }\n\n render() {\n const _this$props = this.props,\n {\n className,\n isInner,\n type,\n value\n } = _this$props,\n other = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n const ownerState = _extends({}, this.props, this.state);\n\n const getAngleStyle = () => {\n const max = type === 'hours' ? 12 : 60;\n let angle = 360 / max * value;\n\n if (type === 'hours' && value > 12) {\n angle -= 360; // round up angle to max 360 degrees\n }\n\n return {\n height: Math.round((isInner ? 0.26 : 0.4) * CLOCK_WIDTH),\n transform: `rotateZ(${angle}deg)`\n };\n };\n\n return /*#__PURE__*/_jsx(ClockPointerRoot, _extends({\n style: getAngleStyle(),\n className: className,\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(ClockPointerThumb, {\n ownerState: ownerState\n })\n }));\n }\n\n}\n\nClockPointer.getDerivedStateFromProps = (nextProps, state) => {\n if (nextProps.type !== state.previousType) {\n return {\n toAnimateTransform: true,\n previousType: nextProps.type\n };\n }\n\n return {\n toAnimateTransform: false,\n previousType: nextProps.type\n };\n};\n\nexport default ClockPointer;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar _ClockPin, _Typography, _Typography2;\n\nimport * as React from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport ClockPointer from './ClockPointer';\nimport { useUtils } from '../internal/pickers/hooks/useUtils';\nimport { WrapperVariantContext } from '../internal/pickers/wrappers/WrapperVariantContext';\nimport { getHours, getMinutes } from './shared';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst ClockRoot = styled('div', {\n skipSx: true\n})(({\n theme\n}) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n margin: theme.spacing(2)\n}));\nconst ClockClock = styled('div', {\n skipSx: true\n})({\n backgroundColor: 'rgba(0,0,0,.07)',\n borderRadius: '50%',\n height: 220,\n width: 220,\n flexShrink: 0,\n position: 'relative',\n pointerEvents: 'none'\n});\nconst ClockSquareMask = styled('div', {\n skipSx: true\n})({\n width: '100%',\n height: '100%',\n position: 'absolute',\n pointerEvents: 'auto',\n outline: 0,\n // Disable scroll capabilities.\n touchAction: 'none',\n userSelect: 'none',\n '@media (pointer: fine)': {\n cursor: 'pointer',\n borderRadius: '50%'\n },\n '&:active': {\n cursor: 'move'\n }\n});\nconst ClockPin = styled('div', {\n skipSx: true\n})(({\n theme\n}) => ({\n width: 6,\n height: 6,\n borderRadius: '50%',\n backgroundColor: theme.palette.primary.main,\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n}));\nconst ClockAmButton = styled(IconButton, {\n skipSx: true\n})(({\n theme,\n ownerState\n}) => _extends({\n zIndex: 1,\n position: 'absolute',\n bottom: ownerState.ampmInClock ? 64 : 8,\n left: 8\n}, ownerState.meridiemMode === 'am' && {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n '&:hover': {\n backgroundColor: theme.palette.primary.light\n }\n}));\nconst ClockPmButton = styled(IconButton, {\n skipSx: true\n})(({\n theme,\n ownerState\n}) => _extends({\n zIndex: 1,\n position: 'absolute',\n bottom: ownerState.ampmInClock ? 64 : 8,\n right: 8\n}, ownerState.meridiemMode === 'pm' && {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n '&:hover': {\n backgroundColor: theme.palette.primary.light\n }\n}));\n/**\n * @ignore - internal component.\n */\n\nfunction Clock(props) {\n const {\n ampm,\n ampmInClock,\n autoFocus,\n children,\n date,\n getClockLabelText,\n handleMeridiemChange,\n isTimeDisabled,\n meridiemMode,\n minutesStep = 1,\n onChange,\n selectedId,\n type,\n value\n } = props;\n const ownerState = props;\n const utils = useUtils();\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const isMoving = React.useRef(false);\n const isSelectedTimeDisabled = isTimeDisabled(value, type);\n const isPointerInner = !ampm && type === 'hours' && (value < 1 || value > 12);\n\n const handleValueChange = (newValue, isFinish) => {\n if (isTimeDisabled(newValue, type)) {\n return;\n }\n\n onChange(newValue, isFinish);\n };\n\n const setTime = (event, isFinish) => {\n let {\n offsetX,\n offsetY\n } = event;\n\n if (offsetX === undefined) {\n const rect = event.target.getBoundingClientRect();\n offsetX = event.changedTouches[0].clientX - rect.left;\n offsetY = event.changedTouches[0].clientY - rect.top;\n }\n\n const newSelectedValue = type === 'seconds' || type === 'minutes' ? getMinutes(offsetX, offsetY, minutesStep) : getHours(offsetX, offsetY, Boolean(ampm));\n handleValueChange(newSelectedValue, isFinish);\n };\n\n const handleTouchMove = event => {\n isMoving.current = true;\n setTime(event, 'shallow');\n };\n\n const handleTouchEnd = event => {\n if (isMoving.current) {\n setTime(event, 'finish');\n isMoving.current = false;\n }\n };\n\n const handleMouseMove = event => {\n // event.buttons & PRIMARY_MOUSE_BUTTON\n if (event.buttons > 0) {\n setTime(event.nativeEvent, 'shallow');\n }\n };\n\n const handleMouseUp = event => {\n if (isMoving.current) {\n isMoving.current = false;\n }\n\n setTime(event.nativeEvent, 'finish');\n };\n\n const hasSelected = React.useMemo(() => {\n if (type === 'hours') {\n return true;\n }\n\n return value % 5 === 0;\n }, [type, value]);\n const keyboardControlStep = type === 'minutes' ? minutesStep : 1;\n const listboxRef = React.useRef(null); // Since this is rendered when a Popper is opened we can't use passive effects.\n // Focusing in passive effects in Popper causes scroll jump.\n\n useEnhancedEffect(() => {\n if (autoFocus) {\n // The ref not being resolved would be a bug in MUI.\n listboxRef.current.focus();\n }\n }, [autoFocus]);\n\n const handleKeyDown = event => {\n // TODO: Why this early exit?\n if (isMoving.current) {\n return;\n }\n\n switch (event.key) {\n case 'Home':\n // annulate both hours and minutes\n handleValueChange(0, 'partial');\n event.preventDefault();\n break;\n\n case 'End':\n handleValueChange(type === 'minutes' ? 59 : 23, 'partial');\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n handleValueChange(value + keyboardControlStep, 'partial');\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n handleValueChange(value - keyboardControlStep, 'partial');\n event.preventDefault();\n break;\n\n default: // do nothing\n\n }\n };\n\n return /*#__PURE__*/_jsxs(ClockRoot, {\n children: [/*#__PURE__*/_jsxs(ClockClock, {\n children: [/*#__PURE__*/_jsx(ClockSquareMask, {\n onTouchMove: handleTouchMove,\n onTouchEnd: handleTouchEnd,\n onMouseUp: handleMouseUp,\n onMouseMove: handleMouseMove\n }), !isSelectedTimeDisabled && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [_ClockPin || (_ClockPin = /*#__PURE__*/_jsx(ClockPin, {})), date && /*#__PURE__*/_jsx(ClockPointer, {\n type: type,\n value: value,\n isInner: isPointerInner,\n hasSelected: hasSelected\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n \"aria-activedescendant\": selectedId,\n \"aria-label\": getClockLabelText(type, date, utils),\n ref: listboxRef,\n role: \"listbox\",\n onKeyDown: handleKeyDown,\n tabIndex: 0,\n children: children\n })]\n }), ampm && (wrapperVariant === 'desktop' || ampmInClock) && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ClockAmButton, {\n onClick: () => handleMeridiemChange('am'),\n disabled: meridiemMode === null,\n ownerState: ownerState,\n children: _Typography || (_Typography = /*#__PURE__*/_jsx(Typography, {\n variant: \"caption\",\n children: \"AM\"\n }))\n }), /*#__PURE__*/_jsx(ClockPmButton, {\n disabled: meridiemMode === null,\n onClick: () => handleMeridiemChange('pm'),\n ownerState: ownerState,\n children: _Typography2 || (_Typography2 = /*#__PURE__*/_jsx(Typography, {\n variant: \"caption\",\n children: \"PM\"\n }))\n })]\n })]\n });\n}\n\nexport default Clock;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disabled\", \"index\", \"inner\", \"label\", \"selected\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/core';\nimport { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from './shared';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const classes = generateUtilityClasses('PrivateClockNumber', ['selected', 'disabled']);\nconst ClockNumberRoot = styled('span', {\n skipSx: true\n})(({\n theme,\n ownerState\n}) => _extends({\n height: CLOCK_HOUR_WIDTH,\n width: CLOCK_HOUR_WIDTH,\n position: 'absolute',\n left: `calc((100% - ${CLOCK_HOUR_WIDTH}px) / 2)`,\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '50%',\n color: theme.palette.text.primary,\n '&:focused': {\n backgroundColor: theme.palette.background.paper\n },\n [`&.${classes.selected}`]: {\n color: theme.palette.primary.contrastText\n },\n [`&.${classes.disabled}`]: {\n pointerEvents: 'none',\n color: theme.palette.text.disabled\n }\n}, ownerState.inner && _extends({}, theme.typography.body2, {\n color: theme.palette.text.secondary\n})));\n/**\n * @ignore - internal component.\n */\n\nfunction ClockNumber(props) {\n const {\n className,\n disabled,\n index,\n inner,\n label,\n selected\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const angle = index % 12 / 12 * Math.PI * 2 - Math.PI / 2;\n const length = (CLOCK_WIDTH - CLOCK_HOUR_WIDTH - 2) / 2 * (inner ? 0.65 : 1);\n const x = Math.round(Math.cos(angle) * length);\n const y = Math.round(Math.sin(angle) * length);\n return /*#__PURE__*/_jsx(ClockNumberRoot, _extends({\n className: clsx(className, selected && classes.selected, disabled && classes.disabled),\n \"aria-disabled\": disabled ? true : undefined,\n \"aria-selected\": selected ? true : undefined,\n role: \"option\",\n style: {\n transform: `translate(${x}px, ${y + (CLOCK_WIDTH - CLOCK_HOUR_WIDTH) / 2}px`\n },\n ownerState: ownerState\n }, other, {\n children: label\n }));\n}\n\nexport default ClockNumber;","import * as React from 'react';\nimport ClockNumber from './ClockNumber';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n * @ignore - internal component.\n */\nexport const getHourNumbers = ({\n ampm,\n date,\n getClockNumberText,\n isDisabled,\n selectedId,\n utils\n}) => {\n const currentHours = date ? utils.getHours(date) : null;\n const hourNumbers = [];\n const startHour = ampm ? 1 : 0;\n const endHour = ampm ? 12 : 23;\n\n const isSelected = hour => {\n if (currentHours === null) {\n return false;\n }\n\n if (ampm) {\n if (hour === 12) {\n return currentHours === 12 || currentHours === 0;\n }\n\n return currentHours === hour || currentHours - 12 === hour;\n }\n\n return currentHours === hour;\n };\n\n for (let hour = startHour; hour <= endHour; hour += 1) {\n let label = hour.toString();\n\n if (hour === 0) {\n label = '00';\n }\n\n const inner = !ampm && (hour === 0 || hour > 12);\n label = utils.formatNumber(label);\n const selected = isSelected(hour);\n hourNumbers.push( /*#__PURE__*/_jsx(ClockNumber, {\n id: selected ? selectedId : undefined,\n index: hour,\n inner: inner,\n selected: selected,\n disabled: isDisabled(hour),\n label: label,\n \"aria-label\": getClockNumberText(label)\n }, hour));\n }\n\n return hourNumbers;\n};\nexport const getMinutesNumbers = ({\n utils,\n value,\n isDisabled,\n getClockNumberText,\n selectedId\n}) => {\n const f = utils.formatNumber;\n return [[5, f('05')], [10, f('10')], [15, f('15')], [20, f('20')], [25, f('25')], [30, f('30')], [35, f('35')], [40, f('40')], [45, f('45')], [50, f('50')], [55, f('55')], [0, f('00')]].map(([numberValue, label], index) => {\n const selected = numberValue === value;\n return /*#__PURE__*/_jsx(ClockNumber, {\n label: label,\n id: selected ? selectedId : undefined,\n index: index + 1,\n inner: false,\n disabled: isDisabled(numberValue),\n selected: selected,\n \"aria-label\": getClockNumberText(label)\n }, numberValue);\n });\n};","import * as React from 'react';\nimport { createSvgIcon } from '@mui/material/utils';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'ArrowLeft');","import * as React from 'react';\nimport { createSvgIcon } from '@mui/material/utils';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'ArrowRight');","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"components\", \"componentsProps\", \"isLeftDisabled\", \"isLeftHidden\", \"isRightDisabled\", \"isRightHidden\", \"leftArrowButtonText\", \"onLeftClick\", \"onRightClick\", \"rightArrowButtonText\"];\nimport * as React from 'react';\nimport Typography from '@mui/material/Typography';\nimport { useTheme, styled } from '@mui/material/styles';\nimport IconButton from '@mui/material/IconButton';\nimport ArrowLeftIcon from '../svg-icons/ArrowLeft';\nimport ArrowRightIcon from '../svg-icons/ArrowRight';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersArrowSwitcherRoot = styled('div', {\n skipSx: true\n})({\n display: 'flex'\n});\nconst PickersArrowSwitcherSpacer = styled('div', {\n skipSx: true\n})(({\n theme\n}) => ({\n width: theme.spacing(3)\n}));\nconst PickersArrowSwitcherButton = styled(IconButton, {\n skipSx: true\n})(({\n ownerState\n}) => _extends({}, ownerState.hidden && {\n visibility: 'hidden'\n}));\nconst PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function PickersArrowSwitcher(props, ref) {\n const {\n children,\n className,\n components = {},\n componentsProps = {},\n isLeftDisabled,\n isLeftHidden,\n isRightDisabled,\n isRightHidden,\n leftArrowButtonText,\n onLeftClick,\n onRightClick,\n rightArrowButtonText\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const leftArrowButtonProps = componentsProps.leftArrowButton || {};\n const LeftArrowIcon = components.LeftArrowIcon || ArrowLeftIcon;\n const rightArrowButtonProps = componentsProps.rightArrowButton || {};\n const RightArrowIcon = components.RightArrowIcon || ArrowRightIcon;\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersArrowSwitcherRoot, _extends({\n ref: ref,\n className: className,\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(PickersArrowSwitcherButton, _extends({\n as: components.LeftArrowButton,\n size: \"small\",\n \"aria-label\": leftArrowButtonText,\n title: leftArrowButtonText,\n disabled: isLeftDisabled,\n edge: \"end\",\n onClick: onLeftClick\n }, leftArrowButtonProps, {\n className: leftArrowButtonProps.className,\n ownerState: _extends({}, ownerState, leftArrowButtonProps, {\n hidden: isLeftHidden\n }),\n children: isRtl ? /*#__PURE__*/_jsx(RightArrowIcon, {}) : /*#__PURE__*/_jsx(LeftArrowIcon, {})\n })), children ? /*#__PURE__*/_jsx(Typography, {\n variant: \"subtitle1\",\n component: \"span\",\n children: children\n }) : /*#__PURE__*/_jsx(PickersArrowSwitcherSpacer, {\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(PickersArrowSwitcherButton, _extends({\n as: components.RightArrowButton,\n size: \"small\",\n \"aria-label\": rightArrowButtonText,\n title: rightArrowButtonText,\n edge: \"start\",\n disabled: isRightDisabled,\n onClick: onRightClick\n }, rightArrowButtonProps, {\n className: rightArrowButtonProps.className,\n ownerState: _extends({}, ownerState, rightArrowButtonProps, {\n hidden: isRightHidden\n }),\n children: isRtl ? /*#__PURE__*/_jsx(LeftArrowIcon, {}) : /*#__PURE__*/_jsx(RightArrowIcon, {})\n }))]\n }));\n});\nexport default PickersArrowSwitcher;","export const getMeridiem = (date, utils) => {\n if (!date) {\n return null;\n }\n\n return utils.getHours(date) >= 12 ? 'pm' : 'am';\n};\nexport const convertValueToMeridiem = (value, meridiem, ampm) => {\n if (ampm) {\n const currentMeridiem = value >= 12 ? 'pm' : 'am';\n\n if (currentMeridiem !== meridiem) {\n return meridiem === 'am' ? value - 12 : value + 12;\n }\n }\n\n return value;\n};\nexport const convertToMeridiem = (time, meridiem, ampm, utils) => {\n const newHoursAmount = convertValueToMeridiem(utils.getHours(time), meridiem, ampm);\n return utils.setHours(time, newHoursAmount);\n};\nexport function getSecondsInDay(date, utils) {\n return utils.getHours(date) * 3600 + utils.getMinutes(date) * 60 + utils.getSeconds(date);\n}\nexport const createIsAfterIgnoreDatePart = (disableIgnoringDatePartForTimeValidation, utils) => (dateLeft, dateRight) => {\n if (disableIgnoringDatePartForTimeValidation) {\n return utils.isAfter(dateLeft, dateRight);\n }\n\n return getSecondsInDay(dateLeft, utils) > getSecondsInDay(dateRight, utils);\n};\nexport const validateTime = (utils, value, {\n minTime,\n maxTime,\n shouldDisableTime,\n disableIgnoringDatePartForTimeValidation\n}) => {\n const date = utils.date(value);\n const isAfterComparingFn = createIsAfterIgnoreDatePart(Boolean(disableIgnoringDatePartForTimeValidation), utils);\n\n if (value === null) {\n return null;\n }\n\n switch (true) {\n case !utils.isValid(value):\n return 'invalidDate';\n\n case Boolean(minTime && isAfterComparingFn(minTime, date)):\n return 'minTime';\n\n case Boolean(maxTime && isAfterComparingFn(date, maxTime)):\n return 'maxTime';\n\n case Boolean(shouldDisableTime && shouldDisableTime(utils.getHours(date), 'hours')):\n return 'shouldDisableTime-hours';\n\n case Boolean(shouldDisableTime && shouldDisableTime(utils.getMinutes(date), 'minutes')):\n return 'shouldDisableTime-minutes';\n\n case Boolean(shouldDisableTime && shouldDisableTime(utils.getSeconds(date), 'seconds')):\n return 'shouldDisableTime-seconds';\n\n default:\n return null;\n }\n};","import * as React from 'react';\nimport { useUtils } from './useUtils';\nimport { getMeridiem, convertToMeridiem } from '../time-utils';\nexport function useNextMonthDisabled(month, {\n disableFuture,\n maxDate\n}) {\n const utils = useUtils();\n return React.useMemo(() => {\n const now = utils.date();\n const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);\n return !utils.isAfter(lastEnabledMonth, month);\n }, [disableFuture, maxDate, month, utils]);\n}\nexport function usePreviousMonthDisabled(month, {\n disablePast,\n minDate\n}) {\n const utils = useUtils();\n return React.useMemo(() => {\n const now = utils.date();\n const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);\n return !utils.isBefore(firstEnabledMonth, month);\n }, [disablePast, minDate, month, utils]);\n}\nexport function useMeridiemMode(date, ampm, onChange) {\n const utils = useUtils();\n const meridiemMode = getMeridiem(date, utils);\n const handleMeridiemChange = React.useCallback(mode => {\n const timeWithMeridiem = convertToMeridiem(date, mode, Boolean(ampm), utils);\n onChange(timeWithMeridiem, 'partial');\n }, [ampm, date, onChange, utils]);\n return {\n meridiemMode,\n handleMeridiemChange\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, generateUtilityClass, generateUtilityClasses } from '@mui/core';\nimport Clock from './Clock';\nimport { pipe } from '../internal/pickers/utils';\nimport { useUtils, useNow } from '../internal/pickers/hooks/useUtils';\nimport { getHourNumbers, getMinutesNumbers } from './ClockNumbers';\nimport PickersArrowSwitcher from '../internal/pickers/PickersArrowSwitcher';\nimport { convertValueToMeridiem, createIsAfterIgnoreDatePart } from '../internal/pickers/time-utils';\nimport { useMeridiemMode } from '../internal/pickers/hooks/date-helpers-hooks';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function getClockPickerUtilityClass(slot) {\n return generateUtilityClass('MuiClockPicker', slot);\n}\nexport const clockPickerClasses = generateUtilityClasses('MuiClockPicker', ['arrowSwitcher']);\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n arrowSwitcher: ['arrowSwitcher']\n };\n return composeClasses(slots, getClockPickerUtilityClass, classes);\n};\n\nconst ClockPickerArrowSwitcher = styled(PickersArrowSwitcher, {\n name: 'MuiClockPicker',\n slot: 'ArrowSwticher',\n overridesResolver: (props, styles) => styles.arrowSwitcher\n})({\n position: 'absolute',\n right: 12,\n top: 15\n});\n\nconst defaultGetClockLabelText = (view, time, adapter) => `Select ${view}. ${time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`}`;\n\nconst defaultGetMinutesClockNumberText = minutes => `${minutes} minutes`;\n\nconst defaultGetHoursClockNumberText = hours => `${hours} hours`;\n\nconst defaultGetSecondsClockNumberText = seconds => `${seconds} seconds`;\n/**\n *\n * API:\n *\n * - [ClockPicker API](https://mui.com/api/clock-picker/)\n */\n\n\nfunction ClockPicker(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClockPicker'\n });\n const {\n ampm = false,\n ampmInClock = false,\n autoFocus,\n components,\n componentsProps,\n date,\n disableIgnoringDatePartForTimeValidation = false,\n getClockLabelText = defaultGetClockLabelText,\n getHoursClockNumberText = defaultGetHoursClockNumberText,\n getMinutesClockNumberText = defaultGetMinutesClockNumberText,\n getSecondsClockNumberText = defaultGetSecondsClockNumberText,\n leftArrowButtonText = 'open previous view',\n maxTime,\n minTime,\n minutesStep = 1,\n nextViewAvailable,\n onChange,\n openNextView,\n openPreviousView,\n previousViewAvailable,\n rightArrowButtonText = 'open next view',\n shouldDisableTime,\n showViewSwitcher,\n view\n } = props;\n const now = useNow();\n const utils = useUtils();\n const midnight = utils.setSeconds(utils.setMinutes(utils.setHours(now, 0), 0), 0);\n const dateOrMidnight = date || midnight;\n const {\n meridiemMode,\n handleMeridiemChange\n } = useMeridiemMode(dateOrMidnight, ampm, onChange);\n const isTimeDisabled = React.useCallback((rawValue, viewType) => {\n if (date === null) {\n return false;\n }\n\n const validateTimeValue = getRequestedTimePoint => {\n const isAfterComparingFn = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, utils);\n return Boolean(minTime && isAfterComparingFn(minTime, getRequestedTimePoint('end')) || maxTime && isAfterComparingFn(getRequestedTimePoint('start'), maxTime) || shouldDisableTime && shouldDisableTime(rawValue, viewType));\n };\n\n switch (viewType) {\n case 'hours':\n {\n const hoursWithMeridiem = convertValueToMeridiem(rawValue, meridiemMode, ampm);\n return validateTimeValue(when => pipe(currentDate => utils.setHours(currentDate, hoursWithMeridiem), dateWithHours => utils.setMinutes(dateWithHours, when === 'start' ? 0 : 59), dateWithMinutes => utils.setSeconds(dateWithMinutes, when === 'start' ? 0 : 59))(date));\n }\n\n case 'minutes':\n return validateTimeValue(when => pipe(currentDate => utils.setMinutes(currentDate, rawValue), dateWithMinutes => utils.setSeconds(dateWithMinutes, when === 'start' ? 0 : 59))(date));\n\n case 'seconds':\n return validateTimeValue(() => utils.setSeconds(date, rawValue));\n\n default:\n throw new Error('not supported');\n }\n }, [ampm, date, disableIgnoringDatePartForTimeValidation, maxTime, meridiemMode, minTime, shouldDisableTime, utils]);\n const selectedId = useId();\n const viewProps = React.useMemo(() => {\n switch (view) {\n case 'hours':\n {\n const handleHoursChange = (value, isFinish) => {\n const valueWithMeridiem = convertValueToMeridiem(value, meridiemMode, ampm);\n onChange(utils.setHours(dateOrMidnight, valueWithMeridiem), isFinish);\n };\n\n return {\n onChange: handleHoursChange,\n value: utils.getHours(dateOrMidnight),\n children: getHourNumbers({\n date,\n utils,\n ampm,\n onChange: handleHoursChange,\n getClockNumberText: getHoursClockNumberText,\n isDisabled: value => isTimeDisabled(value, 'hours'),\n selectedId\n })\n };\n }\n\n case 'minutes':\n {\n const minutesValue = utils.getMinutes(dateOrMidnight);\n\n const handleMinutesChange = (value, isFinish) => {\n onChange(utils.setMinutes(dateOrMidnight, value), isFinish);\n };\n\n return {\n value: minutesValue,\n onChange: handleMinutesChange,\n children: getMinutesNumbers({\n utils,\n value: minutesValue,\n onChange: handleMinutesChange,\n getClockNumberText: getMinutesClockNumberText,\n isDisabled: value => isTimeDisabled(value, 'minutes'),\n selectedId\n })\n };\n }\n\n case 'seconds':\n {\n const secondsValue = utils.getSeconds(dateOrMidnight);\n\n const handleSecondsChange = (value, isFinish) => {\n onChange(utils.setSeconds(dateOrMidnight, value), isFinish);\n };\n\n return {\n value: secondsValue,\n onChange: handleSecondsChange,\n children: getMinutesNumbers({\n utils,\n value: secondsValue,\n onChange: handleSecondsChange,\n getClockNumberText: getSecondsClockNumberText,\n isDisabled: value => isTimeDisabled(value, 'seconds'),\n selectedId\n })\n };\n }\n\n default:\n throw new Error('You must provide the type for ClockView');\n }\n }, [view, utils, date, ampm, getHoursClockNumberText, getMinutesClockNumberText, getSecondsClockNumberText, meridiemMode, onChange, dateOrMidnight, isTimeDisabled, selectedId]);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [showViewSwitcher && /*#__PURE__*/_jsx(ClockPickerArrowSwitcher, {\n className: classes.arrowSwitcher,\n leftArrowButtonText: leftArrowButtonText,\n rightArrowButtonText: rightArrowButtonText,\n components: components,\n componentsProps: componentsProps,\n onLeftClick: openPreviousView,\n onRightClick: openNextView,\n isLeftDisabled: previousViewAvailable,\n isRightDisabled: nextViewAvailable,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(Clock, _extends({\n autoFocus: autoFocus,\n date: date,\n ampmInClock: ampmInClock,\n type: view,\n ampm: ampm,\n getClockLabelText: getClockLabelText,\n minutesStep: minutesStep,\n isTimeDisabled: isTimeDisabled,\n meridiemMode: meridiemMode,\n handleMeridiemChange: handleMeridiemChange,\n selectedId: selectedId\n }, viewProps))]\n });\n}\n\nprocess.env.NODE_ENV !== \"production\" ? ClockPicker.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * 12h/24h view for hour selection clock.\n * @default false\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n\n /**\n * Set to `true` if focus should be moved to clock picker.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * The components used for each slot.\n * Either a string to use a HTML element or a component.\n */\n components: PropTypes.shape({\n LeftArrowButton: PropTypes.elementType,\n LeftArrowIcon: PropTypes.elementType,\n RightArrowButton: PropTypes.elementType,\n RightArrowIcon: PropTypes.elementType\n }),\n\n /**\n * The props used for each slot inside.\n */\n componentsProps: PropTypes.object,\n\n /**\n * Selected date @DateIOType.\n */\n date: PropTypes.any,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get clock number aria-text for hours.\n * @default (hours: string) => `${hours} hours`\n */\n getHoursClockNumberText: PropTypes.func,\n\n /**\n * Get clock number aria-text for minutes.\n * @default (minutes: string) => `${minutes} minutes`\n */\n getMinutesClockNumberText: PropTypes.func,\n\n /**\n * Get clock number aria-text for seconds.\n * @default (seconds: string) => `${seconds} seconds`\n */\n getSecondsClockNumberText: PropTypes.func,\n\n /**\n * Left arrow icon aria-label text.\n * @default 'open previous view'\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * @ignore\n */\n nextViewAvailable: PropTypes.bool.isRequired,\n\n /**\n * On change callback @DateIOType.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * @ignore\n */\n openNextView: PropTypes.func.isRequired,\n\n /**\n * @ignore\n */\n openPreviousView: PropTypes.func.isRequired,\n\n /**\n * @ignore\n */\n previousViewAvailable: PropTypes.bool.isRequired,\n\n /**\n * Right arrow icon aria-label text.\n * @default 'open next view'\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * @ignore\n */\n showViewSwitcher: PropTypes.bool,\n\n /**\n * @ignore\n */\n view: PropTypes.oneOf(['hours', 'minutes', 'seconds']).isRequired\n} : void 0;\n/**\n *\n * Demos:\n *\n * - [Time Picker](https://mui.com/components/time-picker/)\n *\n * API:\n *\n * - [ClockPicker API](https://mui.com/api/clock-picker/)\n */\n\nexport default ClockPicker;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"disabled\", \"onSelect\", \"selected\", \"value\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/core';\nimport { onSpaceOrEnter } from '../internal/pickers/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst classes = generateUtilityClasses('PrivatePickersMonth', ['root', 'selected']);\nconst PickersMonthRoot = styled(Typography, {\n skipSx: true\n})(({\n theme\n}) => ({\n flex: '1 0 33.33%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n height: 64,\n outline: 0,\n transition: theme.transitions.create('font-size', {\n duration: '100ms'\n }),\n '&:focus': {\n color: theme.palette.primary.main,\n fontWeight: theme.typography.fontWeightMedium\n },\n '&:disabled': {\n pointerEvents: 'none',\n color: theme.palette.text.secondary\n },\n [`&.${classes.selected}`]: {\n color: theme.palette.primary.main,\n fontWeight: theme.typography.fontWeightMedium\n }\n}));\n/**\n * @ignore - do not document.\n */\n\nconst PickersMonth = props => {\n const {\n disabled,\n onSelect,\n selected,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const handleSelection = () => {\n onSelect(value);\n };\n\n return /*#__PURE__*/_jsx(PickersMonthRoot, _extends({\n component: \"button\",\n className: clsx(classes.root, selected && classes.selected),\n tabIndex: disabled ? -1 : 0,\n onClick: handleSelection,\n onKeyDown: onSpaceOrEnter(handleSelection),\n color: selected ? 'primary' : undefined,\n variant: selected ? 'h5' : 'subtitle1',\n disabled: disabled\n }, other));\n};\n\nexport default PickersMonth;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"date\", \"disableFuture\", \"disablePast\", \"maxDate\", \"minDate\", \"onChange\", \"onMonthChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, generateUtilityClass, generateUtilityClasses } from '@mui/core';\nimport PickersMonth from './PickersMonth';\nimport { useUtils, useNow } from '../internal/pickers/hooks/useUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getMonthPickerUtilityClass(slot) {\n return generateUtilityClass('MuiMonthPicker', slot);\n}\nexport const monthPickerClasses = generateUtilityClasses('MuiMonthPicker', ['root']);\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getMonthPickerUtilityClass, classes);\n};\n\nconst MonthPickerRoot = styled('div', {\n name: 'MuiMonthPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n width: 310,\n display: 'flex',\n flexWrap: 'wrap',\n alignContent: 'stretch'\n});\nconst MonthPicker = /*#__PURE__*/React.forwardRef(function MonthPicker(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiMonthPicker'\n });\n\n const {\n className,\n date,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n onChange,\n onMonthChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const utils = useUtils();\n const now = useNow();\n const currentMonth = utils.getMonth(date || now);\n\n const shouldDisableMonth = month => {\n const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);\n const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);\n const isBeforeFirstEnabled = utils.isBefore(month, firstEnabledMonth);\n const isAfterLastEnabled = utils.isAfter(month, lastEnabledMonth);\n return isBeforeFirstEnabled || isAfterLastEnabled;\n };\n\n const onMonthSelect = month => {\n const newDate = utils.setMonth(date || now, month);\n onChange(newDate, 'finish');\n\n if (onMonthChange) {\n onMonthChange(newDate);\n }\n };\n\n return /*#__PURE__*/_jsx(MonthPickerRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: utils.getMonthArray(date || now).map(month => {\n const monthNumber = utils.getMonth(month);\n const monthText = utils.format(month, 'monthShort');\n return /*#__PURE__*/_jsx(PickersMonth, {\n value: monthNumber,\n selected: monthNumber === currentMonth,\n onSelect: onMonthSelect,\n disabled: shouldDisableMonth(month),\n children: monthText\n }, monthText);\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MonthPicker.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * className applied to the root element.\n */\n className: PropTypes.string,\n\n /**\n * Date value for the MonthPicker\n */\n date: PropTypes.any,\n\n /**\n * If `true` future days are disabled.\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n */\n disablePast: PropTypes.bool,\n\n /**\n * Maximal selectable date.\n */\n maxDate: PropTypes.any.isRequired,\n\n /**\n * Minimal selectable date.\n */\n minDate: PropTypes.any.isRequired,\n\n /**\n * Callback fired on date change.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * @ignore\n */\n onMonthChange: PropTypes.func,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.object\n} : void 0;\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/components/date-picker/)\n *\n * API:\n *\n * - [MonthPicker API](https://mui.com/api/month-picker/)\n */\n\nexport default MonthPicker;","export const findClosestEnabledDate = ({\n date,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n shouldDisableDate,\n utils\n}) => {\n const today = utils.startOfDay(utils.date());\n\n if (disablePast && utils.isBefore(minDate, today)) {\n minDate = today;\n }\n\n if (disableFuture && utils.isAfter(maxDate, today)) {\n maxDate = today;\n }\n\n let forward = date;\n let backward = date;\n\n if (utils.isBefore(date, minDate)) {\n forward = utils.date(minDate);\n backward = null;\n }\n\n if (utils.isAfter(date, maxDate)) {\n if (backward) {\n backward = utils.date(maxDate);\n }\n\n forward = null;\n }\n\n while (forward || backward) {\n if (forward && utils.isAfter(forward, maxDate)) {\n forward = null;\n }\n\n if (backward && utils.isBefore(backward, minDate)) {\n backward = null;\n }\n\n if (forward) {\n if (!shouldDisableDate(forward)) {\n return forward;\n }\n\n forward = utils.addDays(forward, 1);\n }\n\n if (backward) {\n if (!shouldDisableDate(backward)) {\n return backward;\n }\n\n backward = utils.addDays(backward, -1);\n }\n }\n\n return today;\n};\nexport function parsePickerInputValue(utils, value) {\n const parsedValue = utils.date(value);\n return utils.isValid(parsedValue) ? parsedValue : null;\n}\nexport function parseRangeInputValue(utils, value = [null, null]) {\n return value.map(date => !utils.isValid(date) || date === null ? null : utils.startOfDay(utils.date(date)));\n}\nexport const isRangeValid = (utils, range) => {\n return Boolean(range && range[0] && range[1] && !utils.isBefore(range[1], range[0]));\n};\nexport const isWithinRange = (utils, day, range) => {\n return isRangeValid(utils, range) && utils.isWithinRange(day, range);\n};\nexport const isStartOfRange = (utils, day, range) => {\n return isRangeValid(utils, range) && utils.isSameDay(day, range[0]);\n};\nexport const isEndOfRange = (utils, day, range) => {\n return isRangeValid(utils, range) && utils.isSameDay(day, range[1]);\n};\nexport const validateDate = (utils, value, {\n disablePast,\n disableFuture,\n minDate,\n maxDate,\n shouldDisableDate\n}) => {\n const now = utils.date();\n const date = utils.date(value);\n\n if (date === null) {\n return null;\n }\n\n switch (true) {\n case !utils.isValid(value):\n return 'invalidDate';\n\n case Boolean(shouldDisableDate && shouldDisableDate(date)):\n return 'shouldDisableDate';\n\n case Boolean(disableFuture && utils.isAfterDay(date, now)):\n return 'disableFuture';\n\n case Boolean(disablePast && utils.isBeforeDay(date, now)):\n return 'disablePast';\n\n case Boolean(minDate && utils.isBeforeDay(date, minDate)):\n return 'minDate';\n\n case Boolean(maxDate && utils.isAfterDay(date, maxDate)):\n return 'maxDate';\n\n default:\n return null;\n }\n};\nexport const validateDateRange = (utils, value, dateValidationProps) => {\n const [start, end] = value; // for partial input\n\n if (start === null || end === null) {\n return [null, null];\n }\n\n const dateValidations = [validateDate(utils, start, dateValidationProps), validateDate(utils, end, dateValidationProps)];\n\n if (dateValidations[0] || dateValidations[1]) {\n return dateValidations;\n }\n\n if (!isRangeValid(utils, [utils.date(start), utils.date(end)])) {\n return ['invalidRange', 'invalidRange'];\n }\n\n return [null, null];\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { validateDate } from '../internal/pickers/date-utils';\nimport { useUtils, useNow } from '../internal/pickers/hooks/useUtils';\nexport const createCalendarStateReducer = (reduceAnimations, disableSwitchToMonthOnDayFocus, utils) => (state, action) => {\n switch (action.type) {\n case 'changeMonth':\n return _extends({}, state, {\n slideDirection: action.direction,\n currentMonth: action.newMonth,\n isMonthSwitchingAnimating: !reduceAnimations\n });\n\n case 'finishMonthSwitchingAnimation':\n return _extends({}, state, {\n isMonthSwitchingAnimating: false\n });\n\n case 'changeFocusedDay':\n {\n if (state.focusedDay !== null && utils.isSameDay(action.focusedDay, state.focusedDay)) {\n return state;\n }\n\n const needMonthSwitch = Boolean(action.focusedDay) && !disableSwitchToMonthOnDayFocus && !utils.isSameMonth(state.currentMonth, action.focusedDay);\n return _extends({}, state, {\n focusedDay: action.focusedDay,\n isMonthSwitchingAnimating: needMonthSwitch && !reduceAnimations,\n currentMonth: needMonthSwitch ? utils.startOfMonth(action.focusedDay) : state.currentMonth,\n slideDirection: utils.isAfterDay(action.focusedDay, state.currentMonth) ? 'left' : 'right'\n });\n }\n\n default:\n throw new Error('missing support');\n }\n};\nexport function useCalendarState({\n date,\n defaultCalendarMonth,\n disableFuture,\n disablePast,\n disableSwitchToMonthOnDayFocus = false,\n maxDate,\n minDate,\n onMonthChange,\n reduceAnimations,\n shouldDisableDate\n}) {\n var _ref;\n\n const now = useNow();\n const utils = useUtils();\n const reducerFn = React.useRef(createCalendarStateReducer(Boolean(reduceAnimations), disableSwitchToMonthOnDayFocus, utils)).current;\n const [calendarState, dispatch] = React.useReducer(reducerFn, {\n isMonthSwitchingAnimating: false,\n focusedDay: date || now,\n currentMonth: utils.startOfMonth((_ref = date != null ? date : defaultCalendarMonth) != null ? _ref : now),\n slideDirection: 'left'\n });\n const handleChangeMonth = React.useCallback(payload => {\n dispatch(_extends({\n type: 'changeMonth'\n }, payload));\n\n if (onMonthChange) {\n onMonthChange(payload.newMonth);\n }\n }, [onMonthChange]);\n const changeMonth = React.useCallback(newDate => {\n const newDateRequested = newDate != null ? newDate : now;\n\n if (utils.isSameMonth(newDateRequested, calendarState.currentMonth)) {\n return;\n }\n\n handleChangeMonth({\n newMonth: utils.startOfMonth(newDateRequested),\n direction: utils.isAfterDay(newDateRequested, calendarState.currentMonth) ? 'left' : 'right'\n });\n }, [calendarState.currentMonth, handleChangeMonth, now, utils]);\n const isDateDisabled = React.useCallback(day => validateDate(utils, day, {\n disablePast,\n disableFuture,\n minDate,\n maxDate,\n shouldDisableDate\n }) !== null, [disableFuture, disablePast, maxDate, minDate, shouldDisableDate, utils]);\n const onMonthSwitchingAnimationEnd = React.useCallback(() => {\n dispatch({\n type: 'finishMonthSwitchingAnimation'\n });\n }, []);\n const changeFocusedDay = React.useCallback(newFocusedDate => {\n if (!isDateDisabled(newFocusedDate)) {\n dispatch({\n type: 'changeFocusedDay',\n focusedDay: newFocusedDate\n });\n }\n }, [isDateDisabled]);\n return {\n calendarState,\n changeMonth,\n changeFocusedDay,\n isDateDisabled,\n onMonthSwitchingAnimationEnd,\n handleChangeMonth\n };\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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import React from 'react';\nexport default React.createContext(null);","import { Children, cloneElement, isValidElement } from 'react';\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 */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) 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\nexport function 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\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return 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}\nexport function 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 (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = 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] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = 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}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\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/**\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\nvar TransitionGroup = /*#__PURE__*/function (_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(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\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 ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = 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 contextValue = this.state.contextValue;\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 /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\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.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.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.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.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.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.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","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 * as React from 'react';\nimport clsx from 'clsx';\nimport Fade from '@mui/material/Fade';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/core';\nimport { TransitionGroup } from 'react-transition-group';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst classes = generateUtilityClasses('PrivatePickersFadeTransitionGroup', ['root']);\nconst animationDuration = 500;\nconst PickersFadeTransitionGroupRoot = styled(TransitionGroup, {\n skipSx: true\n})(() => ({\n display: 'block',\n position: 'relative'\n}));\n/**\n * @ignore - do not document.\n */\n\nconst PickersFadeTransitionGroup = ({\n children,\n className,\n reduceAnimations,\n transKey\n}) => {\n if (reduceAnimations) {\n return children;\n }\n\n return /*#__PURE__*/_jsx(PickersFadeTransitionGroupRoot, {\n className: clsx(classes.root, className),\n children: /*#__PURE__*/_jsx(Fade, {\n appear: false,\n mountOnEnter: true,\n unmountOnExit: true,\n timeout: {\n appear: animationDuration,\n enter: animationDuration / 2,\n exit: 0\n },\n children: children\n }, transKey)\n });\n};\n\nexport default PickersFadeTransitionGroup;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"allowSameDateSelection\", \"autoFocus\", \"className\", \"day\", \"disabled\", \"disableHighlightToday\", \"disableMargin\", \"hidden\", \"isAnimating\", \"onClick\", \"onDayFocus\", \"onDaySelect\", \"onFocus\", \"onKeyDown\", \"outsideCurrentMonth\", \"selected\", \"showDaysOutsideCurrentMonth\", \"children\", \"today\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, generateUtilityClass, generateUtilityClasses } from '@mui/core';\nimport { useTheme, alpha, styled, useThemeProps } from '@mui/material/styles';\nimport { useForkRef } from '@mui/material/utils';\nimport { useUtils } from '../internal/pickers/hooks/useUtils';\nimport { DAY_SIZE, DAY_MARGIN } from '../internal/pickers/constants/dimensions';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getPickersDayUtilityClass(slot) {\n return generateUtilityClass('MuiPickersDay', slot);\n}\nexport const pickersDayClasses = generateUtilityClasses('MuiPickersDay', ['root', 'dayWithMargin', 'dayOutsideMonth', 'hiddenDaySpacingFiller', 'today', 'selected', 'disabled']);\n\nconst useUtilityClasses = ownerState => {\n const {\n selected,\n disableMargin,\n disableHighlightToday,\n today,\n outsideCurrentMonth,\n showDaysOutsideCurrentMonth,\n classes\n } = ownerState;\n const slots = {\n root: ['root', selected && 'selected', !disableMargin && 'dayWithMargin', !disableHighlightToday && today && 'today', outsideCurrentMonth && showDaysOutsideCurrentMonth && 'dayOutsideMonth'],\n hiddenDaySpacingFiller: ['hiddenDaySpacingFiller']\n };\n return composeClasses(slots, getPickersDayUtilityClass, classes);\n};\n\nconst styleArg = ({\n theme,\n ownerState\n}) => _extends({}, theme.typography.caption, {\n width: DAY_SIZE,\n height: DAY_SIZE,\n borderRadius: '50%',\n padding: 0,\n // background required here to prevent collides with the other days when animating with transition group\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n '&:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n '&:focus': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n [`&.${pickersDayClasses.selected}`]: {\n willChange: 'background-color',\n backgroundColor: theme.palette.primary.dark\n }\n },\n [`&.${pickersDayClasses.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n fontWeight: theme.typography.fontWeightMedium,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.short\n }),\n '&:hover': {\n willChange: 'background-color',\n backgroundColor: theme.palette.primary.dark\n }\n },\n [`&.${pickersDayClasses.disabled}`]: {\n color: theme.palette.text.disabled\n }\n}, !ownerState.disableMargin && {\n margin: `0 ${DAY_MARGIN}px`\n}, ownerState.outsideCurrentMonth && ownerState.showDaysOutsideCurrentMonth && {\n color: theme.palette.text.secondary\n}, !ownerState.disableHighlightToday && ownerState.today && {\n [`&:not(.${pickersDayClasses.selected})`]: {\n border: `1px solid ${theme.palette.text.secondary}`\n }\n});\n\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disableMargin && styles.dayWithMargin, !ownerState.disableHighlightToday && ownerState.today && styles.today, !ownerState.outsideCurrentMonth && ownerState.showDaysOutsideCurrentMonth && styles.dayOutsideMonth, ownerState.outsideCurrentMonth && !ownerState.showDaysOutsideCurrentMonth && styles.hiddenDaySpacingFiller];\n};\n\nconst PickersDayRoot = styled(ButtonBase, {\n name: 'MuiPickersDay',\n slot: 'Root',\n overridesResolver\n})(styleArg);\nconst PickersDayFiller = styled('div', {\n name: 'MuiPickersDay',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({}, styleArg({\n theme,\n ownerState\n}), {\n visibility: 'hidden'\n}));\n\nconst noop = () => {};\n\nconst PickersDay = /*#__PURE__*/React.forwardRef(function PickersDay(inProps, forwardedRef) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersDay'\n });\n\n const {\n allowSameDateSelection = false,\n autoFocus = false,\n className,\n day,\n disabled = false,\n disableHighlightToday = false,\n disableMargin = false,\n isAnimating,\n onClick,\n onDayFocus = noop,\n onDaySelect,\n onFocus,\n onKeyDown,\n outsideCurrentMonth,\n selected = false,\n showDaysOutsideCurrentMonth = false,\n children,\n today: isToday = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n allowSameDateSelection,\n autoFocus,\n disabled,\n disableHighlightToday,\n disableMargin,\n selected,\n showDaysOutsideCurrentMonth,\n today: isToday\n });\n\n const classes = useUtilityClasses(ownerState);\n const utils = useUtils();\n const ref = React.useRef(null);\n const handleRef = useForkRef(ref, forwardedRef); // Since this is rendered when a Popper is opened we can't use passive effects.\n // Focusing in passive effects in Popper causes scroll jump.\n\n useEnhancedEffect(() => {\n if (autoFocus && !disabled && !isAnimating && !outsideCurrentMonth) {\n // ref.current being null would be a bug in MUI\n ref.current.focus();\n }\n }, [autoFocus, disabled, isAnimating, outsideCurrentMonth]);\n\n const handleFocus = event => {\n if (onDayFocus) {\n onDayFocus(day);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const handleClick = event => {\n if (!allowSameDateSelection && selected) {\n return;\n }\n\n if (!disabled) {\n onDaySelect(day, 'finish');\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n const theme = useTheme();\n\n function handleKeyDown(event) {\n if (onKeyDown !== undefined) {\n onKeyDown(event);\n }\n\n switch (event.key) {\n case 'ArrowUp':\n onDayFocus(utils.addDays(day, -7));\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n onDayFocus(utils.addDays(day, 7));\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n onDayFocus(utils.addDays(day, theme.direction === 'ltr' ? -1 : 1));\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n onDayFocus(utils.addDays(day, theme.direction === 'ltr' ? 1 : -1));\n event.preventDefault();\n break;\n\n case 'Home':\n onDayFocus(utils.startOfWeek(day));\n event.preventDefault();\n break;\n\n case 'End':\n onDayFocus(utils.endOfWeek(day));\n event.preventDefault();\n break;\n\n case 'PageUp':\n onDayFocus(utils.getNextMonth(day));\n event.preventDefault();\n break;\n\n case 'PageDown':\n onDayFocus(utils.getPreviousMonth(day));\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n\n if (outsideCurrentMonth && !showDaysOutsideCurrentMonth) {\n return /*#__PURE__*/_jsx(PickersDayFiller, {\n className: clsx(classes.root, classes.hiddenDaySpacingFiller, className),\n ownerState: ownerState\n });\n }\n\n return /*#__PURE__*/_jsx(PickersDayRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: handleRef,\n centerRipple: true,\n disabled: disabled,\n \"aria-label\": !children ? utils.format(day, 'fullDate') : undefined,\n tabIndex: selected ? 0 : -1,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onClick: handleClick\n }, other, {\n children: !children ? utils.format(day, 'dayOfMonth') : children\n }));\n});\nexport const areDayPropsEqual = (prevProps, nextProps) => {\n return prevProps.autoFocus === nextProps.autoFocus && prevProps.isAnimating === nextProps.isAnimating && prevProps.today === nextProps.today && prevProps.disabled === nextProps.disabled && prevProps.selected === nextProps.selected && prevProps.disableMargin === nextProps.disableMargin && prevProps.showDaysOutsideCurrentMonth === nextProps.showDaysOutsideCurrentMonth && prevProps.disableHighlightToday === nextProps.disableHighlightToday && prevProps.className === nextProps.className && prevProps.outsideCurrentMonth === nextProps.outsideCurrentMonth && prevProps.onDayFocus === nextProps.onDayFocus && prevProps.onDaySelect === nextProps.onDaySelect;\n};\nprocess.env.NODE_ENV !== \"production\" ? PickersDay.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * If `true`, `onChange` is fired on click even if the same date is selected.\n * @default false\n */\n allowSameDateSelection: PropTypes.bool,\n\n /**\n * @ignore\n */\n autoFocus: PropTypes.bool,\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The date to show.\n */\n day: PropTypes.any.isRequired,\n\n /**\n * If `true`, renders as disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, todays date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true`, days are rendering without margin. Useful for displaying linked range of days.\n * @default false\n */\n disableMargin: PropTypes.bool,\n\n /**\n * @ignore\n */\n hidden: PropTypes.bool,\n\n /**\n * @ignore\n */\n isAnimating: PropTypes.bool,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n\n /**\n * @ignore\n */\n onDayFocus: PropTypes.func,\n\n /**\n * @ignore\n */\n onDaySelect: PropTypes.func.isRequired,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n\n /**\n * If `true`, day is outside of month and will be hidden.\n */\n outsideCurrentMonth: PropTypes.bool.isRequired,\n\n /**\n * If `true`, renders as selected.\n * @default false\n */\n selected: PropTypes.bool,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.object,\n\n /**\n * If `true`, renders as today date.\n * @default false\n */\n today: PropTypes.bool\n} : void 0;\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/components/date-picker/)\n *\n * API:\n *\n * - [PickersDay API](https://mui.com/api/pickers-day/)\n */\n\nexport default /*#__PURE__*/React.memo(PickersDay, areDayPropsEqual);","export const DAY_SIZE = 36;\nexport const DAY_MARGIN = 2;\nexport const DIALOG_WIDTH = 320;\nexport const VIEW_HEIGHT = 358;","export default {\n disabled: false\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var 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: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\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\nvar Transition = /*#__PURE__*/function (_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; // 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 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 var _proto = Transition.prototype;\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 if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\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(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\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 || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\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(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\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 var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\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 _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\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'`), 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 * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\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 = 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. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\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 = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're 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 CSS 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**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_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 _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\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 baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _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.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * 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\n * an 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: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar _span;\n\nimport * as React from 'react';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport PickersDay from '../PickersDay/PickersDay';\nimport { useUtils, useNow } from '../internal/pickers/hooks/useUtils';\nimport { DAY_SIZE, DAY_MARGIN } from '../internal/pickers/constants/dimensions';\nimport SlideTransition from './PickersSlideTransition';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst weeksContainerHeight = (DAY_SIZE + DAY_MARGIN * 4) * 6;\nconst PickersCalendarDayHeader = styled('div', {\n skipSx: true\n})({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n});\nconst PickersCalendarWeekDayLabel = styled(Typography, {\n skipSx: true\n})(({\n theme\n}) => ({\n width: 36,\n height: 40,\n margin: '0 2px',\n textAlign: 'center',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: theme.palette.text.secondary\n}));\nconst PickersCalendarLoadingContainer = styled('div', {\n skipSx: true\n})({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: weeksContainerHeight\n});\nconst PickersCalendarSlideTransition = styled(SlideTransition, {\n skipSx: true\n})({\n minHeight: weeksContainerHeight\n});\nconst PickersCalendarWeekContainer = styled('div', {\n skipSx: true\n})({\n overflow: 'hidden'\n});\nconst PickersCalendarWeek = styled('div', {\n skipSx: true\n})({\n margin: `${DAY_MARGIN}px 0`,\n display: 'flex',\n justifyContent: 'center'\n});\n/**\n * @ignore - do not document.\n */\n\nfunction PickersCalendar(props) {\n const {\n allowSameDateSelection,\n autoFocus,\n onFocusedDayChange: changeFocusedDay,\n className,\n currentMonth,\n date,\n disableHighlightToday,\n focusedDay,\n isDateDisabled,\n isMonthSwitchingAnimating,\n loading,\n onChange,\n onMonthSwitchingAnimationEnd,\n reduceAnimations,\n renderDay,\n renderLoading = () => _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n children: \"...\"\n })),\n showDaysOutsideCurrentMonth,\n slideDirection,\n TransitionProps\n } = props;\n const now = useNow();\n const utils = useUtils();\n const handleDaySelect = React.useCallback((day, isFinish = 'finish') => {\n // TODO possibly buggy line figure out and add tests\n const finalDate = Array.isArray(date) ? day : utils.mergeDateAndTime(day, date || now);\n onChange(finalDate, isFinish);\n }, [date, now, onChange, utils]);\n const currentMonthNumber = utils.getMonth(currentMonth);\n const selectedDates = (Array.isArray(date) ? date : [date]).filter(Boolean).map(selectedDateItem => selectedDateItem && utils.startOfDay(selectedDateItem)); // need a new ref whenever the `key` of the transition changes: https://reactcommunity.org/react-transition-group/transition#Transition-prop-nodeRef.\n\n const transitionKey = currentMonthNumber; // eslint-disable-next-line react-hooks/exhaustive-deps\n\n const slideNodeRef = React.useMemo(() => /*#__PURE__*/React.createRef(), [transitionKey]);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(PickersCalendarDayHeader, {\n children: utils.getWeekdays().map((day, i) => /*#__PURE__*/_jsx(PickersCalendarWeekDayLabel, {\n \"aria-hidden\": true,\n variant: \"caption\",\n children: day.charAt(0).toUpperCase()\n }, day + i.toString()))\n }), loading ? /*#__PURE__*/_jsx(PickersCalendarLoadingContainer, {\n children: renderLoading()\n }) : /*#__PURE__*/_jsx(PickersCalendarSlideTransition, _extends({\n transKey: transitionKey,\n onExited: onMonthSwitchingAnimationEnd,\n reduceAnimations: reduceAnimations,\n slideDirection: slideDirection,\n className: className\n }, TransitionProps, {\n nodeRef: slideNodeRef,\n children: /*#__PURE__*/_jsx(PickersCalendarWeekContainer, {\n ref: slideNodeRef,\n role: \"grid\",\n children: utils.getWeekArray(currentMonth).map(week => /*#__PURE__*/_jsx(PickersCalendarWeek, {\n role: \"row\",\n children: week.map(day => {\n const pickersDayProps = {\n key: day == null ? void 0 : day.toString(),\n day,\n isAnimating: isMonthSwitchingAnimating,\n disabled: isDateDisabled(day),\n allowSameDateSelection,\n autoFocus: autoFocus && focusedDay !== null && utils.isSameDay(day, focusedDay),\n today: utils.isSameDay(day, now),\n outsideCurrentMonth: utils.getMonth(day) !== currentMonthNumber,\n selected: selectedDates.some(selectedDate => selectedDate && utils.isSameDay(selectedDate, day)),\n disableHighlightToday,\n showDaysOutsideCurrentMonth,\n onDayFocus: changeFocusedDay,\n onDaySelect: handleDaySelect\n };\n return renderDay ? renderDay(day, selectedDates, pickersDayProps) : /*#__PURE__*/_jsx(\"div\", {\n role: \"cell\",\n children: /*#__PURE__*/_jsx(PickersDay, _extends({}, pickersDayProps))\n }, pickersDayProps.key);\n })\n }, `week-${week[0]}`))\n })\n }))]\n });\n}\n\nexport default PickersCalendar;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"reduceAnimations\", \"slideDirection\", \"transKey\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/core';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst classes = generateUtilityClasses('PrivatePickersSlideTransition', ['root', 'slideEnter-left', 'slideEnter-right', 'slideEnterActive', 'slideEnterActive', 'slideExit', 'slideExitActiveLeft-left', 'slideExitActiveLeft-right']);\nexport const slideAnimationDuration = 350;\nconst PickersSlideTransitionRoot = styled(TransitionGroup, {\n skipSx: true\n})(({\n theme\n}) => {\n const slideTransition = theme.transitions.create('transform', {\n duration: slideAnimationDuration,\n easing: 'cubic-bezier(0.35, 0.8, 0.4, 1)'\n });\n return {\n display: 'block',\n position: 'relative',\n overflowX: 'hidden',\n '& > *': {\n position: 'absolute',\n top: 0,\n right: 0,\n left: 0\n },\n [`& .${classes['slideEnter-left']}`]: {\n willChange: 'transform',\n transform: 'translate(100%)',\n zIndex: 1\n },\n [`& .${classes['slideEnter-right']}`]: {\n willChange: 'transform',\n transform: 'translate(-100%)',\n zIndex: 1\n },\n [`& .${classes.slideEnterActive}`]: {\n transform: 'translate(0%)',\n transition: slideTransition\n },\n [`& .${classes.slideExit}`]: {\n transform: 'translate(0%)'\n },\n [`& .${classes['slideExitActiveLeft-left']}`]: {\n willChange: 'transform',\n transform: 'translate(-100%)',\n transition: slideTransition,\n zIndex: 0\n },\n [`& .${classes['slideExitActiveLeft-right']}`]: {\n willChange: 'transform',\n transform: 'translate(100%)',\n transition: slideTransition,\n zIndex: 0\n }\n };\n});\n/**\n * @ignore - do not document.\n */\n\nconst PickersSlideTransition = _ref => {\n let {\n children,\n className,\n reduceAnimations,\n slideDirection,\n transKey\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n if (reduceAnimations) {\n return /*#__PURE__*/_jsx(\"div\", {\n className: clsx(classes.root, className),\n children: children\n });\n }\n\n const transitionClasses = {\n exit: classes.slideExit,\n enterActive: classes.slideEnterActive,\n enter: classes[`slideEnter-${slideDirection}`],\n exitActive: classes[`slideExitActiveLeft-${slideDirection}`]\n };\n return /*#__PURE__*/_jsx(PickersSlideTransitionRoot, {\n className: clsx(classes.root, className),\n childFactory: element => /*#__PURE__*/React.cloneElement(element, {\n classNames: transitionClasses\n }),\n children: /*#__PURE__*/_jsx(CSSTransition, _extends({\n mountOnEnter: true,\n unmountOnExit: true,\n timeout: slideAnimationDuration,\n classNames: transitionClasses\n }, other, {\n children: children\n }), transKey)\n });\n};\n\nexport default PickersSlideTransition;","import * as React from 'react';\nimport { createSvgIcon } from '@mui/material/utils';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Fade from '@mui/material/Fade';\nimport { styled } from '@mui/material/styles';\nimport IconButton from '@mui/material/IconButton';\nimport { useUtils } from '../internal/pickers/hooks/useUtils';\nimport FadeTransitionGroup from './PickersFadeTransitionGroup';\n// tslint:disable-next-line no-relative-import-in-test\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport PickersArrowSwitcher from '../internal/pickers/PickersArrowSwitcher';\nimport { usePreviousMonthDisabled, useNextMonthDisabled } from '../internal/pickers/hooks/date-helpers-hooks';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersCalendarHeaderRoot = styled('div', {\n skipSx: true\n})({\n display: 'flex',\n alignItems: 'center',\n marginTop: 16,\n marginBottom: 8,\n paddingLeft: 24,\n paddingRight: 12,\n // prevent jumping in safari\n maxHeight: 30,\n minHeight: 30\n});\nconst PickersCalendarHeaderLabel = styled('div', {\n skipSx: true\n})(({\n theme\n}) => _extends({\n display: 'flex',\n maxHeight: 30,\n overflow: 'hidden',\n alignItems: 'center',\n cursor: 'pointer',\n marginRight: 'auto'\n}, theme.typography.body1, {\n fontWeight: theme.typography.fontWeightMedium\n}));\nconst PickersCalendarHeaderLabelItem = styled('div', {\n skipSx: true\n})({\n marginRight: 6\n});\nconst PickersCalendarHeaderSwitchViewButton = styled(IconButton, {\n skipSx: true\n})({\n marginRight: 'auto'\n});\nconst PickersCalendarHeaderSwitchView = styled(ArrowDropDownIcon, {\n skipSx: true\n})(({\n theme,\n ownerState\n}) => _extends({\n willChange: 'transform',\n transition: theme.transitions.create('transform'),\n transform: 'rotate(0deg)'\n}, ownerState.openView === 'year' && {\n transform: 'rotate(180deg)'\n}));\n\nfunction getSwitchingViewAriaText(view) {\n return view === 'year' ? 'year view is open, switch to calendar view' : 'calendar view is open, switch to year view';\n}\n/**\n * @ignore - do not document.\n */\n\n\nfunction PickersCalendarHeader(props) {\n const {\n components = {},\n componentsProps = {},\n currentMonth: month,\n disableFuture,\n disablePast,\n getViewSwitchingButtonText = getSwitchingViewAriaText,\n leftArrowButtonText = 'Previous month',\n maxDate,\n minDate,\n onMonthChange,\n onViewChange,\n openView: currentView,\n reduceAnimations,\n rightArrowButtonText = 'Next month',\n views\n } = props;\n const utils = useUtils();\n const switchViewButtonProps = componentsProps.switchViewButton || {};\n\n const selectNextMonth = () => onMonthChange(utils.getNextMonth(month), 'left');\n\n const selectPreviousMonth = () => onMonthChange(utils.getPreviousMonth(month), 'right');\n\n const isNextMonthDisabled = useNextMonthDisabled(month, {\n disableFuture,\n maxDate\n });\n const isPreviousMonthDisabled = usePreviousMonthDisabled(month, {\n disablePast,\n minDate\n });\n\n const handleToggleView = () => {\n if (views.length === 1 || !onViewChange) {\n return;\n }\n\n if (views.length === 2) {\n onViewChange(views.find(view => view !== currentView) || views[0]);\n } else {\n // switching only between first 2\n const nextIndexToOpen = views.indexOf(currentView) !== 0 ? 0 : 1;\n onViewChange(views[nextIndexToOpen]);\n }\n }; // No need to display more information\n\n\n if (views.length === 1 && views[0] === 'year') {\n return null;\n }\n\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersCalendarHeaderRoot, {\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsxs(PickersCalendarHeaderLabel, {\n role: \"presentation\",\n onClick: handleToggleView,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(FadeTransitionGroup, {\n reduceAnimations: reduceAnimations,\n transKey: utils.format(month, 'month'),\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderLabelItem, {\n \"aria-live\": \"polite\",\n ownerState: ownerState,\n children: utils.format(month, 'month')\n })\n }), /*#__PURE__*/_jsx(FadeTransitionGroup, {\n reduceAnimations: reduceAnimations,\n transKey: utils.format(month, 'year'),\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderLabelItem, {\n \"aria-live\": \"polite\",\n ownerState: ownerState,\n children: utils.format(month, 'year')\n })\n }), views.length > 1 && /*#__PURE__*/_jsx(PickersCalendarHeaderSwitchViewButton, _extends({\n size: \"small\",\n as: components.SwitchViewButton,\n \"aria-label\": getViewSwitchingButtonText(currentView)\n }, switchViewButtonProps, {\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderSwitchView, {\n as: components.SwitchViewIcon,\n ownerState: ownerState\n })\n }))]\n }), /*#__PURE__*/_jsx(Fade, {\n in: currentView === 'day',\n children: /*#__PURE__*/_jsx(PickersArrowSwitcher, {\n leftArrowButtonText: leftArrowButtonText,\n rightArrowButtonText: rightArrowButtonText,\n components: components,\n componentsProps: componentsProps,\n onLeftClick: selectPreviousMonth,\n onRightClick: selectNextMonth,\n isLeftDisabled: isPreviousMonthDisabled,\n isRightDisabled: isNextMonthDisabled\n })\n })]\n });\n}\n\nexport default PickersCalendarHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { useForkRef, capitalize } from '@mui/material/utils';\nimport { alpha, styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, generateUtilityClass, generateUtilityClasses } from '@mui/core';\nimport { WrapperVariantContext } from '../internal/pickers/wrappers/WrapperVariantContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getPickersYearUtilityClass(slot) {\n return generateUtilityClass('PrivatePickersYear', slot);\n}\nexport const pickersYearClasses = generateUtilityClasses('PrivatePickersYear', ['root', 'modeMobile', 'modeDesktop', 'yearButton', 'disabled', 'selected']);\n\nconst useUtilityClasses = ownerState => {\n const {\n wrapperVariant,\n disabled,\n selected,\n classes\n } = ownerState;\n const slots = {\n root: ['root', wrapperVariant && `mode${capitalize(wrapperVariant)}`],\n yearButton: ['yearButton', disabled && 'disabled', selected && 'selected']\n };\n return composeClasses(slots, getPickersYearUtilityClass, classes);\n};\n\nconst PickersYearRoot = styled('div', {\n skipSx: true\n})(({\n ownerState\n}) => _extends({\n flexBasis: '33.3%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n}, (ownerState == null ? void 0 : ownerState.wrapperVariant) === 'desktop' && {\n flexBasis: '25%'\n}));\nconst PickersYearButton = styled('button', {\n skipSx: true\n})(({\n theme\n}) => _extends({\n color: 'unset',\n backgroundColor: 'transparent',\n border: 0,\n outline: 0\n}, theme.typography.subtitle1, {\n margin: '8px 0',\n height: 36,\n width: 72,\n borderRadius: 16,\n cursor: 'pointer',\n '&:focus, &:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n [`&.${pickersYearClasses.disabled}`]: {\n color: theme.palette.text.secondary\n },\n [`&.${pickersYearClasses.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:focus, &:hover': {\n backgroundColor: theme.palette.primary.dark\n }\n }\n}));\n/**\n * @ignore - internal component.\n */\n\nconst PickersYear = /*#__PURE__*/React.forwardRef(function PickersYear(props, forwardedRef) {\n const {\n autoFocus,\n className,\n children,\n disabled,\n onClick,\n onKeyDown,\n selected,\n value\n } = props;\n const ref = React.useRef(null);\n const refHandle = useForkRef(ref, forwardedRef);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n\n const ownerState = _extends({}, props, {\n wrapperVariant\n });\n\n const classes = useUtilityClasses(ownerState); // TODO: Can we just forward this to the button?\n\n React.useEffect(() => {\n if (autoFocus) {\n // `ref.current` being `null` would be a bug in MUIu\n ref.current.focus();\n }\n }, [autoFocus]);\n return /*#__PURE__*/_jsx(PickersYearRoot, {\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: /*#__PURE__*/_jsx(PickersYearButton, {\n ref: refHandle,\n disabled: disabled,\n type: \"button\",\n tabIndex: selected ? 0 : -1,\n onClick: event => onClick(event, value),\n onKeyDown: event => onKeyDown(event, value),\n className: classes.yearButton,\n ownerState: ownerState,\n children: children\n })\n });\n});\nexport default PickersYear;","import { generateUtilityClass, generateUtilityClasses } from '@mui/core';\nexport function getYearPickerUtilityClass(slot) {\n return generateUtilityClass('MuiYearPicker', slot);\n}\nconst yearPickerClasses = generateUtilityClasses('MuiYearPicker', ['root']);\nexport default yearPickerClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nvar _span;\n\nconst _excluded = [\"autoFocus\", \"onViewChange\", \"date\", \"disableFuture\", \"disablePast\", \"defaultCalendarMonth\", \"loading\", \"maxDate\", \"minDate\", \"onChange\", \"onMonthChange\", \"reduceAnimations\", \"renderLoading\", \"shouldDisableDate\", \"shouldDisableYear\", \"view\", \"views\", \"openTo\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, generateUtilityClass, generateUtilityClasses } from '@mui/core';\nimport MonthPicker from '../MonthPicker/MonthPicker';\nimport { useCalendarState } from './useCalendarState';\nimport { useDefaultDates, useUtils } from '../internal/pickers/hooks/useUtils';\nimport FadeTransitionGroup from './PickersFadeTransitionGroup';\nimport PickersCalendar from './PickersCalendar';\nimport { useViews } from '../internal/pickers/hooks/useViews';\nimport PickersCalendarHeader from './PickersCalendarHeader';\nimport YearPicker from '../YearPicker/YearPicker';\nimport { findClosestEnabledDate } from '../internal/pickers/date-utils';\nimport PickerView from '../internal/pickers/Picker/PickerView';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function getCalendarPickerUtilityClass(slot) {\n return generateUtilityClass('MuiCalendarPicker', slot);\n}\nexport const calendarPickerClasses = generateUtilityClasses('MuiCalendarPicker', ['root', 'viewTransitionContainer']);\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n viewTransitionContainer: ['viewTransitionContainer']\n };\n return composeClasses(slots, getCalendarPickerUtilityClass, classes);\n};\n\nconst CalendarPickerRoot = styled(PickerView, {\n name: 'MuiCalendarPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'column'\n});\nconst CalendarPickerViewTransitionContainer = styled(FadeTransitionGroup, {\n name: 'MuiCalendarPicker',\n slot: 'ViewTransitionContainer',\n overridesResolver: (props, styles) => styles.viewTransitionContainer\n})({\n overflowY: 'auto'\n});\nexport const defaultReduceAnimations = typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent);\nconst CalendarPicker = /*#__PURE__*/React.forwardRef(function CalendarPicker(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCalendarPicker'\n });\n\n const {\n autoFocus,\n onViewChange,\n date,\n disableFuture = false,\n disablePast = false,\n defaultCalendarMonth,\n loading = false,\n maxDate: maxDateProp,\n minDate: minDateProp,\n onChange,\n onMonthChange,\n reduceAnimations = defaultReduceAnimations,\n renderLoading = () => _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n children: \"...\"\n })),\n shouldDisableDate,\n shouldDisableYear,\n view,\n views = ['year', 'day'],\n openTo = 'day',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const minDate = minDateProp != null ? minDateProp : defaultDates.minDate;\n const maxDate = maxDateProp != null ? maxDateProp : defaultDates.maxDate;\n const {\n openView,\n setOpenView\n } = useViews({\n view,\n views,\n openTo,\n onChange,\n onViewChange\n });\n const {\n calendarState,\n changeFocusedDay,\n changeMonth,\n isDateDisabled,\n handleChangeMonth,\n onMonthSwitchingAnimationEnd\n } = useCalendarState({\n date,\n defaultCalendarMonth,\n reduceAnimations,\n onMonthChange,\n minDate,\n maxDate,\n shouldDisableDate,\n disablePast,\n disableFuture\n });\n React.useEffect(() => {\n if (date && isDateDisabled(date)) {\n const closestEnabledDate = findClosestEnabledDate({\n utils,\n date,\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n shouldDisableDate: isDateDisabled\n });\n onChange(closestEnabledDate, 'partial');\n } // This call is too expensive to run it on each prop change.\n // So just ensure that we are not rendering disabled as selected on mount.\n\n }, []); // eslint-disable-line\n\n React.useEffect(() => {\n if (date) {\n changeMonth(date);\n }\n }, [date]); // eslint-disable-line\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(CalendarPickerRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(PickersCalendarHeader, _extends({}, other, {\n views: views,\n openView: openView,\n currentMonth: calendarState.currentMonth,\n onViewChange: setOpenView,\n onMonthChange: (newMonth, direction) => handleChangeMonth({\n newMonth,\n direction\n }),\n minDate: minDate,\n maxDate: maxDate,\n disablePast: disablePast,\n disableFuture: disableFuture,\n reduceAnimations: reduceAnimations\n })), /*#__PURE__*/_jsx(CalendarPickerViewTransitionContainer, {\n reduceAnimations: reduceAnimations,\n className: classes.viewTransitionContainer,\n transKey: openView,\n ownerState: ownerState,\n children: /*#__PURE__*/_jsxs(\"div\", {\n children: [openView === 'year' && /*#__PURE__*/_jsx(YearPicker, _extends({}, other, {\n autoFocus: autoFocus,\n date: date,\n onChange: onChange,\n minDate: minDate,\n maxDate: maxDate,\n disableFuture: disableFuture,\n disablePast: disablePast,\n isDateDisabled: isDateDisabled,\n shouldDisableYear: shouldDisableYear,\n onFocusedDayChange: changeFocusedDay\n })), openView === 'month' && /*#__PURE__*/_jsx(MonthPicker, _extends({}, other, {\n date: date,\n onChange: onChange,\n minDate: minDate,\n maxDate: maxDate,\n onMonthChange: onMonthChange\n })), openView === 'day' && /*#__PURE__*/_jsx(PickersCalendar, _extends({}, other, calendarState, {\n autoFocus: autoFocus,\n onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,\n onFocusedDayChange: changeFocusedDay,\n reduceAnimations: reduceAnimations,\n date: date,\n onChange: onChange,\n isDateDisabled: isDateDisabled,\n loading: loading,\n renderLoading: renderLoading\n }))]\n })\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? CalendarPicker.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * @ignore\n */\n autoFocus: PropTypes.bool,\n\n /**\n * @ignore\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * @ignore\n */\n date: PropTypes.any,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Max selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Min selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired on date change\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback firing on month change. @DateIOType\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired on view change.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Initially open view.\n * @default 'day'\n */\n openTo: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Component displaying when passed `loading` true.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Disable specific date. @DateIOType\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * Controlled open view.\n */\n view: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Views for calendar picker.\n * @default ['year', 'day']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired)\n} : void 0;\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/components/date-picker/)\n *\n * API:\n *\n * - [CalendarPicker API](https://mui.com/api/calendar-picker/)\n */\n\nexport default CalendarPicker;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTheme, styled, useThemeProps as useThemProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/core';\nimport clsx from 'clsx';\nimport PickersYear from './PickersYear';\nimport { useUtils, useNow } from '../internal/pickers/hooks/useUtils';\nimport { findClosestEnabledDate } from '../internal/pickers/date-utils';\nimport { WrapperVariantContext } from '../internal/pickers/wrappers/WrapperVariantContext';\nimport { getYearPickerUtilityClass } from './yearPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getYearPickerUtilityClass, classes);\n};\n\nconst YearPickerRoot = styled('div', {\n name: 'MuiYearPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflowY: 'auto',\n height: '100%',\n margin: '0 4px'\n});\nconst YearPicker = /*#__PURE__*/React.forwardRef(function YearPicker(inProps, ref) {\n const props = useThemProps({\n props: inProps,\n name: 'MuiYearPicker'\n });\n const {\n autoFocus,\n className,\n date,\n disableFuture,\n disablePast,\n isDateDisabled,\n maxDate,\n minDate,\n onChange,\n onFocusedDayChange,\n onYearChange,\n shouldDisableYear\n } = props;\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const now = useNow();\n const theme = useTheme();\n const utils = useUtils();\n const selectedDate = date || now;\n const currentYear = utils.getYear(selectedDate);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const selectedYearRef = React.useRef(null);\n const [focusedYear, setFocusedYear] = React.useState(currentYear);\n\n const handleYearSelection = (event, year, isFinish = 'finish') => {\n const submitDate = newDate => {\n onChange(newDate, isFinish);\n\n if (onFocusedDayChange) {\n onFocusedDayChange(newDate || now);\n }\n\n if (onYearChange) {\n onYearChange(newDate);\n }\n };\n\n const newDate = utils.setYear(selectedDate, year);\n\n if (isDateDisabled(newDate)) {\n const closestEnabledDate = findClosestEnabledDate({\n utils,\n date: newDate,\n minDate,\n maxDate,\n disablePast: Boolean(disablePast),\n disableFuture: Boolean(disableFuture),\n shouldDisableDate: isDateDisabled\n });\n submitDate(closestEnabledDate || now);\n } else {\n submitDate(newDate);\n }\n };\n\n const focusYear = React.useCallback(year => {\n if (!isDateDisabled(utils.setYear(selectedDate, year))) {\n setFocusedYear(year);\n }\n }, [selectedDate, isDateDisabled, utils]);\n const yearsInRow = wrapperVariant === 'desktop' ? 4 : 3;\n\n const handleKeyDown = (event, year) => {\n switch (event.key) {\n case 'ArrowUp':\n focusYear(year - yearsInRow);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n focusYear(year + yearsInRow);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n focusYear(year + (theme.direction === 'ltr' ? -1 : 1));\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n focusYear(year + (theme.direction === 'ltr' ? 1 : -1));\n event.preventDefault();\n break;\n\n default:\n break;\n }\n };\n\n return /*#__PURE__*/_jsx(YearPickerRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: utils.getYearRange(minDate, maxDate).map(year => {\n const yearNumber = utils.getYear(year);\n const selected = yearNumber === currentYear;\n return /*#__PURE__*/_jsx(PickersYear, {\n selected: selected,\n value: yearNumber,\n onClick: handleYearSelection,\n onKeyDown: handleKeyDown,\n autoFocus: autoFocus && yearNumber === focusedYear,\n ref: selected ? selectedYearRef : undefined,\n disabled: disablePast && utils.isBeforeYear(year, now) || disableFuture && utils.isAfterYear(year, now) || shouldDisableYear && shouldDisableYear(year),\n children: utils.format(year, 'year')\n }, utils.format(year, 'year'));\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? YearPicker.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * @ignore\n */\n autoFocus: PropTypes.bool,\n\n /**\n * @ignore\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * @ignore\n */\n date: PropTypes.any,\n\n /**\n * @ignore\n */\n disableFuture: PropTypes.bool,\n\n /**\n * @ignore\n */\n disablePast: PropTypes.bool,\n\n /**\n * @ignore\n */\n isDateDisabled: PropTypes.func.isRequired,\n\n /**\n * @ignore\n */\n maxDate: PropTypes.any.isRequired,\n\n /**\n * @ignore\n */\n minDate: PropTypes.any.isRequired,\n\n /**\n * @ignore\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * @ignore\n */\n onFocusedDayChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n */\n shouldDisableYear: PropTypes.func\n} : void 0;\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/components/date-picker/)\n *\n * API:\n *\n * - [YearPicker API](https://mui.com/api/year-picker/)\n */\n\nexport default YearPicker;","import { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH, VIEW_HEIGHT } from '../constants/dimensions';\nconst PickerView = styled('div')({\n overflowX: 'hidden',\n width: DIALOG_WIDTH,\n maxHeight: VIEW_HEIGHT,\n display: 'flex',\n flexDirection: 'column',\n margin: '0 auto'\n});\nexport default PickerView;","import { useReducer, useRef, useLayoutEffect, useEffect } from 'react';\n\nconst useRifm = props => {\n const [, refresh] = useReducer(c => c + 1, 0);\n const valueRef = useRef(null);\n const {\n replace,\n append\n } = props;\n const userValue = replace ? replace(props.format(props.value)) : props.format(props.value); // state of delete button see comments below about inputType support\n\n const isDeleleteButtonDownRef = useRef(false);\n\n const onChange = evt => {\n if (process.env.NODE_ENV !== 'production') {\n if (evt.target.type === 'number') {\n console.error('Rifm does not support input type=number, use type=tel instead.');\n return;\n }\n\n if (evt.target.type === 'date') {\n console.error('Rifm does not support input type=date.');\n return;\n }\n }\n\n const eventValue = evt.target.value;\n valueRef.current = [eventValue, // eventValue\n evt.target, // input\n eventValue.length > userValue.length, // isSizeIncreaseOperation\n isDeleleteButtonDownRef.current, // isDeleleteButtonDown\n userValue === props.format(eventValue) // isNoOperation\n ];\n\n if (process.env.NODE_ENV !== 'production') {\n const formattedEventValue = props.format(eventValue);\n\n if (eventValue !== formattedEventValue && eventValue.toLowerCase() === formattedEventValue.toLowerCase()) {\n console.warn('Case enforcement does not work with format. Please use replace={value => value.toLowerCase()} instead');\n }\n } // The main trick is to update underlying input with non formatted value (= eventValue)\n // that allows us to calculate right cursor position after formatting (see getCursorPosition)\n // then we format new value and call props.onChange with masked/formatted value\n // and finally we are able to set cursor position into right place\n\n\n refresh();\n }; // React prints warn on server in non production mode about useLayoutEffect usage\n // in both cases it's noop\n\n\n if (process.env.NODE_ENV === 'production' || typeof window !== 'undefined') {\n useLayoutEffect(() => {\n if (valueRef.current == null) return;\n let [eventValue, input, isSizeIncreaseOperation, isDeleleteButtonDown, // No operation means that value itself hasn't been changed, BTW cursor, selection etc can be changed\n isNoOperation] = valueRef.current;\n valueRef.current = null; // this usually occurs on deleting special symbols like ' here 123'123.00\n // in case of isDeleleteButtonDown cursor should move differently vs backspace\n\n const deleteWasNoOp = isDeleleteButtonDown && isNoOperation;\n const valueAfterSelectionStart = eventValue.slice(input.selectionStart);\n const acceptedCharIndexAfterDelete = valueAfterSelectionStart.search(props.accept || /\\d/g);\n const charsToSkipAfterDelete = acceptedCharIndexAfterDelete !== -1 ? acceptedCharIndexAfterDelete : 0; // Create string from only accepted symbols\n\n const clean = str => (str.match(props.accept || /\\d/g) || []).join('');\n\n const valueBeforeSelectionStart = clean(eventValue.substr(0, input.selectionStart)); // trying to find cursor position in formatted value having knowledge about valueBeforeSelectionStart\n // This works because we assume that format doesn't change the order of accepted symbols.\n // Imagine we have formatter which adds ' symbol between numbers, and by default we refuse all non numeric symbols\n // for example we had input = 1'2|'4 (| means cursor position) then user entered '3' symbol\n // inputValue = 1'23'|4 so valueBeforeSelectionStart = 123 and formatted value = 1'2'3'4\n // calling getCursorPosition(\"1'2'3'4\") will give us position after 3, 1'2'3|'4\n // so for formatting just this function to determine cursor position after formatting is enough\n // with masking we need to do some additional checks see `mask` below\n\n const getCursorPosition = val => {\n let start = 0;\n let cleanPos = 0;\n\n for (let i = 0; i !== valueBeforeSelectionStart.length; ++i) {\n let newPos = val.indexOf(valueBeforeSelectionStart[i], start) + 1;\n let newCleanPos = clean(val).indexOf(valueBeforeSelectionStart[i], cleanPos) + 1; // this skips position change if accepted symbols order was broken\n // For example fixes edge case with fixed point numbers:\n // You have '0|.00', then press 1, it becomes 01|.00 and after format 1.00, this breaks our assumption\n // that order of accepted symbols is not changed after format,\n // so here we don't update start position if other accepted symbols was inbetween current and new position\n\n if (newCleanPos - cleanPos > 1) {\n newPos = start;\n newCleanPos = cleanPos;\n }\n\n cleanPos = Math.max(newCleanPos, cleanPos);\n start = Math.max(start, newPos);\n }\n\n return start;\n }; // Masking part, for masks if size of mask is above some value\n // we need to replace symbols instead of do nothing as like in format\n\n\n if (props.mask === true && isSizeIncreaseOperation && !isNoOperation) {\n let start = getCursorPosition(eventValue);\n const c = clean(eventValue.substr(start))[0];\n start = eventValue.indexOf(c, start);\n eventValue = `${eventValue.substr(0, start)}${eventValue.substr(start + 1)}`;\n }\n\n let formattedValue = props.format(eventValue);\n\n if (append != null && // cursor at the end\n input.selectionStart === eventValue.length && !isNoOperation) {\n if (isSizeIncreaseOperation) {\n formattedValue = append(formattedValue);\n } else {\n // If after delete last char is special character and we use append\n // delete it too\n // was: \"12-3|\" backspace pressed, then should be \"12|\"\n if (clean(formattedValue.slice(-1)) === '') {\n formattedValue = formattedValue.slice(0, -1);\n }\n }\n }\n\n const replacedValue = replace ? replace(formattedValue) : formattedValue;\n\n if (userValue === replacedValue) {\n // if nothing changed for formatted value, just refresh so userValue will be used at render\n refresh();\n } else {\n props.onChange(replacedValue);\n }\n\n return () => {\n let start = getCursorPosition(formattedValue); // Visually improves working with masked values,\n // like cursor jumping over refused symbols\n // as an example date mask: was \"5|1-24-3\" then user pressed \"6\"\n // it becomes \"56-|12-43\" with this code, and \"56|-12-43\" without\n\n if (props.mask != null && (isSizeIncreaseOperation || isDeleleteButtonDown && !deleteWasNoOp)) {\n while (formattedValue[start] && clean(formattedValue[start]) === '') {\n start += 1;\n }\n }\n\n input.selectionStart = input.selectionEnd = start + (deleteWasNoOp ? 1 + charsToSkipAfterDelete : 0);\n };\n });\n }\n\n useEffect(() => {\n // until https://developer.mozilla.org/en-US/docs/Web/API/InputEvent/inputType will be supported\n // by all major browsers (now supported by: +chrome, +safari, ?edge, !firefox)\n // there is no way I found to distinguish in onChange\n // backspace or delete was called in some situations\n // firefox track https://bugzilla.mozilla.org/show_bug.cgi?id=1447239\n const handleKeyDown = evt => {\n if (evt.code === 'Delete') {\n isDeleleteButtonDownRef.current = true;\n }\n };\n\n const handleKeyUp = evt => {\n if (evt.code === 'Delete') {\n isDeleleteButtonDownRef.current = false;\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n return {\n value: valueRef.current != null ? valueRef.current[0] : userValue,\n onChange\n };\n};\nconst Rifm = props => {\n const renderProps = useRifm(props);\n return props.children(renderProps);\n};\n\nexport { Rifm, useRifm };\n","export function getTextFieldAriaText(rawValue, utils) {\n // TODO: should `isValid` narrow `TDate | null` to `NonNullable`?\n // Either we allow `TDate | null` to be valid and guard against calling `formatByString` with `null`.\n // Or we ensure `formatByString` is callable with `null`.\n return rawValue && utils.isValid(utils.date(rawValue)) ? `Choose date, selected date is ${utils.format(utils.date(rawValue), 'fullDate')}` : 'Choose date';\n}\nexport const getDisplayDate = (utils, value, inputFormat) => {\n const date = utils.date(value);\n const isEmpty = value === null;\n\n if (isEmpty) {\n return '';\n }\n\n return utils.isValid(date) ? utils.formatByString( // TODO: should `isValid` narrow `TDate | null` to `NonNullable`?\n // Either we allow `TDate | null` to be valid and guard against calling `formatByString` with `null`.\n // Or we ensure `formatByString` is callable with `null`.\n date, inputFormat) : '';\n};\nexport function pick12hOr24hFormat(userFormat, ampm, formats) {\n if (userFormat) {\n return userFormat;\n }\n\n if (typeof ampm === 'undefined') {\n return formats.localized;\n }\n\n return ampm ? formats['12h'] : formats['24h'];\n}\nconst MASK_USER_INPUT_SYMBOL = '_';\nconst staticDateWith2DigitTokens = '2019-11-21T22:30:00.000';\nconst staticDateWith1DigitTokens = '2019-01-01T09:00:00.000';\nexport function checkMaskIsValidForCurrentFormat(mask, format, acceptRegex, utils) {\n const formattedDateWith1Digit = utils.formatByString(utils.date(staticDateWith1DigitTokens), format);\n const inferredFormatPatternWith1Digits = formattedDateWith1Digit.replace(acceptRegex, MASK_USER_INPUT_SYMBOL);\n const inferredFormatPatternWith2Digits = utils.formatByString(utils.date(staticDateWith2DigitTokens), format).replace(acceptRegex, '_');\n const isMaskValid = inferredFormatPatternWith2Digits === mask && inferredFormatPatternWith1Digits === mask;\n\n if (!isMaskValid && utils.lib !== 'luxon' && process.env.NODE_ENV !== 'production') {\n console.warn(`The mask \"${mask}\" you passed is not valid for the format used ${format}. Falling down to uncontrolled not-masked input.`);\n }\n\n return isMaskValid;\n}\nexport const maskedDateFormatter = (mask, acceptRegexp) => value => {\n return value.split('').map((char, i) => {\n acceptRegexp.lastIndex = 0;\n\n if (i > mask.length - 1) {\n return '';\n }\n\n const maskChar = mask[i];\n const nextMaskChar = mask[i + 1];\n const acceptedChar = acceptRegexp.test(char) ? char : '';\n const formattedChar = maskChar === MASK_USER_INPUT_SYMBOL ? acceptedChar : maskChar + acceptedChar;\n\n if (i === value.length - 1 && nextMaskChar && nextMaskChar !== MASK_USER_INPUT_SYMBOL) {\n // when cursor at the end of mask part (e.g. month) prerender next symbol \"21\" -> \"21/\"\n return formattedChar ? formattedChar + nextMaskChar : '';\n }\n\n return formattedChar;\n }).join('');\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useRifm } from 'rifm';\nimport { useUtils } from './useUtils';\nimport { createDelegatedEventHandler } from '../utils';\nimport { maskedDateFormatter, getDisplayDate, checkMaskIsValidForCurrentFormat } from '../text-field-helper';\nexport function useMaskedInput({\n acceptRegex = /[\\d]/gi,\n disabled,\n disableMaskedInput,\n ignoreInvalidInputs,\n inputFormat,\n inputProps,\n label,\n mask,\n onChange,\n rawValue,\n readOnly,\n rifmFormatter,\n TextFieldProps,\n validationError\n}) {\n const utils = useUtils();\n const [isFocused, setIsFocused] = React.useState(false);\n const formatHelperText = utils.getFormatHelperText(inputFormat);\n const shouldUseMaskedInput = React.useMemo(() => {\n // formatting of dates is a quite slow thing, so do not make useless .format calls\n if (!mask || disableMaskedInput) {\n return false;\n }\n\n return checkMaskIsValidForCurrentFormat(mask, inputFormat, acceptRegex, utils);\n }, [acceptRegex, disableMaskedInput, inputFormat, mask, utils]);\n const formatter = React.useMemo(() => shouldUseMaskedInput && mask ? maskedDateFormatter(mask, acceptRegex) : st => st, [acceptRegex, mask, shouldUseMaskedInput]); // TODO: Implement with controlled vs unctrolled `rawValue`\n\n const currentInputValue = getDisplayDate(utils, rawValue, inputFormat);\n const [innerInputValue, setInnerInputValue] = React.useState(currentInputValue);\n const previousInputValueRef = React.useRef(currentInputValue);\n React.useEffect(() => {\n previousInputValueRef.current = currentInputValue;\n }, [currentInputValue]);\n const notTyping = !isFocused;\n const valueChanged = previousInputValueRef.current !== currentInputValue; // Update the input value only if the value changed outside of typing\n\n if (notTyping && valueChanged && (rawValue === null || utils.isValid(rawValue))) {\n if (currentInputValue !== innerInputValue) {\n setInnerInputValue(currentInputValue);\n }\n }\n\n const handleChange = text => {\n const finalString = text === '' || text === mask ? '' : text;\n setInnerInputValue(finalString);\n const date = finalString === null ? null : utils.parse(finalString, inputFormat);\n\n if (ignoreInvalidInputs && !utils.isValid(date)) {\n return;\n }\n\n onChange(date, finalString || undefined);\n };\n\n const rifmProps = useRifm({\n value: innerInputValue,\n onChange: handleChange,\n format: rifmFormatter || formatter\n });\n const inputStateArgs = shouldUseMaskedInput ? rifmProps : {\n value: innerInputValue,\n onChange: event => {\n handleChange(event.currentTarget.value);\n }\n };\n return _extends({\n label,\n disabled,\n error: validationError,\n inputProps: _extends({}, inputStateArgs, {\n disabled,\n placeholder: formatHelperText,\n readOnly,\n type: shouldUseMaskedInput ? 'tel' : 'text'\n }, inputProps, {\n onFocus: createDelegatedEventHandler(() => {\n setIsFocused(true);\n }, inputProps == null ? void 0 : inputProps.onFocus),\n onBlur: createDelegatedEventHandler(() => {\n setIsFocused(false);\n }, inputProps == null ? void 0 : inputProps.onBlur)\n })\n }, TextFieldProps);\n}\nexport default useMaskedInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"components\", \"disableOpenPicker\", \"getOpenDialogAriaText\", \"InputAdornmentProps\", \"InputProps\", \"inputRef\", \"openPicker\", \"OpenPickerButtonProps\", \"renderInput\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport { useUtils } from './hooks/useUtils';\nimport CalendarIcon from '../svg-icons/Calendar';\nimport { useMaskedInput } from './hooks/useMaskedInput';\nimport { getTextFieldAriaText } from './text-field-helper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const KeyboardDateInput = /*#__PURE__*/React.forwardRef(function KeyboardDateInput(props, ref) {\n const {\n components = {},\n disableOpenPicker,\n getOpenDialogAriaText = getTextFieldAriaText,\n InputAdornmentProps,\n InputProps,\n inputRef,\n openPicker,\n OpenPickerButtonProps,\n renderInput\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const utils = useUtils();\n const textFieldProps = useMaskedInput(other);\n const adornmentPosition = (InputAdornmentProps == null ? void 0 : InputAdornmentProps.position) || 'end';\n const OpenPickerIcon = components.OpenPickerIcon || CalendarIcon;\n return renderInput(_extends({\n ref,\n inputRef\n }, textFieldProps, {\n InputProps: _extends({}, InputProps, {\n [`${adornmentPosition}Adornment`]: disableOpenPicker ? undefined : /*#__PURE__*/_jsx(InputAdornment, _extends({\n position: adornmentPosition\n }, InputAdornmentProps, {\n children: /*#__PURE__*/_jsx(IconButton, _extends({\n edge: adornmentPosition,\n disabled: other.disabled || other.readOnly,\n \"aria-label\": getOpenDialogAriaText(other.rawValue, utils)\n }, OpenPickerButtonProps, {\n onClick: openPicker,\n children: /*#__PURE__*/_jsx(OpenPickerIcon, {})\n }))\n }))\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? KeyboardDateInput.propTypes = {\n acceptRegex: PropTypes.instanceOf(RegExp),\n getOpenDialogAriaText: PropTypes.func,\n mask: PropTypes.string,\n OpenPickerButtonProps: PropTypes.object,\n renderInput: PropTypes.func.isRequired,\n rifmFormatter: PropTypes.func\n} : void 0;\nexport default KeyboardDateInput;","import * as React from 'react';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { arrayIncludes } from '../utils';\n\nfunction getOrientation() {\n if (typeof window === 'undefined') {\n return 'portrait';\n }\n\n if (window.screen && window.screen.orientation && window.screen.orientation.angle) {\n return Math.abs(window.screen.orientation.angle) === 90 ? 'landscape' : 'portrait';\n } // Support IOS safari\n\n\n if (window.orientation) {\n return Math.abs(Number(window.orientation)) === 90 ? 'landscape' : 'portrait';\n }\n\n return 'portrait';\n}\n\nexport function useIsLandscape(views, customOrientation) {\n const [orientation, setOrientation] = React.useState(getOrientation);\n useEnhancedEffect(() => {\n const eventHandler = () => {\n setOrientation(getOrientation());\n };\n\n window.addEventListener('orientationchange', eventHandler);\n return () => {\n window.removeEventListener('orientationchange', eventHandler);\n };\n }, []);\n\n if (arrayIncludes(views, ['hours', 'minutes', 'seconds'])) {\n // could not display 13:34:44 in landscape mode\n return false;\n }\n\n const orientationToUse = customOrientation || orientation;\n return orientationToUse === 'landscape';\n}\nexport default useIsLandscape;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"date\", \"DateInputProps\", \"isMobileKeyboardViewOpen\", \"onDateChange\", \"openTo\", \"orientation\", \"showToolbar\", \"toggleMobileKeyboardView\", \"ToolbarComponent\", \"toolbarFormat\", \"toolbarPlaceholder\", \"toolbarTitle\", \"views\"];\nimport * as React from 'react';\nimport { styled } from '@mui/material/styles';\nimport { useViews } from '../hooks/useViews';\nimport ClockPicker from '../../../ClockPicker/ClockPicker';\nimport CalendarPicker from '../../../CalendarPicker';\nimport { KeyboardDateInput } from '../KeyboardDateInput';\nimport { useIsLandscape } from '../hooks/useIsLandscape';\nimport { WrapperVariantContext } from '../wrappers/WrapperVariantContext';\nimport PickerView from './PickerView';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const MobileKeyboardInputView = styled('div')({\n padding: '16px 24px'\n});\nconst PickerRoot = styled('div', {\n skipSx: true\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column'\n}, ownerState.isLandscape && {\n flexDirection: 'row'\n}));\nconst MobileKeyboardTextFieldProps = {\n fullWidth: true\n};\n\nconst isDatePickerView = view => view === 'year' || view === 'month' || view === 'day';\n\nconst isTimePickerView = view => view === 'hours' || view === 'minutes' || view === 'seconds';\n\nfunction Picker(props) {\n const {\n autoFocus,\n date,\n DateInputProps,\n isMobileKeyboardViewOpen,\n onDateChange,\n openTo = 'day',\n orientation,\n showToolbar,\n toggleMobileKeyboardView,\n ToolbarComponent = () => null,\n toolbarFormat,\n toolbarPlaceholder,\n toolbarTitle,\n views = ['year', 'month', 'day', 'hours', 'minutes', 'seconds']\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const isLandscape = useIsLandscape(views, orientation);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const toShowToolbar = typeof showToolbar === 'undefined' ? wrapperVariant !== 'desktop' : showToolbar;\n const handleDateChange = React.useCallback((newDate, selectionState) => {\n onDateChange(newDate, wrapperVariant, selectionState);\n }, [onDateChange, wrapperVariant]);\n const handleViewChange = React.useCallback(() => {\n if (isMobileKeyboardViewOpen) {\n toggleMobileKeyboardView();\n }\n }, [isMobileKeyboardViewOpen, toggleMobileKeyboardView]);\n const {\n openView,\n nextView,\n previousView,\n setOpenView,\n handleChangeAndOpenNext\n } = useViews({\n view: undefined,\n views,\n openTo,\n onChange: handleDateChange,\n onViewChange: handleViewChange\n });\n return /*#__PURE__*/_jsxs(PickerRoot, {\n ownerState: {\n isLandscape\n },\n children: [toShowToolbar && /*#__PURE__*/_jsx(ToolbarComponent, _extends({}, other, {\n views: views,\n isLandscape: isLandscape,\n date: date,\n onChange: handleDateChange,\n setOpenView: setOpenView,\n openView: openView,\n toolbarTitle: toolbarTitle,\n toolbarFormat: toolbarFormat,\n toolbarPlaceholder: toolbarPlaceholder,\n isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: toggleMobileKeyboardView\n })), /*#__PURE__*/_jsx(PickerView, {\n children: isMobileKeyboardViewOpen ? /*#__PURE__*/_jsx(MobileKeyboardInputView, {\n children: /*#__PURE__*/_jsx(KeyboardDateInput, _extends({}, DateInputProps, {\n ignoreInvalidInputs: true,\n disableOpenPicker: true,\n TextFieldProps: MobileKeyboardTextFieldProps\n }))\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [isDatePickerView(openView) && /*#__PURE__*/_jsx(CalendarPicker, _extends({\n autoFocus: autoFocus,\n date: date,\n onViewChange: setOpenView,\n onChange: handleChangeAndOpenNext,\n view: openView,\n views: views.filter(isDatePickerView)\n }, other)), isTimePickerView(openView) && /*#__PURE__*/_jsx(ClockPicker, _extends({}, other, {\n autoFocus: autoFocus,\n date: date,\n view: openView,\n onChange: handleChangeAndOpenNext,\n openNextView: () => setOpenView(nextView),\n openPreviousView: () => setOpenView(previousView),\n nextViewAvailable: !nextView,\n previousViewAvailable: !previousView || isDatePickerView(previousView),\n showViewSwitcher: wrapperVariant === 'desktop'\n }))]\n })\n })]\n });\n}\n\nexport default Picker;","import * as React from 'react';\nimport { useUtils } from './useUtils';\nimport { validateDate, validateDateRange } from '../date-utils';\nimport { validateDateTime } from '../date-time-utils';\nimport { validateTime } from '../time-utils';\n\nfunction isSameDateOrTimeError(a, b) {\n return a === b;\n}\n\nfunction isSameDateRangeError(a, b) {\n return b !== null && a[1] === b[1] && a[0] === b[0];\n}\n\nfunction useValidation(props, validate, isSameError = isSameDateOrTimeError) {\n const {\n value,\n onError\n } = props;\n const utils = useUtils();\n const previousValidationErrorRef = React.useRef(null);\n const validationError = validate(utils, value, props);\n React.useEffect(() => {\n if (onError && !isSameError(validationError, previousValidationErrorRef.current)) {\n onError(validationError, value);\n }\n\n previousValidationErrorRef.current = validationError;\n }, [isSameError, onError, previousValidationErrorRef, validationError, value]);\n return validationError;\n}\n\nexport function useTimeValidation(props) {\n return useValidation(props, validateTime, isSameDateOrTimeError);\n}\nexport function useDateValidation(props) {\n return useValidation(props, validateDate, isSameDateOrTimeError);\n}\nexport function useDateTimeValidation(props) {\n return useValidation(props, validateDateTime, isSameDateOrTimeError);\n}\nexport function useDateRangeValidation(props) {\n return useValidation(props, validateDateRange, isSameDateRangeError);\n}","import * as React from 'react';\nexport function useOpenState({\n open,\n onOpen,\n onClose\n}) {\n const isControllingOpenProp = React.useRef(typeof open === 'boolean').current;\n const [openState, setIsOpenState] = React.useState(false); // It is required to update inner state in useEffect in order to avoid situation when\n // Our component is not mounted yet, but `open` state is set to `true` (e.g. initially opened)\n\n React.useEffect(() => {\n if (isControllingOpenProp) {\n if (typeof open !== 'boolean') {\n throw new Error('You must not mix controlling and uncontrolled mode for `open` prop');\n }\n\n setIsOpenState(open);\n }\n }, [isControllingOpenProp, open]);\n const setIsOpen = React.useCallback(newIsOpen => {\n if (!isControllingOpenProp) {\n setIsOpenState(newIsOpen);\n }\n\n if (newIsOpen && onOpen) {\n onOpen();\n }\n\n if (!newIsOpen && onClose) {\n onClose();\n }\n }, [isControllingOpenProp, onOpen, onClose]);\n return {\n isOpen: openState,\n setIsOpen\n };\n}\nexport default useOpenState;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useOpenState } from './useOpenState';\nimport { useUtils } from './useUtils';\nexport function usePickerState(props, valueManager) {\n const {\n disableCloseOnSelect,\n onAccept,\n onChange,\n value\n } = props;\n const utils = useUtils();\n const {\n isOpen,\n setIsOpen\n } = useOpenState(props);\n\n function initDraftableDate(date) {\n return {\n committed: date,\n draft: date\n };\n }\n\n const parsedDateValue = valueManager.parseInput(utils, value);\n const [draftState, dispatch] = React.useReducer((state, action) => {\n switch (action.type) {\n case 'reset':\n return initDraftableDate(action.payload);\n\n case 'update':\n return _extends({}, state, {\n draft: action.payload\n });\n\n default:\n return state;\n }\n }, parsedDateValue, initDraftableDate);\n\n if (!valueManager.areValuesEqual(utils, draftState.committed, parsedDateValue)) {\n dispatch({\n type: 'reset',\n payload: parsedDateValue\n });\n } // Mobile keyboard view is a special case.\n // When it's open picker should work like closed, cause we are just showing text field\n\n\n const [isMobileKeyboardViewOpen, setMobileKeyboardViewOpen] = React.useState(false);\n const acceptDate = React.useCallback((acceptedDate, needClosePicker) => {\n onChange(acceptedDate);\n\n if (needClosePicker) {\n setIsOpen(false);\n\n if (onAccept) {\n onAccept(acceptedDate);\n }\n }\n }, [onAccept, onChange, setIsOpen]);\n const wrapperProps = React.useMemo(() => ({\n open: isOpen,\n onClear: () => acceptDate(valueManager.emptyValue, true),\n onAccept: () => acceptDate(draftState.draft, true),\n onDismiss: () => setIsOpen(false),\n onSetToday: () => {\n const now = utils.date();\n dispatch({\n type: 'update',\n payload: now\n });\n acceptDate(now, !disableCloseOnSelect);\n }\n }), [acceptDate, disableCloseOnSelect, isOpen, utils, draftState.draft, setIsOpen, valueManager.emptyValue]);\n const pickerProps = React.useMemo(() => ({\n date: draftState.draft,\n isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: () => setMobileKeyboardViewOpen(!isMobileKeyboardViewOpen),\n onDateChange: (newDate, wrapperVariant, selectionState = 'partial') => {\n dispatch({\n type: 'update',\n payload: newDate\n });\n\n if (selectionState === 'partial') {\n acceptDate(newDate, false);\n }\n\n if (selectionState === 'finish') {\n const shouldCloseOnSelect = !(disableCloseOnSelect != null ? disableCloseOnSelect : wrapperVariant === 'mobile');\n acceptDate(newDate, shouldCloseOnSelect);\n } // if selectionState === \"shallow\" do nothing (we already update the draft state)\n\n }\n }), [acceptDate, disableCloseOnSelect, isMobileKeyboardViewOpen, draftState.draft]);\n const inputProps = React.useMemo(() => ({\n onChange,\n open: isOpen,\n rawValue: value,\n openPicker: () => setIsOpen(true)\n }), [onChange, isOpen, value, setIsOpen]);\n const pickerState = {\n pickerProps,\n inputProps,\n wrapperProps\n };\n React.useDebugValue(pickerState, () => ({\n MuiPickerState: {\n pickerDraft: draftState,\n other: pickerState\n }\n }));\n return pickerState;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"PopperProps\", \"ToolbarComponent\", \"TransitionComponent\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDatePickerDefaultizedProps } from '../DatePicker/shared';\nimport DatePickerToolbar from '../DatePicker/DatePickerToolbar';\nimport DesktopWrapper from '../internal/pickers/wrappers/DesktopWrapper';\nimport Picker from '../internal/pickers/Picker/Picker';\nimport { useDateValidation } from '../internal/pickers/hooks/useValidation';\nimport { parsePickerInputValue } from '../internal/pickers/date-utils';\nimport { KeyboardDateInput } from '../internal/pickers/KeyboardDateInput';\nimport { usePickerState } from '../internal/pickers/hooks/usePickerState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst valueManager = {\n emptyValue: null,\n parseInput: parsePickerInputValue,\n areValuesEqual: (utils, a, b) => utils.isEqual(a, b)\n};\n\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/components/date-picker/)\n *\n * API:\n *\n * - [DesktopDatePicker API](https://mui.com/api/desktop-date-picker/)\n */\nconst DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePicker(inProps, ref) {\n // TODO: TDate needs to be instantiated at every usage.\n const props = useDatePickerDefaultizedProps(inProps, 'MuiDesktopDatePicker');\n const validationError = useDateValidation(props) !== null;\n const {\n pickerProps,\n inputProps,\n wrapperProps\n } = usePickerState(props, valueManager);\n\n const {\n PopperProps,\n ToolbarComponent = DatePickerToolbar,\n TransitionComponent\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const AllDateInputProps = _extends({}, inputProps, other, {\n ref,\n validationError\n });\n\n return /*#__PURE__*/_jsx(DesktopWrapper, _extends({}, wrapperProps, {\n DateInputProps: AllDateInputProps,\n KeyboardDateInputComponent: KeyboardDateInput,\n PopperProps: PopperProps,\n TransitionComponent: TransitionComponent,\n children: /*#__PURE__*/_jsx(Picker, _extends({}, pickerProps, {\n autoFocus: true,\n toolbarTitle: props.label || props.toolbarTitle,\n ToolbarComponent: ToolbarComponent,\n DateInputProps: AllDateInputProps\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? DesktopDatePicker.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * If `true`, `onChange` is fired on click even if the same date is selected.\n * @default false\n */\n allowSameDateSelection: PropTypes.bool,\n\n /**\n * @ignore\n */\n autoFocus: PropTypes.bool,\n\n /**\n * @ignore\n */\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * The components used for each slot.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n LeftArrowButton: PropTypes.elementType,\n LeftArrowIcon: PropTypes.elementType,\n OpenPickerIcon: PropTypes.elementType,\n RightArrowButton: PropTypes.elementType,\n RightArrowIcon: PropTypes.elementType,\n SwitchViewButton: PropTypes.elementType,\n SwitchViewIcon: PropTypes.elementType\n }),\n\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n disableCloseOnSelect: PropTypes.bool,\n\n /**\n * If `true`, the picker and text field are disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, todays date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @default (value, utils) => `Choose date, selected date is ${utils.format(utils.date(value), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * @ignore\n */\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n\n /**\n * @ignore\n */\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n\n /**\n * @ignore\n */\n key: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * @ignore\n */\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Max selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Min selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change. @DateIOType\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n */\n openTo: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Popper props passed down to [Popper](https://mui.com/api/popper/) component.\n */\n PopperProps: PropTypes.object,\n\n /**\n * Make picker read only.\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/api/pickers-day/) component.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/api/text-field/#textfield-api) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DatePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * Custom component for popper [Transition](https://mui.com/components/transitions/#transitioncomponent-prop).\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.oneOfType([PropTypes.any, PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]),\n\n /**\n * Array of views to show.\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired)\n} : void 0;\nexport default DesktopDatePicker;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Button from '@mui/material/Button';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport Dialog, { dialogClasses } from '@mui/material/Dialog';\nimport { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH } from './constants/dimensions';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersModalDialogRoot = styled(Dialog, {\n skipSx: true\n})({\n [`& .${dialogClasses.container}`]: {\n outline: 0\n },\n [`& .${dialogClasses.paper}`]: {\n outline: 0,\n minWidth: DIALOG_WIDTH\n }\n});\nconst PickersModalDialogContent = styled(DialogContent, {\n skipSx: true\n})({\n '&:first-of-type': {\n padding: 0\n }\n});\nconst PickersModalDialogActions = styled(DialogActions, {\n skipSx: true\n})(({\n ownerState\n}) => _extends({}, (ownerState.clearable || ownerState.showTodayButton) && {\n // set justifyContent to default value to fix IE11 layout bug\n // see https://github.com/mui-org/material-ui-pickers/pull/267\n justifyContent: 'flex-start',\n '& > *:first-of-type': {\n marginRight: 'auto'\n }\n}));\n\nconst PickersModalDialog = props => {\n const {\n cancelText = 'Cancel',\n children,\n clearable = false,\n clearText = 'Clear',\n DialogProps = {},\n okText = 'OK',\n onAccept,\n onClear,\n onDismiss,\n onSetToday,\n open,\n showTodayButton = false,\n todayText = 'Today'\n } = props;\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersModalDialogRoot, _extends({\n open: open,\n onClose: onDismiss\n }, DialogProps, {\n children: [/*#__PURE__*/_jsx(PickersModalDialogContent, {\n children: children\n }), /*#__PURE__*/_jsxs(PickersModalDialogActions, {\n ownerState: ownerState,\n children: [clearable && /*#__PURE__*/_jsx(Button, {\n onClick: onClear,\n children: clearText\n }), showTodayButton && /*#__PURE__*/_jsx(Button, {\n onClick: onSetToday,\n children: todayText\n }), cancelText && /*#__PURE__*/_jsx(Button, {\n onClick: onDismiss,\n children: cancelText\n }), okText && /*#__PURE__*/_jsx(Button, {\n onClick: onAccept,\n children: okText\n })]\n })]\n }));\n};\n\nexport default PickersModalDialog;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"cancelText\", \"children\", \"clearable\", \"clearText\", \"DateInputProps\", \"DialogProps\", \"okText\", \"onAccept\", \"onClear\", \"onDismiss\", \"onSetToday\", \"open\", \"PureDateInputComponent\", \"showTodayButton\", \"todayText\"];\nimport * as React from 'react';\nimport { WrapperVariantContext } from './WrapperVariantContext';\nimport PickersModalDialog from '../PickersModalDialog';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nfunction MobileWrapper(props) {\n const {\n cancelText,\n children,\n clearable,\n clearText,\n DateInputProps,\n DialogProps,\n okText,\n onAccept,\n onClear,\n onDismiss,\n onSetToday,\n open,\n PureDateInputComponent,\n showTodayButton,\n todayText\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/_jsxs(WrapperVariantContext.Provider, {\n value: \"mobile\",\n children: [/*#__PURE__*/_jsx(PureDateInputComponent, _extends({}, other, DateInputProps)), /*#__PURE__*/_jsx(PickersModalDialog, {\n cancelText: cancelText,\n clearable: clearable,\n clearText: clearText,\n DialogProps: DialogProps,\n okText: okText,\n onAccept: onAccept,\n onClear: onClear,\n onDismiss: onDismiss,\n onSetToday: onSetToday,\n open: open,\n showTodayButton: showTodayButton,\n todayText: todayText,\n children: children\n })]\n });\n}\n\nexport default MobileWrapper;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { onSpaceOrEnter } from './utils';\nimport { useUtils } from './hooks/useUtils';\nimport { getDisplayDate, getTextFieldAriaText } from './text-field-helper'; // make `variant` optional.\n\n// TODO: why is this called \"Pure*\" when it's not memoized? Does \"Pure\" mean \"readonly\"?\nexport const PureDateInput = /*#__PURE__*/React.forwardRef(function PureDateInput(props, ref) {\n const {\n disabled,\n getOpenDialogAriaText = getTextFieldAriaText,\n inputFormat,\n InputProps,\n inputRef,\n label,\n openPicker: onOpen,\n rawValue,\n renderInput,\n TextFieldProps = {},\n validationError\n } = props;\n const utils = useUtils();\n const PureDateInputProps = React.useMemo(() => _extends({}, InputProps, {\n readOnly: true\n }), [InputProps]);\n const inputValue = getDisplayDate(utils, rawValue, inputFormat);\n return renderInput(_extends({\n label,\n disabled,\n ref,\n inputRef,\n error: validationError,\n InputProps: PureDateInputProps,\n inputProps: {\n disabled,\n readOnly: true,\n 'aria-readonly': true,\n 'aria-label': getOpenDialogAriaText(rawValue, utils),\n value: inputValue,\n onClick: onOpen,\n onKeyDown: onSpaceOrEnter(onOpen)\n }\n }, TextFieldProps));\n});\nPureDateInput.propTypes = {\n getOpenDialogAriaText: PropTypes.func,\n renderInput: PropTypes.func.isRequired\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ToolbarComponent\", \"value\", \"onChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDatePickerDefaultizedProps } from '../DatePicker/shared';\nimport DatePickerToolbar from '../DatePicker/DatePickerToolbar';\nimport MobileWrapper from '../internal/pickers/wrappers/MobileWrapper';\nimport Picker from '../internal/pickers/Picker/Picker';\nimport { useDateValidation } from '../internal/pickers/hooks/useValidation';\nimport { parsePickerInputValue } from '../internal/pickers/date-utils';\nimport { PureDateInput } from '../internal/pickers/PureDateInput';\nimport { usePickerState } from '../internal/pickers/hooks/usePickerState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst valueManager = {\n emptyValue: null,\n parseInput: parsePickerInputValue,\n areValuesEqual: (utils, a, b) => utils.isEqual(a, b)\n};\n\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/components/date-picker/)\n *\n * API:\n *\n * - [MobileDatePicker API](https://mui.com/api/mobile-date-picker/)\n */\nconst MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker(inProps, ref) {\n // TODO: TDate needs to be instantiated at every usage.\n const props = useDatePickerDefaultizedProps(inProps, 'MuiMobileDatePicker');\n const validationError = useDateValidation(props) !== null;\n const {\n pickerProps,\n inputProps,\n wrapperProps\n } = usePickerState(props, valueManager); // Note that we are passing down all the value without spread.\n // It saves us >1kb gzip and make any prop available automatically on any level down.\n\n const {\n ToolbarComponent = DatePickerToolbar\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const DateInputProps = _extends({}, inputProps, other, {\n ref,\n validationError\n });\n\n return /*#__PURE__*/_jsx(MobileWrapper, _extends({}, other, wrapperProps, {\n DateInputProps: DateInputProps,\n PureDateInputComponent: PureDateInput,\n children: /*#__PURE__*/_jsx(Picker, _extends({}, pickerProps, {\n autoFocus: true,\n toolbarTitle: props.label || props.toolbarTitle,\n ToolbarComponent: ToolbarComponent,\n DateInputProps: DateInputProps\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MobileDatePicker.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * If `true`, `onChange` is fired on click even if the same date is selected.\n * @default false\n */\n allowSameDateSelection: PropTypes.bool,\n\n /**\n * @ignore\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cancel text message.\n * @default 'Cancel'\n */\n cancelText: PropTypes.node,\n\n /**\n * @ignore\n */\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true`, it shows the clear action in the picker dialog.\n * @default false\n */\n clearable: PropTypes.bool,\n\n /**\n * Clear text message.\n * @default 'Clear'\n */\n clearText: PropTypes.node,\n\n /**\n * The components used for each slot.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n LeftArrowButton: PropTypes.elementType,\n LeftArrowIcon: PropTypes.elementType,\n OpenPickerIcon: PropTypes.elementType,\n RightArrowButton: PropTypes.elementType,\n RightArrowIcon: PropTypes.elementType,\n SwitchViewButton: PropTypes.elementType,\n SwitchViewIcon: PropTypes.elementType\n }),\n\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * Props applied to the [`Dialog`](/api/dialog/) element.\n */\n DialogProps: PropTypes.object,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n disableCloseOnSelect: PropTypes.bool,\n\n /**\n * If `true`, the picker and text field are disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, todays date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @default (value, utils) => `Choose date, selected date is ${utils.format(utils.date(value), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * @ignore\n */\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n\n /**\n * @ignore\n */\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n\n /**\n * @ignore\n */\n key: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * @ignore\n */\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Max selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Min selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Ok button text.\n * @default 'OK'\n */\n okText: PropTypes.node,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change. @DateIOType\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n */\n openTo: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Make picker read only.\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/api/pickers-day/) component.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/api/text-field/#textfield-api) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, the today button is displayed. **Note** that `showClearButton` has a higher priority.\n * @default false\n */\n showTodayButton: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Today text message.\n * @default 'Today'\n */\n todayText: PropTypes.node,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DatePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.oneOfType([PropTypes.any, PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]),\n\n /**\n * Array of views to show.\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired)\n} : void 0;\nexport default MobileDatePicker;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"cancelText\", \"clearable\", \"clearText\", \"desktopModeMediaQuery\", \"DialogProps\", \"okText\", \"PopperProps\", \"showTodayButton\", \"todayText\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport { useThemeProps } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport PropTypes from 'prop-types';\nimport DesktopDatePicker from '../DesktopDatePicker';\nimport MobileDatePicker from '../MobileDatePicker';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/components/date-picker/)\n * - [Pickers](https://mui.com/components/pickers/)\n *\n * API:\n *\n * - [DatePicker API](https://mui.com/api/date-picker/)\n */\nconst DatePicker = /*#__PURE__*/React.forwardRef(function DatePicker(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDatePicker'\n });\n\n const {\n cancelText,\n clearable,\n clearText,\n desktopModeMediaQuery = '@media (pointer: fine)',\n DialogProps,\n okText,\n PopperProps,\n showTodayButton,\n todayText,\n TransitionComponent\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const isDesktop = useMediaQuery(desktopModeMediaQuery);\n return isDesktop ? /*#__PURE__*/_jsx(DesktopDatePicker, _extends({\n ref: ref,\n PopperProps: PopperProps,\n TransitionComponent: TransitionComponent\n }, other)) : /*#__PURE__*/_jsx(MobileDatePicker, _extends({\n ref: ref,\n cancelText: cancelText,\n clearable: clearable,\n clearText: clearText,\n DialogProps: DialogProps,\n okText: okText,\n showTodayButton: showTodayButton,\n todayText: todayText\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DatePicker.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * If `true`, `onChange` is fired on click even if the same date is selected.\n * @default false\n */\n allowSameDateSelection: PropTypes.bool,\n\n /**\n * @ignore\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cancel text message.\n * @default 'Cancel'\n */\n cancelText: PropTypes.node,\n\n /**\n * @ignore\n */\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true`, it shows the clear action in the picker dialog.\n * @default false\n */\n clearable: PropTypes.bool,\n\n /**\n * Clear text message.\n * @default 'Clear'\n */\n clearText: PropTypes.node,\n\n /**\n * The components used for each slot.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n LeftArrowButton: PropTypes.elementType,\n LeftArrowIcon: PropTypes.elementType,\n OpenPickerIcon: PropTypes.elementType,\n RightArrowButton: PropTypes.elementType,\n RightArrowIcon: PropTypes.elementType,\n SwitchViewButton: PropTypes.elementType,\n SwitchViewIcon: PropTypes.elementType\n }),\n\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * CSS media query when `Mobile` mode will be changed to `Desktop`.\n * @default '@media (pointer: fine)'\n * @example '@media (min-width: 720px)' or theme.breakpoints.up(\"sm\")\n */\n desktopModeMediaQuery: PropTypes.string,\n\n /**\n * Props applied to the [`Dialog`](/api/dialog/) element.\n */\n DialogProps: PropTypes.object,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n disableCloseOnSelect: PropTypes.bool,\n\n /**\n * If `true`, the picker and text field are disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, todays date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @default (value, utils) => `Choose date, selected date is ${utils.format(utils.date(value), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * @ignore\n */\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n\n /**\n * @ignore\n */\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n\n /**\n * @ignore\n */\n key: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * @ignore\n */\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Max selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Min selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Ok button text.\n * @default 'OK'\n */\n okText: PropTypes.node,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change. @DateIOType\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n */\n openTo: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Popper props passed down to [Popper](https://mui.com/api/popper/) component.\n */\n PopperProps: PropTypes.object,\n\n /**\n * Make picker read only.\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/api/pickers-day/) component.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/api/text-field/#textfield-api) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, the today button is displayed. **Note** that `showClearButton` has a higher priority.\n * @default false\n */\n showTodayButton: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Today text message.\n * @default 'Today'\n */\n todayText: PropTypes.node,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DatePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * Custom component for popper [Transition](https://mui.com/components/transitions/#transitioncomponent-prop).\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.oneOfType([PropTypes.any, PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]),\n\n /**\n * Array of views to show.\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired)\n} : void 0;\nexport default DatePicker;","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nexport default function getBoundingClientRect(element, includeScale) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n var rect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (isHTMLElement(element) && includeScale) {\n var offsetHeight = element.offsetHeight;\n var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale\n // Fallback to 1 in case both values are `0`\n\n if (offsetWidth > 0) {\n scaleX = round(rect.width) / offsetWidth || 1;\n }\n\n if (offsetHeight > 0) {\n scaleY = round(rect.height) / offsetHeight || 1;\n }\n }\n\n return {\n width: rect.width / scaleX,\n height: rect.height / scaleY,\n top: rect.top / scaleY,\n right: rect.right / scaleX,\n bottom: rect.bottom / scaleY,\n left: rect.left / scaleX,\n x: rect.left / scaleX,\n y: rect.top / scaleY\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body' && (canEscapeClipping ? getComputedStyle(clippingParent).position !== 'static' : true);\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"children\", \"direction\", \"disablePortal\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"TransitionProps\"],\n _excluded2 = [\"anchorEl\", \"children\", \"container\", \"direction\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"style\", \"transition\"];\nimport { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { createPopper } from '@popperjs/core';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport Portal from '../Portal';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction flipPlacement(placement, direction) {\n if (direction === 'ltr') {\n return placement;\n }\n\n switch (placement) {\n case 'bottom-end':\n return 'bottom-start';\n\n case 'bottom-start':\n return 'bottom-end';\n\n case 'top-end':\n return 'top-start';\n\n case 'top-start':\n return 'top-end';\n\n default:\n return placement;\n }\n}\n\nfunction resolveAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\n\nconst defaultPopperOptions = {};\n/* eslint-disable react/prop-types */\n\nconst PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, ref) {\n const {\n anchorEl,\n children,\n direction,\n disablePortal,\n modifiers,\n open,\n placement: initialPlacement,\n popperOptions,\n popperRef: popperRefProp,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const tooltipRef = React.useRef(null);\n const ownRef = useForkRef(tooltipRef, ref);\n const popperRef = React.useRef(null);\n const handlePopperRef = useForkRef(popperRef, popperRefProp);\n const handlePopperRefRef = React.useRef(handlePopperRef);\n useEnhancedEffect(() => {\n handlePopperRefRef.current = handlePopperRef;\n }, [handlePopperRef]);\n React.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n const rtlPlacement = flipPlacement(initialPlacement, direction);\n /**\n * placement initialized from prop but can change during lifetime if modifiers.flip.\n * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n */\n\n const [placement, setPlacement] = React.useState(rtlPlacement);\n React.useEffect(() => {\n if (popperRef.current) {\n popperRef.current.forceUpdate();\n }\n });\n useEnhancedEffect(() => {\n if (!anchorEl || !open) {\n return undefined;\n }\n\n const handlePopperUpdate = data => {\n setPlacement(data.placement);\n };\n\n const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n\n if (process.env.NODE_ENV !== 'production') {\n if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {\n const box = resolvedAnchorEl.getBoundingClientRect();\n\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n }\n\n let popperModifiers = [{\n name: 'preventOverflow',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'flip',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'onUpdate',\n enabled: true,\n phase: 'afterWrite',\n fn: ({\n state\n }) => {\n handlePopperUpdate(state);\n }\n }];\n\n if (modifiers != null) {\n popperModifiers = popperModifiers.concat(modifiers);\n }\n\n if (popperOptions && popperOptions.modifiers != null) {\n popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n }\n\n const popper = createPopper(resolveAnchorEl(anchorEl), tooltipRef.current, _extends({\n placement: rtlPlacement\n }, popperOptions, {\n modifiers: popperModifiers\n }));\n handlePopperRefRef.current(popper);\n return () => {\n popper.destroy();\n handlePopperRefRef.current(null);\n };\n }, [anchorEl, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n const childProps = {\n placement\n };\n\n if (TransitionProps !== null) {\n childProps.TransitionProps = TransitionProps;\n }\n\n return /*#__PURE__*/_jsx(\"div\", _extends({\n ref: ownRef,\n role: \"tooltip\"\n }, other, {\n children: typeof children === 'function' ? children(childProps) : children\n }));\n});\n/* eslint-enable react/prop-types */\n\n/**\n * Poppers rely on the 3rd party library [Popper.js](https://popper.js.org/docs/v2/) for positioning.\n */\n\nconst PopperUnstyled = /*#__PURE__*/React.forwardRef(function PopperUnstyled(props, ref) {\n const {\n anchorEl,\n children,\n container: containerProp,\n direction = 'ltr',\n disablePortal = false,\n keepMounted = false,\n modifiers,\n open,\n placement = 'bottom',\n popperOptions = defaultPopperOptions,\n popperRef,\n style,\n transition = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n\n const [exited, setExited] = React.useState(true);\n\n const handleEnter = () => {\n setExited(false);\n };\n\n const handleExited = () => {\n setExited(true);\n };\n\n if (!keepMounted && !open && (!transition || exited)) {\n return null;\n } // If the container prop is provided, use that\n // If the anchorEl prop is provided, use its parent body element as the container\n // If neither are provided let the Modal take care of choosing the container\n\n\n const container = containerProp || (anchorEl ? ownerDocument(resolveAnchorEl(anchorEl)).body : undefined);\n return /*#__PURE__*/_jsx(Portal, {\n disablePortal: disablePortal,\n container: container,\n children: /*#__PURE__*/_jsx(PopperTooltip, _extends({\n anchorEl: anchorEl,\n direction: direction,\n disablePortal: disablePortal,\n modifiers: modifiers,\n ref: ref,\n open: transition ? !exited : open,\n placement: placement,\n popperOptions: popperOptions,\n popperRef: popperRef\n }, other, {\n style: _extends({\n // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n position: 'fixed',\n // Fix Popper.js display issue\n top: 0,\n left: 0,\n display: !open && keepMounted && (!transition || exited) ? 'none' : null\n }, style),\n TransitionProps: transition ? {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited\n } : null,\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? PopperUnstyled.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), props => {\n if (props.open) {\n const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n\n if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {\n const box = resolvedAnchorEl.getBoundingClientRect();\n\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n }\n }\n\n return null;\n }),\n\n /**\n * Popper render function or node.\n */\n children: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([HTMLElementType, PropTypes.func]),\n\n /**\n * Direction of the text.\n * @default 'ltr'\n */\n direction: PropTypes.oneOf(['ltr', 'rtl']),\n\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any.isRequired,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport default PopperUnstyled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport PopperUnstyled from '@mui/base/PopperUnstyled';\nimport { HTMLElementType, refType } from '@mui/utils';\nimport { useThemeWithoutDefault as useTheme } from '@mui/system';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://mui.com/components/autocomplete/)\n * - [Menus](https://mui.com/components/menus/)\n * - [Popper](https://mui.com/components/popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/api/popper/)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(props, ref) {\n const theme = useTheme();\n return /*#__PURE__*/_jsx(PopperUnstyled, _extends({\n direction: theme == null ? void 0 : theme.direction\n }, props, {\n ref: ref\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]),\n\n /**\n * Popper render function or node.\n */\n children: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([HTMLElementType, PropTypes.func]),\n\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any.isRequired,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport default Popper;","import * as React from 'react';\nimport { useControlled } from '@mui/material/utils';\nimport { arrayIncludes } from '../utils/utils';\nexport function useViews({\n onChange,\n onViewChange,\n openTo,\n view,\n views\n}) {\n var _views, _views2;\n\n const [openView, setOpenView] = useControlled({\n name: 'Picker',\n state: 'view',\n controlled: view,\n default: openTo && arrayIncludes(views, openTo) ? openTo : views[0]\n });\n const previousView = (_views = views[views.indexOf(openView) - 1]) != null ? _views : null;\n const nextView = (_views2 = views[views.indexOf(openView) + 1]) != null ? _views2 : null;\n const changeView = React.useCallback(newView => {\n setOpenView(newView);\n\n if (onViewChange) {\n onViewChange(newView);\n }\n }, [setOpenView, onViewChange]);\n const openNext = React.useCallback(() => {\n if (nextView) {\n changeView(nextView);\n }\n }, [nextView, changeView]);\n const handleChangeAndOpenNext = React.useCallback((date, currentViewSelectionState) => {\n const isSelectionFinishedOnCurrentView = currentViewSelectionState === 'finish';\n const globalSelectionState = isSelectionFinishedOnCurrentView && Boolean(nextView) ? 'partial' : currentViewSelectionState;\n onChange(date, globalSelectionState);\n\n if (isSelectionFinishedOnCurrentView) {\n openNext();\n }\n }, [nextView, onChange, openNext]);\n return {\n handleChangeAndOpenNext,\n nextView,\n previousView,\n openNext,\n openView,\n setOpenView: changeView\n };\n}","import * as React from 'react';\nlet globalId = 0;\n\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n} // eslint-disable-next-line no-useless-concat -- Workaround for https://github.com/webpack/webpack/issues/14814\n\n\nconst maybeReactUseId = React['useId' + ''];\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\n\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n } // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n\n\n return useGlobalId(idOverride);\n}","import * as React from 'react';\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","export const CLOCK_WIDTH = 220;\nexport const CLOCK_HOUR_WIDTH = 36;\nconst clockCenter = {\n x: CLOCK_WIDTH / 2,\n y: CLOCK_WIDTH / 2\n};\nconst baseClockPoint = {\n x: clockCenter.x,\n y: 0\n};\nconst cx = baseClockPoint.x - clockCenter.x;\nconst cy = baseClockPoint.y - clockCenter.y;\n\nconst rad2deg = rad => rad * (180 / Math.PI);\n\nconst getAngleValue = (step, offsetX, offsetY) => {\n const x = offsetX - clockCenter.x;\n const y = offsetY - clockCenter.y;\n const atan = Math.atan2(cx, cy) - Math.atan2(x, y);\n let deg = rad2deg(atan);\n deg = Math.round(deg / step) * step;\n deg %= 360;\n const value = Math.floor(deg / step) || 0;\n const delta = x ** 2 + y ** 2;\n const distance = Math.sqrt(delta);\n return {\n value,\n distance\n };\n};\n\nexport const getMinutes = (offsetX, offsetY, step = 1) => {\n const angleStep = step * 6;\n let {\n value\n } = getAngleValue(angleStep, offsetX, offsetY);\n value = value * step % 60;\n return value;\n};\nexport const getHours = (offsetX, offsetY, ampm) => {\n const {\n value,\n distance\n } = getAngleValue(30, offsetX, offsetY);\n let hour = value || 12;\n\n if (!ampm) {\n if (distance < CLOCK_WIDTH / 2 - CLOCK_HOUR_WIDTH) {\n hour += 12;\n hour %= 24;\n }\n } else {\n hour %= 12;\n }\n\n return hour;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"hasSelected\", \"isInner\", \"type\", \"value\"];\nimport * as React from 'react';\nimport { styled } from '@mui/material/styles';\nimport { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from './shared';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ClockPointerRoot = styled('div')(({\n theme,\n ownerState\n}) => _extends({\n width: 2,\n backgroundColor: theme.palette.primary.main,\n position: 'absolute',\n left: 'calc(50% - 1px)',\n bottom: '50%',\n transformOrigin: 'center bottom 0px'\n}, ownerState.toAnimateTransform && {\n transition: theme.transitions.create(['transform', 'height'])\n}));\nconst ClockPointerThumb = styled('div')(({\n theme,\n ownerState\n}) => _extends({\n width: 4,\n height: 4,\n backgroundColor: theme.palette.primary.contrastText,\n borderRadius: '50%',\n position: 'absolute',\n top: -21,\n left: `calc(50% - ${CLOCK_HOUR_WIDTH / 2}px)`,\n border: `${(CLOCK_HOUR_WIDTH - 4) / 2}px solid ${theme.palette.primary.main}`,\n boxSizing: 'content-box'\n}, ownerState.hasSelected && {\n backgroundColor: theme.palette.primary.main\n}));\n/**\n * @ignore - internal component.\n * TODO: Remove class\n */\n\nexport class ClockPointer extends React.Component {\n constructor(...args) {\n super(...args);\n this.state = {\n toAnimateTransform: false,\n previousType: undefined\n };\n }\n\n render() {\n const _this$props = this.props,\n {\n className,\n isInner,\n type,\n value\n } = _this$props,\n other = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n const ownerState = _extends({}, this.props, this.state);\n\n const getAngleStyle = () => {\n const max = type === 'hours' ? 12 : 60;\n let angle = 360 / max * value;\n\n if (type === 'hours' && value > 12) {\n angle -= 360; // round up angle to max 360 degrees\n }\n\n return {\n height: Math.round((isInner ? 0.26 : 0.4) * CLOCK_WIDTH),\n transform: `rotateZ(${angle}deg)`\n };\n };\n\n return /*#__PURE__*/_jsx(ClockPointerRoot, _extends({\n style: getAngleStyle(),\n className: className,\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(ClockPointerThumb, {\n ownerState: ownerState\n })\n }));\n }\n\n}\n\nClockPointer.getDerivedStateFromProps = (nextProps, state) => {\n if (nextProps.type !== state.previousType) {\n return {\n toAnimateTransform: true,\n previousType: nextProps.type\n };\n }\n\n return {\n toAnimateTransform: false,\n previousType: nextProps.type\n };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { ClockPointer } from './ClockPointer';\nimport { useUtils } from '../internals/hooks/useUtils';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { getHours, getMinutes } from './shared';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst ClockRoot = styled('div')(({\n theme\n}) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n margin: theme.spacing(2)\n}));\nconst ClockClock = styled('div')({\n backgroundColor: 'rgba(0,0,0,.07)',\n borderRadius: '50%',\n height: 220,\n width: 220,\n flexShrink: 0,\n position: 'relative',\n pointerEvents: 'none'\n});\nconst ClockSquareMask = styled('div')(({\n ownerState\n}) => _extends({\n width: '100%',\n height: '100%',\n position: 'absolute',\n pointerEvents: 'auto',\n outline: 0,\n // Disable scroll capabilities.\n touchAction: 'none',\n userSelect: 'none'\n}, ownerState.disabled ? {} : {\n '@media (pointer: fine)': {\n cursor: 'pointer',\n borderRadius: '50%'\n },\n '&:active': {\n cursor: 'move'\n }\n}));\nconst ClockPin = styled('div')(({\n theme\n}) => ({\n width: 6,\n height: 6,\n borderRadius: '50%',\n backgroundColor: theme.palette.primary.main,\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n}));\nconst ClockAmButton = styled(IconButton)(({\n theme,\n ownerState\n}) => _extends({\n zIndex: 1,\n position: 'absolute',\n bottom: ownerState.ampmInClock ? 64 : 8,\n left: 8\n}, ownerState.meridiemMode === 'am' && {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n '&:hover': {\n backgroundColor: theme.palette.primary.light\n }\n}));\nconst ClockPmButton = styled(IconButton)(({\n theme,\n ownerState\n}) => _extends({\n zIndex: 1,\n position: 'absolute',\n bottom: ownerState.ampmInClock ? 64 : 8,\n right: 8\n}, ownerState.meridiemMode === 'pm' && {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n '&:hover': {\n backgroundColor: theme.palette.primary.light\n }\n}));\n/**\n * @ignore - internal component.\n */\n\nexport function Clock(props) {\n const {\n ampm,\n ampmInClock,\n autoFocus,\n children,\n date,\n getClockLabelText,\n handleMeridiemChange,\n isTimeDisabled,\n meridiemMode,\n minutesStep = 1,\n onChange,\n selectedId,\n type,\n value,\n disabled,\n readOnly\n } = props;\n const ownerState = props;\n const utils = useUtils();\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const isMoving = React.useRef(false);\n const isSelectedTimeDisabled = isTimeDisabled(value, type);\n const isPointerInner = !ampm && type === 'hours' && (value < 1 || value > 12);\n\n const handleValueChange = (newValue, isFinish) => {\n if (disabled || readOnly) {\n return;\n }\n\n if (isTimeDisabled(newValue, type)) {\n return;\n }\n\n onChange(newValue, isFinish);\n };\n\n const setTime = (event, isFinish) => {\n let {\n offsetX,\n offsetY\n } = event;\n\n if (offsetX === undefined) {\n const rect = event.target.getBoundingClientRect();\n offsetX = event.changedTouches[0].clientX - rect.left;\n offsetY = event.changedTouches[0].clientY - rect.top;\n }\n\n const newSelectedValue = type === 'seconds' || type === 'minutes' ? getMinutes(offsetX, offsetY, minutesStep) : getHours(offsetX, offsetY, Boolean(ampm));\n handleValueChange(newSelectedValue, isFinish);\n };\n\n const handleTouchMove = event => {\n isMoving.current = true;\n setTime(event, 'shallow');\n };\n\n const handleTouchEnd = event => {\n if (isMoving.current) {\n setTime(event, 'finish');\n isMoving.current = false;\n }\n };\n\n const handleMouseMove = event => {\n // event.buttons & PRIMARY_MOUSE_BUTTON\n if (event.buttons > 0) {\n setTime(event.nativeEvent, 'shallow');\n }\n };\n\n const handleMouseUp = event => {\n if (isMoving.current) {\n isMoving.current = false;\n }\n\n setTime(event.nativeEvent, 'finish');\n };\n\n const hasSelected = React.useMemo(() => {\n if (type === 'hours') {\n return true;\n }\n\n return value % 5 === 0;\n }, [type, value]);\n const keyboardControlStep = type === 'minutes' ? minutesStep : 1;\n const listboxRef = React.useRef(null); // Since this is rendered when a Popper is opened we can't use passive effects.\n // Focusing in passive effects in Popper causes scroll jump.\n\n useEnhancedEffect(() => {\n if (autoFocus) {\n // The ref not being resolved would be a bug in MUI.\n listboxRef.current.focus();\n }\n }, [autoFocus]);\n\n const handleKeyDown = event => {\n // TODO: Why this early exit?\n if (isMoving.current) {\n return;\n }\n\n switch (event.key) {\n case 'Home':\n // annulate both hours and minutes\n handleValueChange(0, 'partial');\n event.preventDefault();\n break;\n\n case 'End':\n handleValueChange(type === 'minutes' ? 59 : 23, 'partial');\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n handleValueChange(value + keyboardControlStep, 'partial');\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n handleValueChange(value - keyboardControlStep, 'partial');\n event.preventDefault();\n break;\n\n default: // do nothing\n\n }\n };\n\n return /*#__PURE__*/_jsxs(ClockRoot, {\n children: [/*#__PURE__*/_jsxs(ClockClock, {\n children: [/*#__PURE__*/_jsx(ClockSquareMask, {\n onTouchMove: handleTouchMove,\n onTouchEnd: handleTouchEnd,\n onMouseUp: handleMouseUp,\n onMouseMove: handleMouseMove,\n ownerState: {\n disabled\n }\n }), !isSelectedTimeDisabled && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ClockPin, {}), date && /*#__PURE__*/_jsx(ClockPointer, {\n type: type,\n value: value,\n isInner: isPointerInner,\n hasSelected: hasSelected\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n \"aria-activedescendant\": selectedId,\n \"aria-label\": getClockLabelText(type, date, utils),\n ref: listboxRef,\n role: \"listbox\",\n onKeyDown: handleKeyDown,\n tabIndex: 0,\n children: children\n })]\n }), ampm && (wrapperVariant === 'desktop' || ampmInClock) && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ClockAmButton, {\n onClick: readOnly ? undefined : () => handleMeridiemChange('am'),\n disabled: disabled || meridiemMode === null,\n ownerState: ownerState,\n children: /*#__PURE__*/_jsx(Typography, {\n variant: \"caption\",\n children: \"AM\"\n })\n }), /*#__PURE__*/_jsx(ClockPmButton, {\n disabled: disabled || meridiemMode === null,\n onClick: readOnly ? undefined : () => handleMeridiemChange('pm'),\n ownerState: ownerState,\n children: /*#__PURE__*/_jsx(Typography, {\n variant: \"caption\",\n children: \"PM\"\n })\n })]\n })]\n });\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disabled\", \"index\", \"inner\", \"label\", \"selected\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/material';\nimport { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from './shared';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const classes = generateUtilityClasses('PrivateClockNumber', ['selected', 'disabled']);\nconst ClockNumberRoot = styled('span')(({\n theme,\n ownerState\n}) => _extends({\n height: CLOCK_HOUR_WIDTH,\n width: CLOCK_HOUR_WIDTH,\n position: 'absolute',\n left: `calc((100% - ${CLOCK_HOUR_WIDTH}px) / 2)`,\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '50%',\n color: theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n '&:focused': {\n backgroundColor: theme.palette.background.paper\n },\n [`&.${classes.selected}`]: {\n color: theme.palette.primary.contrastText\n },\n [`&.${classes.disabled}`]: {\n pointerEvents: 'none',\n color: theme.palette.text.disabled\n }\n}, ownerState.inner && _extends({}, theme.typography.body2, {\n color: theme.palette.text.secondary\n})));\n/**\n * @ignore - internal component.\n */\n\nexport function ClockNumber(props) {\n const {\n className,\n disabled,\n index,\n inner,\n label,\n selected\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const angle = index % 12 / 12 * Math.PI * 2 - Math.PI / 2;\n const length = (CLOCK_WIDTH - CLOCK_HOUR_WIDTH - 2) / 2 * (inner ? 0.65 : 1);\n const x = Math.round(Math.cos(angle) * length);\n const y = Math.round(Math.sin(angle) * length);\n return /*#__PURE__*/_jsx(ClockNumberRoot, _extends({\n className: clsx(className, selected && classes.selected, disabled && classes.disabled),\n \"aria-disabled\": disabled ? true : undefined,\n \"aria-selected\": selected ? true : undefined,\n role: \"option\",\n style: {\n transform: `translate(${x}px, ${y + (CLOCK_WIDTH - CLOCK_HOUR_WIDTH) / 2}px`\n },\n ownerState: ownerState\n }, other, {\n children: label\n }));\n}","import * as React from 'react';\nimport { ClockNumber } from './ClockNumber';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n * @ignore - internal component.\n */\nexport const getHourNumbers = ({\n ampm,\n date,\n getClockNumberText,\n isDisabled,\n selectedId,\n utils\n}) => {\n const currentHours = date ? utils.getHours(date) : null;\n const hourNumbers = [];\n const startHour = ampm ? 1 : 0;\n const endHour = ampm ? 12 : 23;\n\n const isSelected = hour => {\n if (currentHours === null) {\n return false;\n }\n\n if (ampm) {\n if (hour === 12) {\n return currentHours === 12 || currentHours === 0;\n }\n\n return currentHours === hour || currentHours - 12 === hour;\n }\n\n return currentHours === hour;\n };\n\n for (let hour = startHour; hour <= endHour; hour += 1) {\n let label = hour.toString();\n\n if (hour === 0) {\n label = '00';\n }\n\n const inner = !ampm && (hour === 0 || hour > 12);\n label = utils.formatNumber(label);\n const selected = isSelected(hour);\n hourNumbers.push( /*#__PURE__*/_jsx(ClockNumber, {\n id: selected ? selectedId : undefined,\n index: hour,\n inner: inner,\n selected: selected,\n disabled: isDisabled(hour),\n label: label,\n \"aria-label\": getClockNumberText(label)\n }, hour));\n }\n\n return hourNumbers;\n};\nexport const getMinutesNumbers = ({\n utils,\n value,\n isDisabled,\n getClockNumberText,\n selectedId\n}) => {\n const f = utils.formatNumber;\n return [[5, f('05')], [10, f('10')], [15, f('15')], [20, f('20')], [25, f('25')], [30, f('30')], [35, f('35')], [40, f('40')], [45, f('45')], [50, f('50')], [55, f('55')], [0, f('00')]].map(([numberValue, label], index) => {\n const selected = numberValue === value;\n return /*#__PURE__*/_jsx(ClockNumber, {\n label: label,\n id: selected ? selectedId : undefined,\n index: index + 1,\n inner: false,\n disabled: isDisabled(numberValue),\n selected: selected,\n \"aria-label\": getClockNumberText(label)\n }, numberValue);\n });\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"components\", \"componentsProps\", \"isLeftDisabled\", \"isLeftHidden\", \"isRightDisabled\", \"isRightHidden\", \"leftArrowButtonText\", \"onLeftClick\", \"onRightClick\", \"rightArrowButtonText\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Typography from '@mui/material/Typography';\nimport { generateUtilityClasses } from '@mui/material';\nimport { useTheme, styled } from '@mui/material/styles';\nimport IconButton from '@mui/material/IconButton';\nimport { ArrowLeft, ArrowRight } from './icons';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst classes = generateUtilityClasses('MuiPickersArrowSwitcher', ['root', 'spacer', 'button']);\nconst PickersArrowSwitcherRoot = styled('div', {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex'\n});\nconst PickersArrowSwitcherSpacer = styled('div', {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Spacer',\n overridesResolver: (props, styles) => styles.spacer\n})(({\n theme\n}) => ({\n width: theme.spacing(3)\n}));\nconst PickersArrowSwitcherButton = styled(IconButton, {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Button',\n overridesResolver: (props, styles) => styles.button\n})(({\n ownerState\n}) => _extends({}, ownerState.hidden && {\n visibility: 'hidden'\n}));\nexport const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function PickersArrowSwitcher(props, ref) {\n const {\n children,\n className,\n components,\n componentsProps,\n isLeftDisabled,\n isLeftHidden,\n isRightDisabled,\n isRightHidden,\n leftArrowButtonText,\n onLeftClick,\n onRightClick,\n rightArrowButtonText\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const leftArrowButtonProps = (componentsProps == null ? void 0 : componentsProps.leftArrowButton) || {};\n const LeftArrowIcon = (components == null ? void 0 : components.LeftArrowIcon) || ArrowLeft;\n const rightArrowButtonProps = (componentsProps == null ? void 0 : componentsProps.rightArrowButton) || {};\n const RightArrowIcon = (components == null ? void 0 : components.RightArrowIcon) || ArrowRight;\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersArrowSwitcherRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(PickersArrowSwitcherButton, _extends({\n as: components == null ? void 0 : components.LeftArrowButton,\n size: \"small\",\n \"aria-label\": leftArrowButtonText,\n title: leftArrowButtonText,\n disabled: isLeftDisabled,\n edge: \"end\",\n onClick: onLeftClick\n }, leftArrowButtonProps, {\n className: clsx(classes.button, leftArrowButtonProps.className),\n ownerState: _extends({}, ownerState, leftArrowButtonProps, {\n hidden: isLeftHidden\n }),\n children: isRtl ? /*#__PURE__*/_jsx(RightArrowIcon, {}) : /*#__PURE__*/_jsx(LeftArrowIcon, {})\n })), children ? /*#__PURE__*/_jsx(Typography, {\n variant: \"subtitle1\",\n component: \"span\",\n children: children\n }) : /*#__PURE__*/_jsx(PickersArrowSwitcherSpacer, {\n className: classes.spacer,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(PickersArrowSwitcherButton, _extends({\n as: components == null ? void 0 : components.RightArrowButton,\n size: \"small\",\n \"aria-label\": rightArrowButtonText,\n title: rightArrowButtonText,\n edge: \"start\",\n disabled: isRightDisabled,\n onClick: onRightClick\n }, rightArrowButtonProps, {\n className: clsx(classes.button, rightArrowButtonProps.className),\n ownerState: _extends({}, ownerState, rightArrowButtonProps, {\n hidden: isRightHidden\n }),\n children: isRtl ? /*#__PURE__*/_jsx(LeftArrowIcon, {}) : /*#__PURE__*/_jsx(RightArrowIcon, {})\n }))]\n }));\n});","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getClockPickerUtilityClass(slot) {\n return generateUtilityClass('MuiClockPicker', slot);\n}\nexport const clockPickerClasses = generateUtilityClasses('MuiClockPicker', ['root', 'arrowSwitcher']);","import { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH, VIEW_HEIGHT } from '../../constants/dimensions';\nexport const PickerViewRoot = styled('div')({\n overflowX: 'hidden',\n width: DIALOG_WIDTH,\n maxHeight: VIEW_HEIGHT,\n display: 'flex',\n flexDirection: 'column',\n margin: '0 auto'\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { Clock } from './Clock';\nimport { useUtils, useNow, useLocaleText } from '../internals/hooks/useUtils';\nimport { buildDeprecatedPropsWarning } from '../internals/utils/warning';\nimport { getHourNumbers, getMinutesNumbers } from './ClockNumbers';\nimport { PickersArrowSwitcher } from '../internals/components/PickersArrowSwitcher';\nimport { convertValueToMeridiem, createIsAfterIgnoreDatePart } from '../internals/utils/time-utils';\nimport { useViews } from '../internals/hooks/useViews';\nimport { useMeridiemMode } from '../internals/hooks/date-helpers-hooks';\nimport { getClockPickerUtilityClass } from './clockPickerClasses';\nimport { PickerViewRoot } from '../internals/components/PickerViewRoot';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n arrowSwitcher: ['arrowSwitcher']\n };\n return composeClasses(slots, getClockPickerUtilityClass, classes);\n};\n\nconst ClockPickerRoot = styled(PickerViewRoot, {\n name: 'MuiClockPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'column'\n});\nconst ClockPickerArrowSwitcher = styled(PickersArrowSwitcher, {\n name: 'MuiClockPicker',\n slot: 'ArrowSwitcher',\n overridesResolver: (props, styles) => styles.arrowSwitcher\n})({\n position: 'absolute',\n right: 12,\n top: 15\n});\nconst deprecatedPropsWarning = buildDeprecatedPropsWarning('Props for translation are deprecated. See https://mui.com/x/react-date-pickers/localization for more information.');\n/**\n *\n * API:\n *\n * - [ClockPicker API](https://mui.com/x/api/date-pickers/clock-picker/)\n */\n\nexport const ClockPicker = /*#__PURE__*/React.forwardRef(function ClockPicker(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClockPicker'\n });\n const {\n ampm = false,\n ampmInClock = false,\n autoFocus,\n components,\n componentsProps,\n date,\n disableIgnoringDatePartForTimeValidation,\n getClockLabelText: getClockLabelTextProp,\n getHoursClockNumberText: getHoursClockNumberTextProp,\n getMinutesClockNumberText: getMinutesClockNumberTextProp,\n getSecondsClockNumberText: getSecondsClockNumberTextProp,\n leftArrowButtonText: leftArrowButtonTextProp,\n maxTime,\n minTime,\n minutesStep = 1,\n rightArrowButtonText: rightArrowButtonTextProp,\n shouldDisableTime,\n showViewSwitcher,\n onChange,\n view,\n views = ['hours', 'minutes'],\n openTo,\n onViewChange,\n className,\n disabled,\n readOnly\n } = props;\n deprecatedPropsWarning({\n leftArrowButtonText: leftArrowButtonTextProp,\n rightArrowButtonText: rightArrowButtonTextProp,\n getClockLabelText: getClockLabelTextProp,\n getHoursClockNumberText: getHoursClockNumberTextProp,\n getMinutesClockNumberText: getMinutesClockNumberTextProp,\n getSecondsClockNumberText: getSecondsClockNumberTextProp\n });\n const localeText = useLocaleText();\n const leftArrowButtonText = leftArrowButtonTextProp != null ? leftArrowButtonTextProp : localeText.openPreviousView;\n const rightArrowButtonText = rightArrowButtonTextProp != null ? rightArrowButtonTextProp : localeText.openNextView;\n const getClockLabelText = getClockLabelTextProp != null ? getClockLabelTextProp : localeText.clockLabelText;\n const getHoursClockNumberText = getHoursClockNumberTextProp != null ? getHoursClockNumberTextProp : localeText.hoursClockNumberText;\n const getMinutesClockNumberText = getMinutesClockNumberTextProp != null ? getMinutesClockNumberTextProp : localeText.minutesClockNumberText;\n const getSecondsClockNumberText = getSecondsClockNumberTextProp != null ? getSecondsClockNumberTextProp : localeText.secondsClockNumberText;\n const {\n openView,\n setOpenView,\n nextView,\n previousView,\n handleChangeAndOpenNext\n } = useViews({\n view,\n views,\n openTo,\n onViewChange,\n onChange\n });\n const now = useNow();\n const utils = useUtils();\n const dateOrMidnight = React.useMemo(() => date || utils.setSeconds(utils.setMinutes(utils.setHours(now, 0), 0), 0), [date, now, utils]);\n const {\n meridiemMode,\n handleMeridiemChange\n } = useMeridiemMode(dateOrMidnight, ampm, handleChangeAndOpenNext);\n const isTimeDisabled = React.useCallback((rawValue, viewType) => {\n const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, utils);\n\n const containsValidTime = ({\n start,\n end\n }) => {\n if (minTime && isAfter(minTime, end)) {\n return false;\n }\n\n if (maxTime && isAfter(start, maxTime)) {\n return false;\n }\n\n return true;\n };\n\n const isValidValue = (value, step = 1) => {\n if (value % step !== 0) {\n return false;\n }\n\n if (shouldDisableTime) {\n return !shouldDisableTime(value, viewType);\n }\n\n return true;\n };\n\n switch (viewType) {\n case 'hours':\n {\n const value = convertValueToMeridiem(rawValue, meridiemMode, ampm);\n const dateWithNewHours = utils.setHours(dateOrMidnight, value);\n const start = utils.setSeconds(utils.setMinutes(dateWithNewHours, 0), 0);\n const end = utils.setSeconds(utils.setMinutes(dateWithNewHours, 59), 59);\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(value);\n }\n\n case 'minutes':\n {\n const dateWithNewMinutes = utils.setMinutes(dateOrMidnight, rawValue);\n const start = utils.setSeconds(dateWithNewMinutes, 0);\n const end = utils.setSeconds(dateWithNewMinutes, 59);\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(rawValue, minutesStep);\n }\n\n case 'seconds':\n {\n const dateWithNewSeconds = utils.setSeconds(dateOrMidnight, rawValue);\n const start = dateWithNewSeconds;\n const end = dateWithNewSeconds;\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(rawValue);\n }\n\n default:\n throw new Error('not supported');\n }\n }, [ampm, dateOrMidnight, disableIgnoringDatePartForTimeValidation, maxTime, meridiemMode, minTime, minutesStep, shouldDisableTime, utils]);\n const selectedId = useId();\n const viewProps = React.useMemo(() => {\n switch (openView) {\n case 'hours':\n {\n const handleHoursChange = (value, isFinish) => {\n const valueWithMeridiem = convertValueToMeridiem(value, meridiemMode, ampm);\n handleChangeAndOpenNext(utils.setHours(dateOrMidnight, valueWithMeridiem), isFinish);\n };\n\n return {\n onChange: handleHoursChange,\n value: utils.getHours(dateOrMidnight),\n children: getHourNumbers({\n date,\n utils,\n ampm,\n onChange: handleHoursChange,\n getClockNumberText: getHoursClockNumberText,\n isDisabled: value => disabled || isTimeDisabled(value, 'hours'),\n selectedId\n })\n };\n }\n\n case 'minutes':\n {\n const minutesValue = utils.getMinutes(dateOrMidnight);\n\n const handleMinutesChange = (value, isFinish) => {\n handleChangeAndOpenNext(utils.setMinutes(dateOrMidnight, value), isFinish);\n };\n\n return {\n value: minutesValue,\n onChange: handleMinutesChange,\n children: getMinutesNumbers({\n utils,\n value: minutesValue,\n onChange: handleMinutesChange,\n getClockNumberText: getMinutesClockNumberText,\n isDisabled: value => disabled || isTimeDisabled(value, 'minutes'),\n selectedId\n })\n };\n }\n\n case 'seconds':\n {\n const secondsValue = utils.getSeconds(dateOrMidnight);\n\n const handleSecondsChange = (value, isFinish) => {\n handleChangeAndOpenNext(utils.setSeconds(dateOrMidnight, value), isFinish);\n };\n\n return {\n value: secondsValue,\n onChange: handleSecondsChange,\n children: getMinutesNumbers({\n utils,\n value: secondsValue,\n onChange: handleSecondsChange,\n getClockNumberText: getSecondsClockNumberText,\n isDisabled: value => disabled || isTimeDisabled(value, 'seconds'),\n selectedId\n })\n };\n }\n\n default:\n throw new Error('You must provide the type for ClockView');\n }\n }, [openView, utils, date, ampm, getHoursClockNumberText, getMinutesClockNumberText, getSecondsClockNumberText, meridiemMode, handleChangeAndOpenNext, dateOrMidnight, isTimeDisabled, selectedId, disabled]);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(ClockPickerRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [showViewSwitcher && /*#__PURE__*/_jsx(ClockPickerArrowSwitcher, {\n className: classes.arrowSwitcher,\n leftArrowButtonText: leftArrowButtonText,\n rightArrowButtonText: rightArrowButtonText,\n components: components,\n componentsProps: componentsProps,\n onLeftClick: () => setOpenView(previousView),\n onRightClick: () => setOpenView(nextView),\n isLeftDisabled: !previousView,\n isRightDisabled: !nextView,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(Clock, _extends({\n autoFocus: autoFocus,\n date: date,\n ampmInClock: ampmInClock,\n type: openView,\n ampm: ampm,\n getClockLabelText: getClockLabelText,\n minutesStep: minutesStep,\n isTimeDisabled: isTimeDisabled,\n meridiemMode: meridiemMode,\n handleMeridiemChange: handleMeridiemChange,\n selectedId: selectedId,\n disabled: disabled,\n readOnly: readOnly\n }, viewProps))]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? ClockPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * 12h/24h view for hour selection clock.\n * @default false\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n\n /**\n * Set to `true` if focus should be moved to clock picker.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n className: PropTypes.string,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Selected date @DateIOType.\n */\n date: PropTypes.any,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get clock number aria-text for hours.\n * @param {string} hours The hours to format.\n * @returns {string} the formatted hours text.\n * @default (hours: string) => `${hours} hours`\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n */\n getHoursClockNumberText: PropTypes.func,\n\n /**\n * Get clock number aria-text for minutes.\n * @param {string} minutes The minutes to format.\n * @returns {string} the formatted minutes text.\n * @default (minutes: string) => `${minutes} minutes`\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n */\n getMinutesClockNumberText: PropTypes.func,\n\n /**\n * Get clock number aria-text for seconds.\n * @param {string} seconds The seconds to format.\n * @returns {string} the formatted seconds text.\n * @default (seconds: string) => `${seconds} seconds`\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n */\n getSecondsClockNumberText: PropTypes.func,\n\n /**\n * Left arrow icon aria-label text.\n * @default 'open previous view'\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * On change callback @DateIOType.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired on view change.\n * @param {ClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Initially open view.\n * @default 'hours'\n */\n openTo: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Right arrow icon aria-label text.\n * @default 'open next view'\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n showViewSwitcher: PropTypes.bool,\n\n /**\n * Controlled open view.\n */\n view: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n /**\n * Views for calendar picker.\n * @default ['hours', 'minutes']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'minutes', 'seconds']).isRequired)\n} : void 0;","export const buildDeprecatedPropsWarning = message => {\n let alreadyWarned = false;\n\n if (process.env.NODE_ENV === 'production') {\n return () => {};\n }\n\n const cleanMessage = Array.isArray(message) ? message.join('\\n') : message;\n return deprecatedProps => {\n const deprecatedKeys = Object.entries(deprecatedProps).filter(([, value]) => value !== undefined).map(([key]) => `- ${key}`);\n\n if (!alreadyWarned && deprecatedKeys.length > 0) {\n alreadyWarned = true;\n console.warn([cleanMessage, 'deprecated props observed:', ...deprecatedKeys].join('\\n'));\n }\n };\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disabled\", \"onSelect\", \"selected\", \"value\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Typography from '@mui/material/Typography';\nimport { styled, alpha } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/material';\nimport { onSpaceOrEnter } from '../internals/utils/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst classes = generateUtilityClasses('PrivatePickersMonth', ['root', 'selected']);\nconst PickersMonthRoot = styled(Typography)(({\n theme\n}) => _extends({\n flex: '1 0 33.33%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'unset',\n backgroundColor: 'transparent',\n border: 0,\n outline: 0\n}, theme.typography.subtitle1, {\n margin: '8px 0',\n height: 36,\n borderRadius: 18,\n cursor: 'pointer',\n '&:focus, &:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n '&:disabled': {\n pointerEvents: 'none',\n color: theme.palette.text.secondary\n },\n [`&.${classes.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:focus, &:hover': {\n backgroundColor: theme.palette.primary.dark\n }\n }\n}));\n/**\n * @ignore - do not document.\n */\n\nexport const PickersMonth = props => {\n const {\n disabled,\n onSelect,\n selected,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const handleSelection = () => {\n onSelect(value);\n };\n\n return /*#__PURE__*/_jsx(PickersMonthRoot, _extends({\n component: \"button\",\n type: \"button\",\n className: clsx(classes.root, selected && classes.selected),\n tabIndex: disabled ? -1 : 0,\n onClick: handleSelection,\n onKeyDown: onSpaceOrEnter(handleSelection),\n color: selected ? 'primary' : undefined,\n variant: selected ? 'h5' : 'subtitle1',\n disabled: disabled\n }, other));\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getMonthPickerUtilityClass(slot) {\n return generateUtilityClass('MuiMonthPicker', slot);\n}\nexport const monthPickerClasses = generateUtilityClasses('MuiMonthPicker', ['root']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"date\", \"disabled\", \"disableFuture\", \"disablePast\", \"maxDate\", \"minDate\", \"onChange\", \"shouldDisableMonth\", \"readOnly\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { PickersMonth } from './PickersMonth';\nimport { useUtils, useNow, useDefaultDates } from '../internals/hooks/useUtils';\nimport { getMonthPickerUtilityClass } from './monthPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getMonthPickerUtilityClass, classes);\n};\n\nconst MonthPickerRoot = styled('div', {\n name: 'MuiMonthPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n width: 310,\n display: 'flex',\n flexWrap: 'wrap',\n alignContent: 'stretch',\n margin: '0 4px'\n});\nexport const MonthPicker = /*#__PURE__*/React.forwardRef(function MonthPicker(inProps, ref) {\n const utils = useUtils();\n const now = useNow();\n const defaultDates = useDefaultDates();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiMonthPicker'\n });\n\n const {\n className,\n date: propDate,\n disabled,\n disableFuture,\n disablePast,\n maxDate = defaultDates.maxDate,\n minDate = defaultDates.minDate,\n onChange,\n shouldDisableMonth,\n readOnly\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const currentDate = propDate != null ? propDate : now;\n const currentMonth = utils.getMonth(currentDate);\n\n const isMonthDisabled = month => {\n const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);\n const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);\n\n if (utils.isBefore(month, firstEnabledMonth)) {\n return true;\n }\n\n if (utils.isAfter(month, lastEnabledMonth)) {\n return true;\n }\n\n if (!shouldDisableMonth) {\n return false;\n }\n\n return shouldDisableMonth(month);\n };\n\n const onMonthSelect = month => {\n if (readOnly) {\n return;\n }\n\n const newDate = utils.setMonth(currentDate, month);\n onChange(newDate, 'finish');\n };\n\n return /*#__PURE__*/_jsx(MonthPickerRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: utils.getMonthArray(currentDate).map(month => {\n const monthNumber = utils.getMonth(month);\n const monthText = utils.format(month, 'monthShort');\n return /*#__PURE__*/_jsx(PickersMonth, {\n value: monthNumber,\n selected: monthNumber === currentMonth,\n onSelect: onMonthSelect,\n disabled: disabled || isMonthDisabled(month),\n children: monthText\n }, monthText);\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MonthPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * className applied to the root element.\n */\n className: PropTypes.string,\n\n /**\n * Date value for the MonthPicker\n */\n date: PropTypes.any,\n\n /**\n * If `true` picker is disabled\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired on date change.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * If `true` picker is readonly\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useIsDayDisabled } from '../internals/hooks/validation/useDateValidation';\nimport { useUtils, useNow } from '../internals/hooks/useUtils';\nexport const createCalendarStateReducer = (reduceAnimations, disableSwitchToMonthOnDayFocus, utils) => (state, action) => {\n switch (action.type) {\n case 'changeMonth':\n return _extends({}, state, {\n slideDirection: action.direction,\n currentMonth: action.newMonth,\n isMonthSwitchingAnimating: !reduceAnimations\n });\n\n case 'finishMonthSwitchingAnimation':\n return _extends({}, state, {\n isMonthSwitchingAnimating: false\n });\n\n case 'changeFocusedDay':\n {\n if (state.focusedDay != null && action.focusedDay != null && utils.isSameDay(action.focusedDay, state.focusedDay)) {\n return state;\n }\n\n const needMonthSwitch = action.focusedDay != null && !disableSwitchToMonthOnDayFocus && !utils.isSameMonth(state.currentMonth, action.focusedDay);\n return _extends({}, state, {\n focusedDay: action.focusedDay,\n isMonthSwitchingAnimating: needMonthSwitch && !reduceAnimations,\n currentMonth: needMonthSwitch ? utils.startOfMonth(action.focusedDay) : state.currentMonth,\n slideDirection: action.focusedDay != null && utils.isAfterDay(action.focusedDay, state.currentMonth) ? 'left' : 'right'\n });\n }\n\n default:\n throw new Error('missing support');\n }\n};\nexport const useCalendarState = ({\n date,\n defaultCalendarMonth,\n disableFuture,\n disablePast,\n disableSwitchToMonthOnDayFocus = false,\n maxDate,\n minDate,\n onMonthChange,\n reduceAnimations,\n shouldDisableDate\n}) => {\n var _ref;\n\n const now = useNow();\n const utils = useUtils();\n const reducerFn = React.useRef(createCalendarStateReducer(Boolean(reduceAnimations), disableSwitchToMonthOnDayFocus, utils)).current;\n const [calendarState, dispatch] = React.useReducer(reducerFn, {\n isMonthSwitchingAnimating: false,\n focusedDay: date || now,\n currentMonth: utils.startOfMonth((_ref = date != null ? date : defaultCalendarMonth) != null ? _ref : now),\n slideDirection: 'left'\n });\n const handleChangeMonth = React.useCallback(payload => {\n dispatch(_extends({\n type: 'changeMonth'\n }, payload));\n\n if (onMonthChange) {\n onMonthChange(payload.newMonth);\n }\n }, [onMonthChange]);\n const changeMonth = React.useCallback(newDate => {\n const newDateRequested = newDate != null ? newDate : now;\n\n if (utils.isSameMonth(newDateRequested, calendarState.currentMonth)) {\n return;\n }\n\n handleChangeMonth({\n newMonth: utils.startOfMonth(newDateRequested),\n direction: utils.isAfterDay(newDateRequested, calendarState.currentMonth) ? 'left' : 'right'\n });\n }, [calendarState.currentMonth, handleChangeMonth, now, utils]);\n const isDateDisabled = useIsDayDisabled({\n shouldDisableDate,\n minDate,\n maxDate,\n disableFuture,\n disablePast\n });\n const onMonthSwitchingAnimationEnd = React.useCallback(() => {\n dispatch({\n type: 'finishMonthSwitchingAnimation'\n });\n }, []);\n const changeFocusedDay = React.useCallback(newFocusedDate => {\n if (!isDateDisabled(newFocusedDate)) {\n dispatch({\n type: 'changeFocusedDay',\n focusedDay: newFocusedDate\n });\n }\n }, [isDateDisabled]);\n return {\n calendarState,\n changeMonth,\n changeFocusedDay,\n isDateDisabled,\n onMonthSwitchingAnimationEnd,\n handleChangeMonth\n };\n};","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\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}","import React from 'react';\nexport default React.createContext(null);","import { Children, cloneElement, isValidElement } from 'react';\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 */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) 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\nexport function 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\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return 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}\nexport function 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 (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = 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] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = 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}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\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/**\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\nvar TransitionGroup = /*#__PURE__*/function (_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(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\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 ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = 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 contextValue = this.state.contextValue;\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 /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\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.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.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.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.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.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.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","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 * as React from 'react';\nimport clsx from 'clsx';\nimport Fade from '@mui/material/Fade';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/material';\nimport { TransitionGroup } from 'react-transition-group';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst classes = generateUtilityClasses('PrivatePickersFadeTransitionGroup', ['root']);\nconst animationDuration = 500;\nconst PickersFadeTransitionGroupRoot = styled(TransitionGroup)({\n display: 'block',\n position: 'relative'\n});\n/**\n * @ignore - do not document.\n */\n\nexport const PickersFadeTransitionGroup = ({\n children,\n className,\n reduceAnimations,\n transKey\n}) => {\n if (reduceAnimations) {\n return children;\n }\n\n return /*#__PURE__*/_jsx(PickersFadeTransitionGroupRoot, {\n className: clsx(classes.root, className),\n children: /*#__PURE__*/_jsx(Fade, {\n appear: false,\n mountOnEnter: true,\n unmountOnExit: true,\n timeout: {\n appear: animationDuration,\n enter: animationDuration / 2,\n exit: 0\n },\n children: children\n }, transKey)\n });\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersDayUtilityClass(slot) {\n return generateUtilityClass('MuiPickersDay', slot);\n}\nexport const pickersDayClasses = generateUtilityClasses('MuiPickersDay', ['root', 'dayWithMargin', 'dayOutsideMonth', 'hiddenDaySpacingFiller', 'today', 'selected', 'disabled']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"day\", \"disabled\", \"disableHighlightToday\", \"disableMargin\", \"hidden\", \"isAnimating\", \"onClick\", \"onDayFocus\", \"onDaySelect\", \"onFocus\", \"onKeyDown\", \"outsideCurrentMonth\", \"selected\", \"showDaysOutsideCurrentMonth\", \"children\", \"today\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { useTheme, alpha, styled, useThemeProps } from '@mui/material/styles';\nimport { useForkRef } from '@mui/material/utils';\nimport { useUtils } from '../internals/hooks/useUtils';\nimport { DAY_SIZE, DAY_MARGIN } from '../internals/constants/dimensions';\nimport { getPickersDayUtilityClass, pickersDayClasses } from './pickersDayClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n selected,\n disableMargin,\n disableHighlightToday,\n today,\n outsideCurrentMonth,\n showDaysOutsideCurrentMonth,\n classes\n } = ownerState;\n const slots = {\n root: ['root', selected && 'selected', !disableMargin && 'dayWithMargin', !disableHighlightToday && today && 'today', outsideCurrentMonth && showDaysOutsideCurrentMonth && 'dayOutsideMonth'],\n hiddenDaySpacingFiller: ['hiddenDaySpacingFiller']\n };\n return composeClasses(slots, getPickersDayUtilityClass, classes);\n};\n\nconst styleArg = ({\n theme,\n ownerState\n}) => _extends({}, theme.typography.caption, {\n width: DAY_SIZE,\n height: DAY_SIZE,\n borderRadius: '50%',\n padding: 0,\n // background required here to prevent collides with the other days when animating with transition group\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n '&:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n '&:focus': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n [`&.${pickersDayClasses.selected}`]: {\n willChange: 'background-color',\n backgroundColor: theme.palette.primary.dark\n }\n },\n [`&.${pickersDayClasses.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n fontWeight: theme.typography.fontWeightMedium,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.short\n }),\n '&:hover': {\n willChange: 'background-color',\n backgroundColor: theme.palette.primary.dark\n }\n },\n [`&.${pickersDayClasses.disabled}`]: {\n color: theme.palette.text.disabled\n }\n}, !ownerState.disableMargin && {\n margin: `0 ${DAY_MARGIN}px`\n}, ownerState.outsideCurrentMonth && ownerState.showDaysOutsideCurrentMonth && {\n color: theme.palette.text.secondary\n}, !ownerState.disableHighlightToday && ownerState.today && {\n [`&:not(.${pickersDayClasses.selected})`]: {\n border: `1px solid ${theme.palette.text.secondary}`\n }\n});\n\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disableMargin && styles.dayWithMargin, !ownerState.disableHighlightToday && ownerState.today && styles.today, !ownerState.outsideCurrentMonth && ownerState.showDaysOutsideCurrentMonth && styles.dayOutsideMonth, ownerState.outsideCurrentMonth && !ownerState.showDaysOutsideCurrentMonth && styles.hiddenDaySpacingFiller];\n};\n\nconst PickersDayRoot = styled(ButtonBase, {\n name: 'MuiPickersDay',\n slot: 'Root',\n overridesResolver\n})(styleArg);\nconst PickersDayFiller = styled('div', {\n name: 'MuiPickersDay',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({}, styleArg({\n theme,\n ownerState\n}), {\n visibility: 'hidden'\n}));\n\nconst noop = () => {};\n\nconst PickersDayRaw = /*#__PURE__*/React.forwardRef(function PickersDay(inProps, forwardedRef) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersDay'\n });\n\n const {\n autoFocus = false,\n className,\n day,\n disabled = false,\n disableHighlightToday = false,\n disableMargin = false,\n isAnimating,\n onClick,\n onDayFocus = noop,\n onDaySelect,\n onFocus,\n onKeyDown,\n outsideCurrentMonth,\n selected = false,\n showDaysOutsideCurrentMonth = false,\n children,\n today: isToday = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n autoFocus,\n disabled,\n disableHighlightToday,\n disableMargin,\n selected,\n showDaysOutsideCurrentMonth,\n today: isToday\n });\n\n const classes = useUtilityClasses(ownerState);\n const utils = useUtils();\n const ref = React.useRef(null);\n const handleRef = useForkRef(ref, forwardedRef); // Since this is rendered when a Popper is opened we can't use passive effects.\n // Focusing in passive effects in Popper causes scroll jump.\n\n useEnhancedEffect(() => {\n if (autoFocus && !disabled && !isAnimating && !outsideCurrentMonth) {\n // ref.current being null would be a bug in MUI\n ref.current.focus();\n }\n }, [autoFocus, disabled, isAnimating, outsideCurrentMonth]);\n\n const handleFocus = event => {\n if (onDayFocus) {\n onDayFocus(day);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const handleClick = event => {\n if (!disabled) {\n onDaySelect(day, 'finish');\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n const theme = useTheme();\n\n function handleKeyDown(event) {\n if (onKeyDown !== undefined) {\n onKeyDown(event);\n }\n\n switch (event.key) {\n case 'ArrowUp':\n onDayFocus(utils.addDays(day, -7));\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n onDayFocus(utils.addDays(day, 7));\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n onDayFocus(utils.addDays(day, theme.direction === 'ltr' ? -1 : 1));\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n onDayFocus(utils.addDays(day, theme.direction === 'ltr' ? 1 : -1));\n event.preventDefault();\n break;\n\n case 'Home':\n onDayFocus(utils.startOfWeek(day));\n event.preventDefault();\n break;\n\n case 'End':\n onDayFocus(utils.endOfWeek(day));\n event.preventDefault();\n break;\n\n case 'PageUp':\n onDayFocus(utils.getNextMonth(day));\n event.preventDefault();\n break;\n\n case 'PageDown':\n onDayFocus(utils.getPreviousMonth(day));\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n\n if (outsideCurrentMonth && !showDaysOutsideCurrentMonth) {\n return /*#__PURE__*/_jsx(PickersDayFiller, {\n className: clsx(classes.root, classes.hiddenDaySpacingFiller, className),\n ownerState: ownerState\n });\n }\n\n return /*#__PURE__*/_jsx(PickersDayRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: handleRef,\n centerRipple: true,\n disabled: disabled,\n \"aria-label\": !children ? utils.format(day, 'fullDate') : undefined,\n tabIndex: selected ? 0 : -1,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onClick: handleClick\n }, other, {\n children: !children ? utils.format(day, 'dayOfMonth') : children\n }));\n});\nexport const areDayPropsEqual = (prevProps, nextProps) => {\n return prevProps.autoFocus === nextProps.autoFocus && prevProps.isAnimating === nextProps.isAnimating && prevProps.today === nextProps.today && prevProps.disabled === nextProps.disabled && prevProps.selected === nextProps.selected && prevProps.disableMargin === nextProps.disableMargin && prevProps.showDaysOutsideCurrentMonth === nextProps.showDaysOutsideCurrentMonth && prevProps.disableHighlightToday === nextProps.disableHighlightToday && prevProps.className === nextProps.className && prevProps.outsideCurrentMonth === nextProps.outsideCurrentMonth && prevProps.onDayFocus === nextProps.onDayFocus && prevProps.onDaySelect === nextProps.onDaySelect;\n};\nprocess.env.NODE_ENV !== \"production\" ? PickersDayRaw.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * The date to show.\n */\n day: PropTypes.any.isRequired,\n\n /**\n * If `true`, renders as disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true`, days are rendering without margin. Useful for displaying linked range of days.\n * @default false\n */\n disableMargin: PropTypes.bool,\n isAnimating: PropTypes.bool,\n onDayFocus: PropTypes.func,\n onDaySelect: PropTypes.func.isRequired,\n\n /**\n * If `true`, day is outside of month and will be hidden.\n */\n outsideCurrentMonth: PropTypes.bool.isRequired,\n\n /**\n * If `true`, renders as selected.\n * @default false\n */\n selected: PropTypes.bool,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * If `true`, renders as today date.\n * @default false\n */\n today: PropTypes.bool\n} : void 0;\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/x/react-date-pickers/date-picker/)\n *\n * API:\n *\n * - [PickersDay API](https://mui.com/x/api/date-pickers/pickers-day/)\n */\n\nexport const PickersDay = /*#__PURE__*/React.memo(PickersDayRaw, areDayPropsEqual);","export default {\n disabled: false\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var 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: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\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\nvar Transition = /*#__PURE__*/function (_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; // 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 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 var _proto = Transition.prototype;\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 if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\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(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\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 || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\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(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\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 var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\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 _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\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'`), 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 * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\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 = 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. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\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 = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're 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 CSS 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**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_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 _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\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 baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _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.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * 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\n * an 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: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"reduceAnimations\", \"slideDirection\", \"transKey\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/material';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst classes = generateUtilityClasses('PrivatePickersSlideTransition', ['root', 'slideEnter-left', 'slideEnter-right', 'slideEnterActive', 'slideEnterActive', 'slideExit', 'slideExitActiveLeft-left', 'slideExitActiveLeft-right']);\nexport const slideAnimationDuration = 350;\nconst PickersSlideTransitionRoot = styled(TransitionGroup)(({\n theme\n}) => {\n const slideTransition = theme.transitions.create('transform', {\n duration: slideAnimationDuration,\n easing: 'cubic-bezier(0.35, 0.8, 0.4, 1)'\n });\n return {\n display: 'block',\n position: 'relative',\n overflowX: 'hidden',\n '& > *': {\n position: 'absolute',\n top: 0,\n right: 0,\n left: 0\n },\n [`& .${classes['slideEnter-left']}`]: {\n willChange: 'transform',\n transform: 'translate(100%)',\n zIndex: 1\n },\n [`& .${classes['slideEnter-right']}`]: {\n willChange: 'transform',\n transform: 'translate(-100%)',\n zIndex: 1\n },\n [`& .${classes.slideEnterActive}`]: {\n transform: 'translate(0%)',\n transition: slideTransition\n },\n [`& .${classes.slideExit}`]: {\n transform: 'translate(0%)'\n },\n [`& .${classes['slideExitActiveLeft-left']}`]: {\n willChange: 'transform',\n transform: 'translate(-100%)',\n transition: slideTransition,\n zIndex: 0\n },\n [`& .${classes['slideExitActiveLeft-right']}`]: {\n willChange: 'transform',\n transform: 'translate(100%)',\n transition: slideTransition,\n zIndex: 0\n }\n };\n});\n/**\n * @ignore - do not document.\n */\n\nexport const PickersSlideTransition = _ref => {\n let {\n children,\n className,\n reduceAnimations,\n slideDirection,\n transKey\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n if (reduceAnimations) {\n return /*#__PURE__*/_jsx(\"div\", {\n className: clsx(classes.root, className),\n children: children\n });\n }\n\n const transitionClasses = {\n exit: classes.slideExit,\n enterActive: classes.slideEnterActive,\n enter: classes[`slideEnter-${slideDirection}`],\n exitActive: classes[`slideExitActiveLeft-${slideDirection}`]\n };\n return /*#__PURE__*/_jsx(PickersSlideTransitionRoot, {\n className: clsx(classes.root, className),\n childFactory: element => /*#__PURE__*/React.cloneElement(element, {\n classNames: transitionClasses\n }),\n children: /*#__PURE__*/_jsx(CSSTransition, _extends({\n mountOnEnter: true,\n unmountOnExit: true,\n timeout: slideAnimationDuration,\n classNames: transitionClasses\n }, other, {\n children: children\n }), transKey)\n });\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport { PickersDay } from '../PickersDay/PickersDay';\nimport { useUtils, useNow } from '../internals/hooks/useUtils';\nimport { DAY_SIZE, DAY_MARGIN } from '../internals/constants/dimensions';\nimport { PickersSlideTransition } from './PickersSlideTransition';\nimport { useIsDayDisabled } from '../internals/hooks/validation/useDateValidation';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst weeksContainerHeight = (DAY_SIZE + DAY_MARGIN * 2) * 6;\nconst PickersCalendarDayHeader = styled('div')({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n});\nconst PickersCalendarWeekDayLabel = styled(Typography)(({\n theme\n}) => ({\n width: 36,\n height: 40,\n margin: '0 2px',\n textAlign: 'center',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: theme.palette.text.secondary\n}));\nconst PickersCalendarLoadingContainer = styled('div')({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: weeksContainerHeight\n});\nconst PickersCalendarSlideTransition = styled(PickersSlideTransition)({\n minHeight: weeksContainerHeight\n});\nconst PickersCalendarWeekContainer = styled('div')({\n overflow: 'hidden'\n});\nconst PickersCalendarWeek = styled('div')({\n margin: `${DAY_MARGIN}px 0`,\n display: 'flex',\n justifyContent: 'center'\n});\n/**\n * @ignore - do not document.\n */\n\nexport function DayPicker(props) {\n const now = useNow();\n const utils = useUtils();\n const {\n autoFocus,\n onFocusedDayChange,\n className,\n currentMonth,\n selectedDays,\n disabled,\n disableHighlightToday,\n focusedDay,\n isMonthSwitchingAnimating,\n loading,\n onSelectedDaysChange,\n onMonthSwitchingAnimationEnd,\n readOnly,\n reduceAnimations,\n renderDay,\n renderLoading = () => /*#__PURE__*/_jsx(\"span\", {\n children: \"...\"\n }),\n showDaysOutsideCurrentMonth,\n slideDirection,\n TransitionProps,\n disablePast,\n disableFuture,\n minDate,\n maxDate,\n shouldDisableDate\n } = props;\n const isDateDisabled = useIsDayDisabled({\n shouldDisableDate,\n minDate,\n maxDate,\n disablePast,\n disableFuture\n });\n const handleDaySelect = React.useCallback((day, isFinish = 'finish') => {\n if (readOnly) {\n return;\n }\n\n onSelectedDaysChange(day, isFinish);\n }, [onSelectedDaysChange, readOnly]);\n const currentMonthNumber = utils.getMonth(currentMonth);\n const validSelectedDays = selectedDays.filter(day => !!day).map(day => utils.startOfDay(day)); // need a new ref whenever the `key` of the transition changes: http://reactcommunity.org/react-transition-group/transition/#Transition-prop-nodeRef.\n\n const transitionKey = currentMonthNumber; // eslint-disable-next-line react-hooks/exhaustive-deps\n\n const slideNodeRef = React.useMemo(() => /*#__PURE__*/React.createRef(), [transitionKey]);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(PickersCalendarDayHeader, {\n children: utils.getWeekdays().map((day, i) => /*#__PURE__*/_jsx(PickersCalendarWeekDayLabel, {\n \"aria-hidden\": true,\n variant: \"caption\",\n children: day.charAt(0).toUpperCase()\n }, day + i.toString()))\n }), loading ? /*#__PURE__*/_jsx(PickersCalendarLoadingContainer, {\n children: renderLoading()\n }) : /*#__PURE__*/_jsx(PickersCalendarSlideTransition, _extends({\n transKey: transitionKey,\n onExited: onMonthSwitchingAnimationEnd,\n reduceAnimations: reduceAnimations,\n slideDirection: slideDirection,\n className: className\n }, TransitionProps, {\n nodeRef: slideNodeRef,\n children: /*#__PURE__*/_jsx(PickersCalendarWeekContainer, {\n ref: slideNodeRef,\n role: \"grid\",\n children: utils.getWeekArray(currentMonth).map(week => /*#__PURE__*/_jsx(PickersCalendarWeek, {\n role: \"row\",\n children: week.map(day => {\n const pickersDayProps = {\n key: day == null ? void 0 : day.toString(),\n day,\n isAnimating: isMonthSwitchingAnimating,\n disabled: disabled || isDateDisabled(day),\n autoFocus: autoFocus && focusedDay !== null && utils.isSameDay(day, focusedDay),\n today: utils.isSameDay(day, now),\n outsideCurrentMonth: utils.getMonth(day) !== currentMonthNumber,\n selected: validSelectedDays.some(selectedDay => utils.isSameDay(selectedDay, day)),\n disableHighlightToday,\n showDaysOutsideCurrentMonth,\n onDayFocus: onFocusedDayChange,\n onDaySelect: handleDaySelect\n };\n return renderDay ? renderDay(day, validSelectedDays, pickersDayProps) : /*#__PURE__*/_jsx(\"div\", {\n role: \"cell\",\n children: /*#__PURE__*/_jsx(PickersDay, _extends({}, pickersDayProps))\n }, pickersDayProps.key);\n })\n }, `week-${week[0]}`))\n })\n }))]\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Fade from '@mui/material/Fade';\nimport { styled } from '@mui/material/styles';\nimport IconButton from '@mui/material/IconButton';\nimport { useLocaleText, useUtils } from '../internals/hooks/useUtils';\nimport { PickersFadeTransitionGroup } from './PickersFadeTransitionGroup';\nimport { ArrowDropDown } from '../internals/components/icons';\nimport { PickersArrowSwitcher } from '../internals/components/PickersArrowSwitcher';\nimport { usePreviousMonthDisabled, useNextMonthDisabled } from '../internals/hooks/date-helpers-hooks';\nimport { buildDeprecatedPropsWarning } from '../internals/utils/warning';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersCalendarHeaderRoot = styled('div')({\n display: 'flex',\n alignItems: 'center',\n marginTop: 16,\n marginBottom: 8,\n paddingLeft: 24,\n paddingRight: 12,\n // prevent jumping in safari\n maxHeight: 30,\n minHeight: 30\n});\nconst PickersCalendarHeaderLabel = styled('div')(({\n theme\n}) => _extends({\n display: 'flex',\n maxHeight: 30,\n overflow: 'hidden',\n alignItems: 'center',\n cursor: 'pointer',\n marginRight: 'auto'\n}, theme.typography.body1, {\n fontWeight: theme.typography.fontWeightMedium\n}));\nconst PickersCalendarHeaderLabelItem = styled('div')({\n marginRight: 6\n});\nconst PickersCalendarHeaderSwitchViewButton = styled(IconButton)({\n marginRight: 'auto'\n});\nconst PickersCalendarHeaderSwitchView = styled(ArrowDropDown)(({\n theme,\n ownerState\n}) => _extends({\n willChange: 'transform',\n transition: theme.transitions.create('transform'),\n transform: 'rotate(0deg)'\n}, ownerState.openView === 'year' && {\n transform: 'rotate(180deg)'\n}));\nconst deprecatedPropsWarning = buildDeprecatedPropsWarning('Props for translation are deprecated. See https://mui.com/x/react-date-pickers/localization for more information.');\n/**\n * @ignore - do not document.\n */\n\nexport function PickersCalendarHeader(props) {\n const {\n components = {},\n componentsProps = {},\n currentMonth: month,\n disabled,\n disableFuture,\n disablePast,\n getViewSwitchingButtonText: getViewSwitchingButtonTextProp,\n leftArrowButtonText: leftArrowButtonTextProp,\n maxDate,\n minDate,\n onMonthChange,\n onViewChange,\n openView: currentView,\n reduceAnimations,\n rightArrowButtonText: rightArrowButtonTextProp,\n views\n } = props;\n deprecatedPropsWarning({\n leftArrowButtonText: leftArrowButtonTextProp,\n rightArrowButtonText: rightArrowButtonTextProp,\n getViewSwitchingButtonText: getViewSwitchingButtonTextProp\n });\n const localeText = useLocaleText();\n const leftArrowButtonText = leftArrowButtonTextProp != null ? leftArrowButtonTextProp : localeText.previousMonth;\n const rightArrowButtonText = rightArrowButtonTextProp != null ? rightArrowButtonTextProp : localeText.nextMonth;\n const getViewSwitchingButtonText = getViewSwitchingButtonTextProp != null ? getViewSwitchingButtonTextProp : localeText.calendarViewSwitchingButtonAriaLabel;\n const utils = useUtils();\n const switchViewButtonProps = componentsProps.switchViewButton || {};\n\n const selectNextMonth = () => onMonthChange(utils.getNextMonth(month), 'left');\n\n const selectPreviousMonth = () => onMonthChange(utils.getPreviousMonth(month), 'right');\n\n const isNextMonthDisabled = useNextMonthDisabled(month, {\n disableFuture,\n maxDate\n });\n const isPreviousMonthDisabled = usePreviousMonthDisabled(month, {\n disablePast,\n minDate\n });\n\n const handleToggleView = () => {\n if (views.length === 1 || !onViewChange || disabled) {\n return;\n }\n\n if (views.length === 2) {\n onViewChange(views.find(view => view !== currentView) || views[0]);\n } else {\n // switching only between first 2\n const nextIndexToOpen = views.indexOf(currentView) !== 0 ? 0 : 1;\n onViewChange(views[nextIndexToOpen]);\n }\n }; // No need to display more information\n\n\n if (views.length === 1 && views[0] === 'year') {\n return null;\n }\n\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersCalendarHeaderRoot, {\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsxs(PickersCalendarHeaderLabel, {\n role: \"presentation\",\n onClick: handleToggleView,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(PickersFadeTransitionGroup, {\n reduceAnimations: reduceAnimations,\n transKey: utils.format(month, 'monthAndYear'),\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderLabelItem, {\n \"aria-live\": \"polite\",\n ownerState: ownerState,\n children: utils.format(month, 'monthAndYear')\n })\n }), views.length > 1 && !disabled && /*#__PURE__*/_jsx(PickersCalendarHeaderSwitchViewButton, _extends({\n size: \"small\",\n as: components.SwitchViewButton,\n \"aria-label\": getViewSwitchingButtonText(currentView)\n }, switchViewButtonProps, {\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderSwitchView, {\n as: components.SwitchViewIcon,\n ownerState: ownerState\n })\n }))]\n }), /*#__PURE__*/_jsx(Fade, {\n in: currentView === 'day',\n children: /*#__PURE__*/_jsx(PickersArrowSwitcher, {\n leftArrowButtonText: leftArrowButtonText,\n rightArrowButtonText: rightArrowButtonText,\n components: components,\n componentsProps: componentsProps,\n onLeftClick: selectPreviousMonth,\n onRightClick: selectNextMonth,\n isLeftDisabled: isPreviousMonthDisabled,\n isRightDisabled: isNextMonthDisabled\n })\n })]\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { useForkRef, capitalize } from '@mui/material/utils';\nimport { alpha, styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, generateUtilityClass, generateUtilityClasses } from '@mui/material';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getPickersYearUtilityClass(slot) {\n return generateUtilityClass('PrivatePickersYear', slot);\n}\nexport const pickersYearClasses = generateUtilityClasses('PrivatePickersYear', ['root', 'modeMobile', 'modeDesktop', 'yearButton', 'disabled', 'selected']);\n\nconst useUtilityClasses = ownerState => {\n const {\n wrapperVariant,\n disabled,\n selected,\n classes\n } = ownerState;\n const slots = {\n root: ['root', wrapperVariant && `mode${capitalize(wrapperVariant)}`],\n yearButton: ['yearButton', disabled && 'disabled', selected && 'selected']\n };\n return composeClasses(slots, getPickersYearUtilityClass, classes);\n};\n\nconst PickersYearRoot = styled('div')(({\n ownerState\n}) => _extends({\n flexBasis: '33.3%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n}, (ownerState == null ? void 0 : ownerState.wrapperVariant) === 'desktop' && {\n flexBasis: '25%'\n}));\nconst PickersYearButton = styled('button')(({\n theme\n}) => _extends({\n color: 'unset',\n backgroundColor: 'transparent',\n border: 0,\n outline: 0\n}, theme.typography.subtitle1, {\n margin: '8px 0',\n height: 36,\n width: 72,\n borderRadius: 18,\n cursor: 'pointer',\n '&:focus, &:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n [`&.${pickersYearClasses.disabled}`]: {\n color: theme.palette.text.secondary\n },\n [`&.${pickersYearClasses.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:focus, &:hover': {\n backgroundColor: theme.palette.primary.dark\n }\n }\n}));\n/**\n * @ignore - internal component.\n */\n\nexport const PickersYear = /*#__PURE__*/React.forwardRef(function PickersYear(props, forwardedRef) {\n const {\n autoFocus,\n className,\n children,\n disabled,\n onClick,\n onKeyDown,\n selected,\n value\n } = props;\n const ref = React.useRef(null);\n const refHandle = useForkRef(ref, forwardedRef);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n\n const ownerState = _extends({}, props, {\n wrapperVariant\n });\n\n const classes = useUtilityClasses(ownerState); // TODO: Can we just forward this to the button?\n\n React.useEffect(() => {\n if (autoFocus) {\n // `ref.current` being `null` would be a bug in MUIu\n ref.current.focus();\n }\n }, [autoFocus]);\n return /*#__PURE__*/_jsx(PickersYearRoot, {\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: /*#__PURE__*/_jsx(PickersYearButton, {\n ref: refHandle,\n disabled: disabled,\n type: \"button\",\n tabIndex: selected ? 0 : -1,\n onClick: event => onClick(event, value),\n onKeyDown: event => onKeyDown(event, value),\n className: classes.yearButton,\n ownerState: ownerState,\n children: children\n })\n });\n});","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getYearPickerUtilityClass(slot) {\n return generateUtilityClass('MuiYearPicker', slot);\n}\nexport const yearPickerClasses = generateUtilityClasses('MuiYearPicker', ['root']);","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTheme, styled, useThemeProps as useThemProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport clsx from 'clsx';\nimport { PickersYear } from './PickersYear';\nimport { useUtils, useNow, useDefaultDates } from '../internals/hooks/useUtils';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { getYearPickerUtilityClass } from './yearPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getYearPickerUtilityClass, classes);\n};\n\nconst YearPickerRoot = styled('div', {\n name: 'MuiYearPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflowY: 'auto',\n height: '100%',\n margin: '0 4px'\n});\nexport const YearPicker = /*#__PURE__*/React.forwardRef(function YearPicker(inProps, ref) {\n const now = useNow();\n const theme = useTheme();\n const utils = useUtils();\n const defaultProps = useDefaultDates();\n const props = useThemProps({\n props: inProps,\n name: 'MuiYearPicker'\n });\n const {\n autoFocus,\n className,\n date,\n disabled,\n disableFuture,\n disablePast,\n maxDate = defaultProps.maxDate,\n minDate = defaultProps.minDate,\n onChange,\n readOnly,\n shouldDisableYear\n } = props;\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const selectedDate = date || now;\n const currentYear = utils.getYear(selectedDate);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const selectedYearRef = React.useRef(null);\n const [focusedYear, setFocusedYear] = React.useState(currentYear);\n const isYearDisabled = React.useCallback(dateToValidate => {\n if (disablePast && utils.isBeforeYear(dateToValidate, now)) {\n return true;\n }\n\n if (disableFuture && utils.isAfterYear(dateToValidate, now)) {\n return true;\n }\n\n if (minDate && utils.isBeforeYear(dateToValidate, minDate)) {\n return true;\n }\n\n if (maxDate && utils.isAfterYear(dateToValidate, maxDate)) {\n return true;\n }\n\n if (shouldDisableYear && shouldDisableYear(dateToValidate)) {\n return true;\n }\n\n return false;\n }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableYear, utils]);\n\n const handleYearSelection = (event, year, isFinish = 'finish') => {\n if (readOnly) {\n return;\n }\n\n const newDate = utils.setYear(selectedDate, year);\n onChange(newDate, isFinish);\n };\n\n const focusYear = React.useCallback(year => {\n if (!isYearDisabled(utils.setYear(selectedDate, year))) {\n setFocusedYear(year);\n }\n }, [selectedDate, isYearDisabled, utils]);\n const yearsInRow = wrapperVariant === 'desktop' ? 4 : 3;\n\n const handleKeyDown = (event, year) => {\n switch (event.key) {\n case 'ArrowUp':\n focusYear(year - yearsInRow);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n focusYear(year + yearsInRow);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n focusYear(year + (theme.direction === 'ltr' ? -1 : 1));\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n focusYear(year + (theme.direction === 'ltr' ? 1 : -1));\n event.preventDefault();\n break;\n\n default:\n break;\n }\n };\n\n return /*#__PURE__*/_jsx(YearPickerRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: utils.getYearRange(minDate, maxDate).map(year => {\n const yearNumber = utils.getYear(year);\n const selected = yearNumber === currentYear;\n return /*#__PURE__*/_jsx(PickersYear, {\n selected: selected,\n value: yearNumber,\n onClick: handleYearSelection,\n onKeyDown: handleKeyDown,\n autoFocus: autoFocus && yearNumber === focusedYear,\n ref: selected ? selectedYearRef : undefined,\n disabled: disabled || isYearDisabled(year),\n children: utils.format(year, 'year')\n }, utils.format(year, 'year'));\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? YearPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n autoFocus: PropTypes.bool,\n classes: PropTypes.object,\n className: PropTypes.string,\n date: PropTypes.any,\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n onChange: PropTypes.func.isRequired,\n onFocusedDayChange: PropTypes.func,\n readOnly: PropTypes.bool,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func\n} : void 0;","export const defaultReduceAnimations = typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent);","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getCalendarPickerUtilityClass = slot => generateUtilityClass('MuiCalendarPicker', slot);\nexport const calendarPickerClasses = generateUtilityClasses('MuiCalendarPicker', ['root', 'viewTransitionContainer']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"autoFocus\", \"onViewChange\", \"date\", \"disableFuture\", \"disablePast\", \"defaultCalendarMonth\", \"loading\", \"onChange\", \"onYearChange\", \"onMonthChange\", \"reduceAnimations\", \"renderLoading\", \"shouldDisableDate\", \"shouldDisableMonth\", \"shouldDisableYear\", \"view\", \"views\", \"openTo\", \"className\", \"disabled\", \"readOnly\", \"minDate\", \"maxDate\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { MonthPicker } from '../MonthPicker/MonthPicker';\nimport { useCalendarState } from './useCalendarState';\nimport { useDefaultDates, useUtils } from '../internals/hooks/useUtils';\nimport { PickersFadeTransitionGroup } from './PickersFadeTransitionGroup';\nimport { DayPicker } from './DayPicker';\nimport { useViews } from '../internals/hooks/useViews';\nimport { PickersCalendarHeader } from './PickersCalendarHeader';\nimport { YearPicker } from '../YearPicker/YearPicker';\nimport { findClosestEnabledDate } from '../internals/utils/date-utils';\nimport { PickerViewRoot } from '../internals/components/PickerViewRoot';\nimport { defaultReduceAnimations } from '../internals/utils/defaultReduceAnimations';\nimport { getCalendarPickerUtilityClass } from './calendarPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n viewTransitionContainer: ['viewTransitionContainer']\n };\n return composeClasses(slots, getCalendarPickerUtilityClass, classes);\n};\n\nconst CalendarPickerRoot = styled(PickerViewRoot, {\n name: 'MuiCalendarPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'column'\n});\nconst CalendarPickerViewTransitionContainer = styled(PickersFadeTransitionGroup, {\n name: 'MuiCalendarPicker',\n slot: 'ViewTransitionContainer',\n overridesResolver: (props, styles) => styles.viewTransitionContainer\n})({\n overflowY: 'auto'\n});\n\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/x/react-date-pickers/date-picker/)\n *\n * API:\n *\n * - [CalendarPicker API](https://mui.com/x/api/date-pickers/calendar-picker/)\n */\nconst CalendarPicker = /*#__PURE__*/React.forwardRef(function CalendarPicker(inProps, ref) {\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCalendarPicker'\n });\n\n const {\n autoFocus,\n onViewChange,\n date,\n disableFuture,\n disablePast,\n defaultCalendarMonth,\n loading = false,\n onChange,\n onYearChange,\n onMonthChange,\n reduceAnimations = defaultReduceAnimations,\n renderLoading = () => /*#__PURE__*/_jsx(\"span\", {\n children: \"...\"\n }),\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n view,\n views = ['year', 'day'],\n openTo = 'day',\n className,\n disabled,\n readOnly,\n minDate = defaultDates.minDate,\n maxDate = defaultDates.maxDate\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n openView,\n setOpenView,\n openNext\n } = useViews({\n view,\n views,\n openTo,\n onChange,\n onViewChange\n });\n const {\n calendarState,\n changeFocusedDay,\n changeMonth,\n handleChangeMonth,\n isDateDisabled,\n onMonthSwitchingAnimationEnd\n } = useCalendarState({\n date,\n defaultCalendarMonth,\n reduceAnimations,\n onMonthChange,\n minDate,\n maxDate,\n shouldDisableDate,\n disablePast,\n disableFuture\n });\n const handleDateMonthChange = React.useCallback((newDate, selectionState) => {\n const startOfMonth = utils.startOfMonth(newDate);\n const endOfMonth = utils.endOfMonth(newDate);\n const closestEnabledDate = isDateDisabled(newDate) ? findClosestEnabledDate({\n utils,\n date: newDate,\n minDate: utils.isBefore(minDate, startOfMonth) ? startOfMonth : minDate,\n maxDate: utils.isAfter(maxDate, endOfMonth) ? endOfMonth : maxDate,\n disablePast,\n disableFuture,\n isDateDisabled\n }) : newDate;\n\n if (closestEnabledDate) {\n onChange(closestEnabledDate, selectionState);\n onMonthChange == null ? void 0 : onMonthChange(startOfMonth);\n } else {\n openNext();\n changeMonth(startOfMonth);\n }\n\n changeFocusedDay(closestEnabledDate);\n }, [changeFocusedDay, disableFuture, disablePast, isDateDisabled, maxDate, minDate, onChange, onMonthChange, changeMonth, openNext, utils]); // TODO: Use same behavior as `handleDateMonthChange` to avoid selecting a date in another year.\n // Needs startOfYear / endOfYear methods in adapter.\n\n const handleDateYearChange = React.useCallback((newDate, selectionState) => {\n const startOfYear = utils.startOfYear(newDate);\n const endOfYear = utils.endOfYear(newDate);\n const closestEnabledDate = isDateDisabled(newDate) ? findClosestEnabledDate({\n utils,\n date: newDate,\n minDate: utils.isBefore(minDate, startOfYear) ? startOfYear : minDate,\n maxDate: utils.isAfter(maxDate, endOfYear) ? endOfYear : maxDate,\n disablePast,\n disableFuture,\n isDateDisabled\n }) : newDate;\n\n if (closestEnabledDate) {\n onChange(closestEnabledDate, selectionState);\n onYearChange == null ? void 0 : onYearChange(closestEnabledDate);\n } else {\n openNext();\n changeMonth(startOfYear);\n }\n\n changeFocusedDay(closestEnabledDate);\n }, [changeFocusedDay, disableFuture, disablePast, isDateDisabled, maxDate, minDate, onChange, onYearChange, openNext, utils, changeMonth]);\n const onSelectedDayChange = React.useCallback((day, isFinish) => {\n if (date && day) {\n // If there is a date already selected, then we want to keep its time\n return onChange(utils.mergeDateAndTime(day, date), isFinish);\n }\n\n return onChange(day, isFinish);\n }, [utils, date, onChange]);\n React.useEffect(() => {\n if (date && isDateDisabled(date)) {\n const closestEnabledDate = findClosestEnabledDate({\n utils,\n date,\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n isDateDisabled\n });\n onChange(closestEnabledDate, 'partial');\n } // This call is too expensive to run it on each prop change.\n // So just ensure that we are not rendering disabled as selected on mount.\n\n }, []); // eslint-disable-line\n\n React.useEffect(() => {\n if (date) {\n changeMonth(date);\n }\n }, [date]); // eslint-disable-line\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const baseDateValidationProps = {\n disablePast,\n disableFuture,\n maxDate,\n minDate\n }; // When disabled, limit the view to the selected date\n\n const minDateWithDisabled = disabled && date || minDate;\n const maxDateWithDisabled = disabled && date || maxDate;\n return /*#__PURE__*/_jsxs(CalendarPickerRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(PickersCalendarHeader, _extends({}, other, {\n views: views,\n openView: openView,\n currentMonth: calendarState.currentMonth,\n onViewChange: setOpenView,\n onMonthChange: (newMonth, direction) => handleChangeMonth({\n newMonth,\n direction\n }),\n minDate: minDateWithDisabled,\n maxDate: maxDateWithDisabled,\n disabled: disabled,\n disablePast: disablePast,\n disableFuture: disableFuture,\n reduceAnimations: reduceAnimations\n })), /*#__PURE__*/_jsx(CalendarPickerViewTransitionContainer, {\n reduceAnimations: reduceAnimations,\n className: classes.viewTransitionContainer,\n transKey: openView,\n ownerState: ownerState,\n children: /*#__PURE__*/_jsxs(\"div\", {\n children: [openView === 'year' && /*#__PURE__*/_jsx(YearPicker, _extends({}, other, baseDateValidationProps, {\n autoFocus: autoFocus,\n date: date,\n onChange: handleDateYearChange,\n shouldDisableYear: shouldDisableYear,\n disabled: disabled,\n readOnly: readOnly\n })), openView === 'month' && /*#__PURE__*/_jsx(MonthPicker, _extends({}, baseDateValidationProps, {\n className: className,\n date: date,\n onChange: handleDateMonthChange,\n disabled: disabled,\n readOnly: readOnly,\n shouldDisableMonth: shouldDisableMonth\n })), openView === 'day' && /*#__PURE__*/_jsx(DayPicker, _extends({}, other, calendarState, baseDateValidationProps, {\n autoFocus: autoFocus,\n onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,\n onFocusedDayChange: changeFocusedDay,\n reduceAnimations: reduceAnimations,\n selectedDays: [date],\n onSelectedDaysChange: onSelectedDayChange,\n loading: loading,\n renderLoading: renderLoading,\n disabled: disabled,\n readOnly: readOnly,\n shouldDisableDate: shouldDisableDate\n }))]\n })\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? CalendarPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n autoFocus: PropTypes.bool,\n classes: PropTypes.object,\n className: PropTypes.string,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n date: PropTypes.any,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired on date change\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Initially open view.\n * @default 'day'\n */\n openTo: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * Controlled open view.\n */\n view: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Views for calendar picker.\n * @default ['year', 'day']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired)\n} : void 0;\nexport { CalendarPicker };","import * as React from 'react';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { arrayIncludes } from '../utils/utils';\n\nfunction getOrientation() {\n if (typeof window === 'undefined') {\n return 'portrait';\n }\n\n if (window.screen && window.screen.orientation && window.screen.orientation.angle) {\n return Math.abs(window.screen.orientation.angle) === 90 ? 'landscape' : 'portrait';\n } // Support IOS safari\n\n\n if (window.orientation) {\n return Math.abs(Number(window.orientation)) === 90 ? 'landscape' : 'portrait';\n }\n\n return 'portrait';\n}\n\nexport const useIsLandscape = (views, customOrientation) => {\n const [orientation, setOrientation] = React.useState(getOrientation);\n useEnhancedEffect(() => {\n const eventHandler = () => {\n setOrientation(getOrientation());\n };\n\n window.addEventListener('orientationchange', eventHandler);\n return () => {\n window.removeEventListener('orientationchange', eventHandler);\n };\n }, []);\n\n if (arrayIncludes(views, ['hours', 'minutes', 'seconds'])) {\n // could not display 13:34:44 in landscape mode\n return false;\n }\n\n const orientationToUse = customOrientation || orientation;\n return orientationToUse === 'landscape';\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"parsedValue\", \"DateInputProps\", \"isMobileKeyboardViewOpen\", \"onDateChange\", \"onViewChange\", \"openTo\", \"orientation\", \"showToolbar\", \"toggleMobileKeyboardView\", \"ToolbarComponent\", \"toolbarFormat\", \"toolbarPlaceholder\", \"toolbarTitle\", \"views\"];\nimport * as React from 'react';\nimport { styled } from '@mui/material/styles';\nimport { useViews } from '../../hooks/useViews';\nimport { ClockPicker } from '../../../ClockPicker/ClockPicker';\nimport { CalendarPicker } from '../../../CalendarPicker/CalendarPicker';\nimport { KeyboardDateInput } from '../KeyboardDateInput';\nimport { useIsLandscape } from '../../hooks/useIsLandscape';\nimport { WrapperVariantContext } from '../wrappers/WrapperVariantContext';\nimport { PickerViewRoot } from '../PickerViewRoot';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const MobileKeyboardInputView = styled('div')({\n padding: '16px 24px'\n});\nconst PickerRoot = styled('div')(({\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column'\n}, ownerState.isLandscape && {\n flexDirection: 'row'\n}));\nconst MobileKeyboardTextFieldProps = {\n fullWidth: true\n};\n\nconst isDatePickerView = view => view === 'year' || view === 'month' || view === 'day';\n\nconst isTimePickerView = view => view === 'hours' || view === 'minutes' || view === 'seconds';\n\nexport function CalendarOrClockPicker(props) {\n const {\n autoFocus,\n parsedValue,\n DateInputProps,\n isMobileKeyboardViewOpen,\n onDateChange,\n onViewChange,\n openTo,\n orientation,\n showToolbar,\n toggleMobileKeyboardView,\n ToolbarComponent = () => null,\n toolbarFormat,\n toolbarPlaceholder,\n toolbarTitle,\n views\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const isLandscape = useIsLandscape(views, orientation);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const toShowToolbar = showToolbar != null ? showToolbar : wrapperVariant !== 'desktop';\n const handleDateChange = React.useCallback((newDate, selectionState) => {\n onDateChange(newDate, wrapperVariant, selectionState);\n }, [onDateChange, wrapperVariant]);\n const handleViewChange = React.useCallback(newView => {\n if (isMobileKeyboardViewOpen) {\n toggleMobileKeyboardView();\n }\n\n if (onViewChange) {\n onViewChange(newView);\n }\n }, [isMobileKeyboardViewOpen, onViewChange, toggleMobileKeyboardView]);\n const {\n openView,\n setOpenView,\n handleChangeAndOpenNext\n } = useViews({\n view: undefined,\n views,\n openTo,\n onChange: handleDateChange,\n onViewChange: handleViewChange\n });\n return /*#__PURE__*/_jsxs(PickerRoot, {\n ownerState: {\n isLandscape\n },\n children: [toShowToolbar && /*#__PURE__*/_jsx(ToolbarComponent, _extends({}, other, {\n views: views,\n isLandscape: isLandscape,\n parsedValue: parsedValue,\n onChange: handleDateChange,\n setOpenView: setOpenView,\n openView: openView,\n toolbarTitle: toolbarTitle,\n toolbarFormat: toolbarFormat,\n toolbarPlaceholder: toolbarPlaceholder,\n isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: toggleMobileKeyboardView\n })), /*#__PURE__*/_jsx(PickerViewRoot, {\n children: isMobileKeyboardViewOpen ? /*#__PURE__*/_jsx(MobileKeyboardInputView, {\n children: /*#__PURE__*/_jsx(KeyboardDateInput, _extends({}, DateInputProps, {\n ignoreInvalidInputs: true,\n disableOpenPicker: true,\n TextFieldProps: MobileKeyboardTextFieldProps\n }))\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [isDatePickerView(openView) && /*#__PURE__*/_jsx(CalendarPicker, _extends({\n autoFocus: autoFocus,\n date: parsedValue,\n onViewChange: setOpenView,\n onChange: handleChangeAndOpenNext,\n view: openView // Unclear why the predicate `isDatePickerView` does not imply the casted type\n ,\n views: views.filter(isDatePickerView)\n }, other)), isTimePickerView(openView) && /*#__PURE__*/_jsx(ClockPicker, _extends({}, other, {\n autoFocus: autoFocus,\n date: parsedValue,\n view: openView // Unclear why the predicate `isDatePickerView` does not imply the casted type\n ,\n views: views.filter(isTimePickerView),\n onChange: handleChangeAndOpenNext,\n onViewChange: setOpenView,\n showViewSwitcher: wrapperVariant === 'desktop'\n }))]\n })\n })]\n });\n}","import { extend, isNullOrUndefined, Browser } 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 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 if (event.which === 13 && self.editorMode === 'HTML') {\n value = {\n 'enterAction': self.enterKey\n };\n }\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 enterAction: self.enterKey\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, selectType: args.name }, 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' && actionBeginArgs.selectType === 'dropDownSelect' ?\n { name: actionBeginArgs.selectType } : value, ('#' + self.getID() + ' iframe'), self.enterKey);\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.nodeName === 'BR' && startNode === range.endContainer.childNodes[range.endOffset])) &&\n 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(className, this.encode(start.textContent)));\n var markerStart = range.startContainer.querySelector('.' + className);\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 var currentContent = range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim();\n for (var i = 0; i < olListStartRegex.length; i++) {\n if (olListStartRegex[i].test(currentContent) && currentContent.length === 2) {\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.replace(/\\u200B/g, '').slice(0, range.startOffset).trim() === '*' ||\n range.startContainer.textContent.replace(/\\u200B/g, '').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 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' &&\n startNode.textContent.trim() === '' && startNode.querySelectorAll('IMG').length === 0) {\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 var nearBlockNode = this.parent.domNode.blockParentNode(startNode);\n this.parent.nodeCutter.GetSpliceNode(range, nearBlockNode);\n }\n var insertTag = void 0;\n if (e.enterAction === 'DIV') {\n insertTag = createElement('div');\n insertTag.innerHTML = '
';\n }\n else if (e.enterAction === 'P') {\n insertTag = createElement('p');\n insertTag.innerHTML = '
';\n }\n else {\n insertTag = createElement('br');\n }\n this.parent.domNode.insertAfter(insertTag, startNodeParent);\n e.event.preventDefault();\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, insertTag, 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 if (range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement &&\n range.startOffset === range.endOffset && range.startOffset === 0 &&\n this.parent.editableElement.textContent.length === 0 && (this.parent.editableElement.childNodes[0].nodeName != 'TABLE' &&\n this.parent.editableElement.childNodes[0].nodeName != 'IMG')) {\n var focusNode = range.startContainer.childNodes[0];\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, focusNode, focusNode, 0, 0);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n }\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 if (e.enterAction === 'BR') {\n this.setSelectionBRConfig();\n var allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);\n var selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);\n var currentFormatNodes = [];\n if (selectedNodes.length === 0) {\n selectedNodes.push(listsNodes[0]);\n }\n for (var i = 0; i < selectedNodes.length; i++) {\n var currentNode = selectedNodes[i];\n var previousCurrentNode = void 0;\n while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {\n previousCurrentNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {\n currentFormatNodes.push(previousCurrentNode);\n }\n }\n for (var i = 0; i < currentFormatNodes.length; i++) {\n if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {\n var currentNode = currentFormatNodes[i];\n var previousNode = currentNode;\n while (currentNode === this.parent.editableElement) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n var tempElem = void 0;\n if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&\n previousNode.parentElement === this.parent.editableElement) {\n tempElem = createElement('p');\n previousNode.parentElement.insertBefore(tempElem, previousNode);\n tempElem.appendChild(previousNode);\n }\n else {\n tempElem = previousNode;\n }\n var preNode = tempElem.previousSibling;\n while (!isNOU(preNode) && preNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(preNode)) {\n tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);\n preNode = tempElem.previousSibling;\n }\n if (!isNOU(preNode) && preNode.nodeName === 'BR') {\n detach(preNode);\n }\n var postNode = tempElem.nextSibling;\n while (!isNOU(postNode) && postNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(postNode)) {\n tempElem.appendChild(postNode);\n postNode = tempElem.nextSibling;\n }\n if (!isNOU(postNode) && postNode.nodeName === 'BR') {\n detach(postNode);\n }\n }\n }\n this.setSelectionBRConfig();\n listsNodes = this.parent.domNode.blockNodes();\n }\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.setSelectionBRConfig = function () {\n var startElem = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endElem = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (isNOU(endElem)) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, startElem, 0);\n }\n else {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);\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.enterAction = 'P';\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 (!isNOU(lastChild) && 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, e.enterAction);\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, enterAction) {\n var insertTag;\n if (enterAction === 'DIV') {\n insertTag = createElement('div');\n insertTag.innerHTML = '
    ';\n }\n else if (enterAction === 'BR') {\n insertTag = createElement('br');\n }\n else {\n insertTag = createElement('p');\n insertTag.innerHTML = '
    ';\n }\n this.parent.domNode.insertAfter(insertTag, referNode);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, insertTag, 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 if (e.enterAction === 'BR') {\n this.setSelectionBRConfig();\n var allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);\n var selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);\n var currentFormatNodes = [];\n if (selectedNodes.length === 0) {\n selectedNodes.push(formatsNodes[0]);\n }\n for (var i = 0; i < selectedNodes.length; i++) {\n var currentNode = selectedNodes[i];\n var previousCurrentNode = void 0;\n while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {\n previousCurrentNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {\n currentFormatNodes.push(previousCurrentNode);\n }\n }\n for (var i = 0; i < currentFormatNodes.length; i++) {\n if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {\n var currentNode = currentFormatNodes[i];\n var previousNode = currentNode;\n while (currentNode === this.parent.editableElement) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n var tempElem = void 0;\n if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&\n previousNode.parentElement === this.parent.editableElement) {\n tempElem = createElement('div');\n previousNode.parentElement.insertBefore(tempElem, previousNode);\n tempElem.appendChild(previousNode);\n }\n else {\n tempElem = previousNode;\n }\n var preNode = tempElem.previousSibling;\n while (!isNOU(preNode) && preNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(preNode)) {\n tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);\n preNode = tempElem.previousSibling;\n }\n if (!isNOU(preNode) && preNode.nodeName === 'BR') {\n detach(preNode);\n }\n var postNode = tempElem.nextSibling;\n while (!isNOU(postNode) && postNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(postNode)) {\n tempElem.appendChild(postNode);\n postNode = tempElem.nextSibling;\n }\n if (!isNOU(postNode) && postNode.nodeName === 'BR') {\n detach(postNode);\n }\n }\n }\n this.setSelectionBRConfig();\n formatsNodes = this.parent.domNode.blockNodes();\n }\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.setSelectionBRConfig = function () {\n var startElem = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endElem = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (isNOU(endElem)) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, startElem, 0);\n }\n else {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);\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 if (range.startContainer === editNode && range.startContainer === range.endContainer && range.startOffset === 0 &&\n range.startOffset === range.endOffset && editNode.textContent.length === 0 && editNode.children[0].tagName === 'P') {\n nodeSelection.setSelectionText(docElement, range.startContainer.children[0], range.startContainer.children[0], 0, 0);\n range = nodeSelection.getRange(docElement);\n }\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 === '' && range.startContainer.nodeName !== 'BR') {\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 if (range.startContainer.nodeName === 'BR') {\n range.startContainer.parentElement.insertBefore(node, range.startContainer);\n }\n else {\n range.insertNode(node);\n }\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 != 'BR' &&\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 (blockNode.nodeName === 'BODY' && range.startContainer === range.endContainer && range.startContainer.nodeType === 1) {\n blockNode = range.startContainer;\n }\n if (blockNode.closest('LI') && node && node.firstElementChild &&\n ((node).firstElementChild.tagName === 'OL' || node.firstElementChild.tagName === 'UL')) {\n var liNode = void 0;\n while (node.firstElementChild.lastElementChild && node.firstElementChild.lastElementChild.tagName === 'LI') {\n liNode = node.firstElementChild.lastElementChild;\n liNode.style.removeProperty('margin-left');\n liNode.style.removeProperty('margin-top');\n liNode.style.removeProperty('margin-bottom');\n node.firstElementChild.insertAdjacentElement('afterend', liNode);\n }\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 currentNode = nodes[nodes.length - 1];\n var splitedElm = void 0;\n if ((currentNode.nodeName === 'BR' || currentNode.nodeName === 'HR') && !isNOU(currentNode.parentElement) &&\n currentNode.parentElement.textContent.trim().length === 0) {\n splitedElm = currentNode;\n }\n else {\n splitedElm = nodeCutter.GetSpliceNode(range, blockNode);\n }\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 if (range.endContainer.nodeName === '#text' && range.startContainer.textContent.length === (range.endOffset + 1) &&\n range.endContainer.textContent.charAt(range.endOffset) === ' ' && range.endContainer.nextSibling.nodeName === 'A') {\n domSelection.setSelectionText(this.parent.currentDocument, range.startContainer, range.endContainer, range.startOffset, range.endOffset + 1);\n range = domSelection.getRange(this.parent.currentDocument);\n }\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, formatUnit } 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().toLowerCase()) {\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 imgElm_1.addEventListener('load', function () {\n if (e.value !== 'Replace' || !isReplaced) {\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 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 }\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 if (e.item.width !== 'auto') {\n selectNode.style.width = formatUnit(e.item.width);\n }\n else {\n selectNode.removeAttribute('width');\n }\n if (e.item.height !== 'auto') {\n selectNode.style.height = formatUnit(e.item.height);\n }\n else {\n selectNode.removeAttribute('height');\n }\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 if (!isNOU(selectNode)) {\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 };\n ImageCommand.prototype.imageJustifyCenter = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNOU(selectNode)) {\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 };\n ImageCommand.prototype.imageJustifyRight = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNOU(selectNode)) {\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 };\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.rows; 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 insertElem = void 0;\n if (e.enterAction === 'DIV') {\n insertElem = createElement('div');\n insertElem.appendChild(createElement('br'));\n }\n else if (e.enterAction === 'BR') {\n insertElem = createElement('br');\n }\n else {\n insertElem = createElement('p');\n insertElem.appendChild(createElement('br'));\n }\n this.insertAfter(insertElem, 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(':scope > td, :scope > th')).indexOf(selectedCell);\n var previousWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll(':scope > td, :scope > th').length);\n var currentWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll(':scope > td, :scope > 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(':scope > td, :scope > th')[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.rows;\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 'del'\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} enterAction - specifies the enter key action\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, enterAction, value, selector) {\n this.enterAction = enterAction;\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 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 preventRestore = 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 if (cursorNode.nodeName === 'BR' && cursorNode.parentNode.textContent.length === 0) {\n preventRestore = true;\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, enterAction);\n }\n }\n };\n SelectionCommands.insertCursorNode = function (docElement, domSelection, range, isFormatted, nodeCutter, format, value, endNode) {\n var cursorNodes = domSelection.getNodeCollection(range);\n var domNode = new DOMNode(endNode, docElement);\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 if (cursorFormat.firstChild.textContent.charCodeAt(0) === 8203 && cursorFormat.firstChild.nodeType === 3) {\n var isCursorEqual = false;\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var emptySpaceNode = void 0;\n if (cursorFormat.firstChild === cursorNode) {\n cursorNode.textContent = (cursorFormat.parentElement && (domNode.isBlockNode(cursorFormat.parentElement) &&\n cursorFormat.parentElement.textContent.length <= 1 ? cursorFormat.parentElement.childElementCount > 1 :\n cursorFormat.childElementCount === 0) &&\n (cursorFormat.parentElement.textContent.length > 1 ||\n cursorFormat.parentElement.firstChild && cursorFormat.parentElement.firstChild.nodeType === 1) ?\n cursorNode.textContent : cursorNode.textContent.replace(regEx, ''));\n emptySpaceNode = cursorNode;\n isCursorEqual = true;\n }\n else {\n cursorFormat.firstChild.textContent = cursorFormat.firstChild.textContent.replace(regEx, '');\n emptySpaceNode = cursorFormat.firstChild;\n }\n var pointer = void 0;\n if (emptySpaceNode.textContent.length === 0) {\n if (!isNOU(emptySpaceNode.previousSibling)) {\n cursorNode = emptySpaceNode.previousSibling;\n pointer = emptySpaceNode.textContent.length - 1;\n domSelection.setCursorPoint(docElement, emptySpaceNode, pointer);\n }\n else if (!isNOU(emptySpaceNode.parentElement) && emptySpaceNode.parentElement.textContent.length === 0) {\n var brElem = document.createElement('BR');\n emptySpaceNode.parentElement.appendChild(brElem);\n detach(emptySpaceNode);\n cursorNode = brElem;\n domSelection.setCursorPoint(docElement, cursorNode.parentElement, 0);\n }\n }\n }\n if ((['fontcolor', 'fontname', 'fontsize', 'backgroundcolor'].indexOf(format) > -1)) {\n if (format === 'fontcolor') {\n cursorFormat.style.color = value;\n }\n else if (format === 'fontname') {\n cursorFormat.style.fontFamily = value;\n }\n else if (format === 'fontsize') {\n cursorFormat.style.fontSize = value;\n }\n else {\n cursorFormat.style.backgroundColor = value;\n }\n cursorNode = cursorFormat;\n }\n else {\n InsertMethods.unwrap(cursorFormat);\n }\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 if (cursorNodes.length === 1 && range.startOffset === 0 && (cursorNodes[0].nodeName === 'BR' ||\n cursorNodes[0].nextSibling.nodeName === 'BR')) {\n detach(cursorNodes[0].nodeName === '#text' ? cursorNodes[0].nextSibling : cursorNodes[0]);\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 var startText = range.startContainer.nodeName === '#text' ?\n range.startContainer.textContent.substring(range.startOffset, range.startContainer.textContent.length) :\n range.startContainer.textContent;\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 (child[num].textContent === startText) {\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 }\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 if (!(nodes[index].nodeName === 'BR' && this.enterAction === 'BR')) {\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 }\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 SelectionCommands.enterAction = 'P';\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, e.enterAction);\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.enterAction, 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 { DOMNode } from './dom-node';\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} enterAction - specifies the enter key action\n * @param {string} selector - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n ClearFormat.clear = function (docElement, endNode, enterAction, selector) {\n this.domNode = new DOMNode(endNode, docElement);\n this.defaultTag = enterAction === 'P' ? this.defaultTag : 'div';\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(this.defaultTag));\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(this.defaultTag));\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(this.defaultTag));\n InsertMethods.unwrap(childNodes[index2]);\n }\n }\n }\n else {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));\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 var currentInlineNode = textNodes[index];\n var currentNode = void 0;\n while (!this.domNode.isBlockNode(currentInlineNode)) {\n currentNode = currentInlineNode;\n currentInlineNode = currentInlineNode.parentElement;\n }\n if (currentNode &&\n IsFormatted.inlineTags.indexOf(currentNode.nodeName.toLocaleLowerCase()) > -1) {\n nodeCutter.GetSpliceNode(range, currentNode);\n this.removeInlineParent(currentNode);\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 ClearFormat.defaultTag = 'p';\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, enterAction: e.enterAction });\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.enterAction, 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, detach } 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 currentContainer = range.startContainer;\n for (var i = currentContainer.childNodes.length - 1; i >= 0; i--) {\n if (!isNullOrUndefined(currentContainer.childNodes[i]) && currentContainer.childNodes[i].nodeName === '#text' &&\n currentContainer.childNodes[i].textContent.length === 0 && currentContainer.childNodes[i].nodeName !== 'IMG' &&\n currentContainer.childNodes[i].nodeName !== 'BR' && currentContainer.childNodes[i].nodeName && 'HR') {\n detach(currentContainer.childNodes[i]);\n }\n }\n 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 = !isNOU(e.allowedStylePropertiesArray) ? 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 // eslint-disable-next-line\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 var listStyleType = void 0;\n if (!isNOU(this.listContents[0])) {\n type = this.listContents[0].trim().length > 1 ? 'ol' : 'ul';\n listStyleType = this.getlistStyleType(this.listContents[0], type);\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, listStyleTypeName: listStyleType });\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.getlistStyleType = function (listContent, type) {\n var currentListClass;\n if (type === 'ol') {\n switch (listContent.split('.')[0]) {\n case \"A\":\n currentListClass = \"upper-alpha\";\n break;\n case \"a\":\n currentListClass = \"lower-alpha\";\n break;\n case \"I\":\n currentListClass = \"upper-roman\";\n break;\n case \"i\":\n currentListClass = \"lower-roman\";\n break;\n case \"α\":\n currentListClass = \"lower-greek\";\n break;\n default:\n currentListClass = \"decimal\";\n break;\n }\n }\n else {\n switch (listContent.split('.')[0]) {\n case \"o\":\n currentListClass = \"circle\";\n break;\n case \"§\":\n currentListClass = \"square\";\n break;\n default:\n currentListClass = \"disc\";\n break;\n }\n }\n return currentListClass;\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.listStyleType = collection[index].listStyleTypeName;\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 temp.style.listStyleType = collection[index].listStyleTypeName;\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');\n if (j != collection[index].nestedLevel - pLevel - 1 && collection[index].nestedLevel - pLevel > 1) {\n prevList.style.listStyleType = \"none\";\n }\n temp.appendChild(prevList);\n }\n prevList.appendChild(pElement);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\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.listStyleType = collection[index].listStyleTypeName;\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 temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\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.listStyleType = collection[index].listStyleTypeName;\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 : ''));\n pLevel = collection[index].nestedLevel;\n listCount++;\n }\n return root;\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, enterAction) {\n switch (command.toLowerCase()) {\n case 'lists':\n this.observer.notify(EVENTS.LIST_TYPE, { subCommand: value, event: event, callBack: callBack,\n selector: selector, item: exeValue, enterAction: enterAction });\n break;\n case 'formats':\n this.observer.notify(EVENTS.FORMAT_TYPE, { subCommand: value, event: event, callBack: callBack,\n selector: selector, exeValue: exeValue, enterAction: enterAction\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, enterAction: enterAction });\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, enterAction: enterAction });\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, enterAction: enterAction });\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)).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) {\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 id: this.parent.getID() + '_rte-view',\n className: 'e-rte-content',\n styles: 'display:block;',\n attrs: { 'srcdoc': iFrameContent }\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\" ?\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 * @param {number} valueLength - specifies the length of the current 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(/ /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 { isNullOrUndefined as isNOU } 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, getDefaultValue } 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.isImageDelete = false;\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.keyUp, this.onKeyUp, 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.onKeyUp = function (e) {\n var args = e.args;\n var restrictKeys = [8, 9, 13, 16, 17, 18, 20, 27, 37, 38, 39, 40, 44, 45, 46, 91,\n 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123];\n var range = this.parent.getRange();\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var pointer;\n if (restrictKeys.indexOf(args.keyCode) < 0 && !args.shiftKey && !args.ctrlKey && !args.altKey) {\n if (range.startContainer.textContent.charCodeAt(0) === 8203) {\n pointer = range.startOffset - 1;\n range.startContainer.textContent = range.startContainer.textContent.replace(regEx, '');\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), range.startContainer, pointer);\n }\n if (!isNOU(range.startContainer.previousSibling) && !isNOU(range.startContainer.previousSibling.parentElement) &&\n range.startContainer.parentElement === range.startContainer.previousSibling.parentElement &&\n range.startContainer.previousSibling.textContent.charCodeAt(0) === 8203 &&\n range.startContainer.previousSibling.textContent.length <= 1) {\n range.startContainer.previousSibling.textContent = range.startContainer.previousSibling.textContent.replace(regEx, '');\n }\n if (range.endContainer.textContent.charCodeAt(range.endOffset) === 8203) {\n pointer = range.startOffset;\n range.endContainer.textContent = range.endContainer.textContent.replace(regEx, '');\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), range.startContainer, pointer);\n }\n }\n };\n HtmlEditor.prototype.onKeyDown = function (e) {\n var _this = this;\n var currentRange;\n var args = e.args;\n if (Browser.info.name === 'chrome') {\n currentRange = this.parent.getRange();\n this.backSpaceCleanup(e, currentRange);\n this.deleteCleanup(e, currentRange);\n }\n if (args.keyCode === 9 && this.parent.enableTabKey) {\n if (!isNOU(args.target) && isNullOrUndefined(closest(args.target, '.e-rte-toolbar'))) {\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 args.preventDefault();\n if (!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 }\n if (e.args.action === 'space' ||\n e.args.action === 'enter' ||\n e.args.keyCode === 13) {\n this.spaceLink(e.args);\n if (this.parent.editorMode === 'HTML' && !this.parent.readonly) {\n this.parent.notify(events.enterHandler, { args: e.args });\n }\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 if (!this.isImageDelete) {\n args.preventDefault();\n }\n }\n };\n HtmlEditor.prototype.isOrderedList = function (editorValue) {\n editorValue = editorValue.replace(/\\u200B/g, '');\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 editorValue = editorValue.replace(/\\u200B/g, '');\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.nodeName === 'BR' ?\n liElement.previousElementSibling : liElement.previousElementSibling.lastElementChild;\n if (!isNullOrUndefined(liElement.lastElementChild) && liElement.lastElementChild.nodeName !== 'BR') {\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 if (currentRange.startOffset === 0 && currentRange.endOffset === 1 &&\n this.deleteRangeElement.childNodes[0].nodeName === 'IMG') {\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.parent.contentModule.getDocument(), this.deleteRangeElement, this.deleteRangeElement, 0, 1);\n this.isImageDelete = true;\n }\n else {\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), this.deleteRangeElement, this.deleteRangeElement.childNodes.length);\n this.isImageDelete = false;\n }\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 if (!isLiElement) {\n detach(this.deleteOldRangeElement);\n }\n else {\n detach(this.deleteOldRangeElement.parentElement);\n }\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 += getDefaultValue(this.parent);\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.replace('¶', '&para');\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined, createElement, remove, closest, addClass, removeClass, extend } from '@syncfusion/ej2-base';\nimport { Toolbar } from '@syncfusion/ej2-navigations';\nimport { Calendar } from '@syncfusion/ej2-calendars';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\nimport * as cls from '../base/css-constant';\n/**\n * Header module\n */\nvar HeaderRenderer = /** @class */ (function () {\n function HeaderRenderer(parent) {\n this.parent = parent;\n this.l10n = this.parent.localeObj;\n this.renderHeader();\n this.addEventListener();\n }\n HeaderRenderer.prototype.addEventListener = function () {\n this.parent.on(events.documentClick, this.closeHeaderPopup, this);\n };\n HeaderRenderer.prototype.removeEventListener = function () {\n this.parent.off(events.documentClick, this.closeHeaderPopup);\n };\n HeaderRenderer.prototype.closeHeaderPopup = function (e) {\n var closestEle = closest(e.event.target, '.e-date-range,.e-header-popup,.e-day,.e-selected');\n var closestPop = closest(e.event.target, '.e-hor-nav,.e-toolbar-pop');\n var contentWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (this.parent.isAdaptive) {\n if (!isNullOrUndefined(closestPop) && (closestPop.classList.contains('e-toolbar-pop') ||\n closestPop.classList.contains('e-hor-nav')) && !(closestPop.classList.contains('e-hor-nav') &&\n this.element.querySelector('.e-toolbar-pop').classList.contains(cls.POPUP_OPEN))) {\n addClass([contentWrap], cls.SCROLL_HIDDEN);\n }\n else {\n removeClass([contentWrap], cls.SCROLL_HIDDEN);\n var popupEle = this.element.querySelector('.e-toolbar-pop');\n if (!isNullOrUndefined(popupEle)) {\n var popupObj = popupEle.ej2_instances[0];\n if (popupObj && !(!isNullOrUndefined(closestPop) && closestPop.classList.contains('e-hor-nav') &&\n popupEle.classList.contains(cls.POPUP_OPEN))) {\n popupObj.hide();\n }\n }\n }\n }\n if (!isNullOrUndefined(closestEle)) {\n return;\n }\n this.hideHeaderPopup();\n };\n HeaderRenderer.prototype.hideHeaderPopup = function () {\n if (this.headerPopup) {\n this.headerPopup.hide();\n }\n };\n HeaderRenderer.prototype.renderHeader = function () {\n this.element = createElement('div', { className: cls.TOOLBAR_CONTAINER });\n var toolbarEle = createElement('div', { className: cls.HEADER_TOOLBAR });\n this.element.appendChild(toolbarEle);\n this.parent.element.insertBefore(this.element, this.parent.element.firstElementChild);\n this.renderToolbar();\n };\n HeaderRenderer.prototype.renderToolbar = function () {\n var _this = this;\n var items = this.getItems();\n this.parent.trigger(events.actionBegin, { requestType: 'toolbarItemRendering', items: items }, function (args) {\n _this.toolbarObj = new Toolbar({\n items: args.items,\n overflowMode: 'Popup',\n clicked: _this.toolbarClickHandler.bind(_this),\n enableRtl: _this.parent.enableRtl,\n locale: _this.parent.locale\n });\n _this.toolbarObj.appendTo(_this.parent.element.querySelector('.' + cls.HEADER_TOOLBAR));\n var prevNavEle = _this.toolbarObj.element.querySelector('.e-prev');\n if (prevNavEle) {\n prevNavEle.firstElementChild.setAttribute('title', _this.l10n.getConstant('previous'));\n }\n var nextNavEle = _this.toolbarObj.element.querySelector('.e-next');\n if (nextNavEle) {\n nextNavEle.firstElementChild.setAttribute('title', _this.l10n.getConstant('next'));\n }\n _this.updateAddIcon();\n _this.updateActiveView();\n _this.parent.trigger(events.actionComplete, { requestType: 'toolBarItemRendered', items: _this.toolbarObj.items });\n });\n };\n HeaderRenderer.prototype.updateItems = function () {\n var _this = this;\n if (this.toolbarObj) {\n var items = this.getItems();\n this.parent.trigger(events.actionBegin, { requestType: 'toolbarItemRendering', items: items }, function (args) {\n _this.toolbarObj.items = args.items;\n _this.toolbarObj.dataBind();\n _this.parent.trigger(events.actionComplete, { requestType: 'toolBarItemRendered', items: _this.toolbarObj.items });\n });\n }\n };\n HeaderRenderer.prototype.getPopUpRelativeElement = function () {\n if (this.parent.isAdaptive) {\n return this.toolbarObj.element;\n }\n return this.element.querySelector('.e-date-range');\n };\n HeaderRenderer.prototype.setDayOfWeek = function (index) {\n if (this.headerCalendar) {\n this.headerCalendar.firstDayOfWeek = index;\n this.headerCalendar.dataBind();\n }\n };\n HeaderRenderer.prototype.setCalendarDate = function (date) {\n if (this.headerCalendar) {\n this.headerCalendar.value = date;\n this.headerCalendar.dataBind();\n }\n };\n HeaderRenderer.prototype.setCalendarMinMaxDate = function () {\n if (this.headerCalendar) {\n this.headerCalendar.min = this.parent.minDate;\n this.headerCalendar.max = this.parent.maxDate;\n this.headerCalendar.dataBind();\n }\n };\n HeaderRenderer.prototype.getCalendarView = function () {\n if (['Month', 'MonthAgenda', 'TimelineMonth'].indexOf(this.parent.currentView) > -1) {\n return 'Year';\n }\n else if (['Year', 'TimelineYear'].indexOf(this.parent.currentView) > -1) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n HeaderRenderer.prototype.setCalendarView = function () {\n if (this.headerCalendar) {\n var calendarView = this.getCalendarView();\n this.headerCalendar.depth = calendarView;\n this.headerCalendar.start = calendarView;\n this.headerCalendar.refresh();\n }\n };\n HeaderRenderer.prototype.updateActiveView = function () {\n var selEle = [].slice.call(this.toolbarObj.element.querySelectorAll('.e-views'));\n removeClass(selEle, ['e-active-view']);\n if (selEle.length > 0 && selEle[this.parent.viewIndex]) {\n addClass([selEle[this.parent.viewIndex]], ['e-active-view']);\n }\n };\n HeaderRenderer.prototype.updateDateRange = function (text) {\n var selEle = this.toolbarObj.element.querySelector('.e-date-range');\n if (selEle) {\n selEle.setAttribute('aria-label', text);\n selEle.querySelector('.e-tbar-btn-text').innerHTML = text;\n this.refresh();\n }\n };\n HeaderRenderer.prototype.refresh = function () {\n if (this.toolbarObj) {\n this.toolbarObj.refreshOverflow();\n }\n };\n HeaderRenderer.prototype.updateAddIcon = function () {\n var addEle = this.toolbarObj.element.querySelector('.e-add');\n if (addEle) {\n if (!this.parent.eventSettings.allowAdding) {\n addClass([addEle], cls.HIDDEN_CLASS);\n }\n else {\n removeClass([addEle], cls.HIDDEN_CLASS);\n }\n }\n };\n HeaderRenderer.prototype.getDateRangeText = function () {\n var dateString = this.parent.globalize.formatDate(this.parent.selectedDate, {\n format: 'MMMM y', calendar: this.parent.getCalendarMode()\n });\n return util.capitalizeFirstWord(dateString, 'single');\n };\n HeaderRenderer.prototype.getItems = function () {\n var items = [];\n items.push({\n align: 'Left', prefixIcon: 'e-icon-prev', tooltipText: 'Previous', overflow: 'Show',\n cssClass: 'e-prev', htmlAttributes: { 'aria-label': 'previous period', 'role': 'navigation' }\n });\n items.push({\n align: 'Left', prefixIcon: 'e-icon-next', tooltipText: 'Next', overflow: 'Show',\n cssClass: 'e-next', htmlAttributes: { 'aria-label': 'next period', 'role': 'navigation' }\n });\n items.push({\n align: 'Left', text: this.getDateRangeText(), suffixIcon: 'e-icon-down-arrow', cssClass: 'e-date-range',\n overflow: 'Show',\n htmlAttributes: { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title', 'role': 'navigation' }\n });\n if (this.parent.isAdaptive || this.parent.enableAdaptiveUI) {\n items.push({\n align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-add',\n text: this.l10n.getConstant('newEvent'), cssClass: 'e-add', overflow: 'Show'\n });\n items.push({\n align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-today',\n text: this.l10n.getConstant('today'), cssClass: 'e-today', overflow: 'Show'\n });\n }\n else {\n items.push({\n align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-day',\n text: this.l10n.getConstant('today'), cssClass: 'e-today', overflow: 'Show'\n });\n if (this.parent.views.length > 1) {\n items.push({ align: 'Right', type: 'Separator', cssClass: 'e-schedule-seperator' });\n }\n }\n if (this.parent.views.length > 1) {\n for (var _i = 0, _a = this.parent.views; _i < _a.length; _i++) {\n var item = _a[_i];\n items.push(this.getItemObject(item));\n }\n }\n return items;\n };\n HeaderRenderer.prototype.getItemObject = function (item) {\n var viewName;\n var displayName;\n if (typeof (item) === 'string') {\n viewName = item.toLowerCase();\n displayName = null;\n }\n else {\n viewName = item.option.toLowerCase();\n displayName = item.displayName;\n }\n var view;\n var orientationClass;\n var isItemInsidePopup = this.parent.isAdaptive || this.parent.enableAdaptiveUI;\n switch (viewName) {\n case 'day':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-day',\n text: displayName || this.l10n.getConstant('day'), cssClass: 'e-views e-day'\n };\n break;\n case 'week':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-week',\n text: displayName || this.l10n.getConstant('week'), cssClass: 'e-views e-week'\n };\n break;\n case 'workweek':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-workweek',\n text: displayName || this.l10n.getConstant('workWeek'), cssClass: 'e-views e-work-week'\n };\n break;\n case 'month':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-month',\n text: displayName || this.l10n.getConstant('month'), cssClass: 'e-views e-month'\n };\n break;\n case 'year':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-year',\n text: displayName || this.l10n.getConstant('year'), cssClass: 'e-views e-year'\n };\n break;\n case 'agenda':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-agenda',\n text: displayName || this.l10n.getConstant('agenda'), cssClass: 'e-views e-agenda'\n };\n break;\n case 'monthagenda':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-month-agenda',\n text: displayName || this.l10n.getConstant('monthAgenda'), cssClass: 'e-views e-month-agenda'\n };\n break;\n case 'timelineday':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-day',\n text: displayName || this.l10n.getConstant('timelineDay'), cssClass: 'e-views e-timeline-day'\n };\n break;\n case 'timelineweek':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-week',\n text: displayName || this.l10n.getConstant('timelineWeek'), cssClass: 'e-views e-timeline-week'\n };\n break;\n case 'timelineworkweek':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-workweek',\n text: displayName || this.l10n.getConstant('timelineWorkWeek'), cssClass: 'e-views e-timeline-work-week'\n };\n break;\n case 'timelinemonth':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-month',\n text: displayName || this.l10n.getConstant('timelineMonth'), cssClass: 'e-views e-timeline-month'\n };\n break;\n case 'timelineyear':\n orientationClass = (item.orientation === 'Vertical') ? 'vertical' : 'horizontal';\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-year-' + orientationClass,\n text: displayName || this.l10n.getConstant('timelineYear'), cssClass: 'e-views e-timeline-year'\n };\n break;\n }\n return view;\n };\n HeaderRenderer.prototype.renderHeaderPopup = function () {\n var headerPopupEle = createElement('div', { className: cls.HEADER_POPUP_CLASS });\n var headerCalendarEle = createElement('div', { className: cls.HEADER_CALENDAR_CLASS });\n headerPopupEle.appendChild(headerCalendarEle);\n this.element.appendChild(headerPopupEle);\n this.headerPopup = new Popup(headerPopupEle, {\n actionOnScroll: 'hide',\n targetType: 'relative',\n relateTo: this.getPopUpRelativeElement(),\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl\n });\n var calendarView = this.getCalendarView();\n var isDisplayDate = this.parent.currentView === 'Month' &&\n !isNullOrUndefined(this.parent.activeViewOptions.displayDate) && !this.hasSelectedDate();\n this.headerCalendar = new Calendar({\n value: isDisplayDate ? this.parent.activeViewOptions.displayDate : this.parent.selectedDate,\n min: this.parent.minDate,\n max: this.parent.maxDate,\n firstDayOfWeek: this.parent.activeViewOptions.firstDayOfWeek,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n depth: calendarView,\n start: calendarView,\n calendarMode: this.parent.calendarMode,\n change: this.calendarChange.bind(this)\n });\n this.setCalendarTimezone();\n this.headerCalendar.appendTo(headerCalendarEle);\n this.headerPopup.hide();\n };\n HeaderRenderer.prototype.calendarChange = function (args) {\n if (args.value.getTime() !== this.parent.selectedDate.getTime()) {\n var calendarDate = util.resetTime(new Date(args.value));\n this.parent.changeDate(calendarDate);\n }\n this.headerPopup.hide();\n };\n HeaderRenderer.prototype.setCalendarTimezone = function () {\n if (this.headerCalendar) {\n this.headerCalendar.timezone = this.parent.timezone || this.parent.tzModule.getLocalTimezoneName();\n }\n };\n HeaderRenderer.prototype.calculateViewIndex = function (args) {\n var target = closest(args.originalEvent.target, '.e-views');\n var views = [].slice.call(this.element.querySelectorAll('.e-views'));\n return views.indexOf(target);\n };\n HeaderRenderer.prototype.toolbarClickHandler = function (args) {\n if (!args.item) {\n return;\n }\n var strClass = args.item.cssClass.replace('e-views ', '');\n var data;\n var isSameTime;\n var currentTime;\n switch (strClass) {\n case 'e-date-range':\n if (!this.headerPopup) {\n this.renderHeaderPopup();\n }\n if (this.headerPopup.element.classList.contains(cls.POPUP_OPEN)) {\n this.headerPopup.hide();\n }\n else {\n this.headerPopup.show();\n }\n break;\n case 'e-day':\n this.parent.changeView('Day', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-week':\n this.parent.changeView('Week', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-work-week':\n this.parent.changeView('WorkWeek', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-month':\n this.parent.changeView('Month', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-year':\n this.parent.changeView('Year', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-agenda':\n this.parent.changeView('Agenda', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-month-agenda':\n this.parent.changeView('MonthAgenda', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-day':\n this.parent.changeView('TimelineDay', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-week':\n this.parent.changeView('TimelineWeek', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-work-week':\n this.parent.changeView('TimelineWorkWeek', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-month':\n this.parent.changeView('TimelineMonth', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-year':\n this.parent.changeView('TimelineYear', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-today':\n currentTime = util.resetTime(this.parent.getCurrentTime());\n if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda' || !this.parent.isSelectedDate(currentTime) ||\n this.parent.currentView === 'Month' && this.parent.activeViewOptions.displayDate && !this.hasSelectedDate() &&\n util.resetTime(this.parent.activeViewOptions.displayDate) !== currentTime || this.parent.currentView === 'Month' &&\n this.parent.activeViewOptions.numberOfWeeks > 0 && !this.hasSelectedDate()\n && util.resetTime(util.firstDateOfMonth(this.parent.selectedDate)) !== currentTime) {\n this.parent.changeDate(currentTime, args.originalEvent);\n }\n break;\n case 'e-prev':\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), args.originalEvent);\n break;\n case 'e-next':\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), args.originalEvent);\n break;\n case 'e-add':\n isSameTime = this.parent.activeCellsData.startTime.getTime() === this.parent.activeCellsData.endTime.getTime();\n if (this.parent.activeCellsData && !isSameTime) {\n data = this.parent.activeCellsData;\n }\n else {\n var interval = this.parent.activeViewOptions.timeScale.interval;\n var slotCount = this.parent.activeViewOptions.timeScale.slotCount;\n var msInterval = (interval * util.MS_PER_MINUTE) / slotCount;\n var startTime = new Date(this.parent.selectedDate.getTime());\n var currentTime_1 = this.parent.getCurrentTime();\n startTime.setHours(currentTime_1.getHours(), (Math.round(startTime.getMinutes() / msInterval) * msInterval), 0);\n var endTime = new Date(new Date(startTime.getTime()).setMilliseconds(startTime.getMilliseconds() + msInterval));\n data = { startTime: startTime, endTime: endTime, isAllDay: false };\n }\n this.parent.eventWindow.openEditor(extend(data, { cancel: false, event: args.originalEvent }), 'Add');\n break;\n }\n if (isNullOrUndefined(this.toolbarObj)) {\n return;\n }\n var toolbarPopUp = this.toolbarObj.element.querySelector('.e-toolbar-pop');\n if (toolbarPopUp && args.item.type !== 'Input') {\n toolbarPopUp.ej2_instances[0].hide({ name: 'SlideUp', duration: 100 });\n }\n };\n HeaderRenderer.prototype.hasSelectedDate = function () {\n var selectedTime = util.resetTime(this.parent.selectedDate).getTime();\n return selectedTime >= this.parent.activeView.getStartDate().getTime() &&\n selectedTime <= this.parent.activeView.getEndDate().getTime();\n };\n HeaderRenderer.prototype.getHeaderElement = function () {\n return this.toolbarObj.element;\n };\n HeaderRenderer.prototype.updateHeaderItems = function (classType) {\n var prevNavEle = this.toolbarObj.element.querySelector('.e-prev');\n var nextNavEle = this.toolbarObj.element.querySelector('.e-next');\n var dateRangeEle = this.toolbarObj.element.querySelector('.e-date-range');\n if (prevNavEle) {\n if (classType === 'add') {\n addClass([prevNavEle], cls.HIDDEN_CLASS);\n }\n else {\n removeClass([prevNavEle], cls.HIDDEN_CLASS);\n }\n }\n if (nextNavEle) {\n if (classType === 'add') {\n addClass([nextNavEle], cls.HIDDEN_CLASS);\n }\n else {\n removeClass([nextNavEle], cls.HIDDEN_CLASS);\n }\n }\n if (dateRangeEle) {\n if (classType === 'add') {\n addClass([dateRangeEle], cls.TEXT_ELLIPSIS);\n }\n else {\n removeClass([dateRangeEle], cls.TEXT_ELLIPSIS);\n }\n }\n };\n HeaderRenderer.prototype.previousNextIconHandler = function () {\n var dates = (this.parent.currentView === 'Agenda' ?\n [this.parent.getCurrentViewDates()[0]] : this.parent.getCurrentViewDates());\n var prevNavEle = this.toolbarObj.element.querySelector('.' + cls.PREVIOUS_DATE_CLASS);\n var nextNavEle = this.toolbarObj.element.querySelector('.' + cls.NEXT_DATE_CLASS);\n var firstDate = new Date(dates[0].getTime());\n var lastDate = new Date(dates[dates.length - 1].getTime());\n if (this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'TimelineWorkWeek') {\n firstDate = util.getWeekFirstDate(util.resetTime(this.parent.selectedDate), this.parent.firstDayOfWeek);\n lastDate = util.addDays(firstDate, 7 * this.parent.activeViewOptions.interval);\n }\n if (this.parent.currentView === 'Month') {\n var isCustomMonth = !isNullOrUndefined(this.parent.activeViewOptions.displayDate) ||\n this.parent.activeViewOptions.numberOfWeeks > 0;\n firstDate = isCustomMonth ? this.parent.activeView.getStartDate() : util.firstDateOfMonth(this.parent.selectedDate);\n lastDate = isCustomMonth ? this.parent.activeView.getEndDate() :\n util.lastDateOfMonth(util.addMonths(firstDate, this.parent.activeViewOptions.interval - 1));\n }\n if (!isNullOrUndefined(prevNavEle)) {\n this.toolbarObj.enableItems(prevNavEle, firstDate > this.parent.minDate);\n }\n if (!isNullOrUndefined(nextNavEle)) {\n this.toolbarObj.enableItems(nextNavEle, lastDate < this.parent.maxDate);\n }\n this.setCalendarMinMaxDate();\n };\n HeaderRenderer.prototype.getModuleName = function () {\n return 'headerbar';\n };\n HeaderRenderer.prototype.destroy = function () {\n if (this.headerPopup && !this.headerPopup.isDestroyed) {\n this.headerPopup.destroy();\n this.headerPopup = null;\n }\n if (this.headerCalendar && !this.headerCalendar.isDestroyed) {\n this.headerCalendar.destroy();\n this.headerCalendar = null;\n }\n if (this.toolbarObj && !this.toolbarObj.isDestroyed) {\n this.toolbarObj.destroy();\n this.removeEventListener();\n remove(this.element);\n this.toolbarObj = null;\n }\n this.element = null;\n this.parent = null;\n this.l10n = null;\n };\n return HeaderRenderer;\n}());\nexport { HeaderRenderer };\n","import { formatUnit } from '@syncfusion/ej2-base';\nimport { contentReady, uiUpdate, scrollUiUpdate } from '../base/constant';\n/**\n * `Scroll` module\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the scrolling.\n *\n * @param {Schedule} parent Accepts the Schedule instance\n */\n function Scroll(parent) {\n this.parent = 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 * Internal method to set the element width\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.setWidth = function () {\n this.parent.element.style.width = formatUnit(this.parent.width);\n };\n /**\n * Internal method to set the element height\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.setHeight = function () {\n this.parent.element.style.height = formatUnit(this.parent.height);\n };\n /**\n * Internal method to bind events\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.addEventListener = function () {\n this.parent.on(contentReady, this.setDimensions, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n };\n /**\n * Internal method to unbind events\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.removeEventListener = function () {\n this.parent.off(contentReady, this.setDimensions);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n };\n /**\n * Internal method to set the dimensions\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.setDimensions = function () {\n this.setWidth();\n this.setHeight();\n var data = { cssProperties: this.parent.getCssProperties(), module: this.getModuleName() };\n this.parent.notify(scrollUiUpdate, data);\n };\n /**\n * Internal method to set the dimensions dynamically\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.onPropertyChanged = function () {\n this.setDimensions();\n };\n /**\n * Destroy the scroll module\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Scroll;\n}());\nexport { Scroll };\n","import { addClass, removeClass, Touch, remove, EventHandler, Browser } from '@syncfusion/ej2-base';\nimport { closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\n/**\n * `touch` module is used to handle touch interactions.\n */\nvar ScheduleTouch = /** @class */ (function () {\n function ScheduleTouch(parent) {\n this.parent = parent;\n this.element = this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS);\n this.touchObj = new Touch(this.element, {\n scroll: this.scrollHandler.bind(this),\n swipe: this.swipeHandler.bind(this),\n tapHold: this.tapHoldHandler.bind(this),\n swipeSettings: { swipeThresholdDistance: 1 }\n });\n EventHandler.add(this.element, 'transitionend', this.onTransitionEnd, this);\n this.touchLeftDirection = this.parent.enableRtl ? 'Right' : 'Left';\n this.touchRightDirection = this.parent.enableRtl ? 'Left' : 'Right';\n }\n ScheduleTouch.prototype.scrollHandler = function (e) {\n if (this.parent.currentView === 'Agenda' || this.parent.uiStateValues.action ||\n (e.originalEvent && (e.originalEvent.target.classList.contains(cls.APPOINTMENT_CLASS) ||\n closest(e.originalEvent.target, '.' + cls.APPOINTMENT_CLASS)))) {\n return;\n }\n if (!this.timeStampStart) {\n this.timeStampStart = Date.now();\n }\n if (this.element.classList.contains(cls.TRANSLATE_CLASS)) {\n this.onTransitionEnd();\n }\n if (e.scrollDirection === 'Left' || e.scrollDirection === 'Right') {\n var args = { requestType: 'dateNavigate', cancel: false, event: e.originalEvent };\n this.parent.trigger(events.actionBegin, args);\n if (args.cancel) {\n return;\n }\n var scrollDiv = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (scrollDiv && scrollDiv.scrollWidth > scrollDiv.clientWidth) {\n return;\n }\n else {\n this.isScrollTriggered = true;\n e.originalEvent.preventDefault();\n e.originalEvent.stopPropagation();\n }\n }\n if (e.scrollDirection === this.touchLeftDirection) {\n if (!this.nextPanel) {\n this.renderPanel(cls.NEXT_PANEL_CLASS, 'next');\n this.nextPanel = {\n element: this.parent.activeView.getPanel(),\n selectedDate: new Date(this.parent.selectedDate.getTime())\n };\n this.setDimensions(this.nextPanel.element);\n }\n var x = this.parent.enableRtl ? e.distanceX : -e.distanceX;\n this.element.style.transform = 'translatex(' + (this.getTranslateX(this.element) + x) + 'px)';\n }\n else if (e.scrollDirection === this.touchRightDirection) {\n var prevWidth = 0;\n if (!this.previousPanel) {\n this.renderPanel(cls.PREVIOUS_PANEL_CLASS, 'previous');\n this.previousPanel = {\n element: this.parent.activeView.getPanel(),\n selectedDate: new Date(this.parent.selectedDate.getTime())\n };\n this.setDimensions(this.previousPanel.element);\n prevWidth = this.previousPanel.element.offsetWidth;\n }\n var x = this.parent.enableRtl ? prevWidth - e.distanceX : -prevWidth + e.distanceX;\n this.element.style.transform = 'translatex(' + (this.getTranslateX(this.element) + x) + 'px)';\n }\n };\n ScheduleTouch.prototype.swipeHandler = function (e) {\n if (!this.isScrollTriggered || this.parent.uiStateValues.action) {\n return;\n }\n this.isScrollTriggered = false;\n var swipeDate = e.swipeDirection === 'Left' ?\n this.parent.activeView.renderDates[0] : this.parent.activeView.renderDates.slice(-1)[0];\n if ((e.swipeDirection === 'Left' && swipeDate < this.parent.maxDate) ||\n (e.swipeDirection === 'Right' && swipeDate >= this.parent.minDate)) {\n var time = Date.now() - this.timeStampStart;\n var offsetDist = (e.distanceX * (Browser.isDevice ? 6 : 1.66));\n if (offsetDist > time || (e.distanceX > (this.parent.element.offsetWidth / 2))) {\n this.swapPanels(e.swipeDirection);\n if (offsetDist > time && (e.distanceX > (this.parent.element.offsetWidth / 2))) {\n this.element.style.transitionDuration = ((offsetDist / time) / 10) + 's';\n }\n this.confirmSwipe(e.swipeDirection);\n }\n else {\n this.cancelSwipe();\n }\n var args = { requestType: 'dateNavigate', cancel: false, event: e.originalEvent };\n this.parent.trigger(events.actionComplete, args);\n }\n else {\n this.cancelSwipe();\n }\n this.timeStampStart = null;\n };\n ScheduleTouch.prototype.tapHoldHandler = function (e) {\n var target = closest(e.originalEvent.target, '.' + cls.APPOINTMENT_CLASS);\n if (!isNullOrUndefined(target) && this.parent.isAdaptive) {\n this.parent.quickPopup.tapHoldEventPopup(e.originalEvent);\n return;\n }\n };\n ScheduleTouch.prototype.renderPanel = function (clsName, nextPrevType) {\n if (!this.currentPanel) {\n this.currentPanel = {\n element: this.parent.activeView.getPanel(),\n selectedDate: new Date(this.parent.selectedDate.getTime())\n };\n this.setDimensions(this.currentPanel.element);\n }\n else {\n this.parent.setProperties({ selectedDate: this.currentPanel.selectedDate }, true);\n }\n this.parent.setProperties({ selectedDate: this.parent.activeView.getNextPreviousDate(nextPrevType) }, true);\n if (this.parent.headerModule) {\n this.parent.headerModule.setCalendarDate(this.parent.selectedDate);\n }\n this.parent.activeView.getRenderDates();\n this.parent.activeView.renderLayout(clsName);\n };\n ScheduleTouch.prototype.swapPanels = function (direction) {\n if (direction === this.touchLeftDirection) {\n var temp = this.nextPanel;\n this.nextPanel = this.currentPanel;\n this.currentPanel = temp;\n }\n else {\n var temp = this.previousPanel;\n this.previousPanel = this.currentPanel;\n this.currentPanel = temp;\n }\n };\n ScheduleTouch.prototype.confirmSwipe = function (swipeDirection) {\n var _this = this;\n var previousDate = swipeDirection === this.touchLeftDirection ?\n this.nextPanel.selectedDate : this.previousPanel.selectedDate;\n var args = {\n action: 'date', cancel: false, previousDate: previousDate, currentDate: this.currentPanel.selectedDate\n };\n this.parent.trigger(events.navigating, args, function (navArgs) {\n if (navArgs.cancel) {\n _this.swapPanels(swipeDirection);\n _this.cancelSwipe();\n }\n else {\n _this.parent.activeView.setPanel(_this.currentPanel.element);\n _this.parent.setProperties({ selectedDate: _this.currentPanel.selectedDate }, true);\n var translateX = void 0;\n if (_this.parent.enableRtl) {\n translateX = swipeDirection === _this.touchLeftDirection ?\n (_this.previousPanel ? _this.previousPanel.element.offsetLeft : _this.currentPanel.element.offsetWidth) : 0;\n }\n else {\n translateX = swipeDirection === _this.touchLeftDirection ? -_this.currentPanel.element.offsetLeft : 0;\n }\n addClass([_this.element], cls.TRANSLATE_CLASS);\n _this.element.style.transform = 'translatex(' + translateX + 'px)';\n if (_this.parent.headerModule) {\n _this.parent.headerModule.updateDateRange(_this.parent.activeView.getDateRangeText());\n }\n _this.parent.renderTemplates();\n _this.parent.crudModule.refreshDataManager();\n }\n });\n };\n ScheduleTouch.prototype.cancelSwipe = function () {\n this.parent.activeView.setPanel(this.currentPanel.element);\n this.parent.setProperties({ selectedDate: this.currentPanel.selectedDate }, true);\n this.parent.activeView.getRenderDates();\n this.parent.activeView.generateColumnLevels();\n addClass([this.element], cls.TRANSLATE_CLASS);\n var prevWidth = this.previousPanel ? this.previousPanel.element.offsetWidth : 0;\n this.element.style.transform = 'translatex(' + (this.parent.enableRtl ? prevWidth : -this.currentPanel.element.offsetLeft) + 'px)';\n };\n ScheduleTouch.prototype.onTransitionEnd = function () {\n removeClass([this.element], cls.TRANSLATE_CLASS);\n this.element.style.transitionDuration = '';\n this.element.style.transform = '';\n if (this.previousPanel) {\n remove(this.previousPanel.element);\n this.previousPanel = null;\n removeClass([this.currentPanel.element], cls.PREVIOUS_PANEL_CLASS);\n addClass([this.currentPanel.element], cls.CURRENT_PANEL_CLASS);\n }\n if (this.nextPanel) {\n remove(this.nextPanel.element);\n this.nextPanel = null;\n removeClass([this.currentPanel.element], cls.NEXT_PANEL_CLASS);\n addClass([this.currentPanel.element], cls.CURRENT_PANEL_CLASS);\n }\n this.currentPanel = null;\n this.parent.activeView.getPanel().style.width = '';\n };\n ScheduleTouch.prototype.getTranslateX = function (element) {\n var style = window.getComputedStyle(element);\n return new WebKitCSSMatrix(style.webkitTransform).m41;\n };\n ScheduleTouch.prototype.setDimensions = function (element) {\n element.style.width = (this.parent.element.clientWidth) + 'px';\n };\n ScheduleTouch.prototype.resetValues = function () {\n this.currentPanel = null;\n this.previousPanel = null;\n this.nextPanel = null;\n this.timeStampStart = null;\n this.element.style.transform = '';\n util.removeChildren(this.element);\n removeClass([this.element], cls.TRANSLATE_CLASS);\n };\n ScheduleTouch.prototype.destroy = function () {\n if (this.touchObj) {\n this.touchObj.destroy();\n this.touchObj = null;\n }\n EventHandler.remove(this.element, 'transitionend', this.onTransitionEnd);\n this.resetValues();\n };\n return ScheduleTouch;\n}());\nexport { ScheduleTouch };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { KeyboardEvents, closest, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport * as event from '../base/constant';\nimport * as util from '../base/util';\nimport * as cls from '../base/css-constant';\n/**\n * Keyboard interaction\n */\nvar KeyboardInteraction = /** @class */ (function () {\n function KeyboardInteraction(parent) {\n this.selectedCells = [];\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDownArrow: 'shift+downarrow',\n shiftUpArrow: 'shift+uparrow',\n shiftRightArrow: 'shift+rightarrow',\n shiftLeftArrow: 'shift+leftarrow',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow',\n altOne: 'alt+1',\n altTwo: 'alt+2',\n altThree: 'alt+3',\n altFour: 'alt+4',\n altFive: 'alt+5',\n altSix: 'alt+6',\n altSeven: 'alt+7',\n altEight: 'alt+8',\n altNine: 'alt+9',\n enter: 'enter',\n escape: 'escape',\n delete: 'delete',\n home: 'home',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n tab: 'tab',\n shiftTab: 'shift+tab',\n ctrlShiftUpArrow: 'ctrl+shift+uparrow',\n ctrlShiftDownArrow: 'ctrl+shift+downarrow',\n ctrlShiftLeftArrow: 'ctrl+shift+leftarrow',\n ctrlShiftRightArrow: 'ctrl+shift+rightarrow'\n };\n this.parent = parent;\n this.parent.element.tabIndex = this.parent.element.tabIndex === -1 ? 0 : this.parent.element.tabIndex;\n this.keyboardModule = new KeyboardEvents(this.parent.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.addEventListener();\n }\n KeyboardInteraction.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'downArrow':\n case 'shiftDownArrow':\n this.processDown(e, e.shiftKey);\n break;\n case 'upArrow':\n case 'shiftUpArrow':\n this.processUp(e, e.shiftKey);\n break;\n case 'leftArrow':\n case 'shiftLeftArrow':\n this.processLeft(e, e.shiftKey);\n break;\n case 'rightArrow':\n case 'shiftRightArrow':\n this.processRight(e, e.shiftKey);\n break;\n case 'ctrlLeftArrow':\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), e);\n if (this.parent.headerModule) {\n this.parent.headerModule.element.querySelector('.e-prev button').focus();\n }\n break;\n case 'ctrlRightArrow':\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), e);\n if (this.parent.headerModule) {\n this.parent.headerModule.element.querySelector('.e-next button').focus();\n }\n break;\n case 'altOne':\n case 'altTwo':\n case 'altThree':\n case 'altFour':\n case 'altFive':\n case 'altSix':\n case 'altSeven':\n case 'altEight':\n case 'altNine':\n this.processViewNavigation(e);\n break;\n case 'enter':\n this.processEnter(e);\n break;\n case 'home':\n this.focusFirstCell();\n break;\n case 'tab':\n case 'shiftTab':\n this.processTab(e, e.shiftKey);\n break;\n case 'delete':\n this.processDelete(e);\n break;\n case 'ctrlShiftUpArrow':\n case 'ctrlShiftDownArrow':\n case 'ctrlShiftLeftArrow':\n case 'ctrlShiftRightArrow':\n this.processCtrlShiftNavigationArrows(e);\n break;\n case 'escape':\n this.processEscape(e);\n break;\n case 'fTwelve':\n if (this.parent.allowInline && this.parent.inlineModule) {\n e.preventDefault();\n this.processFTwelve(e);\n }\n break;\n }\n };\n KeyboardInteraction.prototype.processFTwelve = function (e) {\n var target = e.target;\n if (target.classList.contains(cls.WORK_CELLS_CLASS) || target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n this.parent.activeCellsData = this.getSelectedElements(target);\n var args = extend(this.parent.activeCellsData, { cancel: false, event: e });\n var inlineArgs = {\n element: args.element,\n groupIndex: args.groupIndex, type: 'Cell'\n };\n this.parent.notify(event.inlineClick, inlineArgs);\n }\n if (target.classList.contains(cls.APPOINTMENT_CLASS)) {\n target.click();\n return;\n }\n };\n KeyboardInteraction.prototype.addEventListener = function () {\n this.parent.on(event.cellMouseDown, this.onCellMouseDown, this);\n };\n KeyboardInteraction.prototype.removeEventListener = function () {\n this.parent.off(event.cellMouseDown, this.onCellMouseDown);\n };\n KeyboardInteraction.prototype.onCellMouseDown = function (e) {\n if (e.event.shiftKey) {\n return;\n }\n this.initialTarget = this.getClosestCell(e.event);\n if (this.parent.activeViewOptions.readonly || this.parent.currentView === 'MonthAgenda' || !this.initialTarget) {\n return;\n }\n if (e.event.target.classList.contains(cls.WORK_CELLS_CLASS) && e.event.which !== 3) {\n this.parent.removeSelectedClass();\n EventHandler.add(this.parent.getContentTable(), 'mousemove', this.onMouseSelection, this);\n EventHandler.add(this.parent.getContentTable(), 'mouseup', this.onMoveUp, this);\n }\n if (e.event.target.classList.contains(cls.ALLDAY_CELLS_CLASS) && e.event.which !== 3) {\n this.parent.removeSelectedClass();\n var allDayRow = this.parent.getAllDayRow();\n EventHandler.add(allDayRow, 'mousemove', this.onMouseSelection, this);\n EventHandler.add(allDayRow, 'mouseup', this.onMoveUp, this);\n }\n };\n KeyboardInteraction.prototype.onMouseSelection = function (e) {\n var appointments = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n addClass(appointments, 'e-allow-select');\n var selectionEdges = this.parent.boundaryValidation(e.pageY, e.pageX);\n if (selectionEdges.bottom || selectionEdges.top || selectionEdges.left || selectionEdges.right) {\n var parent_1 = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var yInBounds = parent_1.offsetHeight <= parent_1.scrollHeight && parent_1.scrollTop >= 0 &&\n parent_1.scrollTop + parent_1.offsetHeight <= parent_1.scrollHeight;\n var xInBounds = parent_1.offsetWidth <= parent_1.scrollWidth && parent_1.scrollLeft >= 0 &&\n parent_1.scrollLeft + parent_1.offsetWidth <= parent_1.scrollWidth;\n if (yInBounds && (selectionEdges.top || selectionEdges.bottom)) {\n parent_1.scrollTop += selectionEdges.top ? -e.target.offsetHeight : e.target.offsetHeight;\n }\n if (xInBounds && (selectionEdges.left || selectionEdges.right)) {\n parent_1.scrollLeft += selectionEdges.left ? -e.target.offsetWidth : e.target.offsetWidth;\n }\n }\n var target = this.getClosestCell(e);\n if (target) {\n this.selectCells(true, target);\n }\n };\n KeyboardInteraction.prototype.getClosestCell = function (e) {\n return closest(e.target, '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS);\n };\n KeyboardInteraction.prototype.onMoveUp = function (e) {\n var _this = this;\n var appointments = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n removeClass(appointments, 'e-allow-select');\n if (e.target.classList.contains(cls.WORK_CELLS_CLASS)) {\n EventHandler.remove(this.parent.getContentTable(), 'mousemove', this.onMouseSelection);\n EventHandler.remove(this.parent.getContentTable(), 'mouseup', this.onMoveUp);\n }\n if (e.target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n var allDayRow = this.parent.getAllDayRow();\n EventHandler.remove(allDayRow, 'mousemove', this.onMouseSelection);\n EventHandler.remove(allDayRow, 'mouseup', this.onMoveUp);\n }\n if (this.isPreventAction(e)) {\n return;\n }\n var queryStr = '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS + ',.' + cls.HEADER_CELLS_CLASS;\n var target = closest(e.target, queryStr);\n if (this.parent.currentView === 'TimelineYear' && target.classList.contains(cls.OTHERMONTH_CLASS)) {\n return;\n }\n this.parent.activeCellsData = this.getSelectedElements(target);\n var cellData = {};\n if (this.parent.eventWindow) {\n this.parent.eventWindow.convertToEventData(this.parent.activeCellsData, cellData);\n }\n var selectedCells = this.parent.getSelectedElements();\n var args = {\n data: cellData, element: this.parent.activeCellsData.element, event: e,\n requestType: 'cellSelect', showQuickPopup: false\n };\n this.parent.trigger(event.select, args, function (selectArgs) {\n var isPopupShow = selectArgs.showQuickPopup || _this.parent.quickInfoOnSelectionEnd;\n if (isPopupShow && selectedCells.length > 1) {\n var cellArgs = extend(_this.parent.activeCellsData, { cancel: false, event: e, name: 'cellClick' });\n _this.parent.notify(event.cellClick, cellArgs);\n }\n });\n };\n KeyboardInteraction.prototype.processEnter = function (e) {\n if ((this.parent.activeViewOptions.readonly && !e.target.classList.contains(cls.APPOINTMENT_CLASS))\n || this.isPreventAction(e)) {\n return;\n }\n if (this.parent.currentView === 'TimelineYear' && e.target.classList.contains(cls.OTHERMONTH_CLASS)) {\n return;\n }\n var target = e.target;\n if (closest(target, '.' + cls.POPUP_WRAPPER_CLASS)) {\n if (target.classList.contains(cls.QUICK_POPUP_EVENT_DETAILS_CLASS) ||\n target.classList.contains(cls.EVENT_CREATE_CLASS) ||\n target.classList.contains(cls.EDIT_EVENT_CLASS) ||\n target.classList.contains(cls.DELETE_EVENT_CLASS) ||\n target.classList.contains(cls.CLOSE_CLASS)) {\n target.click();\n e.preventDefault();\n }\n else if (target.classList.contains(cls.SUBJECT_CLASS)) {\n this.parent.element.querySelector('.' + cls.EVENT_CREATE_CLASS).click();\n e.preventDefault();\n }\n return;\n }\n if (target.classList.contains(cls.RESOURCE_CELLS_CLASS) && target.classList.contains(cls.RESOURCE_PARENT_CLASS)) {\n var resourceIcon = target.querySelector('.' + cls.RESOURCE_TREE_ICON_CLASS);\n if (resourceIcon) {\n resourceIcon.click();\n }\n return;\n }\n if (target.classList.contains(cls.WORK_CELLS_CLASS) || target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n this.parent.activeCellsData = this.getSelectedElements(target);\n var args = extend(this.parent.activeCellsData, { cancel: false, event: e });\n if (this.parent.allowInline) {\n var inlineArgs = {\n element: args.element,\n groupIndex: args.groupIndex, type: 'Cell'\n };\n this.parent.notify(event.inlineClick, inlineArgs);\n }\n else {\n if (this.parent.currentView === 'Year') {\n target.click();\n }\n else {\n this.parent.notify(event.cellClick, args);\n }\n }\n return;\n }\n if (target.classList.contains(cls.INLINE_SUBJECT_CLASS) && this.parent.inlineModule) {\n this.parent.inlineModule.inlineCrudActions(target);\n return;\n }\n if (target.classList.contains(cls.APPOINTMENT_CLASS) || target.classList.contains(cls.MORE_EVENT_CLOSE_CLASS) ||\n target.classList.contains(cls.ALLDAY_APPOINTMENT_SECTION_CLASS) || target.classList.contains(cls.MORE_INDICATOR_CLASS)) {\n target.click();\n return;\n }\n if (target.classList.contains(cls.MORE_EVENT_HEADER_DATE_CLASS)) {\n this.parent.setProperties({ selectedDate: this.parent.getDateFromElement(target) }, true);\n this.parent.changeView(this.parent.getNavigateView(), e);\n this.processEscape(e);\n return;\n }\n };\n KeyboardInteraction.prototype.getSelectedElements = function (target) {\n var cellDetails;\n if (this.selectedCells.length > 1 && target.classList.contains(cls.SELECTED_CELL_CLASS)) {\n var start = this.parent.getCellDetails(this.selectedCells[0]);\n var end = this.parent.getCellDetails(this.selectedCells.slice(-1)[0]);\n start.endTime = end.endTime;\n start.element = target;\n cellDetails = start;\n }\n else {\n cellDetails = this.parent.getCellDetails(target);\n }\n return cellDetails;\n };\n KeyboardInteraction.prototype.getCells = function (isInverseTable, start, end) {\n var tableEle = this.parent.getContentTable();\n var isTimelineYear = this.parent.currentView === 'TimelineYear';\n var query = isTimelineYear && !isInverseTable ? '.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')' : 'td';\n var cells = [].slice.call(tableEle.querySelectorAll(query));\n var maxRow = tableEle.rows.length;\n var maxColumn = tableEle.rows[0].cells.length;\n if (start && start.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n var allDayRow = this.parent.getAllDayRow();\n cells = [].slice.call(allDayRow.cells);\n maxRow = 1;\n maxColumn = allDayRow.cells.length;\n }\n var startIndex = cells.indexOf(start);\n var endIndex = cells.indexOf(end);\n var inverseCells = [];\n if (isInverseTable) {\n for (var i = 0; i < maxColumn; i++) {\n for (var j = 0; j < maxRow; j++) {\n var cell = cells[maxColumn * j + i];\n if (isTimelineYear && cell.classList.contains(cls.OTHERMONTH_CLASS)) {\n continue;\n }\n inverseCells.push(cell);\n }\n }\n startIndex = inverseCells.indexOf(start);\n endIndex = inverseCells.indexOf(end);\n }\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n var sCells = isInverseTable ? inverseCells : cells;\n return sCells.slice(startIndex, endIndex + 1);\n };\n KeyboardInteraction.prototype.focusFirstCell = function () {\n if (this.parent.currentView === 'Agenda') {\n var focusCell = this.parent.getContentTable().querySelector('.' + cls.AGENDA_CELLS_CLASS);\n focusCell.setAttribute('tabindex', '0');\n focusCell.focus();\n return;\n }\n this.parent.eventBase.removeSelectedAppointmentClass();\n if (this.parent.activeView.isTimelineView() && this.parent.currentView !== 'TimelineYear') {\n var cell = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS +\n ' tr:not(.' + cls.HIDDEN_CLASS + ') .' + cls.WORK_CELLS_CLASS + ':not(.' + cls.RESOURCE_GROUP_CELLS_CLASS + ')');\n this.selectCells(false, cell);\n }\n else if (this.parent.currentView.indexOf('Year') > -1) {\n var query = '.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')' + ':not(.' + cls.RESOURCE_GROUP_CELLS_CLASS + ')';\n var isVerticalYear = this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.orientation === 'Vertical';\n query += isVerticalYear ? '[data-date=\"' + this.parent.activeView.startDate().getTime() + '\"]' : '';\n this.selectCells(false, this.parent.element.querySelector(query));\n }\n else {\n this.selectCells(false, this.parent.getWorkCellElements()[0]);\n }\n };\n KeyboardInteraction.prototype.isInverseTableSelect = function () {\n return this.parent.activeView.isInverseTableSelect;\n };\n /**\n * Internal method to select cells\n *\n * @param {boolean} isMultiple Accepts to select multiple cells or not\n * @param {HTMLTableCellElement} targetCell Accepts the target cells\n * @returns {void}\n * @private\n */\n KeyboardInteraction.prototype.selectCells = function (isMultiple, targetCell) {\n var _this = this;\n this.parent.removeSelectedClass();\n var target = (targetCell instanceof Array) ? targetCell.slice(-1)[0] : targetCell;\n if (isMultiple) {\n var initialId_1;\n var views_1 = ['Day', 'Week', 'WorkWeek', 'TimelineDay', 'TimelineWeek', 'TimelineWorkWeek', 'TimelineMonth', 'TimelineYear'];\n var args = { element: targetCell, requestType: 'mousemove', allowMultipleRow: true };\n this.parent.inlineModule.removeInlineAppointmentElement();\n this.parent.trigger(event.select, args, function (selectArgs) {\n var allowMultipleRow = (!selectArgs.allowMultipleRow) || (!_this.parent.allowMultiRowSelection);\n if (allowMultipleRow) {\n var isTimelineYear = _this.parent.currentView === 'TimelineYear';\n if (isTimelineYear && _this.parent.activeViewOptions.orientation === 'Horizontal' || _this.parent.currentView === 'Month') {\n var isGroupYear = isTimelineYear && _this.parent.activeViewOptions.group.resources.length > 0;\n target = isGroupYear ? _this.initialTarget :\n _this.initialTarget.parentElement.children[target.cellIndex];\n }\n else if (views_1.indexOf(_this.parent.currentView) > -1) {\n target = target.parentElement.children[_this.initialTarget.cellIndex];\n }\n }\n var selectedCells = _this.getCells(_this.isInverseTableSelect(), _this.initialTarget, target);\n if (_this.parent.activeViewOptions.group.resources.length > 0) {\n initialId_1 = _this.initialTarget.getAttribute('data-group-index');\n var resourceSelectedCells = [];\n for (var _i = 0, selectedCells_1 = selectedCells; _i < selectedCells_1.length; _i++) {\n var cell = selectedCells_1[_i];\n if (cell.getAttribute('data-group-index') === initialId_1) {\n resourceSelectedCells.push(cell);\n }\n }\n selectedCells = resourceSelectedCells;\n }\n if (!_this.parent.allowMultiCellSelection) {\n selectedCells = [_this.initialTarget];\n }\n _this.selectedCells = selectedCells;\n if (selectedCells.length > 2 && !target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n var allDayCells = _this.getAllDayCells(selectedCells);\n if (_this.parent.activeViewOptions.group.resources.length > 0) {\n var resourceAllDayCells = [];\n for (var _a = 0, allDayCells_1 = allDayCells; _a < allDayCells_1.length; _a++) {\n var cell = allDayCells_1[_a];\n if (cell.getAttribute('data-group-index') === initialId_1) {\n resourceAllDayCells.push(cell);\n }\n }\n allDayCells = resourceAllDayCells;\n }\n selectedCells = selectedCells.concat(allDayCells);\n }\n if ((target.getAttribute('data-group-index') !== initialId_1) && _this.parent.activeViewOptions.group.resources.length > 0) {\n target = _this.selectedCells[_this.selectedCells.length - 1];\n }\n _this.parent.addSelectedClass(selectedCells, target);\n });\n }\n else {\n this.initialTarget = target;\n this.selectedCells = [target];\n this.parent.addSelectedClass([target], target);\n }\n };\n KeyboardInteraction.prototype.selectAppointment = function (isReverse, target) {\n var appointments = this.getAppointmentElements();\n if (appointments.length < 0) {\n return;\n }\n this.parent.eventBase.removeSelectedAppointmentClass();\n var nextAppEle;\n if (target.classList.contains(cls.APPOINTMENT_CLASS)) {\n var targetIndex = appointments.indexOf(target);\n nextAppEle = appointments[(isReverse ? targetIndex - 1 : targetIndex + 1)];\n }\n else {\n nextAppEle = isReverse ? appointments[appointments.length - 1] : appointments[0];\n }\n if (nextAppEle) {\n this.parent.eventBase.addSelectedAppointments([nextAppEle]);\n nextAppEle.focus();\n addClass([nextAppEle], cls.AGENDA_SELECTED_CELL);\n }\n };\n KeyboardInteraction.prototype.selectAppointmentElementFromWorkCell = function (isReverse, target) {\n var _this = this;\n this.parent.eventBase.removeSelectedAppointmentClass();\n this.parent.removeSelectedClass();\n if (target.classList.contains(cls.WORK_CELLS_CLASS) || target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n var appointmentElements_1 = this.getUniqueAppointmentElements();\n var filteredElements_1 = [];\n var selectedDate_1 = this.parent.getDateFromElement(target).getTime();\n var selectedSeriesEvents = this.parent.eventsProcessed.filter(function (eventObject) {\n return (!isReverse ? (eventObject[_this.parent.eventFields.startTime].getTime() >= selectedDate_1) :\n (eventObject[_this.parent.eventFields.startTime].getTime() <= selectedDate_1));\n });\n selectedSeriesEvents.filter(function (event) {\n appointmentElements_1.filter(function (element) {\n if (JSON.stringify(event.Guid) === JSON.stringify(element.getAttribute('data-guid'))) {\n filteredElements_1.push(element);\n }\n });\n });\n if (filteredElements_1.length > 0) {\n var selectedElement = isReverse ? filteredElements_1[filteredElements_1.length - 1] : filteredElements_1[0];\n var focusElements = this.getAppointmentElementsByGuid(selectedElement.getAttribute('data-guid'));\n this.parent.eventBase.addSelectedAppointments(focusElements);\n (focusElements[focusElements.length - 1]).focus();\n }\n }\n };\n KeyboardInteraction.prototype.getAllDayCells = function (cells) {\n var allDayRow = this.parent.getAllDayRow();\n if (!allDayRow) {\n return [];\n }\n var startCell = cells[0];\n var endCell = cells[cells.length - 1];\n var start = this.parent.getCellDetails(startCell);\n var end = this.parent.getCellDetails(endCell);\n if (end.endTime.getTime() - start.startTime.getTime() >= util.MS_PER_DAY) {\n var allDayCells = [].slice.call(allDayRow.cells);\n return allDayCells.slice(startCell.cellIndex, endCell.cellIndex + 1);\n }\n return [];\n };\n KeyboardInteraction.prototype.getAppointmentElements = function () {\n return [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n };\n KeyboardInteraction.prototype.getAppointmentElementsByGuid = function (guid) {\n return [].slice.call(this.parent.element.querySelectorAll('div[data-guid=\"' + guid + '\"]'));\n };\n KeyboardInteraction.prototype.getUniqueAppointmentElements = function () {\n var appointments = this.getAppointmentElements();\n var appointmentElements = [];\n appointments.map(function (value) { return value.getAttribute('data-guid'); }).filter(function (value, index, self) {\n if (self.indexOf(value) === index) {\n appointmentElements.push(appointments[index]);\n }\n });\n return appointmentElements;\n };\n KeyboardInteraction.prototype.getWorkCellFromAppointmentElement = function (target) {\n var selectedObject = this.parent.eventBase.getEventByGuid(target.getAttribute('data-guid'));\n return this.parent.eventBase.selectWorkCellByTime([selectedObject]);\n };\n KeyboardInteraction.prototype.processViewNavigation = function (e) {\n var index = parseInt(e.key, 10) - 1;\n if (index < this.parent.views.length) {\n var view = this.parent.viewCollections[index].option;\n this.parent.changeView(view, e, undefined, index);\n if (this.parent.headerModule) {\n this.parent.headerModule.element.querySelector('.e-active-view button').focus();\n }\n }\n };\n KeyboardInteraction.prototype.cancelUpDownAction = function (isTimelineYear) {\n var isVerticalYear = isTimelineYear && this.parent.activeViewOptions.orientation === 'Vertical';\n var isGroup = this.parent.activeViewOptions.group.resources.length > 0;\n if (isVerticalYear && isGroup || isTimelineYear && this.initialTarget.classList.contains(cls.OTHERMONTH_CLASS)) {\n return true;\n }\n if (this.parent.activeView.isTimelineView() && !isTimelineYear || this.parent.currentView === 'MonthAgenda') {\n return true;\n }\n return false;\n };\n KeyboardInteraction.prototype.processUp = function (e, isMultiple) {\n var isTimelineYear = this.parent.currentView === 'TimelineYear';\n if (isMultiple && this.cancelUpDownAction(isTimelineYear)) {\n return;\n }\n var target = (e.target);\n var selectedElements = this.parent.getSelectedElements();\n var selectedEventElements = this.parent.eventBase.getSelectedAppointments();\n var moreEventWrapper = this.parent.element.querySelector('.' + cls.MORE_POPUP_WRAPPER_CLASS);\n var quickPopupWrapper = this.getQuickPopupElement();\n if (selectedElements.length > 0 && !e.target.classList.contains(cls.WORK_CELLS_CLASS)) {\n target = selectedElements[selectedElements.length - 1];\n }\n if (selectedEventElements.length > 0 && !moreEventWrapper.classList.contains(cls.POPUP_OPEN) &&\n !quickPopupWrapper.classList.contains(cls.POPUP_OPEN) &&\n ['Day', 'Week', 'WorkWeek', 'Month'].indexOf(this.parent.currentView) !== -1) {\n target = this.getWorkCellFromAppointmentElement(selectedEventElements[selectedEventElements.length - 1]);\n this.parent.eventBase.removeSelectedAppointmentClass();\n }\n if (!target) {\n return;\n }\n if (target.classList.contains(cls.WORK_CELLS_CLASS) && !this.parent.element.querySelector('.' + cls.POPUP_OPEN)) {\n var tableRows = this.parent.getTableRows();\n var curRowIndex = tableRows.indexOf(target.parentElement);\n var targetCell = void 0;\n if (isTimelineYear && isMultiple && this.parent.activeViewOptions.group.resources.length === 0) {\n targetCell = this.isInverseTableSelect() ? this.getVerticalUpDownCell(tableRows, target, curRowIndex, true) :\n this.getHorizontalUpDownCell(tableRows, target, curRowIndex, true);\n }\n if ((curRowIndex > 0 || targetCell) && curRowIndex < tableRows.length) {\n targetCell = targetCell ? targetCell : (tableRows[curRowIndex - 1]).cells[target.cellIndex];\n if (this.parent.currentView === 'Year' && targetCell.classList.contains(cls.OTHERMONTH_CLASS)) {\n if (this.parent.activeView.getStartDate().getTime() < +targetCell.getAttribute('data-date')) {\n targetCell = this.getYearUpDownCell(tableRows, curRowIndex - 1, target.cellIndex, true);\n }\n else {\n return;\n }\n }\n this.selectCells(isMultiple, targetCell);\n }\n }\n else if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n this.selectAppointment(true, target);\n }\n };\n KeyboardInteraction.prototype.processDown = function (e, isMultiple) {\n var isTimelineYear = this.parent.currentView === 'TimelineYear';\n if (isMultiple && this.cancelUpDownAction(isTimelineYear)) {\n return;\n }\n var target = (e.target);\n var selectedCells = this.parent.getSelectedElements();\n var selectedElements = this.parent.eventBase.getSelectedAppointments();\n var moreEventWrapper = this.parent.element.querySelector('.' + cls.MORE_POPUP_WRAPPER_CLASS);\n var quickPopupWrapper = this.getQuickPopupElement();\n if (selectedCells.length > 0 && !e.target.classList.contains(cls.WORK_CELLS_CLASS)) {\n target = selectedCells[selectedCells.length - 1];\n }\n if (selectedElements.length > 0 && !moreEventWrapper.classList.contains(cls.POPUP_OPEN) &&\n !quickPopupWrapper.classList.contains(cls.POPUP_OPEN) &&\n ['Day', 'Week', 'WorkWeek', 'Month'].indexOf(this.parent.currentView) !== -1) {\n target = this.getWorkCellFromAppointmentElement(selectedElements[selectedElements.length - 1]);\n this.parent.eventBase.removeSelectedAppointmentClass();\n }\n var tableRows = this.parent.getTableRows();\n if (!target) {\n return;\n }\n if (target.classList.contains(cls.WORK_CELLS_CLASS) && !this.parent.element.querySelector('.' + cls.POPUP_OPEN)) {\n var curRowIndex = tableRows.indexOf(target.parentElement);\n var targetCell = void 0;\n if (isTimelineYear && isMultiple && this.parent.activeViewOptions.group.resources.length === 0) {\n targetCell = this.isInverseTableSelect() ? this.getVerticalUpDownCell(tableRows, target, curRowIndex, false)\n : this.getHorizontalUpDownCell(tableRows, target, curRowIndex, false);\n }\n if (curRowIndex >= 0 && ((curRowIndex < tableRows.length - 1) || targetCell)) {\n targetCell = targetCell ? targetCell : (tableRows[curRowIndex + 1]).cells[target.cellIndex];\n if (this.parent.currentView === 'Year' && targetCell.classList.contains(cls.OTHERMONTH_CLASS)) {\n if (this.parent.activeView.getEndDate().getTime() > +targetCell.getAttribute('data-date')) {\n targetCell = this.getYearUpDownCell(tableRows, curRowIndex + 1, target.cellIndex, false);\n }\n else {\n return;\n }\n }\n this.selectCells(isMultiple, targetCell);\n }\n }\n else if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n this.selectAppointment(false, target);\n }\n };\n KeyboardInteraction.prototype.getYearUpDownCell = function (tableRows, rowIndex, cellIndex, isUp) {\n while (tableRows[rowIndex] && tableRows[rowIndex].cells[cellIndex].classList.contains(cls.OTHERMONTH_CLASS)) {\n rowIndex = rowIndex + (isUp ? -1 : 1);\n }\n return tableRows[rowIndex].cells[cellIndex];\n };\n // eslint-disable-next-line max-len\n KeyboardInteraction.prototype.getHorizontalUpDownCell = function (tableRows, target, curRowIndex, isUp) {\n var row = tableRows[curRowIndex + (isUp ? -1 : 1)];\n var cell = row ? row.cells[target.cellIndex] : target;\n if (cell.classList.contains(cls.OTHERMONTH_CLASS)) {\n var workCell = row.querySelector('.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')');\n var date = new Date(+workCell.getAttribute('data-date'));\n var query = '[data-date=\"' + new Date(date.getFullYear(), date.getMonth() + 1, 0).getTime() + '\"]';\n cell = cell.cellIndex < workCell.cellIndex ? workCell : row.querySelector(query);\n }\n return cell;\n };\n // eslint-disable-next-line max-len\n KeyboardInteraction.prototype.getVerticalUpDownCell = function (tableRows, target, curRowIndex, isUp) {\n var hasRow = isUp && curRowIndex > 0 || !isUp && curRowIndex < tableRows.length - 1;\n var targetCell = hasRow ? tableRows[curRowIndex + (isUp ? -1 : 1)].cells[target.cellIndex] : undefined;\n if (!targetCell || targetCell.classList.contains(cls.OTHERMONTH_CLASS)) {\n var column = tableRows[curRowIndex].cells[target.cellIndex - (isUp ? 1 : -1)];\n if (column) {\n var dateAttr = +target.getAttribute('data-date') - (isUp ? util.MS_PER_DAY : -util.MS_PER_DAY);\n return this.parent.getContentTable().querySelector('.' + cls.WORK_CELLS_CLASS + '[data-date=\"' + dateAttr + '\"]');\n }\n targetCell = target;\n }\n return targetCell;\n };\n KeyboardInteraction.prototype.processLeftRight = function (target) {\n var tableEle = (this.parent.currentView === 'Year' ? target.closest('tbody') : this.parent.getContentTable());\n var curRowIndex = target.parentNode.sectionRowIndex;\n var key = {\n element: tableEle,\n rowIndex: curRowIndex,\n columnIndex: target.cellIndex,\n maxIndex: tableEle.rows[curRowIndex].cells.length\n };\n return key;\n };\n KeyboardInteraction.prototype.getQuickPopupElement = function () {\n return (this.parent.isAdaptive ? document.body : this.parent.element).querySelector('.' + cls.POPUP_WRAPPER_CLASS);\n };\n KeyboardInteraction.prototype.isCancelLeftRightAction = function (e, isMultiple, isTimelineYear) {\n var prevent = this.parent.currentView === 'MonthAgenda' || isTimelineYear && this.initialTarget.classList.contains(cls.OTHERMONTH_CLASS);\n if (this.parent.currentView === 'Agenda' || (isMultiple && prevent)) {\n return true;\n }\n if (this.isPreventAction(e) && isMultiple) {\n return true;\n }\n var moreEventWrapper = this.parent.element.querySelector('.' + cls.MORE_POPUP_WRAPPER_CLASS);\n var quickPopupWrapper = this.getQuickPopupElement();\n if (moreEventWrapper.classList.contains(cls.POPUP_OPEN) || quickPopupWrapper.classList.contains(cls.POPUP_OPEN)) {\n return true;\n }\n return false;\n };\n KeyboardInteraction.prototype.processRight = function (e, isMultiple) {\n var isTimelineYear = this.parent.currentView === 'TimelineYear';\n if (this.isCancelLeftRightAction(e, isMultiple, isTimelineYear)) {\n return;\n }\n var selectedCells = this.parent.getSelectedElements();\n var targetCell;\n var selectedAppointments = this.parent.eventBase.getSelectedAppointments();\n var target = (e.target);\n if (selectedCells.length > 0 && !target.classList.contains(cls.WORK_CELLS_CLASS) &&\n !target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n target = selectedCells[selectedCells.length - 1];\n }\n if (selectedAppointments.length > 0) {\n target = this.getWorkCellFromAppointmentElement(selectedAppointments[selectedAppointments.length - 1]);\n this.parent.eventBase.removeSelectedAppointmentClass();\n if (!target) {\n return;\n }\n }\n if (target.classList.contains(cls.WORK_CELLS_CLASS) &&\n (e.target).classList.contains(cls.WORK_CELLS_CLASS)) {\n var key = this.processLeftRight(target);\n var targetDate = new Date(+target.getAttribute('data-date'));\n var isMonthEnd = this.parent.currentView === 'Year' && targetDate.getTime() === util.lastDateOfMonth(targetDate).getTime();\n if (key.columnIndex >= 0 && key.columnIndex < key.maxIndex - 1 && !isMonthEnd) {\n targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex].cells[target.cellIndex + 1], 'right');\n if (isTimelineYear && isMultiple && targetCell.classList.contains(cls.OTHERMONTH_CLASS)) {\n targetCell = this.getTimelineYearTargetCell(key, target, true);\n }\n if (!isNullOrUndefined(targetCell)) {\n this.selectCells(isMultiple, targetCell);\n }\n }\n else if (key.columnIndex === key.maxIndex - 1 || isMonthEnd) {\n if (!this.isInverseTableSelect() && key.rowIndex < key.element.rows.length - 1 && !isMonthEnd) {\n targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex + 1].cells[0], 'right');\n var changeTargetCell = isTimelineYear && isMultiple && targetCell.classList.contains(cls.OTHERMONTH_CLASS);\n targetCell = changeTargetCell ? this.getHorizontalLeftRightCell(key, target, true) : targetCell;\n if (!isNullOrUndefined(targetCell)) {\n this.selectCells(isMultiple, targetCell);\n }\n }\n else if (!isMultiple) {\n if (isMonthEnd && targetDate.getTime() !== this.parent.activeView.getEndDate().getTime()) {\n this.selectCells(isMultiple, this.parent.element.querySelector(':not(.' + cls.OTHERMONTH_CLASS + ')[data-date=\"' + (targetDate.getTime() + util.MS_PER_DAY) + '\"]'));\n return;\n }\n var rowIndex = this.isInverseTableSelect() ? key.rowIndex : 0;\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), e);\n var tableEle = this.parent.getContentTable();\n var cell = isMonthEnd ? tableEle.rows[rowIndex].querySelector('.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')') : tableEle.rows[rowIndex].cells[0];\n this.selectCells(false, cell);\n }\n }\n }\n else if (target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n var curColIndex = target.cellIndex;\n var allDayRow = this.parent.getAllDayRow();\n var maxColIndex = allDayRow.cells.length;\n if (curColIndex >= 0 && curColIndex < maxColIndex - 1) {\n this.selectCells(isMultiple, allDayRow.cells[curColIndex + 1]);\n }\n else if (curColIndex === maxColIndex - 1 && !isMultiple) {\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), e);\n var allDayRow_1 = this.parent.getAllDayRow();\n this.selectCells(false, allDayRow_1.cells[0]);\n }\n }\n };\n KeyboardInteraction.prototype.processLeft = function (e, isMultiple) {\n var isTimelineYear = this.parent.currentView === 'TimelineYear';\n if (this.isCancelLeftRightAction(e, isMultiple, isTimelineYear)) {\n return;\n }\n var target = (e.target);\n var selectedCells = this.parent.getSelectedElements();\n var targetCell;\n if (selectedCells.length > 0 && !target.classList.contains(cls.WORK_CELLS_CLASS) &&\n !target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n target = selectedCells[selectedCells.length - 1];\n }\n var selectedElements = this.parent.eventBase.getSelectedAppointments();\n if (selectedElements.length > 0) {\n target = this.getWorkCellFromAppointmentElement(selectedElements[selectedElements.length - 1]);\n this.parent.eventBase.removeSelectedAppointmentClass();\n if (!target) {\n return;\n }\n }\n if ((e.target).classList.contains(cls.WORK_CELLS_CLASS) &&\n target.classList.contains(cls.WORK_CELLS_CLASS)) {\n var key = this.processLeftRight(target);\n var targetDate = new Date(+target.getAttribute('data-date'));\n var isMonthStart = this.parent.currentView === 'Year' && targetDate.getTime() === util.firstDateOfMonth(targetDate).getTime();\n if (key.columnIndex > 0 && key.columnIndex < key.maxIndex && !isMonthStart) {\n targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex].cells[target.cellIndex - 1], 'left');\n if (isTimelineYear && isMultiple && targetCell.classList.contains(cls.OTHERMONTH_CLASS)) {\n targetCell = this.getTimelineYearTargetCell(key, target, false);\n }\n if (!isNullOrUndefined(targetCell)) {\n this.selectCells(isMultiple, targetCell);\n }\n }\n else if (key.columnIndex === 0 || isMonthStart) {\n if (!this.isInverseTableSelect() && key.rowIndex > 0) {\n targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex - 1].cells[key.maxIndex - 1], 'left');\n var otherMonthCell = isTimelineYear && isMultiple && targetCell.classList.contains(cls.OTHERMONTH_CLASS);\n targetCell = otherMonthCell ? this.getHorizontalLeftRightCell(key, target, false) : targetCell;\n if (!isNullOrUndefined(targetCell)) {\n this.selectCells(isMultiple, targetCell);\n }\n }\n else if (!isMultiple) {\n if (isMonthStart && targetDate.getTime() !== this.parent.activeView.getStartDate().getTime()) {\n this.selectCells(isMultiple, this.parent.element.querySelector('[data-date=\"' + (targetDate.getTime() - util.MS_PER_DAY) + '\"]'));\n return;\n }\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), e);\n var tableEle = this.parent.getContentTable();\n var rowIndex = this.isInverseTableSelect() ? key.rowIndex : tableEle.rows.length - 1;\n var cell = tableEle.rows[rowIndex].cells[key.maxIndex - 1];\n if (isMonthStart) {\n var tbody = this.parent.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n cell = tbody.item(tbody.length - 1).querySelector(':not(.' + cls.OTHERMONTH_CLASS + ')[data-date=\"' + this.parent.activeView.getEndDate().getTime() + '\"]');\n }\n this.selectCells(false, cell);\n }\n }\n }\n else if (target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n var curColIndex = target.cellIndex;\n var allDayRow = this.parent.getAllDayRow();\n var maxColIndex = allDayRow.cells.length;\n if (curColIndex > 0 && curColIndex < maxColIndex) {\n this.selectCells(isMultiple, allDayRow.cells[curColIndex - 1]);\n }\n else if (curColIndex === 0 && !isMultiple) {\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), e);\n var allDayRow_2 = this.parent.getAllDayRow();\n this.selectCells(false, allDayRow_2.cells[maxColIndex - 1]);\n }\n }\n };\n KeyboardInteraction.prototype.getTimelineYearTargetCell = function (key, target, isRight) {\n return this.isInverseTableSelect() ? this.getVerticalLeftRightCell(target, isRight) :\n this.getHorizontalLeftRightCell(key, target, isRight);\n };\n KeyboardInteraction.prototype.getHorizontalLeftRightCell = function (key, target, isRight) {\n var row = key.element.rows[target.parentNode.sectionRowIndex + (isRight ? 1 : -1)];\n if (row) {\n var query = isRight ? '.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')'\n : '[data-date=\"' + ((+target.getAttribute('data-date')) - util.MS_PER_DAY) + '\"]';\n return row.querySelector(query);\n }\n return target;\n };\n KeyboardInteraction.prototype.getVerticalLeftRightCell = function (target, isRight) {\n var date = new Date(+target.getAttribute('data-date'));\n var start = new Date(date.getFullYear(), date.getMonth() + (isRight ? 1 : -1), 1);\n var tableEle = this.parent.getContentTable();\n var targetCell = tableEle.querySelector('[data-date=\"' + start.getTime() + '\"]');\n if (targetCell.parentNode.sectionRowIndex > target.parentNode.sectionRowIndex) {\n return targetCell;\n }\n return tableEle.querySelector('[data-date=\"' + new Date(start.getFullYear(), start.getMonth() + 1, 0).getTime() + '\"]');\n };\n KeyboardInteraction.prototype.calculateNextPrevDate = function (currentCell, target, type) {\n var initialId = this.initialTarget.getAttribute('data-group-index');\n if (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.currentView === 'Month') {\n if (currentCell && target && target.getAttribute('data-group-index') !== initialId) {\n var currentDate = this.parent.getDateFromElement(currentCell);\n var nextPrevDate = (type === 'right') ? new Date(currentDate.setDate(currentDate.getDate() + 1))\n : new Date(currentDate.setDate(currentDate.getDate() - 1));\n target = [].slice.call(this.parent.element.querySelectorAll('td[data-date=\"'\n + nextPrevDate.getTime().toString() + '\"]' + '[data-group-index=\"' + initialId + '\"]'))[0];\n }\n }\n return target;\n };\n KeyboardInteraction.prototype.getFocusableElements = function (container) {\n var queryString = 'a[href]:not([tabindex=\"-1\"]),input:not([disabled]):not([tabindex=\"-1\"]),' +\n 'textarea:not([disabled]):not([tabindex=\"-1\"]),button:not([disabled]):not([tabindex=\"-1\"]),' +\n 'select:not([disabled]):not([tabindex=\"-1\"]),[tabindex]:not([tabindex=\"-1\"]),[contentEditable=true]:not([tabindex=\"-1\"])';\n return [].slice.call(container.querySelectorAll(queryString));\n };\n KeyboardInteraction.prototype.processTabOnPopup = function (e, popupElement) {\n var _this = this;\n var focusableElements = this.getFocusableElements(popupElement);\n focusableElements = focusableElements.filter(function (element) {\n var footerEle = _this.parent.element.querySelector('.' + cls.POPUP_FOOTER_CLASS);\n if (footerEle && footerEle.offsetParent) {\n return !(element.classList.contains(cls.EDIT_CLASS) || element.classList.contains(cls.DELETE_CLASS));\n }\n else {\n return !(element.classList.contains(cls.EDIT_EVENT_CLASS) || element.classList.contains(cls.DELETE_EVENT_CLASS));\n }\n });\n var firstEle = focusableElements[0];\n var lastEle = focusableElements[focusableElements.length - 1];\n if (!isNullOrUndefined(lastEle) && document.activeElement === lastEle && !e.shiftKey) {\n e.preventDefault();\n firstEle.focus();\n }\n if (!isNullOrUndefined(firstEle) && document.activeElement === firstEle && e.shiftKey) {\n e.preventDefault();\n lastEle.focus();\n }\n };\n KeyboardInteraction.prototype.processTab = function (e, isReverse) {\n var target = e.target;\n if (target.classList.contains(cls.INLINE_SUBJECT_CLASS) && this.parent.inlineModule) {\n target = target.closest('.e-appointment');\n this.parent.inlineModule.inlineCrudActions(e.target);\n }\n if (this.parent.currentView === 'TimelineYear' && target.classList.contains(cls.OTHERMONTH_CLASS)) {\n if (target.classList.contains(cls.SELECTED_CELL_CLASS)) {\n this.parent.removeSelectedClass();\n }\n return;\n }\n var popupWrapper = closest(target, '.' + cls.POPUP_WRAPPER_CLASS + ',.' + cls.MORE_POPUP_WRAPPER_CLASS);\n if (popupWrapper && popupWrapper.classList.contains(cls.POPUP_OPEN)) {\n if (popupWrapper.classList.contains(cls.MORE_POPUP_WRAPPER_CLASS)) {\n this.parent.eventBase.removeSelectedAppointmentClass();\n }\n this.processTabOnPopup(e, popupWrapper);\n return;\n }\n if (target.classList.contains(cls.ROOT)) {\n this.parent.eventBase.removeSelectedAppointmentClass();\n return;\n }\n if (target.classList.contains(cls.RESOURCE_CELLS_CLASS) && this.parent.activeView.isTimelineView()\n && this.parent.activeViewOptions.group.resources.length > 0) {\n var index = parseInt(target.getAttribute('data-group-index'), 10);\n var appSelector = \".\" + cls.APPOINTMENT_CLASS + \"[data-group-index=\\\"\" + (isReverse ? index - 1 : index) + \"\\\"]\";\n var appElements = [].slice.call(this.parent.element.querySelectorAll(appSelector));\n if (appElements.length > 0) {\n this.parent.eventBase.removeSelectedAppointmentClass();\n var focusAppointment = isReverse ? appElements.slice(-1)[0] : appElements[0];\n this.parent.eventBase.addSelectedAppointments([focusAppointment]);\n focusAppointment.focus();\n e.preventDefault();\n }\n else if (index + 1 === this.parent.resourceBase.lastResourceLevel.length) {\n this.parent.element.focus();\n e.preventDefault();\n }\n else if (this.parent.virtualScrollModule) {\n var virtual = this.parent.element.querySelector('.' + cls.VIRTUAL_TRACK_CLASS);\n var averageRowHeight = Math.round(virtual.offsetHeight / this.parent.resourceBase.expandedResources.length);\n this.parent.element.querySelector('.e-content-wrap').scrollTop = ((isReverse ? index - 1 : index + 1) * averageRowHeight);\n this.parent.virtualScrollModule.virtualScrolling();\n }\n else {\n this.setScrollPosition(index);\n }\n return;\n }\n if (target.classList.contains(cls.APPOINTMENT_CLASS)) {\n var appElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n var isTimelineYear = this.parent.currentView === 'TimelineYear';\n var isTimeline = this.parent.activeView.isTimelineView() && !isTimelineYear;\n if ((isTimeline || isTimelineYear && this.parent.activeViewOptions.orientation === 'Vertical') && this.parent.activeViewOptions.group.resources.length > 0) {\n var index = parseInt(target.getAttribute('data-group-index'), 10);\n appElements = [].slice.call(this.parent.element.querySelectorAll(\".\" + cls.APPOINTMENT_CLASS + \"[data-group-index=\\\"\" + index + \"\\\"]\"));\n var resCellSelector = \".\" + cls.RESOURCE_CELLS_CLASS + \"[data-group-index=\\\"\" + (isReverse ? index : index + 1) + \"\\\"]\";\n var resourceCell = this.parent.element.querySelector(resCellSelector);\n if (resourceCell && (isReverse && target.getAttribute('data-guid') === appElements[0].getAttribute('data-guid') ||\n !isReverse && target.getAttribute('data-guid') === appElements.slice(-1)[0].getAttribute('data-guid'))) {\n this.parent.eventBase.removeSelectedAppointmentClass();\n if (this.parent.virtualScrollModule) {\n resourceCell.focus({ preventScroll: true });\n }\n else {\n resourceCell.focus();\n }\n if (this.parent.activeView.isTimelineView() && this.parent.activeViewOptions.group.resources.length > 0 &&\n isNullOrUndefined(this.parent.virtualScrollModule)) {\n this.setScrollPosition(index);\n }\n e.preventDefault();\n return;\n }\n }\n var selectedAppointments = this.parent.eventBase.getSelectedAppointments();\n if (selectedAppointments.length > 0) {\n target = selectedAppointments[selectedAppointments.length - 1];\n }\n this.parent.eventBase.removeSelectedAppointmentClass();\n if (!isReverse && target.getAttribute('data-guid') === appElements[appElements.length - 1].getAttribute('data-guid') ||\n isReverse && target.getAttribute('data-guid') === appElements[0].getAttribute('data-guid')) {\n return;\n }\n if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n this.selectAppointment(isReverse, target);\n e.preventDefault();\n }\n return;\n }\n var selectedCells = this.parent.getSelectedElements();\n if (selectedCells.length > 0 && !target.classList.contains(cls.APPOINTMENT_CLASS)) {\n target = selectedCells[selectedCells.length - 1];\n this.selectAppointmentElementFromWorkCell(isReverse, target);\n e.preventDefault();\n return;\n }\n if (target && !target.classList.contains(cls.RESOURCE_CELLS_CLASS) && this.parent.activeView.isTimelineView()\n && this.parent.activeViewOptions.group.resources.length > 0) {\n this.processTabOnResourceCells(target, isReverse);\n }\n };\n KeyboardInteraction.prototype.processDelete = function (e) {\n var activeEle = document.activeElement;\n if (this.parent.currentView === 'MonthAgenda') {\n var selectedEle = this.parent.eventBase.getSelectedEvents().element;\n activeEle = ((selectedEle && isNullOrUndefined(selectedEle.length)) ? selectedEle : selectedEle[0]);\n }\n if (activeEle && activeEle.classList.contains(cls.APPOINTMENT_CLASS)) {\n addClass([activeEle], cls.APPOINTMENT_BORDER);\n this.parent.activeEventData = this.parent.eventBase.getSelectedEvents();\n if (this.parent.activeViewOptions.readonly || activeEle.classList.contains(cls.READ_ONLY) ||\n !this.parent.eventSettings.allowDeleting) {\n return;\n }\n this.parent.quickPopup.deleteClick(e);\n }\n };\n KeyboardInteraction.prototype.processCtrlShiftNavigationArrows = function (e) {\n if (this.parent.activeViewOptions.group.resources.length > 0 && document.activeElement.classList.contains(cls.APPOINTMENT_CLASS)) {\n var groupIndex = parseInt(document.activeElement.getAttribute('data-group-index'), 10);\n var index = (e.action === 'ctrlShiftLeftArrow' || e.action === 'ctrlShiftUpArrow') ? groupIndex - 1 : groupIndex + 1;\n index = index < 0 ? 0 : index > this.parent.resourceBase.lastResourceLevel.length ?\n this.parent.resourceBase.lastResourceLevel.length : index;\n var eventEle = [];\n while (eventEle.length === 0 && index >= 0 && index <= this.parent.resourceBase.lastResourceLevel.length) {\n eventEle = [].slice.call(this.parent.element.querySelectorAll(\".\" + cls.APPOINTMENT_CLASS + \"[data-group-index=\\\"\" + index + \"\\\"]\"));\n index = (e.action === 'ctrlShiftLeftArrow' || e.action === 'ctrlShiftUpArrow') ? index - 1 : index + 1;\n }\n var nextAppEle = eventEle[0];\n if (nextAppEle) {\n this.parent.eventBase.removeSelectedAppointmentClass();\n this.parent.eventBase.addSelectedAppointments([nextAppEle]);\n nextAppEle.focus();\n }\n }\n else if (this.parent.activeViewOptions.group.resources.length > 0 &&\n !document.activeElement.classList.contains(cls.APPOINTMENT_CLASS)) {\n var index = this.parent.resourceBase.renderedResources[0].groupIndex;\n var appSelector = \".\" + cls.APPOINTMENT_CLASS + \"[data-group-index=\\\"\" + index + \"\\\"]\";\n var appElements = [].slice.call(this.parent.element.querySelectorAll(appSelector));\n if (appElements.length > 0) {\n this.parent.eventBase.removeSelectedAppointmentClass();\n var focusAppointment = appElements[0];\n this.parent.eventBase.addSelectedAppointments([focusAppointment]);\n focusAppointment.focus();\n e.preventDefault();\n }\n }\n };\n KeyboardInteraction.prototype.processEscape = function (event) {\n this.parent.quickPopup.onClosePopup(event);\n this.parent.quickPopup.morePopup.hide();\n if (this.parent.headerModule) {\n this.parent.headerModule.hideHeaderPopup();\n }\n if (this.parent.inlineModule) {\n this.parent.inlineModule.removeInlineAppointmentElement();\n }\n };\n KeyboardInteraction.prototype.isPreventAction = function (e) {\n var target = closest(e.target, '.' + cls.RESOURCE_GROUP_CELLS_CLASS);\n if (this.parent.activeView.isTimelineView() && !isNullOrUndefined(target)) {\n return true;\n }\n return false;\n };\n KeyboardInteraction.prototype.processTabOnResourceCells = function (target, isReverse) {\n var tabElements = [].slice.call(this.parent.element.querySelectorAll('[tabIndex=\"0\"]'));\n var currentTabIndex = tabElements.indexOf(target);\n var nextTabElement = !isReverse ? tabElements[currentTabIndex + 1] : tabElements[currentTabIndex - 1];\n if (nextTabElement && nextTabElement.classList.contains(cls.RESOURCE_CELLS_CLASS)) {\n var groupIndex = parseInt(nextTabElement.getAttribute('data-group-index'), 10);\n if (this.parent.virtualScrollModule) {\n var resColWrap_1 = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n var resCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.RESOURCE_CELLS_CLASS));\n resCells.forEach(function (element) {\n if (element.getBoundingClientRect().top < resColWrap_1.getBoundingClientRect().top) {\n element.setAttribute('tabindex', '-1');\n }\n });\n }\n else {\n this.setScrollPosition(groupIndex);\n }\n }\n };\n KeyboardInteraction.prototype.setScrollPosition = function (index) {\n var workCell = this.parent.element.querySelector(\".\" + cls.WORK_CELLS_CLASS + \"[data-group-index=\\\"\" + index + \"\\\"]\");\n if (workCell) {\n this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS).scrollTop = workCell.offsetTop;\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the module name.\n */\n KeyboardInteraction.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * To destroy the keyboard module.\n *\n * @returns {void}\n * @private\n */\n KeyboardInteraction.prototype.destroy = function () {\n this.removeEventListener();\n this.keyboardModule.destroy();\n };\n return KeyboardInteraction;\n}());\nexport { KeyboardInteraction };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Query, DataManager } from '@syncfusion/ej2-data';\n/**\n * data module is used to generate query and data source.\n *\n * @private\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module\n *\n * @param {Object | DataManager} dataSource Accepts the datasource as JSON objects or DataManager\n * @param {Query} query Accepts the query to process the data\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 {Object | DataManager} dataSource Accepts the datasource as JSON objects or DataManager\n * @param {Query} query Accepts the query to process the data\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 schedule model\n *\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @returns {void}\n * @private\n */\n Data.prototype.generateQuery = function (startDate, endDate) {\n var query = this.query.clone();\n if (startDate) {\n query.addParams('StartDate', startDate.toISOString());\n }\n if (endDate) {\n query.addParams('EndDate', endDate.toISOString());\n }\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 (query) {\n return this.dataManager.executeQuery(query);\n };\n /**\n * To destroy the crud module.\n *\n * @returns {void}\n * @private\n */\n Data.prototype.destroy = function () {\n this.dataManager = null;\n this.query = null;\n };\n return Data;\n}());\nexport { Data };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { addClass, createElement, closest, remove, removeClass } from '@syncfusion/ej2-base';\nimport { VerticalEvent } from '../event-renderer/vertical-view';\nimport { MonthEvent } from '../event-renderer/month';\nimport { TimelineEvent } from '../event-renderer/timeline-view';\nimport * as cls from '../base/css-constant';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\n/**\n * Inline Edit interactions\n */\nvar InlineEdit = /** @class */ (function () {\n function InlineEdit(parent) {\n this.parent = parent;\n this.parent.on(events.inlineClick, this.inlineEdit, this);\n }\n InlineEdit.prototype.inlineEdit = function (args) {\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide();\n }\n if (args.type === 'Cell') {\n var moreWrapper = this.parent.element.querySelector('.' + cls.MORE_POPUP_WRAPPER_CLASS);\n if (moreWrapper && moreWrapper.classList.contains(cls.POPUP_OPEN)) {\n this.parent.quickPopup.morePopup.hide();\n }\n this.removeInlineAppointmentElement();\n this.cellEdit(args);\n }\n else {\n if (this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS) !==\n args.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS)) {\n this.removeInlineAppointmentElement();\n }\n this.eventEdit(args);\n }\n };\n InlineEdit.prototype.cellEdit = function (args) {\n var saveObj = this.generateEventData();\n var cellIndex = args.element.cellIndex;\n var count = this.getEventDaysCount(saveObj);\n if (count > 1) {\n count = Math.round(count);\n count--;\n cellIndex = cellIndex - count;\n }\n var start = util.resetTime(new Date('' + saveObj[this.parent.eventFields.startTime])).getTime();\n var end = util.resetTime(new Date('' + saveObj[this.parent.eventFields.endTime])).getTime();\n var resIndex = args.groupIndex || 0;\n if (this.parent.currentView === 'Day' || this.parent.currentView === 'Week' || this.parent.currentView === 'WorkWeek') {\n var dayIndex = saveObj[this.parent.eventFields.startTime].getDay();\n this.createVerticalViewInline(saveObj, dayIndex, resIndex, cellIndex);\n }\n else if (this.parent.currentView === 'Month') {\n this.createMonthViewInline(saveObj, resIndex, start, end);\n }\n else {\n this.createTimelineViewInline(saveObj, start, end, resIndex);\n }\n var inlineSubject = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n if (inlineSubject) {\n inlineSubject.focus();\n }\n };\n InlineEdit.prototype.eventEdit = function (args) {\n var inlineSubject = args.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n var subject;\n if (inlineSubject) {\n subject = inlineSubject.value;\n }\n else {\n var subEle = args.element.querySelector('.' + cls.SUBJECT_CLASS);\n var timeEle = args.element.querySelector('.' + cls.APPOINTMENT_TIME);\n subject = subEle.innerText;\n inlineSubject = createElement('input', { className: cls.INLINE_SUBJECT_CLASS, attrs: { value: subject } });\n addClass([subEle], cls.DISABLE_CLASS);\n if (closest(args.element, '.' + cls.MORE_POPUP_WRAPPER_CLASS)) {\n args.element.insertBefore(inlineSubject, subEle);\n }\n else if (['Agenda', 'MonthAgenda'].indexOf(this.parent.currentView) > -1) {\n var subjectWrap = args.element.querySelector('.' + cls.SUBJECT_WRAP);\n subjectWrap.insertBefore(inlineSubject, subjectWrap.firstChild);\n }\n else {\n var elementSelector = ['TimelineDay', 'TimelineWeek', 'TimelineWorkWeek', 'TimelineMonth'].indexOf(this.parent.currentView) > -1 ?\n '.e-inner-wrap' : '.e-appointment-details';\n args.element.querySelector(elementSelector).insertBefore(inlineSubject, timeEle);\n }\n inlineSubject.focus();\n }\n inlineSubject.setSelectionRange(subject.length, subject.length);\n };\n InlineEdit.prototype.createVerticalViewInline = function (saveObj, dayIndex, resIndex, daysCount) {\n var _a;\n var count = this.getEventDaysCount(saveObj);\n var verticalEvent = new VerticalEvent(this.parent);\n verticalEvent.initializeValues();\n var index = verticalEvent.dateRender[resIndex].map(function (date) { return date.getDay(); }).indexOf(dayIndex);\n if (count >= 1) {\n verticalEvent.allDayElement = [].slice.call(this.parent.element.querySelectorAll('.' + cls.ALLDAY_CELLS_CLASS));\n (_a = verticalEvent.slots).push.apply(_a, this.parent.activeView.renderDates.map(function (date) { return +date; }));\n var allDayElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.ALLDAY_APPOINTMENT_CLASS));\n var allDayLevel = 0;\n if (allDayElements.length > 0) {\n allDayLevel = Math.floor(this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).getBoundingClientRect().height /\n allDayElements[0].offsetHeight) - 1;\n }\n verticalEvent.allDayLevel = allDayLevel;\n verticalEvent.renderAllDayEvents(saveObj, index, resIndex, daysCount, this.parent.allowInline);\n }\n else {\n verticalEvent.renderNormalEvents(saveObj, index, resIndex, daysCount, this.parent.allowInline);\n }\n };\n InlineEdit.prototype.createMonthViewInline = function (saveObj, index, start, end) {\n var count = this.getEventDaysCount(saveObj);\n var saveObject = this.parent.eventBase.cloneEventObject(saveObj, start, end, count, false, false);\n var monthEvent = new MonthEvent(this.parent);\n monthEvent.dateRender = this.parent.activeView.renderDates;\n monthEvent.inlineValue = this.parent.allowInline;\n var renderDates = this.parent.activeView.renderDates;\n var workDays = this.parent.activeViewOptions.workDays;\n var monthCellSelector = '.' + cls.WORK_CELLS_CLASS;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n monthCellSelector += '[data-group-index=\"' + index + '\"]';\n var resourceData = this.parent.resourceBase.lastResourceLevel[index];\n renderDates = resourceData.renderDates;\n workDays = resourceData.workDays;\n }\n monthEvent.workCells = [].slice.call(this.parent.element.querySelectorAll(monthCellSelector));\n monthEvent.cellWidth = monthEvent.workCells[0].offsetWidth;\n monthEvent.cellHeight = monthEvent.workCells[0].offsetHeight;\n monthEvent.eventHeight = util.getElementHeightFromClass(this.parent.monthModule.element, cls.APPOINTMENT_CLASS);\n monthEvent.getSlotDates(workDays);\n var filteredDates = monthEvent.getRenderedDates(renderDates);\n var spannedEvents = monthEvent.splitEvent(saveObject, filteredDates || renderDates);\n for (var _i = 0, spannedEvents_1 = spannedEvents; _i < spannedEvents_1.length; _i++) {\n var eventData = spannedEvents_1[_i];\n monthEvent.renderEvents(eventData, index);\n }\n var inlineSubject = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n inlineSubject.focus();\n };\n InlineEdit.prototype.createTimelineViewInline = function (saveObj, start, end, resIndex) {\n var count = this.getEventDaysCount(saveObj);\n var saveObject = this.parent.eventBase.cloneEventObject(saveObj, start, end, count, false, false);\n var timelineView = new TimelineEvent(this.parent, this.parent.activeViewOptions.timeScale.enable ? 'hour' : 'day');\n timelineView.dateRender = this.parent.activeView.renderDates;\n timelineView.eventContainers = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));\n var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);\n timelineView.inlineValue = this.parent.allowInline;\n timelineView.cellWidth = workCell.offsetWidth;\n timelineView.cellHeight = workCell.offsetHeight;\n var dayLength = this.parent.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr').length === 0 ?\n 0 : this.parent.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr')[0].children.length;\n timelineView.slotsPerDay = dayLength / timelineView.dateRender.length;\n timelineView.eventHeight = util.getElementHeightFromClass(timelineView.element, cls.APPOINTMENT_CLASS);\n timelineView.renderEvents(saveObject, resIndex);\n };\n InlineEdit.prototype.getEventDaysCount = function (saveObj) {\n var startDate = saveObj[this.parent.eventFields.startTime];\n var endDate = saveObj[this.parent.eventFields.endTime];\n var daysCount = Math.abs(endDate.getTime() - startDate.getTime()) / util.MS_PER_DAY;\n return daysCount;\n };\n InlineEdit.prototype.generateEventData = function (target) {\n var inlineElement = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n var subject = inlineElement ? inlineElement.value : target ? target.innerHTML : '';\n var saveObj = {};\n saveObj[this.parent.eventFields.id] = this.parent.eventBase.getEventMaxID();\n saveObj[this.parent.eventFields.subject] = subject;\n saveObj[this.parent.eventFields.startTime] = this.parent.activeCellsData.startTime;\n saveObj[this.parent.eventFields.endTime] = this.parent.activeCellsData.endTime;\n saveObj[this.parent.eventFields.isAllDay] = this.parent.activeCellsData.isAllDay;\n this.parent.eventWindow.setDefaultValueToObject(saveObj);\n if (this.parent.resourceBase) {\n this.parent.resourceBase.setResourceValues(saveObj, this.parent.activeCellsData.groupIndex);\n }\n return saveObj;\n };\n InlineEdit.prototype.documentClick = function () {\n var target = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n if (target && target.value !== '') {\n this.inlineCrudActions(target);\n }\n else {\n this.removeInlineAppointmentElement();\n }\n };\n InlineEdit.prototype.inlineCrudActions = function (target) {\n if (closest(target, '.' + cls.INLINE_APPOINTMENT_CLASS)) {\n var saveObj = this.generateEventData(target);\n this.parent.addEvent(saveObj);\n }\n else {\n var eventTarget = closest(target, '.' + cls.APPOINTMENT_CLASS);\n var eventDetails = this.parent.getEventDetails(eventTarget);\n eventDetails[this.parent.eventFields.subject] = target.value;\n var currentAction = void 0;\n if (eventDetails[this.parent.eventFields.id] === eventDetails[this.parent.eventFields.recurrenceID]) {\n currentAction = 'EditOccurrence';\n eventDetails[this.parent.eventFields.id] = this.parent.eventBase.getEventMaxID();\n }\n this.parent.saveEvent(eventDetails, currentAction);\n }\n this.removeInlineAppointmentElement();\n };\n InlineEdit.prototype.createInlineAppointmentElement = function (inlineData) {\n var inlineAppointmentElement = createElement('div', {\n className: cls.APPOINTMENT_CLASS + ' ' + cls.INLINE_APPOINTMENT_CLASS\n });\n var inlineDetails = createElement('div', { className: cls.APPOINTMENT_DETAILS });\n inlineAppointmentElement.appendChild(inlineDetails);\n var inline = createElement('input', { className: cls.INLINE_SUBJECT_CLASS });\n inlineDetails.appendChild(inline);\n if (inlineData) {\n this.parent.eventBase.applyResourceColor(inlineAppointmentElement, inlineData, 'backgroundColor');\n }\n return inlineAppointmentElement;\n };\n InlineEdit.prototype.removeInlineAppointmentElement = function () {\n var inlineAppointment = [].slice.call(this.parent.element.querySelectorAll('.' + cls.INLINE_APPOINTMENT_CLASS));\n if (inlineAppointment.length > 0) {\n inlineAppointment.forEach(function (node) { return remove(node); });\n }\n var inlineSubject = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n if (inlineSubject) {\n var appointmentSubject = closest(inlineSubject, '.' + cls.APPOINTMENT_CLASS);\n removeClass([appointmentSubject.querySelector('.' + cls.SUBJECT_CLASS)], cls.DISABLE_CLASS);\n remove(inlineSubject);\n }\n };\n InlineEdit.prototype.destroy = function () {\n this.parent.off(events.inlineClick, this.inlineEdit);\n };\n return InlineEdit;\n}());\nexport { InlineEdit };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createElement, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { FormValidator } from '@syncfusion/ej2-inputs';\nimport * as cls from '../base/css-constant';\n/**\n * Appointment window field validation\n */\nvar FieldValidator = /** @class */ (function () {\n function FieldValidator() {\n }\n FieldValidator.prototype.renderFormValidator = function (form, rules, element, locale) {\n var _this = this;\n this.element = element;\n this.formObj = new FormValidator(form, {\n locale: locale,\n customPlacement: function (inputElement, error) {\n _this.errorPlacement(inputElement, error);\n },\n rules: rules,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n focusout: function (args) {\n _this.focusOut(args);\n }\n });\n };\n FieldValidator.prototype.focusOut = function (args) {\n var target = args.relatedTarget;\n if (target && (target.classList.contains('e-dlg-closeicon-btn') || target.classList.contains('e-close')\n || target.classList.contains(cls.ALLDAY_CELLS_CLASS) || target.classList.contains(cls.HEADER_CELLS_CLASS)\n || target.classList.contains(cls.QUICK_POPUP_EVENT_DETAILS_CLASS) || target.classList.contains(cls.WORK_CELLS_CLASS)\n || target.classList.contains(cls.EVENT_WINDOW_CANCEL_BUTTON_CLASS))) {\n this.ignoreError = true;\n }\n else {\n this.ignoreError = false;\n }\n };\n FieldValidator.prototype.validationComplete = function (args) {\n var elem = this.element.querySelector('#' + args.inputName + '_Error');\n if (elem) {\n elem.style.display = (args.status === 'failure') ? '' : 'none';\n }\n };\n FieldValidator.prototype.errorPlacement = function (inputElement, error) {\n var id = error.getAttribute('for');\n var elem = this.element.querySelector('#' + id + '_Error');\n if (!elem && !this.ignoreError) {\n this.createTooltip(inputElement, error, id, '');\n }\n if (!isNullOrUndefined(elem)) {\n elem.querySelector('.e-error').innerHTML = error.innerHTML;\n }\n };\n FieldValidator.prototype.createTooltip = function (element, error, name, display) {\n var dlgContent;\n var client;\n var inputClient = element.getBoundingClientRect();\n if (this.element.classList.contains(cls.POPUP_WRAPPER_CLASS)) {\n dlgContent = this.element;\n client = this.element.getBoundingClientRect();\n }\n else {\n dlgContent = this.element.querySelector('.e-schedule-dialog .e-dlg-content');\n client = dlgContent.getBoundingClientRect();\n }\n var div = createElement('div', {\n className: 'e-tooltip-wrap e-popup ' + cls.ERROR_VALIDATION_CLASS,\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n (inputClient.bottom - client.top + dlgContent.scrollTop + 9) + 'px;left:' +\n (inputClient.left - client.left + dlgContent.scrollLeft + inputClient.width / 2) + 'px;'\n });\n var content = createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow = createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n div.appendChild(content);\n div.appendChild(arrow);\n dlgContent.appendChild(div);\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n };\n FieldValidator.prototype.destroyToolTip = function () {\n if (this.element) {\n var elements = [].slice.call(this.element.querySelectorAll('.' + cls.ERROR_VALIDATION_CLASS));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n }\n if (this.formObj && this.formObj.element) {\n this.formObj.reset();\n }\n };\n FieldValidator.prototype.destroy = function () {\n if (this.formObj && this.formObj.element && !this.formObj.isDestroyed) {\n this.formObj.destroy();\n }\n this.formObj = null;\n this.element = null;\n };\n return FieldValidator;\n}());\nexport { FieldValidator };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { closest, EventHandler, isNullOrUndefined, formatUnit, append } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, createElement, remove, extend } from '@syncfusion/ej2-base';\nimport { Dialog, Popup, isCollide } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { FieldValidator } from './form-validator';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\nvar EVENT_FIELD = 'e-field';\n/**\n * Quick Popups interactions\n */\nvar QuickPopups = /** @class */ (function () {\n function QuickPopups(parent) {\n this.isMultipleEventSelect = false;\n this.isCrudAction = false;\n this.parent = parent;\n this.l10n = this.parent.localeObj;\n this.fieldValidator = new FieldValidator();\n this.render();\n this.addEventListener();\n }\n QuickPopups.prototype.render = function () {\n this.renderQuickPopup();\n this.renderMorePopup();\n this.renderQuickDialog();\n };\n QuickPopups.prototype.renderQuickPopup = function () {\n var quickPopupWrapper = createElement('div', { className: cls.POPUP_WRAPPER_CLASS + ' e-popup-close' });\n if (this.parent.isAdaptive) {\n document.body.appendChild(quickPopupWrapper);\n addClass([quickPopupWrapper], cls.DEVICE_CLASS);\n }\n else {\n this.parent.element.appendChild(quickPopupWrapper);\n }\n this.quickPopup = new Popup(quickPopupWrapper, {\n targetType: (this.parent.isAdaptive ? 'container' : 'relative'),\n enableRtl: this.parent.enableRtl,\n open: this.quickPopupOpen.bind(this),\n close: this.quickPopupClose.bind(this),\n hideAnimation: (this.parent.isAdaptive ? { name: 'ZoomOut' } : { name: 'FadeOut', duration: 150 }),\n showAnimation: (this.parent.isAdaptive ? { name: 'ZoomIn' } : { name: 'FadeIn', duration: 150 }),\n collision: (this.parent.isAdaptive ? { X: 'fit', Y: 'fit' } :\n (this.parent.enableRtl ? { X: 'flip', Y: 'fit' } : { X: 'none', Y: 'fit' })),\n position: (this.parent.isAdaptive || this.parent.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }),\n viewPortElement: (this.parent.isAdaptive ? document.body : this.parent.element),\n zIndex: (this.parent.isAdaptive ? 1004 : 3)\n });\n };\n QuickPopups.prototype.renderMorePopup = function () {\n var moreEventPopup = \"
    \" +\n (\"
    \") +\n (\"
    \") +\n (\"
    \");\n var moreEventWrapper = createElement('div', {\n className: cls.MORE_POPUP_WRAPPER_CLASS + ' e-popup-close',\n innerHTML: moreEventPopup\n });\n if (this.parent.isAdaptive) {\n document.body.appendChild(moreEventWrapper);\n addClass([moreEventWrapper], cls.DEVICE_CLASS);\n }\n else {\n this.parent.element.appendChild(moreEventWrapper);\n }\n this.morePopup = new Popup(moreEventWrapper, {\n targetType: (this.parent.isAdaptive ? 'container' : 'relative'),\n enableRtl: this.parent.enableRtl,\n hideAnimation: { name: 'ZoomOut', duration: 300 },\n showAnimation: { name: 'ZoomIn', duration: 300 },\n open: this.morePopupOpen.bind(this),\n close: this.morePopupClose.bind(this),\n collision: (this.parent.isAdaptive ? { X: 'fit', Y: 'fit' } :\n (this.parent.enableRtl ? { X: 'flip', Y: 'fit' } : { X: 'flip', Y: 'flip' })),\n viewPortElement: (this.parent.isAdaptive ? document.body : this.parent.element),\n zIndex: (this.parent.isAdaptive ? 1002 : 2)\n });\n var closeButton = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_CLOSE_CLASS);\n this.renderButton('e-round', cls.ICON + ' ' + cls.CLOSE_ICON_CLASS, false, closeButton, this.closeClick);\n EventHandler.add(this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DATE_CLASS), 'click', this.navigationClick, this);\n };\n QuickPopups.prototype.renderQuickDialog = function () {\n var buttonModel = [\n { buttonModel: { cssClass: 'e-quick-alertok e-flat', isPrimary: true }, click: this.dialogButtonClick.bind(this) },\n { buttonModel: { cssClass: 'e-quick-alertcancel e-flat', isPrimary: false }, click: this.dialogButtonClick.bind(this) },\n {\n buttonModel: { cssClass: 'e-quick-dialog-cancel e-disable e-flat', isPrimary: false },\n click: this.dialogButtonClick.bind(this)\n }\n ];\n if (this.parent.eventSettings.editFollowingEvents) {\n var followingSeriesButton = {\n buttonModel: { cssClass: 'e-quick-alertfollowing e-flat', isPrimary: false }, click: this.dialogButtonClick.bind(this)\n };\n buttonModel.splice(1, 0, followingSeriesButton);\n }\n this.quickDialog = new Dialog({\n animationSettings: { effect: 'Zoom' },\n buttons: buttonModel,\n cssClass: cls.QUICK_DIALOG_CLASS,\n closeOnEscape: true,\n enableRtl: this.parent.enableRtl,\n beforeClose: this.beforeQuickDialogClose.bind(this),\n isModal: true,\n position: { X: 'center', Y: 'center' },\n showCloseIcon: true,\n target: document.body,\n visible: false,\n width: 'auto'\n });\n var dialogElement = createElement('div', { id: this.parent.element.id + 'QuickDialog' });\n this.parent.element.appendChild(dialogElement);\n this.quickDialog.appendTo(dialogElement);\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n if (okButton) {\n okButton.setAttribute('aria-label', this.l10n.getConstant('occurrence'));\n okButton.setAttribute('aria-label', okButton.innerHTML);\n }\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n if (cancelButton) {\n cancelButton.setAttribute('aria-label', this.l10n.getConstant('series'));\n cancelButton.setAttribute('aria-label', cancelButton.innerHTML);\n }\n if (this.quickDialog.element.querySelector('.e-dlg-closeicon-btn')) {\n this.quickDialog.element.querySelector('.e-dlg-closeicon-btn').setAttribute('title', this.l10n.getConstant('close'));\n }\n };\n // eslint-disable-next-line max-len\n QuickPopups.prototype.renderButton = function (className, iconName, isDisabled, element, clickEvent) {\n var buttonObj = new Button({\n cssClass: className,\n disabled: isDisabled,\n enableRtl: this.parent.enableRtl,\n iconCss: iconName\n });\n buttonObj.appendTo(element);\n EventHandler.add(element, 'click', clickEvent, this);\n removeClass([element], cls.ICON);\n };\n QuickPopups.prototype.quickDialogClass = function (action) {\n var classList = [\n cls.QUICK_DIALOG_OCCURRENCE_CLASS, cls.QUICK_DIALOG_SERIES_CLASS, cls.QUICK_DIALOG_DELETE_CLASS,\n cls.QUICK_DIALOG_CANCEL_CLASS, cls.QUICK_DIALOG_ALERT_BTN_CLASS, cls.DISABLE_CLASS\n ];\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n var followingEventButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_FOLLOWING);\n removeClass([okButton, cancelButton], classList);\n addClass([this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_CANCEL_CLASS)], cls.DISABLE_CLASS);\n if (this.parent.eventSettings.editFollowingEvents) {\n addClass([followingEventButton], cls.DISABLE_CLASS);\n removeClass([this.quickDialog.element], cls.FOLLOWING_EVENTS_DIALOG);\n }\n switch (action) {\n case 'Recurrence':\n addClass([okButton], cls.QUICK_DIALOG_OCCURRENCE_CLASS);\n addClass([cancelButton], cls.QUICK_DIALOG_SERIES_CLASS);\n if (this.parent.eventSettings.editFollowingEvents) {\n removeClass([followingEventButton], cls.DISABLE_CLASS);\n addClass([this.quickDialog.element], cls.FOLLOWING_EVENTS_DIALOG);\n addClass([followingEventButton], cls.QUICK_DIALOG_FOLLOWING_EVENTS_CLASS);\n }\n break;\n case 'Delete':\n addClass([okButton], cls.QUICK_DIALOG_DELETE_CLASS);\n addClass([cancelButton], cls.QUICK_DIALOG_CANCEL_CLASS);\n break;\n case 'Alert':\n addClass([okButton], [cls.QUICK_DIALOG_ALERT_OK, cls.QUICK_DIALOG_ALERT_BTN_CLASS]);\n addClass([cancelButton], [cls.QUICK_DIALOG_ALERT_CANCEL, cls.DISABLE_CLASS]);\n break;\n }\n };\n QuickPopups.prototype.applyFormValidation = function () {\n var form = this.quickPopup.element.querySelector('.' + cls.FORM_CLASS);\n var rules = {};\n rules[this.parent.eventSettings.fields.subject.name] = this.parent.eventSettings.fields.subject.validation;\n this.fieldValidator.renderFormValidator(form, rules, this.quickPopup.element, this.parent.locale);\n };\n QuickPopups.prototype.openRecurrenceAlert = function () {\n var editDeleteOnly = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n if (editDeleteOnly) {\n editDeleteOnly.innerHTML = this.l10n.getConstant(this.parent.currentAction === 'Delete' ? 'deleteEvent' : 'editEvent');\n editDeleteOnly.setAttribute('aria-label', editDeleteOnly.innerHTML);\n }\n var editFollowingEventsOnly = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_FOLLOWING);\n if (editFollowingEventsOnly) {\n editFollowingEventsOnly.innerHTML = this.l10n.getConstant('editFollowingEvent');\n editFollowingEventsOnly.setAttribute('aria-label', editFollowingEventsOnly.innerHTML);\n }\n var editDeleteSeries = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n if (editDeleteSeries) {\n editDeleteSeries.innerHTML = this.l10n.getConstant(this.parent.currentAction === 'Delete' ? 'deleteSeries' : 'editSeries');\n editDeleteSeries.setAttribute('aria-label', editDeleteSeries.innerHTML);\n }\n this.quickDialog.content = this.l10n.getConstant('editContent');\n this.quickDialog.header = this.l10n.getConstant(this.parent.currentAction === 'Delete' ? 'deleteTitle' : 'editTitle');\n this.quickDialogClass('Recurrence');\n var activeEvent = this.parent.activeEventData.event;\n if (this.parent.eventSettings.editFollowingEvents && this.parent.currentAction === 'EditOccurrence'\n && !isNullOrUndefined(activeEvent[this.parent.eventFields.recurrenceID]) && activeEvent[this.parent.eventFields.recurrenceID]\n !== activeEvent[this.parent.eventFields.id]) {\n var followingEventButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_FOLLOWING);\n addClass([followingEventButton], cls.DISABLE_CLASS);\n }\n this.showQuickDialog('RecurrenceAlert');\n };\n QuickPopups.prototype.openRecurrenceValidationAlert = function (type) {\n this.quickDialogClass('Alert');\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n okButton.innerHTML = this.l10n.getConstant('ok');\n okButton.setAttribute('aria-label', okButton.innerHTML);\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n cancelButton.innerHTML = this.l10n.getConstant('cancel');\n cancelButton.setAttribute('aria-label', cancelButton.innerHTML);\n this.quickDialog.header = this.l10n.getConstant('alert');\n var dialogCancel;\n switch (type) {\n case 'wrongPattern':\n addClass([cancelButton], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('wrongPattern');\n break;\n case 'createError':\n addClass([cancelButton], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('createError');\n break;\n case 'sameDayAlert':\n addClass([cancelButton], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('sameDayAlert');\n break;\n case 'seriesChangeAlert':\n dialogCancel = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_CANCEL_CLASS);\n removeClass([cancelButton, dialogCancel], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('seriesChangeAlert');\n okButton.innerHTML = this.l10n.getConstant('yes');\n cancelButton.innerHTML = this.l10n.getConstant('no');\n dialogCancel.innerHTML = this.l10n.getConstant('cancel');\n break;\n case 'occurrenceAlert':\n addClass([cancelButton], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('occurenceAlert');\n break;\n }\n if ((!this.parent.enableRecurrenceValidation && type === 'wrongPattern') || this.parent.enableRecurrenceValidation) {\n this.showQuickDialog('RecurrenceValidationAlert');\n }\n };\n QuickPopups.prototype.openDeleteAlert = function () {\n if (this.parent.activeViewOptions.readonly) {\n return;\n }\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n if (okButton) {\n okButton.innerHTML = this.l10n.getConstant('delete');\n okButton.setAttribute('aria-label', okButton.innerHTML);\n }\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n if (cancelButton) {\n cancelButton.innerHTML = this.l10n.getConstant('cancel');\n cancelButton.setAttribute('aria-label', cancelButton.innerHTML);\n }\n this.quickDialog.content = (this.parent.activeEventData.event.length > 1) ?\n this.l10n.getConstant('deleteMultipleContent') : this.l10n.getConstant('deleteContent');\n this.quickDialog.header = (this.parent.activeEventData.event.length > 1) ?\n this.l10n.getConstant('deleteMultipleEvent') : this.l10n.getConstant('deleteEvent');\n this.quickDialogClass('Delete');\n this.showQuickDialog('DeleteAlert');\n };\n QuickPopups.prototype.openValidationError = function (type, eventData) {\n this.quickDialog.header = this.l10n.getConstant('alert');\n this.quickDialog.content = this.l10n.getConstant(type);\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n if (okButton) {\n okButton.innerHTML = this.l10n.getConstant('ok');\n okButton.setAttribute('aria-label', okButton.innerHTML);\n }\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n if (cancelButton) {\n cancelButton.innerHTML = this.l10n.getConstant('cancel');\n okButton.setAttribute('aria-label', cancelButton.innerHTML);\n }\n this.quickDialogClass('Alert');\n this.showQuickDialog('ValidationAlert', eventData);\n };\n QuickPopups.prototype.showQuickDialog = function (popupType, eventData) {\n var _this = this;\n this.quickDialog.dataBind();\n var eventProp = {\n type: popupType, cancel: false, element: this.quickDialog.element,\n data: extend({}, (eventData || this.parent.activeEventData.event), null, true)\n };\n this.parent.trigger(event.popupOpen, eventProp, function (popupArgs) {\n if (!popupArgs.cancel) {\n _this.quickDialog.show();\n }\n });\n };\n QuickPopups.prototype.createMoreEventList = function (eventCollection, groupOrder, groupIndex) {\n var _this = this;\n var fields = this.parent.eventFields;\n var moreEventContentEle = createElement('div', { className: cls.MORE_EVENT_CONTENT_CLASS });\n var moreEventWrapperEle = createElement('div', { className: cls.MORE_EVENT_WRAPPER_CLASS });\n if (eventCollection.length === 0) {\n moreEventWrapperEle = createElement('div', {\n className: cls.MORE_EVENT_CONTENT_CLASS,\n innerHTML: this.l10n.getConstant('emptyContainer')\n });\n }\n else {\n var _loop_1 = function (eventData) {\n var eventText = (eventData[fields.subject] || this_1.parent.eventSettings.fields.subject.default\n || this_1.parent.localeObj.getConstant('addTitle'));\n var appointmentElement = createElement('div', {\n className: cls.APPOINTMENT_CLASS,\n attrs: {\n 'data-id': '' + eventData[fields.id],\n 'data-guid': eventData.Guid, 'role': 'button', 'tabindex': '0',\n 'aria-readonly': this_1.parent.eventBase.getReadonlyAttribute(eventData),\n 'aria-selected': 'false', 'aria-grabbed': 'true', 'aria-label': this_1.parent.getAnnouncementString(eventData)\n }\n });\n var templateElement = void 0;\n if (!isNullOrUndefined(this_1.parent.activeViewOptions.eventTemplate)) {\n var tempId = this_1.parent.element.id + '_' + this_1.parent.activeViewOptions.eventTemplateName + 'eventTemplate';\n templateElement = this_1.parent.getAppointmentTemplate()(eventData, this_1.parent, 'eventTemplate', tempId, false);\n append(templateElement, appointmentElement);\n }\n else {\n appointmentElement.appendChild(createElement('div', { className: cls.SUBJECT_CLASS, innerHTML: eventText }));\n }\n if (!isNullOrUndefined(groupIndex)) {\n appointmentElement.setAttribute('data-group-index', groupIndex);\n }\n if (!isNullOrUndefined(eventData[fields.recurrenceRule])) {\n var iconClass = (eventData[fields.id] === eventData[fields.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n appointmentElement.appendChild(createElement('div', { className: cls.ICON + ' ' + iconClass }));\n }\n var args = {\n data: extend({}, eventData, null, true),\n element: appointmentElement, cancel: false\n };\n this_1.parent.trigger(event.eventRendered, args, function (eventArgs) {\n if (!eventArgs.cancel) {\n moreEventWrapperEle.appendChild(appointmentElement);\n var isPreventCrud = _this.parent.isAdaptive || _this.parent.currentView === 'Year';\n _this.parent.eventBase.wireAppointmentEvents(appointmentElement, eventData, isPreventCrud);\n _this.parent.eventBase.applyResourceColor(appointmentElement, eventData, 'backgroundColor', groupOrder);\n }\n });\n };\n var this_1 = this;\n for (var _i = 0, eventCollection_1 = eventCollection; _i < eventCollection_1.length; _i++) {\n var eventData = eventCollection_1[_i];\n _loop_1(eventData);\n }\n }\n moreEventContentEle.appendChild(moreEventWrapperEle);\n return moreEventContentEle;\n };\n QuickPopups.prototype.tapHoldEventPopup = function (e) {\n var target = closest(e.target, '.' + cls.APPOINTMENT_CLASS);\n this.isMultipleEventSelect = false;\n this.parent.selectedElements = [];\n this.isMultipleEventSelect = true;\n this.parent.eventBase.getSelectedEventElements(target);\n this.parent.activeEventData = this.parent.eventBase.getSelectedEvents();\n var guid = target.getAttribute('data-guid');\n var eventObj = this.parent.eventBase.getEventByGuid(guid);\n if (isNullOrUndefined(eventObj)) {\n return;\n }\n var eventTitle = (eventObj[this.parent.eventFields.subject] || this.l10n.getConstant('noTitle'));\n var eventTemplate = \"
    \" +\n (\"\") +\n (\"
    \" + eventTitle + \"
    \") +\n (\"\") +\n (\"
    \");\n this.quickPopup.element.innerHTML = eventTemplate;\n var closeIcon = this.quickPopup.element.querySelector('.' + cls.CLOSE_CLASS);\n this.renderButton('e-flat e-round e-small', cls.ICON + ' ' + cls.CLOSE_ICON_CLASS, false, closeIcon, this.closeClick);\n var readonly = this.parent.activeViewOptions.readonly || eventObj[this.parent.eventFields.isReadonly];\n var editAction = !this.parent.eventSettings.allowEditing || readonly;\n var deleteAction = !this.parent.eventSettings.allowDeleting || readonly;\n var editIcon = this.quickPopup.element.querySelector('.' + cls.EDIT_CLASS);\n if (editIcon) {\n this.renderButton('e-flat e-round e-small', cls.ICON + ' ' + cls.EDIT_ICON_CLASS, editAction, editIcon, this.editClick);\n }\n var deleteIcon = this.quickPopup.element.querySelector('.' + cls.DELETE_CLASS);\n if (deleteIcon) {\n this.renderButton('e-flat e-round e-small', cls.ICON + ' ' + cls.DELETE_ICON_CLASS, deleteAction, deleteIcon, this.deleteClick);\n }\n this.beforeQuickPopupOpen(target);\n };\n QuickPopups.prototype.isCellBlocked = function (args) {\n var tempObj = {};\n tempObj[this.parent.eventFields.startTime] = this.parent.activeCellsData.startTime;\n tempObj[this.parent.eventFields.endTime] = this.parent.activeCellsData.endTime;\n tempObj[this.parent.eventFields.isAllDay] = this.parent.activeCellsData.isAllDay;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var targetCell = args.element instanceof Array ? args.element[0] : args.element;\n var groupIndex = parseInt(targetCell.getAttribute('data-group-index'), 10);\n this.parent.resourceBase.setResourceValues(tempObj, isNaN(groupIndex) ? null : groupIndex);\n }\n return this.parent.eventBase.isBlockRange(tempObj);\n };\n QuickPopups.prototype.cellClick = function (args) {\n var date = new Date(args.startTime.getTime());\n if (!this.parent.showQuickInfo || !this.parent.eventSettings.allowAdding ||\n this.parent.currentView === 'MonthAgenda' || this.isCellBlocked(args) ||\n !this.parent.isMinMaxDate(new Date(date.setHours(0, 0, 0, 0)))) {\n this.quickPopupHide();\n return;\n }\n var targetEle = args.event.target;\n if (this.parent.isAdaptive) {\n this.quickPopupHide();\n var newEventClone = this.parent.element.querySelector('.' + cls.NEW_EVENT_CLASS);\n if (isNullOrUndefined(newEventClone)) {\n newEventClone = createElement('div', {\n className: cls.NEW_EVENT_CLASS,\n innerHTML: \"
    + \" + this.l10n.getConstant('newEvent') + \"
    \"\n });\n }\n var targetCell = closest(targetEle, '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS);\n if (targetCell) {\n targetCell.appendChild(newEventClone);\n }\n return;\n }\n var target = closest(targetEle, '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS + ',.' +\n cls.HEADER_CELLS_CLASS);\n if (isNullOrUndefined(target) || targetEle.classList.contains(cls.MORE_INDICATOR_CLASS)) {\n return;\n }\n var isSameTarget = this.quickPopup.relateTo === target;\n if (isSameTarget && this.quickPopup.element.classList.contains(cls.POPUP_OPEN)) {\n var subjectElement_1 = this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (subjectElement_1) {\n subjectElement_1.focus();\n }\n return;\n }\n var temp = {};\n temp[this.parent.eventFields.startTime] = this.parent.activeCellsData.startTime;\n temp[this.parent.eventFields.endTime] = this.parent.activeCellsData.endTime;\n temp[this.parent.eventFields.isAllDay] = this.parent.activeCellsData.isAllDay;\n var quickCellPopup = createElement('div', { className: cls.CELL_POPUP_CLASS });\n quickCellPopup.appendChild(this.getPopupHeader('Cell', temp));\n quickCellPopup.appendChild(this.getPopupContent('Cell', args, temp));\n quickCellPopup.appendChild(this.getPopupFooter('Cell', temp));\n var subjectElement = quickCellPopup.querySelector('.' + cls.SUBJECT_CLASS);\n if (subjectElement) {\n Input.createInput({ element: subjectElement, properties: { placeholder: this.l10n.getConstant('addTitle') } });\n }\n if (!isNullOrUndefined(this.parent.eventSettings.fields.subject.default)) {\n subjectElement.value = this.parent.eventSettings.fields.subject.default;\n }\n var closeIcon = quickCellPopup.querySelector('.' + cls.CLOSE_CLASS);\n if (closeIcon) {\n this.renderButton('e-flat e-round e-small', cls.ICON + ' ' + cls.CLOSE_ICON_CLASS, false, closeIcon, this.popupClose);\n }\n var moreButton = quickCellPopup.querySelector('.' + cls.QUICK_POPUP_EVENT_DETAILS_CLASS);\n if (moreButton) {\n this.renderButton('e-flat', '', false, moreButton, this.detailsClick);\n }\n var saveButton = quickCellPopup.querySelector('.' + cls.EVENT_CREATE_CLASS);\n if (saveButton) {\n this.renderButton('e-flat e-primary', '', this.parent.activeViewOptions.readonly, saveButton, this.saveClick);\n }\n if (this.morePopup) {\n this.morePopup.hide();\n }\n this.quickPopup.content = quickCellPopup;\n this.quickPopup.relateTo = target;\n this.quickPopup.dataBind();\n this.beforeQuickPopupOpen(target);\n };\n QuickPopups.prototype.isSameEventClick = function (events) {\n var isSameTarget = this.quickPopup.relateTo === closest(events.element, '.' + cls.APPOINTMENT_CLASS);\n if (isSameTarget && this.quickPopup.element.classList.contains(cls.POPUP_OPEN)) {\n var editIcon = this.quickPopup.element.querySelector('.' + cls.EDIT_CLASS);\n if (editIcon) {\n editIcon.focus();\n }\n if (!this.parent.isAdaptive) {\n var editButton = this.quickPopup.element.querySelector('.' + cls.EDIT_EVENT_CLASS);\n if (editButton) {\n editButton.focus();\n }\n }\n return true;\n }\n return false;\n };\n QuickPopups.prototype.isQuickTemplate = function (type) {\n return this.parent.quickInfoTemplates.templateType === 'Both' || this.parent.quickInfoTemplates.templateType === type;\n };\n QuickPopups.prototype.eventClick = function (events) {\n if (this.parent.eventTooltip) {\n this.parent.eventTooltip.close();\n }\n if (!this.parent.showQuickInfo) {\n return;\n }\n if (this.parent.isAdaptive && this.isMultipleEventSelect) {\n this.updateTapHoldEventPopup(closest(events.element, '.' + cls.APPOINTMENT_CLASS));\n }\n else {\n var isSameTarget = this.isSameEventClick(events);\n if (isSameTarget) {\n return;\n }\n var eventData = events.event;\n var quickEventPopup = createElement('div', { className: cls.EVENT_POPUP_CLASS });\n quickEventPopup.appendChild(this.getPopupHeader('Event', eventData));\n quickEventPopup.appendChild(this.getPopupContent('Event', events, eventData));\n quickEventPopup.appendChild(this.getPopupFooter('Event', eventData));\n var readonly = this.parent.activeViewOptions.readonly || eventData[this.parent.eventFields.isReadonly];\n var editAction = !this.parent.eventSettings.allowEditing || readonly;\n var deleteAction = !this.parent.eventSettings.allowDeleting || readonly;\n var editIcon = quickEventPopup.querySelector('.' + cls.EDIT_CLASS);\n var buttonClass = 'e-flat e-round e-small';\n if (editIcon) {\n this.renderButton(buttonClass, cls.ICON + ' ' + cls.EDIT_ICON_CLASS, editAction, editIcon, this.editClick);\n }\n var deleteIcon = quickEventPopup.querySelector('.' + cls.DELETE_CLASS);\n if (deleteIcon) {\n this.renderButton(buttonClass, cls.ICON + ' ' + cls.DELETE_ICON_CLASS, deleteAction, deleteIcon, this.deleteClick);\n }\n var closeIcon = quickEventPopup.querySelector('.' + cls.CLOSE_CLASS);\n if (closeIcon) {\n this.renderButton(buttonClass, cls.ICON + ' ' + cls.CLOSE_ICON_CLASS, false, closeIcon, this.popupClose);\n }\n var editButton = quickEventPopup.querySelector('.' + cls.EDIT_EVENT_CLASS);\n if (editButton) {\n this.renderButton('e-flat e-primary', '', editAction, editButton, this.editClick);\n }\n var deleteButton = quickEventPopup.querySelector('.' + cls.DELETE_EVENT_CLASS);\n if (deleteButton) {\n this.renderButton('e-flat', '', deleteAction, deleteButton, this.deleteClick);\n }\n if (this.morePopup && !closest(events.element, '.' + cls.MORE_EVENT_WRAPPER_CLASS)) {\n this.morePopup.hide();\n }\n this.quickPopup.content = quickEventPopup;\n this.quickPopup.relateTo = this.parent.isAdaptive ? document.body :\n closest(events.element, '.' + cls.APPOINTMENT_CLASS);\n this.quickPopup.dataBind();\n this.beforeQuickPopupOpen(events.element);\n }\n };\n QuickPopups.prototype.getPopupHeader = function (headerType, headerData) {\n var headerTemplate = createElement('div', { className: cls.POPUP_HEADER_CLASS });\n if (this.isQuickTemplate(headerType) && this.parent.quickInfoTemplates.header) {\n var headerArgs = extend({}, headerData, { elementType: headerType.toLowerCase() }, true);\n var templateId = this.parent.element.id;\n var headerTemp = [].slice.call(this.parent.getQuickInfoTemplatesHeader()(headerArgs, this.parent, 'header', templateId + '_headerTemplate', false));\n append([].slice.call(headerTemp), headerTemplate);\n }\n else {\n var header = void 0;\n var args = void 0;\n switch (headerType) {\n case 'Cell':\n header = \"
    \");\n break;\n case 'Event':\n args = this.getFormattedString(headerData);\n header = \"
    \" +\n (\"\") +\n (\"\") +\n (\"
    \") +\n (\"
    \" + args.eventSubject + \"
    \");\n break;\n }\n var templateWrapper = createElement('div', { innerHTML: header });\n append([].slice.call(templateWrapper.childNodes), headerTemplate);\n }\n return headerTemplate;\n };\n QuickPopups.prototype.getPopupContent = function (type, args, data) {\n var contentTemplate = createElement('div', { className: cls.POPUP_CONTENT_CLASS });\n if (this.isQuickTemplate(type) && this.parent.quickInfoTemplates.content) {\n var contentArgs = extend({}, data, { elementType: type.toLowerCase() }, true);\n var templateId = this.parent.element.id;\n var contentTemp = [].slice.call(this.parent.getQuickInfoTemplatesContent()(contentArgs, this.parent, 'content', templateId + '_contentTemplate', false));\n append([].slice.call(contentTemp), contentTemplate);\n }\n else {\n var content = void 0;\n var cellDetails = void 0;\n var argsData = void 0;\n var resourceText = this.getResourceText(args, type.toLowerCase());\n switch (type) {\n case 'Cell':\n cellDetails = this.getFormattedString(data);\n content = \"
    \") +\n (\"
    \" + cellDetails.details + \"
    \") +\n ((this.parent.activeViewOptions.group.resources.length > 0 ? \"
    \" +\n (\"
    \" + resourceText + \"
    \") : '') + \"
    \");\n break;\n case 'Event':\n argsData = this.getFormattedString(data);\n content = '
    ' + argsData.details + '
    ';\n if (data[this.parent.eventFields.recurrenceRule]) {\n content += '
    ' +\n this.getRecurrenceSummary(data) + '
    ';\n }\n content += '
    ';\n if (data[this.parent.eventFields.location]) {\n content += '
    ' +\n data[this.parent.eventFields.location] + '
    ';\n }\n if (data[this.parent.eventFields.startTimezone] || data[this.parent.eventFields.endTimezone]) {\n content += '
    ' +\n this.getTimezone(data) + '
    ';\n }\n if (data[this.parent.eventFields.description]) {\n content += '
    ' +\n data[this.parent.eventFields.description] + '
    ';\n }\n if (this.parent.resourceCollection.length > 0) {\n content += '
    ' +\n resourceText + '
    ';\n }\n break;\n }\n var templateWrapper = createElement('div', { innerHTML: content });\n append([].slice.call(templateWrapper.childNodes), contentTemplate);\n }\n return contentTemplate;\n };\n QuickPopups.prototype.getPopupFooter = function (footerType, footerData) {\n var footerTemplate = createElement('div', { className: cls.POPUP_FOOTER_CLASS });\n if (this.isQuickTemplate(footerType) && this.parent.quickInfoTemplates.footer) {\n var footerArgs = extend({}, footerData, { elementType: footerType.toLowerCase() }, true);\n var templateId = this.parent.element.id;\n var footerTemp = [].slice.call(this.parent.getQuickInfoTemplatesFooter()(footerArgs, this.parent, 'footer', templateId + '_footerTemplate', false));\n append([].slice.call(footerTemp), footerTemplate);\n }\n else {\n var footer = void 0;\n switch (footerType) {\n case 'Cell':\n footer = \"\") +\n (\"\");\n break;\n case 'Event':\n footer = \"\" + (this.parent.isAdaptive ? '' : \"\") +\n (\"\"));\n break;\n }\n var templateWrapper = createElement('div', { innerHTML: footer });\n append([].slice.call(templateWrapper.childNodes), footerTemplate);\n }\n return footerTemplate;\n };\n QuickPopups.prototype.getResourceText = function (args, type) {\n if (this.parent.resourceCollection.length === 0) {\n return null;\n }\n var resourceValue = '';\n if (this.parent.activeViewOptions.group.resources.length === 0) {\n var resourceCollection_1 = this.parent.resourceBase.resourceCollection.slice(-1)[0];\n var resourceData = resourceCollection_1.dataSource;\n if (type === 'event') {\n var eventData = args.event;\n var _loop_2 = function (data) {\n var resourceId = eventData[resourceCollection_1.field];\n if (resourceId instanceof Array) {\n if (resourceId.indexOf(data[resourceCollection_1.idField]) > -1) {\n var id_1 = resourceId[resourceId.indexOf(data[resourceCollection_1.idField])];\n var resource = resourceData.filter(function (e) {\n return e[resourceCollection_1.idField] === id_1;\n })[0];\n resourceValue += (resourceValue === '') ? resource[resourceCollection_1.textField] :\n ', ' + resource[resourceCollection_1.textField];\n }\n }\n else if (data[resourceCollection_1.idField] === resourceId) {\n resourceValue = data[resourceCollection_1.textField].toString();\n }\n };\n for (var _i = 0, resourceData_1 = resourceData; _i < resourceData_1.length; _i++) {\n var data = resourceData_1[_i];\n _loop_2(data);\n }\n }\n else {\n resourceValue = resourceData[0][resourceCollection_1.textField].toString();\n }\n }\n else {\n if (type === 'event') {\n var eventData = args.event;\n var resourceData = void 0;\n var lastResource_1;\n for (var i = this.parent.resourceBase.resourceCollection.length - 1; i >= 0; i--) {\n resourceData = eventData[this.parent.resourceBase.resourceCollection[i].field];\n if (!isNullOrUndefined(resourceData)) {\n lastResource_1 = this.parent.resourceBase.resourceCollection[i];\n break;\n }\n }\n if (!Array.isArray(resourceData)) {\n resourceData = [resourceData];\n }\n var resNames_1 = [];\n var lastResourceData_1 = lastResource_1.dataSource;\n resourceData.forEach(function (value) {\n var text;\n var i = util.findIndexInData(lastResourceData_1, lastResource_1.idField, value);\n if (i > -1) {\n text = lastResourceData_1[i][lastResource_1.textField];\n }\n if (text) {\n resNames_1.push(text);\n }\n });\n resourceValue = resNames_1.join(', ');\n }\n else {\n var argsData = args;\n var groupIndex = !isNullOrUndefined(argsData.groupIndex) ? argsData.groupIndex : 0;\n var resourceDetails = this.parent.resourceBase.lastResourceLevel[groupIndex];\n resourceValue = resourceDetails.resourceData[resourceDetails.resource.textField];\n }\n }\n return resourceValue;\n };\n QuickPopups.prototype.getFormattedString = function (eventData) {\n var fields = this.parent.eventFields;\n var eventSubject = (eventData[fields.subject] || this.l10n.getConstant('noTitle'));\n var startDate = eventData[fields.startTime];\n var endDate = eventData[fields.endTime];\n var startDateDetails = this.getDateFormat(startDate, 'long');\n var endDateDetails = (eventData[fields.isAllDay] && endDate.getHours() === 0 && endDate.getMinutes() === 0) ?\n this.getDateFormat(util.addDays(new Date(endDate.getTime()), -1), 'long') :\n this.getDateFormat(endDate, 'long');\n var startTimeDetail = this.parent.getTimeString(startDate);\n var endTimeDetail = this.parent.getTimeString(endDate);\n var details = '';\n var spanLength = endDate.getDate() !== startDate.getDate() &&\n (endDate.getTime() - startDate.getTime()) / (60 * 60 * 1000) < 24 ? 1 : 0;\n if (eventData[fields.isAllDay]) {\n details = startDateDetails + ' (' + this.l10n.getConstant('allDay') + ')';\n if (((endDate.getTime() - startDate.getTime()) / util.MS_PER_DAY) > 1) {\n details += ' - ' + endDateDetails + ' (' + this.l10n.getConstant('allDay') + ')';\n }\n }\n else if ((((endDate.getTime() - startDate.getTime()) / util.MS_PER_DAY) >= 1) || spanLength > 0) {\n details = startDateDetails + ' (' + startTimeDetail + ')' + ' - ' + endDateDetails + ' (' + endTimeDetail + ')';\n }\n else {\n details = startDateDetails + ' (' + (startTimeDetail + ' - ' + endTimeDetail) + ')';\n }\n return { eventSubject: eventSubject, details: details };\n };\n QuickPopups.prototype.moreEventClick = function (data, endDate, groupIndex) {\n var _this = this;\n this.quickPopupHide(true);\n var moreEventContentEle = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_CONTENT_CLASS);\n if (moreEventContentEle) {\n remove(moreEventContentEle);\n }\n var selectedDate = ((data.date).getTime()).toString();\n var target = closest(data.element, '.' + cls.MORE_INDICATOR_CLASS + ',.' + cls.WORK_CELLS_CLASS);\n var day = this.parent.globalize.formatDate(data.date, { format: 'E', calendar: this.parent.getCalendarMode() });\n this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DAY_CLASS).innerHTML = util.capitalizeFirstWord(day, 'single');\n var dateElement = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DATE_CLASS);\n dateElement.innerHTML = this.getDateFormat(data.date, 'd');\n dateElement.setAttribute('data-date', selectedDate);\n dateElement.setAttribute('data-end-date', endDate.getTime().toString());\n var groupOrder;\n if (!isNullOrUndefined(groupIndex)) {\n dateElement.setAttribute('data-group-index', groupIndex);\n groupOrder = this.parent.resourceBase.lastResourceLevel[parseInt(groupIndex, 10)].groupOrder;\n }\n var moreEventElements = this.createMoreEventList(data.event, groupOrder, groupIndex);\n this.morePopup.element.querySelector('.' + cls.MORE_EVENT_POPUP_CLASS).appendChild(moreEventElements);\n removeClass(this.morePopup.element.querySelector('.' + cls.MORE_EVENT_DATE_HEADER_CLASS).childNodes, cls.CURRENTDATE_CLASS);\n if (util.resetTime(data.date).getTime() === util.resetTime(this.parent.getCurrentTime()).getTime()) {\n addClass(this.morePopup.element.querySelector('.' + cls.MORE_EVENT_DATE_HEADER_CLASS).childNodes, cls.CURRENTDATE_CLASS);\n }\n if (!this.parent.isAdaptive) {\n if (this.parent.currentView.indexOf('Timeline') !== -1) {\n var gIndex = target.getAttribute('data-group-index');\n var startDate = new Date(parseInt(target.getAttribute('data-start-date'), 10));\n startDate.setHours(startDate.getHours(), startDate.getMinutes(), 0);\n var tdDate = startDate.getTime().toString();\n if (isNullOrUndefined(gIndex)) {\n this.morePopup.relateTo = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS +\n ' tbody tr td[data-date=\"' + tdDate + '\"]');\n }\n else {\n this.morePopup.relateTo = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS +\n ' tbody tr td[data-group-index=\"' + gIndex + '\"][data-date=\"' + tdDate + '\"]');\n if (isNullOrUndefined(this.morePopup.relateTo)) {\n var workCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_WRAP_CLASS +\n ' tbody tr td[data-group-index=\"' + gIndex + '\"]'));\n for (var i = 0; i < workCells.length; i++) {\n var date = workCells[i].getAttribute('data-date');\n if (date < tdDate) {\n this.morePopup.relateTo = workCells[i];\n }\n }\n }\n }\n }\n else {\n this.morePopup.relateTo = closest(target, '.' + cls.WORK_CELLS_CLASS);\n }\n }\n this.parent.renderTemplates();\n var eventProp = {\n type: 'EventContainer', cancel: false,\n element: this.morePopup.element, data: data\n };\n this.parent.trigger(event.popupOpen, eventProp, function (popupArgs) {\n if (!popupArgs.cancel) {\n _this.morePopup.show();\n }\n });\n };\n QuickPopups.prototype.saveClick = function (event) {\n this.applyFormValidation();\n this.dialogEvent = event;\n this.isCrudAction = true;\n this.quickPopupHide();\n };\n QuickPopups.prototype.detailsClick = function (event) {\n var subjectEle = this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (subjectEle && subjectEle.value !== '') {\n extend(this.parent.activeCellsData, { subject: subjectEle.value });\n }\n this.dialogEvent = event;\n this.isCrudAction = false;\n this.fieldValidator.destroyToolTip();\n this.quickPopupHide();\n this.parent.eventWindow.openEditor(this.parent.activeCellsData, 'Add');\n };\n QuickPopups.prototype.editClick = function (event) {\n this.dialogEvent = event;\n this.quickPopupHide(true);\n var data = this.parent.activeEventData.event;\n this.parent.currentAction = 'EditSeries';\n if (!isNullOrUndefined(data[this.parent.eventFields.recurrenceRule])) {\n this.parent.currentAction = 'EditOccurrence';\n this.openRecurrenceAlert();\n }\n else {\n this.parent.eventWindow.openEditor(data, this.parent.currentAction);\n }\n };\n QuickPopups.prototype.deleteClick = function (event) {\n this.dialogEvent = event;\n this.quickPopupHide(true);\n this.parent.currentAction = 'Delete';\n if (this.parent.activeEventData.event[this.parent.eventFields.recurrenceRule]) {\n this.openRecurrenceAlert();\n }\n else {\n this.openDeleteAlert();\n }\n };\n QuickPopups.prototype.updateMoreEventContent = function () {\n if (this.morePopup.element.classList.contains('e-popup-close')) {\n return;\n }\n var moreEventContentEle = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_CONTENT_CLASS);\n if (moreEventContentEle) {\n remove(moreEventContentEle);\n }\n var dateElement = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DATE_CLASS);\n var startDate = new Date(parseInt(dateElement.getAttribute('data-date'), 10));\n var endDate = new Date(parseInt(dateElement.getAttribute('data-end-date'), 10));\n var groupIndex = dateElement.getAttribute('data-group-index');\n var data;\n var groupOrder;\n if (!isNullOrUndefined(groupIndex)) {\n data = this.parent.resourceBase.lastResourceLevel[parseInt(groupIndex, 10)];\n groupOrder = data.groupOrder;\n }\n var events = this.parent.eventBase.filterEvents(startDate, endDate, this.parent.eventsProcessed, data);\n var moreElement = this.createMoreEventList(events, groupOrder, groupIndex);\n this.morePopup.element.querySelector('.' + cls.MORE_EVENT_POPUP_CLASS).appendChild(moreElement);\n };\n QuickPopups.prototype.closeClick = function (event) {\n this.dialogEvent = event;\n if (this.parent.currentView === 'Year' && this.parent.activeCellsData && this.parent.activeCellsData.element) {\n this.parent.selectCell(this.parent.activeCellsData.element);\n }\n this.quickPopupHide();\n this.morePopup.hide();\n };\n QuickPopups.prototype.dialogButtonClick = function (event) {\n this.dialogEvent = event;\n this.quickDialog.hide();\n var target = event.target;\n var cancelBtn = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n var eventData = this.parent.activeEventData.event;\n if (target.classList.contains(cls.QUICK_DIALOG_OCCURRENCE_CLASS)) {\n this.parent.currentAction = (this.parent.currentAction === 'Delete') ? 'DeleteOccurrence' : 'EditOccurrence';\n switch (this.parent.currentAction) {\n case 'EditOccurrence':\n this.parent.eventWindow.openEditor(eventData, this.parent.currentAction);\n break;\n case 'DeleteOccurrence':\n this.parent.crudModule.deleteEvent(eventData, this.parent.currentAction);\n break;\n }\n }\n else if (target.classList.contains(cls.QUICK_DIALOG_FOLLOWING_EVENTS_CLASS)) {\n this.parent.currentAction = (this.parent.currentAction === 'Delete') ? 'DeleteFollowingEvents' : 'EditFollowingEvents';\n switch (this.parent.currentAction) {\n case 'EditFollowingEvents':\n this.parent.eventWindow.openEditor(eventData, this.parent.currentAction);\n break;\n case 'DeleteFollowingEvents':\n this.parent.crudModule.deleteEvent(eventData, this.parent.currentAction);\n break;\n }\n }\n else if (target.classList.contains(cls.QUICK_DIALOG_SERIES_CLASS)) {\n this.parent.currentAction = (this.parent.currentAction === 'Delete') ? 'DeleteSeries' : 'EditSeries';\n switch (this.parent.currentAction) {\n case 'EditSeries':\n this.parent.eventWindow.openEditor(this.parent.eventBase.getParentEvent(eventData, true), this.parent.currentAction);\n break;\n case 'DeleteSeries':\n this.parent.crudModule.deleteEvent(eventData, this.parent.currentAction);\n break;\n }\n }\n else if (target.classList.contains(cls.QUICK_DIALOG_DELETE_CLASS)) {\n this.parent.crudModule.deleteEvent(eventData, this.parent.currentAction);\n }\n else if (!cancelBtn.classList.contains(cls.DISABLE_CLASS) && (target.classList.contains(cls.QUICK_DIALOG_ALERT_OK) ||\n (target.classList.contains(cls.QUICK_DIALOG_ALERT_CANCEL) && !cancelBtn.classList.contains(cls.QUICK_DIALOG_CANCEL_CLASS)))) {\n this.parent.uiStateValues.isIgnoreOccurrence = target.classList.contains(cls.QUICK_DIALOG_ALERT_CANCEL);\n this.parent.eventWindow.eventSave(event, this.l10n.getConstant('ok'));\n }\n };\n QuickPopups.prototype.updateTapHoldEventPopup = function (target) {\n var selectedElements = this.parent.eventBase.getSelectedEventElements(target);\n this.parent.activeEventData = this.parent.eventBase.getSelectedEvents();\n if (selectedElements.length > 0) {\n var eventObj = this.parent.eventBase.getEventByGuid(selectedElements[0].getAttribute('data-guid'));\n var titleContent = (selectedElements.length === 1) ?\n (eventObj[this.parent.eventFields.subject] || this.l10n.getConstant('noTitle')) :\n '(' + selectedElements.length + ')' + ' ' + this.l10n.getConstant('selectedItems');\n this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS).innerHTML = titleContent;\n if (selectedElements.length > 1) {\n addClass([this.quickPopup.element.querySelector('.' + cls.EDIT_ICON_CLASS)], cls.HIDDEN_CLASS);\n }\n else {\n removeClass([this.quickPopup.element.querySelector('.' + cls.EDIT_ICON_CLASS)], cls.HIDDEN_CLASS);\n }\n }\n else {\n this.parent.selectedElements = [];\n this.quickPopupHide();\n }\n };\n QuickPopups.prototype.getTimezone = function (event) {\n var zoneDetails = '';\n zoneDetails += event[this.parent.eventFields.startTimezone] || '';\n zoneDetails += zoneDetails === '' ? '' : ' - ';\n zoneDetails += event[this.parent.eventFields.endTimezone] || '';\n return zoneDetails;\n };\n QuickPopups.prototype.getRecurrenceSummary = function (event) {\n var recurrenceEditor = this.parent.eventWindow.getRecurrenceEditorInstance();\n if (recurrenceEditor) {\n var ruleSummary = recurrenceEditor.getRuleSummary(event[this.parent.eventFields.recurrenceRule]);\n return ruleSummary.charAt(0).toUpperCase() + ruleSummary.slice(1);\n }\n return '';\n };\n QuickPopups.prototype.getDateFormat = function (date, skeletonString) {\n return util.capitalizeFirstWord(this.parent.globalize.formatDate(date, { skeleton: skeletonString, calendar: this.parent.getCalendarMode() }), 'single');\n };\n QuickPopups.prototype.getDataFromTarget = function (target) {\n if (target.classList.contains(cls.APPOINTMENT_CLASS)) {\n return this.parent.activeEventData.event;\n }\n // Deprecated cells data in quick popups\n var eventObj = {\n startTime: this.parent.activeCellsData.startTime,\n endTime: this.parent.activeCellsData.endTime,\n isAllDay: this.parent.activeCellsData.isAllDay,\n groupIndex: this.parent.activeCellsData.groupIndex\n };\n var cellsData = this.parent.activeCellsData;\n this.parent.eventWindow.convertToEventData(cellsData, eventObj);\n return eventObj;\n };\n QuickPopups.prototype.beforeQuickDialogClose = function (e) {\n var _this = this;\n var args = {\n event: e.event || this.dialogEvent,\n type: (isNullOrUndefined(this.parent.activeEventData.event)) ? 'ValidationAlert' :\n !isNullOrUndefined(this.parent.activeEventData.event[this.parent.eventFields.recurrenceRule])\n ? 'RecurrenceAlert' : 'DeleteAlert', cancel: false, data: this.parent.activeEventData.event,\n element: this.quickDialog.element\n };\n this.parent.trigger(event.popupClose, args, function (popupCloseArgs) {\n if (!popupCloseArgs.cancel) {\n _this.parent.eventBase.focusElement(true);\n }\n });\n };\n QuickPopups.prototype.beforeQuickPopupOpen = function (target) {\n var _this = this;\n this.parent.renderTemplates();\n var isEventPopup = this.quickPopup.element.querySelector('.' + cls.EVENT_POPUP_CLASS);\n var popupType = this.parent.isAdaptive ? isEventPopup ? 'ViewEventInfo' : 'EditEventInfo' : 'QuickInfo';\n var eventProp = {\n type: popupType, cancel: false, data: extend({}, this.getDataFromTarget(target), null, true),\n target: target, element: this.quickPopup.element\n };\n this.parent.trigger(event.popupOpen, eventProp, function (popupArgs) {\n if (popupArgs.cancel) {\n _this.quickPopupHide();\n _this.destroyPopupButtons('quickPopup');\n if (popupArgs.element.classList.contains(cls.POPUP_OPEN)) {\n _this.quickPopupClose();\n }\n util.removeChildren(_this.quickPopup.element);\n _this.isMultipleEventSelect = false;\n }\n else {\n var display = _this.quickPopup.element.style.display;\n _this.quickPopup.element.style.display = 'block';\n if (_this.parent.isAdaptive) {\n _this.quickPopup.element.removeAttribute('style');\n _this.quickPopup.element.style.display = 'block';\n _this.quickPopup.element.style.height = formatUnit((popupType === 'EditEventInfo') ? 65 : window.innerHeight);\n }\n else {\n _this.quickPopup.offsetX = 10;\n _this.quickPopup.collision = { X: _this.parent.enableRtl ? 'flip' : 'none', Y: 'fit' };\n _this.quickPopup.position = { X: _this.parent.enableRtl ? 'left' : 'right', Y: _this.parent.enableRtl ? 'bottom' : 'top' };\n _this.quickPopup.dataBind();\n _this.quickPopup.refreshPosition(null, true);\n var collide = isCollide(_this.quickPopup.element, _this.parent.element);\n if (collide.indexOf(_this.parent.enableRtl ? 'left' : 'right') > -1) {\n _this.quickPopup.offsetX = -target.offsetWidth - 10 - _this.quickPopup.element.offsetWidth;\n _this.quickPopup.dataBind();\n var leftCollide = isCollide(_this.quickPopup.element, _this.parent.element);\n if (leftCollide.indexOf('left') > -1) {\n _this.quickPopup.position = { X: 'center', Y: 'center' };\n _this.quickPopup.collision = { X: 'fit', Y: 'fit' };\n _this.quickPopup.offsetX = -(_this.quickPopup.element.offsetWidth / 2);\n _this.quickPopup.dataBind();\n }\n }\n if (_this.parent.virtualScrollModule && (collide.indexOf('top') > -1 || collide.indexOf('bottom') > -1)) {\n var element = _this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS + ' table');\n var translateY = util.getTranslateY(element);\n _this.quickPopup.offsetY = translateY;\n _this.quickPopup.dataBind();\n }\n }\n if (isEventPopup) {\n _this.applyEventColor();\n }\n _this.quickPopup.element.style.display = display;\n _this.quickPopup.dataBind();\n _this.quickPopup.show();\n }\n });\n };\n QuickPopups.prototype.applyEventColor = function () {\n var colorField = '';\n if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n colorField = this.parent.enableRtl ? 'border-right-color' : 'border-left-color';\n }\n else {\n colorField = 'background-color';\n }\n var color = this.parent.activeEventData.element.style[colorField];\n if (color === '') {\n return;\n }\n var colorEle = this.quickPopup.element.querySelector('.' + cls.POPUP_HEADER_CLASS);\n var footerEle = this.quickPopup.element.querySelector('.' + cls.POPUP_FOOTER_CLASS);\n if (footerEle && footerEle.offsetParent) {\n colorEle = this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (colorEle) {\n colorEle.style.borderLeftColor = color;\n color = \"rgba(\" + color.match(/\\d+/g).join() + \",0.3)\";\n }\n }\n if (colorEle) {\n colorEle.style.backgroundColor = color;\n }\n };\n QuickPopups.prototype.quickPopupOpen = function () {\n if (this.parent.isAdaptive) {\n this.quickPopup.element.style.top = '0px';\n return;\n }\n if (this.quickPopup.element.querySelector('.' + cls.CELL_POPUP_CLASS)) {\n var subjectElement = this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (subjectElement) {\n subjectElement.focus();\n }\n }\n else {\n var editElement = this.quickPopup.element.querySelector('.' + cls.EDIT_EVENT_CLASS);\n if (editElement) {\n editElement.focus();\n }\n var editIcon = this.quickPopup.element.querySelector('.' + cls.EDIT_CLASS);\n if (editIcon) {\n editIcon.focus();\n }\n }\n };\n QuickPopups.prototype.quickPopupClose = function () {\n this.parent.eventBase.focusElement();\n this.quickPopup.relateTo = cls.WORK_CELLS_CLASS;\n this.fieldValidator.destroyToolTip();\n if (this.quickPopup.element.querySelectorAll('.e-formvalidator').length) {\n this.fieldValidator.destroy();\n }\n this.destroyPopupButtons('quickPopup');\n util.removeChildren(this.quickPopup.element);\n };\n QuickPopups.prototype.morePopupOpen = function () {\n if (this.parent.isAdaptive) {\n this.morePopup.element.style.top = '0px';\n this.morePopup.element.style.left = '0px';\n this.morePopup.element.style.height = formatUnit(window.innerHeight);\n return;\n }\n this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DATE_CLASS).focus();\n this.morePopup.refreshPosition();\n };\n QuickPopups.prototype.morePopupClose = function () {\n var moreWrapper = this.parent.element.querySelector('.' + cls.MORE_EVENT_WRAPPER_CLASS);\n if (moreWrapper) {\n remove(moreWrapper);\n }\n };\n QuickPopups.prototype.popupClose = function (event) {\n this.dialogEvent = event;\n this.isCrudAction = false;\n this.quickPopupHide(true);\n };\n QuickPopups.prototype.quickPopupHide = function (hideAnimation) {\n var _this = this;\n if (!this.quickPopup.element.classList.contains(cls.POPUP_OPEN)) {\n return;\n }\n var isCellPopup = this.quickPopup.element.querySelector('.' + cls.CELL_POPUP_CLASS);\n var popupData;\n if (isCellPopup) {\n var formvalidator = this.quickPopup.element.querySelector('.e-formvalidator');\n if (this.isCrudAction && formvalidator &&\n !formvalidator.ej2_instances[0].validate()) {\n return;\n }\n var fields = this.parent.eventFields;\n var saveObj = this.parent.eventWindow.getObjectFromFormData(cls.POPUP_WRAPPER_CLASS);\n this.parent.eventWindow.setDefaultValueToObject(saveObj);\n saveObj[fields.id] = this.parent.eventBase.getEventMaxID();\n saveObj[fields.startTime] = this.parent.activeCellsData.startTime;\n saveObj[fields.endTime] = this.parent.activeCellsData.endTime;\n saveObj[fields.isAllDay] = this.parent.activeCellsData.isAllDay;\n if (this.parent.resourceBase) {\n this.parent.resourceBase.setResourceValues(saveObj);\n }\n popupData = saveObj;\n }\n else {\n popupData = this.parent.activeEventData.event;\n }\n var isEventPopup = this.quickPopup.element.querySelector('.' + cls.EVENT_POPUP_CLASS);\n var args = {\n event: this.dialogEvent,\n type: this.parent.isAdaptive ? isEventPopup ? 'ViewEventInfo' : 'EditEventInfo' : 'QuickInfo',\n cancel: false, data: popupData, element: this.quickPopup.element,\n target: (isCellPopup ? this.parent.activeCellsData.element : this.parent.activeEventData.element)\n };\n this.parent.trigger(event.popupClose, args, function (popupCloseArgs) {\n if (!popupCloseArgs.cancel) {\n if (_this.quickPopup.element.classList.contains('e-popup-open')) {\n if (isCellPopup && _this.isCrudAction) {\n _this.parent.currentAction = 'Add';\n _this.parent.crudModule.addEvent(popupCloseArgs.data);\n }\n if (hideAnimation) {\n var animation = _this.quickPopup.hideAnimation;\n _this.quickPopup.hideAnimation = null;\n _this.quickPopup.hide();\n _this.quickPopup.hideAnimation = animation;\n }\n else {\n _this.quickPopup.hide();\n }\n _this.isMultipleEventSelect = false;\n _this.isCrudAction = false;\n }\n }\n });\n };\n QuickPopups.prototype.navigationClick = function (e) {\n var navigateEle = closest(e.target, '.' + cls.NAVIGATE_CLASS);\n if (!isNullOrUndefined(navigateEle)) {\n var date = this.parent.getDateFromElement(e.currentTarget);\n if (!isNullOrUndefined(date)) {\n this.closeClick(e);\n this.parent.setProperties({ selectedDate: date }, true);\n this.parent.changeView(this.parent.getNavigateView(), e);\n }\n }\n };\n QuickPopups.prototype.documentClick = function (e) {\n var target = e.event.target;\n var classNames = '.' + cls.POPUP_WRAPPER_CLASS + ',.' + cls.HEADER_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS +\n ',.' + cls.WORK_CELLS_CLASS + ',.' + cls.APPOINTMENT_CLASS + ',.e-popup';\n var popupWrap = this.parent.element.querySelector('.' + cls.POPUP_WRAPPER_CLASS);\n if ((popupWrap && popupWrap.childElementCount > 0 && !closest(target, classNames)) || !closest(target, classNames)) {\n this.quickPopupHide();\n this.parent.removeNewEventElement();\n }\n var tar = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n if (tar && tar !== target && this.parent.allowInline) {\n this.parent.inlineModule.documentClick();\n }\n if (closest(target, '.' + cls.APPOINTMENT_CLASS + ',.' + cls.HEADER_CELLS_CLASS)) {\n this.parent.removeNewEventElement();\n }\n if (!closest(target, '.' + cls.MORE_POPUP_WRAPPER_CLASS) && (target.classList &&\n !target.classList.contains(cls.MORE_INDICATOR_CLASS))\n && (!closest(target, '.' + cls.POPUP_OPEN)) && !closest(target, '.' + cls.WORK_CELLS_CLASS)) {\n this.morePopup.hide();\n }\n };\n QuickPopups.prototype.onClosePopup = function (event) {\n if (!isNullOrUndefined(event)) {\n this.dialogEvent = event;\n }\n this.quickPopupHide();\n this.parent.eventBase.focusElement();\n };\n QuickPopups.prototype.addEventListener = function () {\n this.parent.on(event.cellClick, this.cellClick, this);\n this.parent.on(event.eventClick, this.eventClick, this);\n this.parent.on(event.documentClick, this.documentClick, this);\n this.parent.on(event.dataReady, this.updateMoreEventContent, this);\n };\n QuickPopups.prototype.removeEventListener = function () {\n this.parent.off(event.cellClick, this.cellClick);\n this.parent.off(event.eventClick, this.eventClick);\n this.parent.off(event.documentClick, this.documentClick);\n this.parent.off(event.dataReady, this.updateMoreEventContent);\n };\n QuickPopups.prototype.destroyPopupButtons = function (popupName) {\n var popup = popupName === 'quickPopup' ? this.quickPopup : this.morePopup;\n var buttonCollections = [].slice.call(popup.element.querySelectorAll('.e-control.e-btn'));\n for (var _i = 0, buttonCollections_1 = buttonCollections; _i < buttonCollections_1.length; _i++) {\n var button = buttonCollections_1[_i];\n var instance = button.ej2_instances[0];\n if (instance) {\n instance.destroy();\n }\n }\n };\n QuickPopups.prototype.refreshQuickDialog = function () {\n this.destroyQuickDialog();\n this.renderQuickDialog();\n };\n QuickPopups.prototype.refreshQuickPopup = function () {\n this.destroyQuickPopup();\n this.renderQuickPopup();\n };\n QuickPopups.prototype.refreshMorePopup = function () {\n this.destroyMorePopup();\n this.renderMorePopup();\n };\n QuickPopups.prototype.destroyQuickDialog = function () {\n if (this.quickDialog.element) {\n this.quickDialog.destroy();\n remove(this.quickDialog.element);\n this.quickDialog = null;\n }\n };\n QuickPopups.prototype.destroyQuickPopup = function () {\n if (this.quickPopup.element) {\n this.destroyPopupButtons('quickPopup');\n this.quickPopup.destroy();\n remove(this.quickPopup.element);\n this.quickPopup = null;\n }\n };\n QuickPopups.prototype.destroyMorePopup = function () {\n if (this.morePopup.element) {\n this.destroyPopupButtons('morePopup');\n this.morePopup.destroy();\n remove(this.morePopup.element);\n this.morePopup = null;\n }\n };\n QuickPopups.prototype.destroy = function () {\n if (this.quickPopup.element.querySelectorAll('.e-formvalidator').length) {\n this.fieldValidator.destroy();\n }\n this.removeEventListener();\n this.destroyQuickPopup();\n this.destroyMorePopup();\n this.destroyQuickDialog();\n this.parent = null;\n this.l10n = null;\n this.isCrudAction = null;\n this.fieldValidator = null;\n this.isMultipleEventSelect = null;\n };\n return QuickPopups;\n}());\nexport { QuickPopups };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined, append, createElement, addClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\n/**\n * Tooltip for Schedule\n */\nvar EventTooltip = /** @class */ (function () {\n function EventTooltip(parent) {\n this.parent = parent;\n this.tooltipObj = new Tooltip({\n animation: { close: { effect: 'FadeOut' } },\n content: 'No title',\n position: 'BottomRight',\n offsetY: 10,\n mouseTrail: this.parent.isAdaptive ? false : true,\n showTipPointer: false,\n cssClass: this.parent.cssClass + ' ' + cls.EVENT_TOOLTIP_ROOT_CLASS,\n target: this.getTargets(),\n beforeRender: this.onBeforeRender.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n enableRtl: this.parent.enableRtl\n });\n this.tooltipObj.appendTo(this.parent.element);\n }\n EventTooltip.prototype.getTargets = function () {\n var targets = [];\n if (this.parent.activeViewOptions.group.headerTooltipTemplate) {\n targets.push('.' + cls.RESOURCE_CELLS_CLASS);\n }\n if (this.parent.eventSettings.enableTooltip) {\n targets.push('.' + cls.APPOINTMENT_CLASS);\n }\n return targets.join(',');\n };\n EventTooltip.prototype.onBeforeRender = function (args) {\n if (!isNullOrUndefined(args.target.getAttribute('data-tooltip-id'))) {\n return;\n }\n if (args.target.classList.contains(cls.RESOURCE_CELLS_CLASS) && this.parent.activeViewOptions.group.resources.length > 0) {\n var resCollection = void 0;\n if (this.parent.activeView.isTimelineView()) {\n var index = parseInt(args.target.getAttribute('data-group-index'), 10);\n resCollection = this.parent.resourceBase.lastResourceLevel[index];\n }\n else {\n var rowIndex = args.target.parentNode.sectionRowIndex;\n var cellIndex = args.target.cellIndex;\n resCollection = this.parent.activeView.getColumnLevels()[rowIndex][cellIndex];\n }\n var data = {\n resource: resCollection.resource,\n resourceData: resCollection.resourceData\n };\n var contentContainer = createElement('div');\n var templateId = this.parent.element.id + '_headerTooltipTemplate';\n var tooltipTemplate = [].slice.call(this.parent.getHeaderTooltipTemplate()(data, this.parent, 'headerTooltipTemplate', templateId, false));\n append(tooltipTemplate, contentContainer);\n this.setContent(contentContainer);\n this.parent.renderTemplates();\n return;\n }\n var record = this.parent.eventBase.getEventByGuid(args.target.getAttribute('data-guid'));\n if (isNullOrUndefined(record)) {\n return;\n }\n if (!isNullOrUndefined(this.parent.eventSettings.tooltipTemplate)) {\n var contentContainer = createElement('div');\n var templateId = this.parent.element.id + '_tooltipTemplate';\n var tooltipTemplate = [].slice.call(this.parent.getEventTooltipTemplate()(record, this.parent, 'tooltipTemplate', templateId, false));\n append(tooltipTemplate, contentContainer);\n this.setContent(contentContainer);\n }\n else {\n var globalize = this.parent.globalize;\n var fields = this.parent.eventFields;\n var eventStart = new Date('' + record[fields.startTime]);\n var eventEnd = new Date('' + record[fields.endTime]);\n eventEnd = (eventEnd.getHours() === 0 && eventEnd.getMinutes() === 0) ? new Date(eventEnd.setMilliseconds(-1000)) : eventEnd;\n var startDate = util.resetTime(new Date('' + eventStart));\n var endDate = util.resetTime(new Date('' + eventEnd));\n var tooltipSubject = (record[fields.subject] || this.parent.eventSettings.fields.subject.default\n || this.parent.localeObj.getConstant('addTitle'));\n var tooltipLocation = !isNullOrUndefined(record[fields.location]) ? record[fields.location] : '';\n var startMonthDate = '';\n var startMonthYearDate = '';\n var endMonthYearDate = '';\n startMonthDate = globalize.formatDate(eventStart, {\n type: 'date', skeleton: 'MMMd', calendar: this.parent.getCalendarMode()\n });\n startMonthYearDate = globalize.formatDate(eventStart, {\n type: 'date', skeleton: 'medium', calendar: this.parent.getCalendarMode()\n });\n endMonthYearDate = globalize.formatDate(eventEnd, {\n type: 'date', skeleton: 'medium', calendar: this.parent.getCalendarMode()\n });\n startMonthDate = util.capitalizeFirstWord(startMonthDate, 'single');\n startMonthYearDate = util.capitalizeFirstWord(startMonthYearDate, 'single');\n endMonthYearDate = util.capitalizeFirstWord(endMonthYearDate, 'single');\n var skeleton = 'short';\n var startTime = globalize.formatDate(eventStart, {\n type: 'time', skeleton: skeleton, calendar: this.parent.getCalendarMode()\n });\n var endTime = globalize.formatDate(eventEnd, {\n type: 'time', skeleton: skeleton, calendar: this.parent.getCalendarMode()\n });\n var tooltipDetails = void 0;\n if (startDate.getTime() === endDate.getTime()) {\n tooltipDetails =\n globalize.formatDate(eventStart, {\n type: 'date', skeleton: 'long', calendar: this.parent.getCalendarMode()\n });\n tooltipDetails = util.capitalizeFirstWord(tooltipDetails, 'single');\n }\n else {\n tooltipDetails = (startDate.getFullYear() === endDate.getFullYear()) ? (startMonthDate + ' - ' + endMonthYearDate) :\n (startMonthYearDate + ' - ' + endMonthYearDate);\n }\n var tooltipTime = (record[fields.isAllDay]) ? this.parent.localeObj.getConstant('allDay') :\n (startTime + ' - ' + endTime);\n var content = '
    ' + tooltipSubject + '
    ' +\n '
    ' + tooltipLocation + '
    ' +\n '
    ' + tooltipDetails + '
    ' +\n '
    ' + tooltipTime + '
    ';\n this.setContent(content);\n }\n this.parent.renderTemplates();\n };\n EventTooltip.prototype.onBeforeClose = function () {\n this.parent.resetTemplates(['tooltipTemplate', 'headerTooltipTemplate']);\n };\n EventTooltip.prototype.setContent = function (content) {\n this.tooltipObj.setProperties({ content: content }, true);\n };\n EventTooltip.prototype.close = function () {\n this.tooltipObj.close();\n };\n EventTooltip.prototype.destroy = function () {\n this.tooltipObj.destroy();\n addClass([this.parent.element], 'e-control');\n this.tooltipObj = null;\n this.parent = null;\n };\n return EventTooltip;\n}());\nexport { EventTooltip };\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, 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 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 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 if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\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 _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 (!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 (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\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 //EJ2-57588 - for this task, we prevent the ul element cloning ( 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 if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n 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 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 if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\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.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 if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\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 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 if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\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 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.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n this.updateMainList(true, value, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n attributes(this.inputElement, { 'aria-activedescendant': element.id });\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\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 _this.setProperties({ value: [].concat([], removeVal) }, true);\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.invokeCheckboxSelection(element_1, eve, isClearAll);\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 }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n 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 = 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 }\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 (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.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 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 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 }\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, 'mouseover', 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 };\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 (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 element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\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 if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\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 else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\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 }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\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, mainElement) {\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'), mainElement);\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 if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n 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 var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : 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 totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\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, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\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, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\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, remainContent, totalContent) {\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, remainContent, totalContent, 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, 'mouseover', 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 ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : 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 var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\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 if (!beforeSelectArgs.preventSelectEvent) {\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 _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 }, 0);\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n var mainElement = this.mainList ? 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)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\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 }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\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 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(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\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 if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\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 }\n break;\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.presentItemValue = function (ulElement) {\n var valuecheck = [];\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', this.value[i]);\n if (!checkEle) {\n valuecheck.push(this.value[i]);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n _this.addItem(e.result, list.length);\n _this.updateActionList(ulElement, list, event);\n });\n };\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 var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\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 }\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 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 (!_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 this.mainListCollection = 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 Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", 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, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, NotifyPropertyChanges, Event, Browser } from '@syncfusion/ej2-base';\nimport { getDefaultDateObject, getValue, cldrData, L10n, isNullOrUndefined, removeClass, addClass } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nimport { Button, RadioButton } from '@syncfusion/ej2-buttons';\nimport { EventHandler, classList } from '@syncfusion/ej2-base';\nimport { extractObjectFromRule, generate, generateSummary, getRecurrenceStringFromDate, getCalendarUtil } from './date-generator';\nimport { capitalizeFirstWord } from '../schedule/base/util';\nvar HEADER = 'e-editor';\nvar INPUTWARAPPER = 'e-input-wrapper';\nvar INPUTWARAPPERSIDE = 'e-input-wrapper-side';\nvar REPEATELEMENT = 'e-repeat-element';\nvar REPEATINTERVAL = 'e-repeat-interval';\nvar INTERVALCLASS = 'e-interval';\nvar DAYWRAPPER = 'e-days';\nvar WEEKWRAPPER = 'e-non-week';\nvar WEEKPOSITION = 'e-week-position';\nvar DAYPOSITION = 'e-day-position';\nvar YEAREXPANDERWRAPPER = 'e-year-expander';\nvar YEAREXPANDERELEMENT = 'e-year-expander-element';\nvar MONETHEXPANDERWRAPPER = 'e-month-expander';\nvar MONETHEXPANDWRAPPER = 'e-month-expand-wrapper';\nvar MONTHEXPANDERELEMENT = 'e-month-expander-element';\nvar MONTHEXPANDERCHECKBOXWRAPPER = 'e-month-expander-checkbox-wrapper';\nvar FORMLEFT = 'e-form-left';\nvar FORMRIGHT = 'e-form-right';\nvar MONTHDAYWRAPPER = 'e-month-day';\nvar MONTHEXPANNDERELEM = 'e-month-expander-wrapper';\nvar MONTHPOS = 'e-month-pos';\nvar MONTHWEEK = 'e-month-week';\nvar ENDON = 'e-end-on';\nvar MONTHEXPANDERLABEL = 'e-month-expander-label';\nvar WEEKEXPANDERLABEL = 'e-week-expander-label';\nvar ENDONLABEL = 'e-end-on-label';\nvar ENDONLEFT = 'e-end-on-left';\nvar MONTHDAYELEMENT = 'e-monthday-element';\nvar ENDONELEMENT = 'e-end-on-element';\nvar ENDONDATE = 'e-end-on-date';\nvar UNTILDATE = 'e-until-date';\nvar ENDONCOUNTWRAPPER = 'e-end-on-count';\nvar ENDONCOUNT = 'e-recurrence-count';\nvar HIDEWRAPPER = 'e-hide-recurrence-element';\nvar RTLCLASS = 'e-rtl';\nvar PRIMARY = 'e-primary';\nvar ACTIVE = 'e-active';\nvar RECURRENCETABLE = 'e-recurrence-table';\nvar REPEATCONTENT = 'e-repeat-content';\nvar REPEATCONTENTWRAPPER = 'e-repeat-content-wrapper';\nvar NONE = 'none';\nvar DAILY = 'daily';\nvar WEEKLY = 'weekly';\nvar MONTHLY = 'monthly';\nvar YEARLY = 'yearly';\nvar NEVER = 'never';\nvar UNTIL = 'until';\nvar COUNT = 'count';\nvar TEXTFIELD = 'text';\nvar VALUEFIELD = 'value';\nvar LAST = 'last';\nvar REPEAT = 'repeat';\nvar REPEATEVERY = 'repeatEvery';\nvar ON = 'on';\nvar END = 'end';\nvar RADIOLABEL = 'onDay';\nvar RULEUNTIL = 'UNTIL';\nvar RULEBYDAY = 'BYDAY';\nvar RULEBYMONTHDAY = 'BYMONTHDAY';\nvar RULEBYMONTH = 'BYMONTH';\nvar RULEINTERVAL = 'INTERVAL';\nvar RULECOUNT = 'COUNT';\nvar RULESETPOS = 'BYSETPOS';\nvar RULEFREQ = 'FREQ';\nvar RULEDAILY = 'DAILY';\nvar RULEWEEKLY = 'WEEKLY';\nvar RULEMONTHLY = 'MONTHLY';\nvar RULEYEARLY = 'YEARLY';\nvar RULESUNDAY = 'SU';\nvar RULEMONDAY = 'MO';\nvar RULETUESDAY = 'TU';\nvar RULEWEDNESDAY = 'WE';\nvar RULETHURSDAY = 'TH';\nvar RULEFRIDAY = 'FR';\nvar RULESATURDAY = 'SA';\nvar KEYSUNDAY = 'sun';\nvar KEYMONDAY = 'mon';\nvar KEYTUESDAY = 'tue';\nvar KEYWEDNESDAY = 'wed';\nvar KEYTHURSDAY = 'thu';\nvar KEYFRIDAY = 'fri';\nvar KEYSATURDAY = 'sat';\nvar EQUAL = '=';\nvar SEMICOLON = ';';\nvar COMMA = ',';\nvar FIRST = 'first';\nvar SECOND = 'second';\nvar THIRD = 'third';\nvar FOURTH = 'fourth';\nvar contentType = {\n none: '',\n daily: 'days',\n weekly: 'weeks',\n monthly: 'months',\n yearly: 'years'\n};\nvar valueData = {\n 'sun': RULESUNDAY,\n 'mon': RULEMONDAY,\n 'tue': RULETUESDAY,\n 'wed': RULEWEDNESDAY,\n 'thu': RULETHURSDAY,\n 'fri': RULEFRIDAY,\n 'sat': RULESATURDAY\n};\nvar neverClassList = [DAYWRAPPER, WEEKWRAPPER, ENDON, INTERVALCLASS, YEAREXPANDERWRAPPER, MONETHEXPANDERWRAPPER];\nvar weekClassList = [WEEKWRAPPER];\nvar monthClassList = [DAYWRAPPER, YEAREXPANDERWRAPPER];\nvar yearClassList = [DAYWRAPPER];\nvar dailyClassList = [DAYWRAPPER, WEEKWRAPPER, YEAREXPANDERWRAPPER, MONETHEXPANDERWRAPPER];\nvar noEndClassList = [ENDONDATE, ENDONCOUNTWRAPPER];\nvar endOnCountClassList = [ENDONDATE];\nvar endOnDateClassList = [ENDONCOUNTWRAPPER];\n/**\n * Represents the RecurrenceEditor component.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar RecurrenceEditor = /** @class */ (function (_super) {\n __extends(RecurrenceEditor, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {RecurrenceEditorModel} options Accepts the recurrence editor model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function RecurrenceEditor(options, element) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.defaultLocale = {\n none: 'None',\n daily: 'Daily',\n weekly: 'Weekly',\n monthly: 'Monthly',\n month: 'Month',\n yearly: 'Yearly',\n never: 'Never',\n until: 'Until',\n count: 'Count',\n first: 'First',\n second: 'Second',\n third: 'Third',\n fourth: 'Fourth',\n last: 'Last',\n repeat: 'Repeat',\n repeatEvery: 'Repeat every',\n on: 'Repeat On',\n end: 'End',\n onDay: 'Day',\n days: 'Day(s)',\n weeks: 'Week(s)',\n months: 'Month(s)',\n years: 'Year(s)',\n every: 'every',\n summaryTimes: 'time(s)',\n summaryOn: 'on',\n summaryUntil: 'until',\n summaryRepeat: 'Repeats',\n summaryDay: 'day(s)',\n summaryWeek: 'week(s)',\n summaryMonth: 'month(s)',\n summaryYear: 'year(s)',\n monthWeek: 'Month Week',\n monthPosition: 'Month Position',\n monthExpander: 'Month Expander',\n yearExpander: 'Year Expander',\n repeatInterval: 'Repeat Interval'\n };\n _this.renderStatus = false;\n _this.dayButtons = [];\n _this.monthButtons = [];\n return _this;\n }\n RecurrenceEditor.prototype.startState = function (freq, endOn, startDate) {\n this.showFormElement();\n this.updateForm(freq);\n this.freshOnEndForm();\n this.updateEndOnForm(endOn);\n this.selectMonthDay(startDate);\n this.updateUntilDate(startDate);\n this.onMonthDay.setProperties({ checked: true });\n };\n RecurrenceEditor.prototype.preRender = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale);\n this.calendarUtil = getCalendarUtil(this.calendarMode);\n };\n RecurrenceEditor.prototype.applyCustomClass = function (cssClass) {\n if (cssClass) {\n addClass([this.element], cssClass.split(' '));\n }\n };\n RecurrenceEditor.prototype.initialize = function () {\n addClass([this.element], 'e-' + this.getModuleName());\n this.renderComponent();\n if (!isNullOrUndefined(this.value) && this.value !== '') {\n this.setRecurrenceRule(this.value);\n }\n else {\n if (!isNullOrUndefined(this.repeatType.value)) {\n this.startState(this.repeatType.value.toString().toUpperCase(), NEVER, this.startDate);\n this.updateForm(this.repeatType.value.toString());\n }\n if (this.selectedType > 0) {\n this.setProperties({ value: this.getRecurrenceRule() }, false);\n }\n }\n this.applyCustomClass(this.cssClass);\n };\n RecurrenceEditor.prototype.triggerChangeEvent = function () {\n var _this = this;\n if (this.renderStatus) {\n var value = this.getRecurrenceRule();\n this.trigger('change', { value: value }, function (args) { return _this.setProperties({ value: args.value }, false); });\n }\n };\n RecurrenceEditor.prototype.resetDayButton = function () {\n var elements = [].slice.call(this.element.querySelectorAll('.' + DAYWRAPPER + ' button'));\n elements.forEach(function (element) { return removeClass([element], [ACTIVE, PRIMARY]); });\n };\n RecurrenceEditor.prototype.daySelection = function (dayIndex) {\n this.resetDayButton();\n var days = [0, 1, 2, 3, 4, 5, 6];\n this.rotateArray(days, this.firstDayOfWeek);\n var element = this.element.querySelector('.' + DAYWRAPPER + ' button[data-index=\"' + days.indexOf(dayIndex) + '\"]');\n if (element) {\n addClass([element], [ACTIVE, PRIMARY]);\n }\n };\n RecurrenceEditor.prototype.rtlClass = function (status) {\n if (status) {\n addClass([this.element], RTLCLASS);\n }\n else {\n removeClass([this.element], RTLCLASS);\n }\n };\n RecurrenceEditor.prototype.updateUntilDate = function (date) {\n var tempDate = new Date(date.getTime());\n tempDate.setDate(tempDate.getDate() + 60);\n this.untilDateObj.setProperties({ value: tempDate });\n };\n RecurrenceEditor.prototype.selectMonthDay = function (date) {\n var weekday = [KEYSUNDAY, KEYMONDAY, KEYTUESDAY, KEYWEDNESDAY, KEYTHURSDAY, KEYFRIDAY, KEYSATURDAY];\n this.monthDate.setProperties({ value: this.calendarUtil.getDate(date) });\n this.monthWeekDays.setProperties({ value: valueData[weekday[date.getDay()]] });\n this.monthValue.setProperties({ value: '' + this.calendarUtil.getMonth(date) });\n this.monthWeekPos.setProperties({ value: this.getDayPosition(date) });\n this.daySelection(date.getDay());\n };\n RecurrenceEditor.prototype.updateForm = function (state) {\n var _this = this;\n this.repeatType.setProperties({ value: state });\n var end = this.element.querySelector('.' + ENDON);\n if (state === DAILY) {\n classList(end, [FORMLEFT], [FORMRIGHT]);\n }\n else {\n classList(end, [FORMRIGHT], [FORMLEFT]);\n }\n switch (state) {\n case NONE:\n neverClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n case WEEKLY:\n weekClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n case MONTHLY:\n monthClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n case YEARLY:\n yearClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n case DAILY:\n dailyClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n }\n };\n RecurrenceEditor.prototype.updateEndOnForm = function (state) {\n var _this = this;\n this.endType.setProperties({ value: state });\n switch (state) {\n case NEVER:\n noEndClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n case UNTIL:\n endOnDateClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n case COUNT:\n endOnCountClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n }\n };\n RecurrenceEditor.prototype.freshOnEndForm = function () {\n var _this = this;\n noEndClassList.forEach(function (className) {\n var element = _this.element.querySelector('.' + className);\n if (element) {\n removeClass([element], HIDEWRAPPER);\n }\n });\n };\n RecurrenceEditor.prototype.showFormElement = function () {\n var _this = this;\n neverClassList.forEach(function (className) {\n var hideElement = _this.element.querySelector('.' + className);\n if (hideElement) {\n removeClass([hideElement], HIDEWRAPPER);\n }\n });\n };\n RecurrenceEditor.prototype.renderDropdowns = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n this.repeatType = new DropDownList({\n //set the data to dataSource property\n dataSource: this.getRepeatData(),\n floatLabelType: 'Always',\n enableRtl: this.enableRtl,\n index: this.selectedType,\n fields: {\n text: TEXTFIELD,\n value: VALUEFIELD\n },\n placeholder: this.localeObj.getConstant(REPEAT),\n htmlAttributes: { 'title': this.localeObj.getConstant(REPEAT) },\n change: function (args) {\n self.setProperties({ selectedType: _this.frequencies.indexOf(args.value) }, false);\n self.element.querySelector('.' + REPEATCONTENT).innerHTML =\n self.localeObj.getConstant(contentType[args.value]);\n self.showFormElement();\n self.updateForm(args.value);\n self.resetFormValues();\n self.triggerChangeEvent();\n }\n });\n // set placeholder to DropDownList input element\n this.repeatType.appendTo(this.element.querySelector('.' + REPEATELEMENT));\n this.endType = new DropDownList({\n dataSource: this.getEndData(),\n popupWidth: this.getPopupWidth(),\n enableRtl: this.enableRtl,\n index: 1,\n fields: {\n text: TEXTFIELD,\n value: VALUEFIELD\n },\n change: function (args) {\n self.freshOnEndForm();\n self.updateEndOnForm(args.value);\n self.resetFormValues();\n self.triggerChangeEvent();\n }\n });\n this.endType.appendTo(this.element.querySelector('.' + ENDONELEMENT));\n var renderDropDownList = function (dropDownData) {\n return new DropDownList({\n dataSource: dropDownData,\n popupWidth: _this.getPopupWidth(),\n enableRtl: _this.enableRtl,\n fields: {\n text: TEXTFIELD,\n value: VALUEFIELD\n },\n index: 1,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n change: function (args) {\n self.onWeekDay.setProperties({ checked: true });\n self.resetFormValues();\n self.triggerChangeEvent();\n }\n });\n };\n this.monthWeekPos = renderDropDownList(this.getMonthPosData());\n this.monthWeekPos.appendTo(this.element.querySelector('.' + MONTHPOS));\n this.monthWeekDays = renderDropDownList(this.getDayData('wide'));\n this.monthWeekDays.appendTo(this.element.querySelector('.' + MONTHWEEK));\n this.monthValue = new DropDownList({\n dataSource: this.getMonthData(),\n fields: {\n text: TEXTFIELD,\n value: VALUEFIELD\n },\n enableRtl: this.enableRtl,\n index: 7,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n change: function (args) {\n self.resetFormValues();\n self.triggerChangeEvent();\n }\n });\n this.monthValue.appendTo(this.element.querySelector('.' + YEAREXPANDERELEMENT));\n };\n RecurrenceEditor.prototype.setDefaultValue = function () {\n var formelement = [].slice.call(this.element.querySelectorAll('.e-control .e-numerictextbox'));\n for (var _i = 0, formelement_1 = formelement; _i < formelement_1.length; _i++) {\n var element = formelement_1[_i];\n var instance = element.ej2_instances[0];\n if (instance.element.classList.contains(REPEATINTERVAL)) {\n instance.value = 1;\n instance.dataBind();\n }\n else if (instance.element.classList.contains(ENDONCOUNT)) {\n instance.value = 10;\n instance.dataBind();\n }\n }\n };\n RecurrenceEditor.prototype.resetFormValues = function () {\n var recurreneElement = [].slice.call(this.element.querySelectorAll('.e-control [type=\"text\"]'));\n for (var _i = 0, recurreneElement_1 = recurreneElement; _i < recurreneElement_1.length; _i++) {\n var element = recurreneElement_1[_i];\n var instance = void 0;\n if (element.classList.contains('e-datepicker')) {\n instance = element.ej2_instances[0];\n if (instance.value) {\n // eslint-disable-next-line no-self-assign\n instance.value = instance.value;\n instance.dataBind();\n }\n else {\n this.updateUntilDate(this.startDate);\n }\n }\n else if (element.classList.contains('e-dropdownlist')) {\n instance = element.ej2_instances[0];\n instance.index = instance.index || 0;\n instance.dataBind();\n }\n else if (element.classList.contains('e-numerictextbox')) {\n instance = element.ej2_instances[0];\n var value = void 0;\n if (instance.element.classList.contains(REPEATINTERVAL)) {\n value = 1;\n }\n else if (instance.element.classList.contains(ENDONCOUNT)) {\n value = 10;\n }\n else {\n value = this.startDate.getDate();\n }\n instance.value = instance.value || value;\n instance.dataBind();\n }\n }\n };\n RecurrenceEditor.prototype.getPopupWidth = function () {\n return Browser.isDevice ? '100%' : 'auto';\n };\n RecurrenceEditor.prototype.renderDatePickers = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n this.untilDateObj = new DatePicker({\n firstDayOfWeek: this.firstDayOfWeek,\n enableRtl: this.enableRtl,\n locale: this.locale,\n min: this.minDate,\n max: this.maxDate,\n format: (isNullOrUndefined(this.dateFormat) ? this.getFormat('dateFormats') : this.dateFormat),\n change: function (args) {\n if (args.value) {\n self.triggerChangeEvent();\n }\n }\n });\n this.untilDateObj.appendTo(this.element.querySelector('.' + UNTILDATE));\n };\n RecurrenceEditor.prototype.getFormat = function (formatType) {\n var format;\n if (this.locale === 'en' || this.locale === 'en-US') {\n format = getValue(formatType + '.short', getDefaultDateObject(this.getCalendarMode()));\n }\n else {\n format = getValue('main.' + '' + this.locale + '.dates.calendars.' + this.getCalendarMode() + '.' + formatType + '.short', cldrData);\n }\n return format;\n };\n RecurrenceEditor.prototype.dayButtonRender = function () {\n var _this = this;\n var btns = [].slice.call(this.element.querySelectorAll('.' + DAYWRAPPER + ' button'));\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n for (var _i = 0, btns_1 = btns; _i < btns_1.length; _i++) {\n var btn = btns_1[_i];\n var button = new Button({ isToggle: true, enableRtl: this.enableRtl }, btn);\n this.dayButtons.push(button);\n EventHandler.add(btn, 'click', function (args) {\n var btns = [].slice.call(_this.element.querySelectorAll('.' + DAYWRAPPER + ' button.' + PRIMARY));\n var element = args.target;\n if (!element.classList.contains(PRIMARY)) {\n addClass([element], PRIMARY);\n self.triggerChangeEvent();\n }\n else if (btns.length > 1) {\n removeClass([element], PRIMARY);\n self.triggerChangeEvent();\n }\n });\n }\n };\n RecurrenceEditor.prototype.radioButtonRender = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n this.onMonthDay = new RadioButton({\n label: this.localeObj.getConstant(RADIOLABEL),\n enableRtl: this.enableRtl,\n name: 'monthType',\n value: 'day',\n change: function () {\n self.resetFormValues();\n self.triggerChangeEvent();\n }\n });\n this.onMonthDay.appendTo(this.element.querySelector('.' + MONTHEXPANDERELEMENT));\n this.monthButtons.push(this.onMonthDay);\n this.onWeekDay = new RadioButton({\n label: this.localeObj.getConstant('monthExpander'),\n cssClass: 'e-month-type',\n name: 'monthType',\n enableRtl: this.enableRtl,\n value: 'daypos',\n change: function () {\n self.resetFormValues();\n self.triggerChangeEvent();\n }\n });\n this.onWeekDay.appendTo(this.element.querySelector('.' + MONTHEXPANNDERELEM));\n this.monthButtons.push(this.onWeekDay);\n };\n RecurrenceEditor.prototype.numericTextboxRender = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n this.recurrenceCount = new NumericTextBox({\n value: 10,\n format: '#',\n enableRtl: this.enableRtl,\n min: 1,\n max: 999,\n change: function () {\n self.triggerChangeEvent();\n }\n });\n this.recurrenceCount.appendTo(this.element.querySelector('.' + ENDONCOUNT));\n this.monthDate = new NumericTextBox({\n value: 1,\n format: '#',\n enableRtl: this.enableRtl,\n min: 1,\n max: 31,\n change: function () {\n self.onMonthDay.setProperties({ checked: true });\n self.triggerChangeEvent();\n }\n });\n this.monthDate.appendTo(this.element.querySelector('.' + MONTHDAYWRAPPER));\n this.repeatInterval = new NumericTextBox({\n value: 1,\n format: '#',\n min: 1,\n max: 999,\n enableRtl: this.enableRtl,\n floatLabelType: 'Always',\n placeholder: this.localeObj.getConstant(REPEATEVERY),\n change: function () {\n self.triggerChangeEvent();\n }\n });\n this.repeatInterval.appendTo(this.element.querySelector('.' + REPEATINTERVAL));\n };\n RecurrenceEditor.prototype.renderComponent = function () {\n this.setTemplate();\n this.renderDropdowns();\n this.renderDatePickers();\n this.dayButtonRender();\n this.radioButtonRender();\n this.numericTextboxRender();\n };\n RecurrenceEditor.prototype.rotateArray = function (data, count) {\n var temp;\n for (var index = 0; index < count; index++) {\n temp = data.shift();\n data.push(temp);\n }\n };\n RecurrenceEditor.prototype.getEndData = function () {\n var endData = [NEVER, UNTIL, COUNT];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var dataSource = [];\n endData.forEach(function (data) {\n dataSource.push({ text: self.localeObj.getConstant(data), value: data });\n });\n return dataSource;\n };\n RecurrenceEditor.prototype.getDayPosition = function (date) {\n var temp = new Date(date.getTime());\n var endDate = new Date(date.getTime());\n var day = date.getDay();\n var positionCollection = [];\n temp = this.calendarUtil.getMonthStartDate(temp);\n endDate = this.calendarUtil.getMonthEndDate(endDate);\n while (temp < endDate) {\n if (temp.getDay() === day) {\n positionCollection.push(temp.getTime());\n }\n temp.setDate(temp.getDate() + 1);\n }\n if (positionCollection.indexOf(date.getTime()) === positionCollection.length - 1) {\n return -1;\n }\n return (positionCollection.indexOf(date.getTime()) + 1);\n };\n RecurrenceEditor.prototype.getRepeatData = function () {\n var data = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n this.frequencies.forEach(function (element) {\n var textValue = (element === NONE) ? NEVER : element;\n data.push({ text: self.localeObj.getConstant(textValue), value: element });\n });\n return data;\n };\n RecurrenceEditor.prototype.getMonthPosData = function () {\n var monthpos = [FIRST, SECOND, THIRD, FOURTH, LAST];\n var monthposValue = {\n first: 1,\n second: 2,\n third: 3,\n fourth: 4,\n last: -1\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var dataSource = [];\n monthpos.forEach(function (data) {\n dataSource.push({ text: self.localeObj.getConstant(data), value: monthposValue[data] });\n });\n return dataSource;\n };\n RecurrenceEditor.prototype.getDayData = function (format) {\n var weekday = [KEYSUNDAY, KEYMONDAY, KEYTUESDAY, KEYWEDNESDAY, KEYTHURSDAY, KEYFRIDAY, KEYSATURDAY];\n var dayData = [];\n var cldrObj;\n this.rotateArray(weekday, this.firstDayOfWeek);\n if (this.locale === 'en' || this.locale === 'en-US') {\n var nameSpaceString = 'days.stand-alone.';\n cldrObj = (getValue(nameSpaceString + format, getDefaultDateObject(this.getCalendarMode())));\n }\n else {\n var nameSpaceString = 'main.' + '' + this.locale + '.dates.calendars.' + this.getCalendarMode() + '.days.stand-alone.' + format;\n cldrObj = (getValue(nameSpaceString, cldrData));\n }\n for (var _i = 0, weekday_1 = weekday; _i < weekday_1.length; _i++) {\n var obj = weekday_1[_i];\n var day = getValue(obj, cldrObj);\n dayData.push({ text: format === 'narrow' ? day : capitalizeFirstWord(day, 'single'), value: valueData[obj] });\n }\n return dayData;\n };\n RecurrenceEditor.prototype.getMonthData = function () {\n var monthData = [];\n var cldrObj;\n if (this.locale === 'en' || this.locale === 'en-US') {\n var nameSpaceString = 'months.stand-alone.wide';\n cldrObj = (getValue(nameSpaceString, getDefaultDateObject(this.getCalendarMode())));\n }\n else {\n var nameSpaceString = 'main.' + '' + this.locale + '.dates.calendars.' + this.getCalendarMode() + '.months.stand-alone.wide';\n cldrObj = (getValue(nameSpaceString, cldrData));\n }\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n monthData.push({\n text: capitalizeFirstWord(getValue(obj, cldrObj), 'single'),\n value: obj\n });\n }\n return monthData;\n };\n RecurrenceEditor.prototype.setTemplate = function () {\n var dayData = this.getDayData('narrow');\n var fullDay = this.getDayData('wide');\n this.element.innerHTML = '
    ' +\n '
    ' +\n '' +\n '
    ' +\n '' +\n '' +\n '
    ' +\n '
    ' + this.localeObj.getConstant(ON) + '
    ' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
    ' +\n '
    ' +\n '
    ' + this.localeObj.getConstant(ON) + '
    ' +\n '
    ' +\n '' +\n '
    ' +\n '
    ' +\n '' +\n '' +\n '' +\n '' +\n '
    ' +\n '
    ' +\n '' +\n '
    ' +\n '' +\n '
    ' +\n '
    ' +\n '' +\n '
    ' +\n '' +\n '
    ' +\n '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' + this.localeObj.getConstant(END) + '
    ' +\n '
    ' +\n '' +\n '
    ' +\n '
    ' +\n '' +\n '
    ' +\n '
    ' +\n '' +\n '
    ' +\n '
    ';\n };\n RecurrenceEditor.prototype.getSelectedDaysData = function () {\n var ruleData = RULEBYDAY + EQUAL;\n var elements = [].slice.call(this.element.querySelectorAll('.' + DAYWRAPPER + ' button.' + PRIMARY));\n var weekday = [RULESUNDAY, RULEMONDAY, RULETUESDAY, RULEWEDNESDAY, RULETHURSDAY, RULEFRIDAY, RULESATURDAY];\n this.rotateArray(weekday, this.firstDayOfWeek);\n for (var index = 0; index < elements.length; index++) {\n ruleData += weekday[parseInt(elements[index].getAttribute('data-index'), 10)] + (index === (elements.length - 1) ? '' : COMMA);\n }\n return ruleData + SEMICOLON;\n };\n RecurrenceEditor.prototype.getSelectedMonthData = function () {\n var ruleData;\n if (this.onWeekDay.checked) {\n ruleData = RULEBYDAY + EQUAL + this.monthWeekDays.value + SEMICOLON\n + RULESETPOS + EQUAL + this.monthWeekPos.value + SEMICOLON;\n }\n else {\n ruleData = RULEBYMONTHDAY + EQUAL + this.monthDate.value + SEMICOLON;\n }\n return ruleData;\n };\n RecurrenceEditor.prototype.getIntervalData = function () {\n return RULEINTERVAL + EQUAL + this.repeatInterval.value + SEMICOLON;\n };\n RecurrenceEditor.prototype.getEndOnCount = function () {\n return RULECOUNT + EQUAL + this.recurrenceCount.value + SEMICOLON;\n };\n RecurrenceEditor.prototype.getYearMonthRuleData = function () {\n return RULEBYMONTH + EQUAL + this.monthValue.value + SEMICOLON;\n };\n RecurrenceEditor.prototype.updateWeekButton = function (keys) {\n var weekday = [RULESUNDAY, RULEMONDAY, RULETUESDAY, RULEWEDNESDAY, RULETHURSDAY, RULEFRIDAY, RULESATURDAY];\n this.rotateArray(weekday, this.firstDayOfWeek);\n for (var _i = 0, _a = this.dayButtons; _i < _a.length; _i++) {\n var obj = _a[_i];\n var index = parseInt(obj.element.getAttribute('data-index'), 10);\n if (keys.indexOf(weekday[index]) !== -1) {\n obj.setProperties({ isPrimary: true });\n }\n else {\n obj.setProperties({ isPrimary: false });\n }\n }\n };\n RecurrenceEditor.prototype.updateMonthUI = function () {\n if (this.ruleObject.monthDay.length) {\n this.monthDate.setProperties({ value: this.ruleObject.monthDay[0] });\n this.onMonthDay.setProperties({ checked: true });\n }\n else {\n this.onWeekDay.setProperties({ checked: true });\n this.monthWeekPos.setProperties({ value: this.ruleObject.setPosition });\n for (var _i = 0, _a = Object.keys(valueData); _i < _a.length; _i++) {\n var key = _a[_i];\n if (valueData[key] === this.ruleObject.day[0]) {\n this.monthWeekDays.setProperties({ value: this.ruleObject.day[0] });\n break;\n }\n }\n }\n };\n RecurrenceEditor.prototype.updateUI = function (repeat, state) {\n this.repeatInterval.setProperties({ value: this.ruleObject.interval });\n switch (state) {\n case UNTIL:\n this.untilDateObj.setProperties({ value: this.ruleObject.until });\n break;\n case COUNT:\n this.recurrenceCount.setProperties({ value: this.ruleObject.count });\n break;\n }\n switch (repeat) {\n case WEEKLY:\n this.updateWeekButton(this.ruleObject.day);\n break;\n case YEARLY:\n this.monthValue.setProperties({ index: (this.ruleObject.month[0] - 1) });\n this.updateMonthUI();\n break;\n case MONTHLY:\n this.updateMonthUI();\n break;\n }\n };\n RecurrenceEditor.prototype.getUntilData = function () {\n if (!this.untilDateObj.value) {\n return '';\n }\n var tempStr = getRecurrenceStringFromDate(this.untilDateObj.value);\n return RULEUNTIL + EQUAL + tempStr + SEMICOLON;\n };\n RecurrenceEditor.prototype.destroyComponents = function () {\n if (!this.recurrenceCount.isDestroyed) {\n this.recurrenceCount.destroy();\n }\n if (!this.monthDate.isDestroyed) {\n this.monthDate.destroy();\n }\n if (!this.repeatInterval.isDestroyed) {\n this.repeatInterval.destroy();\n }\n if (!this.untilDateObj.isDestroyed) {\n this.untilDateObj.destroy();\n }\n if (!this.repeatType.isDestroyed) {\n this.repeatType.destroy();\n }\n if (!this.endType.isDestroyed) {\n this.endType.destroy();\n }\n if (!this.monthWeekPos.isDestroyed) {\n this.monthWeekPos.destroy();\n }\n if (!this.monthWeekDays.isDestroyed) {\n this.monthWeekDays.destroy();\n }\n if (!this.monthValue.isDestroyed) {\n this.monthValue.destroy();\n }\n this.dayButtons.forEach(function (element) {\n if (!element.isDestroyed) {\n element.destroy();\n }\n });\n this.dayButtons = [];\n this.monthButtons.forEach(function (element) {\n if (!element.isDestroyed) {\n element.destroy();\n }\n });\n this.monthButtons = [];\n };\n RecurrenceEditor.prototype.resetFields = function () {\n this.startState(NONE, NEVER, this.startDate);\n this.setDefaultValue();\n };\n RecurrenceEditor.prototype.updateRuleUntilDate = function (startDate) {\n if (this.untilDateObj.value && startDate) {\n var untilDate = this.untilDateObj.value;\n var newUntilDate = new Date(untilDate.getFullYear(), untilDate.getMonth(), untilDate.getDate(), startDate.getHours(), startDate.getMinutes(), startDate.getMilliseconds());\n this.untilDateObj.setProperties({ value: newUntilDate });\n }\n };\n RecurrenceEditor.prototype.getCalendarMode = function () {\n return this.calendarMode.toLowerCase();\n };\n RecurrenceEditor.prototype.getRuleSummary = function (rule) {\n if (rule === void 0) { rule = this.getRecurrenceRule(); }\n return generateSummary(rule, this.localeObj, this.locale, this.calendarMode);\n };\n RecurrenceEditor.prototype.getRecurrenceDates = function (startDate, rule, excludeDate, maximumCount, viewDate) {\n viewDate = isNullOrUndefined(viewDate) ? this.startDate : viewDate;\n return generate(startDate, rule, excludeDate, this.firstDayOfWeek, maximumCount, viewDate, this.calendarMode);\n };\n RecurrenceEditor.prototype.getRecurrenceRule = function () {\n var ruleData = RULEFREQ + EQUAL;\n switch (this.repeatType.value) {\n case DAILY:\n ruleData += RULEDAILY + SEMICOLON;\n break;\n case WEEKLY:\n ruleData += RULEWEEKLY + SEMICOLON + this.getSelectedDaysData();\n break;\n case MONTHLY:\n ruleData += RULEMONTHLY + SEMICOLON + this.getSelectedMonthData();\n break;\n case YEARLY:\n ruleData += RULEYEARLY + SEMICOLON + this.getSelectedMonthData() + this.getYearMonthRuleData();\n break;\n case NONE:\n return '';\n }\n ruleData += this.getIntervalData();\n switch (this.endType.value) {\n case UNTIL:\n ruleData += this.getUntilData();\n break;\n case COUNT:\n ruleData += this.getEndOnCount();\n break;\n }\n return ruleData;\n };\n RecurrenceEditor.prototype.setRecurrenceRule = function (rule, startDate) {\n if (startDate === void 0) { startDate = this.startDate; }\n if (!rule) {\n this.repeatType.setProperties({ value: NONE });\n return;\n }\n this.renderStatus = false;\n this.ruleObject = extractObjectFromRule(rule);\n var endon = this.ruleObject.count ? COUNT : (this.ruleObject.until ? UNTIL : NEVER);\n switch (this.ruleObject.freq) {\n case RULEDAILY:\n this.startState(DAILY, endon, startDate);\n this.updateUI(DAILY, endon);\n break;\n case RULEWEEKLY:\n this.startState(WEEKLY, endon, startDate);\n this.updateUI(WEEKLY, endon);\n break;\n case RULEMONTHLY:\n this.startState(MONTHLY, endon, startDate);\n this.updateUI(MONTHLY, endon);\n break;\n case RULEYEARLY:\n this.startState(YEARLY, endon, startDate);\n this.updateUI(YEARLY, endon);\n break;\n }\n this.renderStatus = true;\n this.triggerChangeEvent();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RecurrenceEditor.prototype.destroy = function () {\n this.destroyComponents();\n _super.prototype.destroy.call(this);\n var removeClasses = ['e-' + this.getModuleName()];\n if (this.cssClass) {\n removeClasses = removeClasses.concat(this.cssClass.split(' '));\n }\n removeClass([this.element], removeClasses);\n while (this.element.firstElementChild) {\n this.element.removeChild(this.element.firstElementChild);\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} Returns the module name\n * @private\n */\n RecurrenceEditor.prototype.getModuleName = function () {\n return 'recurrenceeditor';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted state\n */\n RecurrenceEditor.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n RecurrenceEditor.prototype.render = function () {\n this.initialize();\n this.rtlClass(this.enableRtl);\n this.renderStatus = true;\n this.renderComplete();\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @param {RecurrenceEditorModel} newProp Accepts the changed properties new values\n * @param {RecurrenceEditorModel} oldProp Accepts the changed properties old values\n * @returns {void}\n * @private\n */\n RecurrenceEditor.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 'startDate':\n this.selectMonthDay(newProp.startDate);\n this.updateUntilDate(newProp.startDate);\n this.endType.setProperties({ index: 0 });\n break;\n case 'enableRtl':\n this.rtlClass(newProp.enableRtl);\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 'selectedType':\n this.repeatType.setProperties({ index: this.selectedType });\n break;\n case 'minDate':\n this.untilDateObj.setProperties({ minDate: this.minDate });\n break;\n case 'maxDate':\n this.untilDateObj.setProperties({ maxDate: this.maxDate });\n break;\n case 'value':\n if (this.getRecurrenceRule() !== this.value) {\n this.setRecurrenceRule(this.value);\n }\n break;\n case 'calendarMode':\n this.calendarMode = newProp.calendarMode;\n this.calendarUtil = getCalendarUtil(newProp.calendarMode);\n break;\n case 'locale':\n case 'frequencies':\n case 'firstDayOfWeek':\n this.refresh();\n break;\n case 'dateFormat':\n this.untilDateObj.setProperties({ format: newProp.dateFormat });\n break;\n }\n }\n };\n __decorate([\n Property(['none', 'daily', 'weekly', 'monthly', 'yearly'])\n ], RecurrenceEditor.prototype, \"frequencies\", void 0);\n __decorate([\n Property(0)\n ], RecurrenceEditor.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property(new Date())\n ], RecurrenceEditor.prototype, \"startDate\", void 0);\n __decorate([\n Property()\n ], RecurrenceEditor.prototype, \"dateFormat\", void 0);\n __decorate([\n Property('Gregorian')\n ], RecurrenceEditor.prototype, \"calendarMode\", void 0);\n __decorate([\n Property()\n ], RecurrenceEditor.prototype, \"cssClass\", void 0);\n __decorate([\n Property()\n ], RecurrenceEditor.prototype, \"value\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], RecurrenceEditor.prototype, \"minDate\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], RecurrenceEditor.prototype, \"maxDate\", void 0);\n __decorate([\n Property(0)\n ], RecurrenceEditor.prototype, \"selectedType\", void 0);\n __decorate([\n Event()\n ], RecurrenceEditor.prototype, \"change\", void 0);\n RecurrenceEditor = __decorate([\n NotifyPropertyChanges\n ], RecurrenceEditor);\n return RecurrenceEditor;\n}(Component));\nexport { RecurrenceEditor };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createElement, isNullOrUndefined, addClass, remove, EventHandler, extend, append } from '@syncfusion/ej2-base';\nimport { cldrData, removeClass, getValue, getDefaultDateObject, closest, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Query, Deferred } from '@syncfusion/ej2-data';\nimport { CheckBox, Button } from '@syncfusion/ej2-buttons';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { FieldValidator } from './form-validator';\nimport { RecurrenceEditor } from '../../recurrence-editor/recurrence-editor';\nimport * as cls from '../base/css-constant';\nimport * as event from '../base/constant';\nimport * as util from '../base/util';\nvar EVENT_FIELD = 'e-field';\nvar REPEAT_CONTAINER_CLASS = 'e-recurrence-container';\nvar REPEAT_BUTTON_ICON_CLASS = 'e-recurrence-edit';\nvar REPEAT_BUTTON_CLASS = 'e-recurrence-edit-button';\nvar REPEAT_DIALOG_CLASS = 'e-recurrence-dialog';\nvar HIDE_STYLE_CLASS = 'e-hide';\n/**\n * Event editor window\n */\nvar EventWindow = /** @class */ (function () {\n function EventWindow(parent) {\n this.parent = parent;\n this.l10n = this.parent.localeObj;\n this.fields = this.parent.eventFields;\n this.eventWindowTime = { startTime: new Date(), endTime: new Date() };\n this.renderEventWindow();\n }\n EventWindow.prototype.renderEventWindow = function () {\n this.element = createElement('div', { id: this.parent.element.id + '_dialog_wrapper' });\n this.parent.element.appendChild(this.element);\n var dialogModel = {\n animationSettings: { effect: 'Zoom' },\n content: this.getEventWindowContent(),\n cssClass: cls.EVENT_WINDOW_DIALOG_CLASS,\n enableRtl: this.parent.enableRtl,\n height: this.parent.isAdaptive ? '100%' : 'auto',\n minHeight: '300px',\n isModal: true,\n showCloseIcon: this.parent.isAdaptive ? false : true,\n target: document.body,\n visible: false,\n width: '500px',\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n };\n if (this.parent.isAdaptive) {\n dialogModel.cssClass = cls.EVENT_WINDOW_DIALOG_CLASS + ' ' + cls.DEVICE_CLASS;\n dialogModel.header = '
    ' +\n this.l10n.getConstant('newEvent') + '
    ';\n }\n else {\n dialogModel.buttons = [{\n buttonModel: {\n content: this.l10n.getConstant('deleteButton'), cssClass: cls.DELETE_EVENT_CLASS,\n disabled: !this.parent.eventSettings.allowDeleting || this.parent.readonly\n },\n click: this.eventDelete.bind(this)\n }, {\n buttonModel: {\n content: this.l10n.getConstant('saveButton'), cssClass: 'e-primary ' + cls.EVENT_WINDOW_SAVE_BUTTON_CLASS,\n isPrimary: true, disabled: !this.parent.eventSettings.allowAdding || this.parent.readonly\n },\n click: this.eventSave.bind(this)\n }, {\n buttonModel: { cssClass: cls.EVENT_WINDOW_CANCEL_BUTTON_CLASS, content: this.l10n.getConstant('cancelButton') },\n click: this.dialogClose.bind(this)\n }];\n dialogModel.header = '
    ' + this.l10n.getConstant('newEvent') + '
    ';\n }\n this.dialogObject = new Dialog(dialogModel, this.element);\n if (this.dialogObject.element.querySelector('.e-dlg-closeicon-btn')) {\n this.dialogObject.element.querySelector('.e-dlg-closeicon-btn').setAttribute('title', this.l10n.getConstant('close'));\n }\n addClass([this.element.parentElement], cls.EVENT_WINDOW_DIALOG_CLASS + '-container');\n if (this.parent.isAdaptive) {\n EventHandler.add(this.element.querySelector('.' + cls.EVENT_WINDOW_BACK_ICON_CLASS), 'click', this.dialogClose, this);\n EventHandler.add(this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_ICON_CLASS), 'click', this.eventSave, this);\n }\n EventHandler.add(this.dialogObject.element, 'keydown', this.preventEventSave, this);\n this.applyFormValidation();\n };\n EventWindow.prototype.refresh = function () {\n this.destroy(true);\n this.renderEventWindow();\n };\n EventWindow.prototype.refreshRecurrenceEditor = function () {\n if (this.recurrenceEditor) {\n var recurrenceEditor = this.recurrenceEditor.element;\n this.recurrenceEditor.destroy();\n this.createRecurrenceEditor(recurrenceEditor);\n }\n };\n EventWindow.prototype.setRecurrenceEditor = function (recurrenceEditor) {\n if (this.parent.editorTemplate) {\n this.recurrenceEditor = recurrenceEditor;\n }\n };\n EventWindow.prototype.openEditor = function (data, type, isEventData, repeatType) {\n this.parent.currentAction = type;\n this.parent.removeNewEventElement();\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide(true);\n }\n this.parent.inlineModule.removeInlineAppointmentElement();\n if (type === 'Add') {\n var eventObj = {};\n this.cellClickAction = !isEventData;\n this.parent.activeCellsData = data;\n var event_1 = data;\n if (this.cellClickAction) {\n this.convertToEventData(event_1, eventObj);\n }\n else {\n this.parent.activeCellsData = {\n startTime: (event_1.startTime || event_1[this.fields.startTime]),\n endTime: (event_1.endTime || event_1[this.fields.endTime]),\n isAllDay: (event_1.isAllDay || event_1[this.fields.isAllDay]),\n element: event_1.element,\n groupIndex: event_1.groupIndex\n };\n eventObj = event_1;\n }\n data = eventObj;\n }\n if (!isNullOrUndefined(this.parent.editorTemplate)) {\n this.renderFormElements(this.element.querySelector('.e-schedule-form'), data);\n }\n if (!this.parent.isAdaptive && isNullOrUndefined(this.parent.editorTemplate)) {\n removeClass([this.dialogObject.element.querySelector('.e-recurrenceeditor')], cls.DISABLE_CLASS);\n }\n if (this.recurrenceEditor) {\n this.recurrenceEditor.firstDayOfWeek = this.parent.activeViewOptions.firstDayOfWeek;\n }\n switch (type) {\n case 'Add':\n this.onCellDetailsUpdate(data, repeatType);\n break;\n case 'Save':\n case 'EditOccurrence':\n case 'EditSeries':\n case 'EditFollowingEvents':\n if (type === 'EditOccurrence' && !this.parent.isAdaptive && isNullOrUndefined(this.parent.editorTemplate)) {\n addClass([this.dialogObject.element.querySelector('.e-recurrenceeditor')], cls.DISABLE_CLASS);\n }\n this.cellClickAction = false;\n this.onEventDetailsUpdate(data);\n break;\n }\n };\n EventWindow.prototype.setDialogContent = function () {\n this.dialogObject.content = this.getEventWindowContent();\n this.dialogObject.dataBind();\n };\n EventWindow.prototype.preventEventSave = function (e) {\n if (this.parent && !this.parent.allowKeyboardInteraction && e.code === 'Enter') {\n this.isEnterKey = true;\n }\n };\n EventWindow.prototype.onBeforeOpen = function (args) {\n var _this = this;\n var eventProp = {\n type: 'Editor',\n data: this.eventData,\n cancel: false,\n element: this.element,\n target: (this.cellClickAction ? this.parent.activeCellsData.element : this.parent.activeEventData.element)\n };\n if (this.cellClickAction) {\n eventProp.duration = this.getSlotDuration();\n }\n var saveObj = this.getInstance(cls.EVENT_WINDOW_SAVE_BUTTON_CLASS);\n if (saveObj) {\n saveObj.disabled = !(this.cellClickAction ? this.parent.eventSettings.allowAdding : this.parent.eventSettings.allowEditing);\n saveObj.dataBind();\n }\n var deleteObj = this.getInstance(cls.DELETE_EVENT_CLASS);\n if (deleteObj) {\n deleteObj.disabled = !this.parent.eventSettings.allowDeleting;\n deleteObj.dataBind();\n }\n var callBackPromise = new Deferred();\n this.parent.trigger(event.popupOpen, eventProp, function (popupArgs) {\n args.cancel = popupArgs.cancel;\n _this.duration = _this.cellClickAction ? popupArgs.duration : null;\n _this.refreshDateTimePicker(_this.duration);\n if (_this.cellClickAction && popupArgs.duration !== _this.getSlotDuration() && isNullOrUndefined(_this.parent.editorTemplate)) {\n var startObj = _this.getInstance(cls.EVENT_WINDOW_START_CLASS);\n var endObj = _this.getInstance(cls.EVENT_WINDOW_END_CLASS);\n endObj.value = new Date(startObj.value.getTime() + (util.MS_PER_MINUTE * popupArgs.duration));\n endObj.dataBind();\n }\n if (_this.parent.editorTemplate && _this.element.querySelector('.e-recurrenceeditor') && !_this.recurrenceEditor) {\n _this.recurrenceEditor = _this.getInstance('e-recurrenceeditor');\n }\n callBackPromise.resolve(args);\n });\n return callBackPromise;\n };\n EventWindow.prototype.onBeforeClose = function (args) {\n var _this = this;\n if (args.isInteracted) {\n this.isCrudAction = false;\n }\n var eventProp = {\n type: 'Editor',\n event: args.event || this.dialogEvent,\n data: this.eventCrudData,\n cancel: false,\n element: this.element,\n target: (this.cellClickAction ? this.parent.activeCellsData.element : this.parent.activeEventData.element)\n };\n var callBackPromise = new Deferred();\n this.parent.trigger(event.popupClose, eventProp, function (popupArgs) {\n args.cancel = popupArgs.cancel;\n if (!popupArgs.cancel) {\n if (_this.isCrudAction) {\n args.cancel = _this.processCrudActions(popupArgs.data);\n _this.isCrudAction = args.cancel;\n }\n if (!_this.isCrudAction) {\n _this.resetForm();\n _this.parent.eventBase.focusElement(true);\n _this.eventCrudData = null;\n }\n }\n callBackPromise.resolve(args);\n });\n return callBackPromise;\n };\n EventWindow.prototype.getEventWindowContent = function () {\n var container = createElement('div', { className: cls.FORM_CONTAINER_CLASS });\n var form = createElement('form', {\n id: this.parent.element.id + 'EditForm',\n className: cls.FORM_CLASS,\n attrs: { onsubmit: 'return false;' }\n });\n this.renderFormElements(form);\n container.appendChild(form);\n return container;\n };\n EventWindow.prototype.renderFormElements = function (form, args) {\n if (!isNullOrUndefined(this.parent.editorTemplate)) {\n if (args) {\n if (this.recurrenceEditor) {\n this.recurrenceEditor.destroy();\n this.recurrenceEditor = null;\n }\n this.destroyComponents();\n var formElements = [].slice.call(form.children);\n for (var _i = 0, formElements_1 = formElements; _i < formElements_1.length; _i++) {\n var element = formElements_1[_i];\n remove(element);\n }\n }\n var templateId = this.parent.element.id + '_editorTemplate';\n var tempEle = [].slice.call(this.parent.getEditorTemplate()(args || {}, this.parent, 'editorTemplate', templateId, false));\n append(tempEle, form);\n this.parent.renderTemplates();\n }\n else {\n form.appendChild(this.getDefaultEventWindowContent());\n }\n };\n EventWindow.prototype.getDefaultEventWindowContent = function () {\n var parentDiv = this.createDivElement(cls.EVENT_WINDOW_DIALOG_PARENT_CLASS);\n var titleLocationDiv = this.createDivElement(cls.EVENT_WINDOW_TITLE_LOCATION_DIV_CLASS);\n parentDiv.appendChild(titleLocationDiv);\n titleLocationDiv.appendChild(this.renderTextBox(cls.SUBJECT_CLASS));\n titleLocationDiv.querySelector('.' + cls.SUBJECT_CLASS).setAttribute('title', this.parent.editorTitles.subject);\n titleLocationDiv.appendChild(this.renderTextBox(cls.LOCATION_CLASS));\n titleLocationDiv.querySelector('.' + cls.LOCATION_CLASS).setAttribute('title', this.parent.editorTitles.location);\n var startEndDateTimeDiv = this.createDivElement(cls.EVENT_WINDOW_START_END_DIV_CLASS);\n parentDiv.appendChild(startEndDateTimeDiv);\n startEndDateTimeDiv.appendChild(this.renderDateTimePicker(cls.EVENT_WINDOW_START_CLASS, this.onTimeChange.bind(this)));\n startEndDateTimeDiv.querySelector('.' + cls.EVENT_WINDOW_START_CLASS).setAttribute('title', this.parent.editorTitles.startTime);\n startEndDateTimeDiv.appendChild(this.renderDateTimePicker(cls.EVENT_WINDOW_END_CLASS));\n startEndDateTimeDiv.querySelector('.' + cls.EVENT_WINDOW_END_CLASS).setAttribute('title', this.parent.editorTitles.endTime);\n var allDayTimezoneDiv = this.createDivElement(cls.EVENT_WINDOW_ALLDAY_TZ_DIV_CLASS);\n parentDiv.appendChild(allDayTimezoneDiv);\n allDayTimezoneDiv.appendChild(this.renderCheckBox(cls.EVENT_WINDOW_ALL_DAY_CLASS));\n allDayTimezoneDiv.appendChild(this.renderCheckBox(cls.TIME_ZONE_CLASS));\n var timezoneParentDiv = this.createDivElement(cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS);\n parentDiv.appendChild(timezoneParentDiv);\n timezoneParentDiv.appendChild(this.renderDropDown(cls.EVENT_WINDOW_START_TZ_CLASS));\n timezoneParentDiv.appendChild(this.renderDropDown(cls.EVENT_WINDOW_END_TZ_CLASS));\n var repeatParentDiv = this.createDivElement(cls.EVENT_WINDOW_REPEAT_DIV_CLASS);\n parentDiv.appendChild(repeatParentDiv);\n var repeatDiv = this.renderCheckBox(cls.EVENT_WINDOW_REPEAT_CLASS);\n var repeatEditContainer = createElement('span', { className: REPEAT_CONTAINER_CLASS });\n var button = createElement('button', {\n className: REPEAT_BUTTON_CLASS,\n attrs: { type: 'button', 'title': this.l10n.getConstant('editRecurrence') }\n });\n this.buttonObj = new Button({ iconCss: REPEAT_BUTTON_ICON_CLASS + ' e-icons', cssClass: 'e-medium ' + this.parent.cssClass });\n repeatEditContainer.appendChild(button);\n this.buttonObj.appendTo(button);\n repeatDiv.appendChild(repeatEditContainer);\n repeatParentDiv.appendChild(repeatDiv);\n if (this.parent.isAdaptive) {\n EventHandler.add(button, 'click', this.loadRecurrenceEditor, this);\n }\n else {\n this.createRecurrenceEditor(parentDiv);\n }\n if (this.parent.resourceCollection.length > 0) {\n var resourceParentDiv = this.createDivElement(cls.EVENT_WINDOW_RESOURCES_DIV_CLASS);\n for (var _i = 0, _a = this.parent.resourceBase.resourceCollection; _i < _a.length; _i++) {\n var resource = _a[_i];\n resourceParentDiv.appendChild(this.renderResourceDetails(resource));\n }\n parentDiv.appendChild(resourceParentDiv);\n }\n var description = this.createDivElement(cls.DESCRIPTION_CLASS + '-row');\n description.appendChild(this.renderTextBox(cls.DESCRIPTION_CLASS));\n description.querySelector('.' + cls.DESCRIPTION_CLASS).setAttribute('title', this.parent.editorTitles.description);\n parentDiv.appendChild(description);\n var submit = createElement('button', { attrs: { type: 'hidden', title: 'submit', style: 'display:none' } });\n parentDiv.appendChild(submit);\n return parentDiv;\n };\n EventWindow.prototype.createRecurrenceEditor = function (parentDiv) {\n var recurrenceEditor = this.createDivElement();\n parentDiv.appendChild(recurrenceEditor);\n this.recurrenceEditor = this.renderRecurrenceEditor();\n this.recurrenceEditor.appendTo(recurrenceEditor);\n this.updateMinMaxDateToEditor();\n };\n EventWindow.prototype.createDivElement = function (className) {\n return createElement('div', { className: className });\n };\n EventWindow.prototype.createInputElement = function (className, fieldName, type) {\n return createElement(type || 'input', {\n className: className, attrs: {\n type: 'text', name: fieldName, value: '', id: fieldName,\n title: ((this.l10n.getConstant(fieldName.charAt(0).toLowerCase() + fieldName.slice(1))) === '') ?\n fieldName : this.l10n.getConstant(fieldName.charAt(0).toLowerCase() + fieldName.slice(1))\n }\n });\n };\n EventWindow.prototype.getSlotDuration = function () {\n return this.parent.activeViewOptions.timeScale.interval / this.parent.activeViewOptions.timeScale.slotCount;\n };\n EventWindow.prototype.renderDateTimePicker = function (value, changeEvent) {\n var dateTimeDiv = this.createDivElement(value + '-container');\n var fieldName = this.getFieldName(value);\n var dateTimeInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName);\n dateTimeDiv.appendChild(dateTimeInput);\n var dateTimePicker = new DateTimePicker({\n change: changeEvent,\n firstDayOfWeek: this.parent.activeViewOptions.firstDayOfWeek,\n calendarMode: this.parent.calendarMode,\n min: this.parent.minDate,\n max: new Date(new Date(+this.parent.maxDate).setHours(23, 59, 59)),\n cssClass: this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n floatLabelType: 'Always',\n timeFormat: this.parent.activeViewOptions.timeFormat,\n format: (isNullOrUndefined(this.parent.dateFormat) ?\n this.getFormat('dateFormats') : this.parent.dateFormat) + ' ' + this.parent.activeViewOptions.timeFormat,\n placeholder: this.getFieldLabel(value),\n step: this.getSlotDuration(),\n width: '100%'\n });\n dateTimePicker.appendTo(dateTimeInput);\n return dateTimeDiv;\n };\n EventWindow.prototype.refreshDateTimePicker = function (duration) {\n var elementSelector = '.' + cls.EVENT_WINDOW_START_CLASS + ',.' + cls.EVENT_WINDOW_END_CLASS;\n var startEndElement = [].slice.call(this.element.querySelectorAll(elementSelector));\n for (var _i = 0, startEndElement_1 = startEndElement; _i < startEndElement_1.length; _i++) {\n var element = startEndElement_1[_i];\n var instance = element.ej2_instances[0];\n instance.firstDayOfWeek = this.parent.activeViewOptions.firstDayOfWeek;\n instance.timeFormat = this.parent.activeViewOptions.timeFormat;\n instance.step = duration || this.getSlotDuration();\n instance.dataBind();\n }\n };\n EventWindow.prototype.onTimeChange = function () {\n var startObj = this.getInstance(cls.EVENT_WINDOW_START_CLASS);\n if (startObj.element.parentElement.classList.contains('e-input-focus')) {\n var endObj = this.getInstance(cls.EVENT_WINDOW_END_CLASS);\n var duration = 0;\n if (this.cellClickAction) {\n duration = util.MS_PER_MINUTE * this.duration;\n this.eventWindowTime.startTime = startObj.value;\n }\n else {\n duration = this.eventData[this.fields.endTime].getTime() - this.eventData[this.fields.startTime].getTime();\n }\n var endDate = (isNullOrUndefined(startObj.value)) ? null : new Date(startObj.value.getTime() + duration);\n if (this.cellClickAction) {\n this.eventWindowTime.endTime = endDate;\n }\n endObj.value = endDate;\n endObj.dataBind();\n }\n if (this.recurrenceEditor) {\n this.recurrenceEditor.updateRuleUntilDate(this.eventWindowTime.startTime);\n }\n };\n EventWindow.prototype.renderResourceDetails = function (resourceData) {\n var fieldName = resourceData.field;\n var value = 'e-' + fieldName;\n var labelValue = resourceData.title;\n var resourceDiv = this.createDivElement(value + '-container' + ' ' + 'e-resources');\n var resourceInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName);\n resourceDiv.appendChild(resourceInput);\n var resourceTemplate = '
    ${' + resourceData.textField + '}
    ';\n if (resourceData.allowMultiple) {\n var listObj = new MultiSelect({\n cssClass: this.parent.cssClass || '',\n dataSource: resourceData.dataSource,\n change: this.onMultiselectResourceChange.bind(this),\n itemTemplate: resourceTemplate,\n fields: {\n text: resourceData.textField,\n value: resourceData.idField\n },\n htmlAttributes: { 'title': labelValue, 'name': fieldName },\n floatLabelType: 'Always',\n placeholder: labelValue,\n popupHeight: '230px',\n popupWidth: '447px',\n mode: 'Box'\n });\n listObj.appendTo(resourceInput);\n }\n else {\n var dropDownList = new DropDownList({\n cssClass: this.parent.cssClass || '',\n change: this.onDropdownResourceChange.bind(this),\n dataSource: resourceData.dataSource,\n enableRtl: this.parent.enableRtl,\n fields: {\n text: resourceData.textField,\n value: resourceData.idField\n },\n htmlAttributes: { 'title': labelValue, 'name': fieldName },\n floatLabelType: 'Always',\n placeholder: labelValue,\n popupHeight: '230px',\n popupWidth: '447px',\n itemTemplate: resourceTemplate\n });\n dropDownList.appendTo(resourceInput);\n }\n return resourceDiv;\n };\n EventWindow.prototype.renderDropDown = function (value) {\n var _this = this;\n var fieldName = this.getFieldName(value);\n var timezoneDiv = this.createDivElement(value + '-container');\n var timezoneInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName);\n timezoneDiv.appendChild(timezoneInput);\n var dropDownList = new DropDownList({\n allowFiltering: true,\n change: this.onTimezoneChange.bind(this),\n cssClass: this.parent.cssClass || '',\n dataSource: this.parent.timezoneDataSource,\n enableRtl: this.parent.enableRtl,\n fields: { text: 'Text', value: 'Value' },\n filterBarPlaceholder: this.parent.localeObj.getConstant('searchTimezone'),\n noRecordsTemplate: this.parent.localeObj.getConstant('noRecords'),\n filtering: function (e) {\n var query = new Query();\n query = (e.text !== '') ? query.where('Text', 'contains', e.text, true) : query;\n e.updateData(_this.parent.timezoneDataSource, query);\n },\n htmlAttributes: { 'title': this.getFieldLabel(value), 'name': fieldName },\n floatLabelType: 'Always',\n placeholder: this.getFieldLabel(value),\n popupHeight: '230px'\n });\n dropDownList.appendTo(timezoneInput);\n return timezoneDiv;\n };\n EventWindow.prototype.onMultiselectResourceChange = function (args) {\n if (!args.value || !this.parent.activeViewOptions.group.byGroupID || this.parent.resourceCollection.length <= 1) {\n return;\n }\n var resourceCollection = this.parent.resourceBase.resourceCollection;\n var fieldName = args.element.getAttribute('name') || this.getColumnName(args.element);\n for (var i = 0; i < resourceCollection.length; i++) {\n if (resourceCollection[i].field === fieldName && i < resourceCollection.length - 1) {\n var resObject = this.createInstance(i);\n var datasource = [];\n var _loop_1 = function (j) {\n var resourceModel = resourceCollection[i + 1];\n // eslint-disable-next-line max-len\n var filter = resourceModel.dataSource.filter(function (data) {\n return data[resourceModel.groupIDField] === args.value[j];\n })[0];\n var groupId = filter[resourceCollection[i + 1].groupIDField];\n var filterRes = this_1.filterDatasource(i, groupId);\n datasource = datasource.concat(filterRes);\n };\n var this_1 = this;\n for (var j = 0; j < args.value.length; j++) {\n _loop_1(j);\n }\n resObject.dataSource = datasource;\n resObject.dataBind();\n }\n }\n };\n EventWindow.prototype.createInstance = function (index) {\n var resourceData = this.parent.resourceBase.resourceCollection[index + 1];\n var resObject = this.element.querySelector('.e-' + resourceData.field).\n ej2_instances[0];\n return resObject;\n };\n EventWindow.prototype.onDropdownResourceChange = function (args) {\n if (!args.value || this.parent.resourceCollection.length <= 1 || !this.parent.activeViewOptions.group.byGroupID) {\n return;\n }\n var fieldName = args.element.getAttribute('name') || this.getColumnName(args.element);\n var resourceCollection = this.parent.resourceBase.resourceCollection;\n for (var i = 0; i < resourceCollection.length; i++) {\n if ((i < resourceCollection.length - 1) && resourceCollection[i].field === fieldName) {\n var resObj = this.createInstance(i);\n var groupId = args.itemData[resourceCollection[i].idField];\n resObj.dataSource = this.filterDatasource(i, groupId);\n resObj.dataBind();\n var resValue = resObj.dataSource[0][resourceCollection[i + 1].idField];\n resObj.value = (resourceCollection[i + 1].allowMultiple) ? [resValue] : resValue;\n resObj.dataBind();\n }\n }\n };\n EventWindow.prototype.filterDatasource = function (index, groupId) {\n var resourceData = this.parent.resourceBase.resourceCollection[index + 1];\n return resourceData.dataSource.filter(function (data) {\n return data[resourceData.groupIDField] === groupId;\n });\n };\n EventWindow.prototype.onTimezoneChange = function (args) {\n var fieldName = args.element.getAttribute('name') || this.getColumnName(args.element);\n if (fieldName === this.parent.eventFields.startTimezone) {\n var startTimezoneObj = this.getInstance(cls.EVENT_WINDOW_START_TZ_CLASS);\n var endTimezoneObj = this.getInstance(cls.EVENT_WINDOW_END_TZ_CLASS);\n endTimezoneObj.value = startTimezoneObj.value;\n endTimezoneObj.dataBind();\n }\n };\n EventWindow.prototype.renderCheckBox = function (value) {\n var checkBoxDiv = this.createDivElement(value + '-container');\n var fieldName = this.getFieldName(value);\n var checkBoxInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName);\n checkBoxDiv.appendChild(checkBoxInput);\n var checkBox = new CheckBox({\n change: this.onChange.bind(this),\n cssClass: value + ' ' + this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n label: this.getFieldLabel(value)\n });\n checkBox.appendTo(checkBoxInput);\n checkBoxInput.setAttribute('name', fieldName);\n if (fieldName === 'Repeat') {\n this.repeatStatus = checkBox;\n }\n return checkBoxDiv;\n };\n EventWindow.prototype.renderTextBox = function (value) {\n var textBoxDiv = this.createDivElement(value + '-container');\n var fieldName = this.getFieldName(value);\n var elementType = (value === cls.DESCRIPTION_CLASS) ? 'textarea' : 'input';\n var textBoxInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName, elementType);\n textBoxDiv.appendChild(textBoxInput);\n Input.createInput({\n element: textBoxInput,\n floatLabelType: 'Always',\n properties: {\n enableRtl: this.parent.enableRtl,\n placeholder: this.getFieldLabel(value)\n }\n });\n return textBoxDiv;\n };\n EventWindow.prototype.getFieldName = function (name) {\n var fieldName = '';\n switch (name) {\n case cls.SUBJECT_CLASS:\n fieldName = this.fields.subject;\n break;\n case cls.LOCATION_CLASS:\n fieldName = this.fields.location;\n break;\n case cls.EVENT_WINDOW_START_CLASS:\n fieldName = this.fields.startTime;\n break;\n case cls.EVENT_WINDOW_END_CLASS:\n fieldName = this.fields.endTime;\n break;\n case cls.DESCRIPTION_CLASS:\n fieldName = this.fields.description;\n break;\n case cls.EVENT_WINDOW_ALL_DAY_CLASS:\n fieldName = this.fields.isAllDay;\n break;\n case cls.EVENT_WINDOW_START_TZ_CLASS:\n fieldName = this.fields.startTimezone;\n break;\n case cls.EVENT_WINDOW_END_TZ_CLASS:\n fieldName = this.fields.endTimezone;\n break;\n case cls.TIME_ZONE_CLASS:\n fieldName = 'Timezone';\n break;\n case cls.EVENT_WINDOW_REPEAT_CLASS:\n fieldName = 'Repeat';\n break;\n }\n return fieldName;\n };\n EventWindow.prototype.getFieldLabel = function (fieldName) {\n var labelText = '';\n switch (fieldName) {\n case cls.SUBJECT_CLASS:\n labelText = this.parent.editorTitles.subject;\n break;\n case cls.LOCATION_CLASS:\n labelText = this.parent.editorTitles.location;\n break;\n case cls.DESCRIPTION_CLASS:\n labelText = this.parent.editorTitles.description;\n break;\n case cls.EVENT_WINDOW_START_CLASS:\n labelText = this.parent.editorTitles.startTime;\n break;\n case cls.EVENT_WINDOW_END_CLASS:\n labelText = this.parent.editorTitles.endTime;\n break;\n case cls.EVENT_WINDOW_START_TZ_CLASS:\n labelText = this.parent.editorTitles.startTimezone;\n break;\n case cls.EVENT_WINDOW_END_TZ_CLASS:\n labelText = this.parent.editorTitles.endTimezone;\n break;\n case cls.EVENT_WINDOW_REPEAT_CLASS:\n labelText = this.parent.editorTitles.recurrenceRule;\n break;\n case cls.EVENT_WINDOW_ALL_DAY_CLASS:\n labelText = this.parent.editorTitles.isAllDay;\n break;\n case cls.TIME_ZONE_CLASS:\n labelText = this.l10n.getConstant('timezone');\n break;\n }\n return labelText;\n };\n EventWindow.prototype.onChange = function (args) {\n var target = args.event.currentTarget.querySelector('input');\n if (target.classList.contains(cls.EVENT_WINDOW_ALL_DAY_CLASS)) {\n this.onAllDayChange(args.checked);\n }\n else if (target.classList.contains(cls.TIME_ZONE_CLASS)) {\n this.timezoneChangeStyle(args.checked);\n }\n else if (target.classList.contains(cls.EVENT_WINDOW_REPEAT_CLASS)) {\n this.onRepeatChange(args.checked);\n }\n };\n EventWindow.prototype.renderRepeatDialog = function () {\n var element = createElement('div');\n this.repeatDialogObject = new Dialog({\n header: this.l10n.getConstant('recurrence'),\n visible: false,\n content: '
    ',\n closeOnEscape: true,\n width: '90%',\n buttons: [{\n click: this.repeatSaveDialog.bind(this),\n buttonModel: { content: this.l10n.getConstant('save'), cssClass: 'e-save', isPrimary: true }\n },\n { click: this.repeatCancelDialog.bind(this), buttonModel: { cssClass: 'e-cancel', content: this.l10n.getConstant('cancel') } }],\n target: this.element,\n animationSettings: { effect: 'Zoom' },\n enableRtl: this.parent.enableRtl,\n isModal: true,\n cssClass: REPEAT_DIALOG_CLASS,\n open: this.repeatOpenDialog.bind(this)\n });\n this.element.appendChild(element);\n this.repeatDialogObject.appendTo(element);\n this.createRecurrenceEditor(this.repeatDialogObject.element.querySelector('.e-rec-editor'));\n };\n EventWindow.prototype.loadRecurrenceEditor = function () {\n this.repeatDialogObject.show();\n if (this.recurrenceEditor && this.repeatRule) {\n this.recurrenceEditor.setRecurrenceRule(this.repeatRule);\n }\n };\n EventWindow.prototype.onRepeatChange = function (state) {\n if (state) {\n if (!this.repeatDialogObject) {\n this.renderRepeatDialog();\n }\n this.recurrenceEditor.setProperties({ startDate: this.repeatStartDate, selectedType: 0 });\n this.loadRecurrenceEditor();\n }\n else {\n if (this.repeatDialogObject) {\n this.repeatDialogObject.hide();\n }\n this.repeatRule = '';\n if (this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(this.repeatRule);\n this.updateRepeatLabel(this.repeatRule);\n }\n var element = this.element.querySelector('.' + REPEAT_CONTAINER_CLASS);\n addClass([element], HIDE_STYLE_CLASS);\n }\n };\n EventWindow.prototype.repeatSaveDialog = function () {\n this.repeatRule = this.recurrenceEditor.getRecurrenceRule();\n var element = this.element.querySelector('.' + REPEAT_CONTAINER_CLASS);\n if (this.recurrenceEditor.getRecurrenceRule()) {\n removeClass([element], HIDE_STYLE_CLASS);\n }\n else {\n addClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: false });\n }\n this.updateRepeatLabel(this.repeatRule);\n this.closeRepeatDialog();\n };\n EventWindow.prototype.closeRepeatDialog = function () {\n this.repeatDialogObject.hide();\n };\n EventWindow.prototype.repeatCancelDialog = function () {\n this.closeRepeatDialog();\n if (this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(this.repeatTempRule);\n }\n if (!this.repeatTempRule) {\n this.repeatStatus.setProperties({ checked: false });\n }\n };\n EventWindow.prototype.repeatOpenDialog = function () {\n this.repeatTempRule = this.recurrenceEditor.getRecurrenceRule();\n };\n EventWindow.prototype.onCellDetailsUpdate = function (eventObj, repeatType) {\n if (!this.parent.eventSettings.allowAdding) {\n return;\n }\n this.element.querySelector('.' + cls.FORM_CLASS).removeAttribute('data-id');\n this.element.querySelector('.' + cls.EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('newEvent');\n eventObj.Timezone = false;\n this.repeatStartDate = eventObj[this.fields.startTime];\n this.repeatRule = '';\n if (!isNullOrUndefined(this.parent.eventSettings.fields.subject.default)) {\n eventObj[this.fields.subject] = this.parent.eventSettings.fields.subject.default;\n }\n if (!isNullOrUndefined(this.parent.eventSettings.fields.location.default)) {\n eventObj[this.fields.location] = this.parent.eventSettings.fields.location.default;\n }\n if (!isNullOrUndefined(this.parent.eventSettings.fields.description.default)) {\n eventObj[this.fields.description] = this.parent.eventSettings.fields.description.default;\n }\n this.showDetails(eventObj);\n if (eventObj[this.fields.recurrenceRule] && this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(eventObj[this.fields.recurrenceRule], eventObj[this.fields.startTime]);\n this.repeatRule = eventObj[this.fields.recurrenceRule];\n }\n var deleteButton = this.element.querySelector('.' + cls.DELETE_EVENT_CLASS);\n if (deleteButton) {\n addClass([deleteButton], cls.DISABLE_CLASS);\n }\n if (this.recurrenceEditor) {\n this.recurrenceEditor.setProperties({\n startDate: eventObj[this.fields.startTime],\n selectedType: !isNullOrUndefined(repeatType) ? repeatType : !isNullOrUndefined(eventObj[this.fields.recurrenceRule]) ?\n this.recurrenceEditor.selectedType : 0\n });\n }\n if (this.parent.isAdaptive && isNullOrUndefined(this.parent.editorTemplate)) {\n var element = this.element.querySelector('.' + REPEAT_CONTAINER_CLASS);\n addClass([element], HIDE_STYLE_CLASS);\n this.updateRepeatLabel(this.repeatRule);\n }\n else {\n var saveButton = this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_BUTTON_CLASS);\n this.disableButton(saveButton, false);\n }\n this.dialogObject.show();\n };\n EventWindow.prototype.convertToEventData = function (cellsData, eventObj) {\n if (cellsData.subject) {\n eventObj[this.fields.subject] = cellsData.subject;\n }\n eventObj[this.fields.startTime] = cellsData.startTime;\n eventObj[this.fields.endTime] = cellsData.endTime;\n eventObj[this.fields.isAllDay] = cellsData.isAllDay;\n if (cellsData.RecurrenceRule) {\n eventObj[this.fields.recurrenceRule] = cellsData.RecurrenceRule;\n }\n if (this.parent.resourceCollection.length > 0 || this.parent.activeViewOptions.group.resources.length > 0) {\n this.parent.resourceBase.setResourceValues(eventObj);\n }\n };\n EventWindow.prototype.applyFormValidation = function () {\n var getValidationRule = function (rules) {\n return (rules && Object.keys(rules).length > 0) ? rules : undefined;\n };\n var form = this.element.querySelector('.' + cls.FORM_CLASS);\n var rules = {};\n rules[this.parent.eventSettings.fields.subject.name] = getValidationRule(this.parent.eventSettings.fields.subject.validation);\n rules[this.parent.eventSettings.fields.location.name] = getValidationRule(this.parent.eventSettings.fields.location.validation);\n rules[this.parent.eventSettings.fields.startTime.name] = getValidationRule(this.parent.eventSettings.fields.startTime.validation);\n rules[this.parent.eventSettings.fields.endTime.name] = getValidationRule(this.parent.eventSettings.fields.endTime.validation);\n rules[this.parent.eventSettings.fields.description.name] =\n getValidationRule(this.parent.eventSettings.fields.description.validation);\n this.fieldValidator = new FieldValidator();\n this.fieldValidator.renderFormValidator(form, rules, this.element, this.parent.locale);\n };\n EventWindow.prototype.showDetails = function (eventData) {\n var eventObj = extend({}, eventData, null, true);\n if (eventObj[this.fields.endTime].getHours() === 0 && eventObj[this.fields.endTime].getMinutes() === 0) {\n this.trimAllDay(eventObj);\n }\n this.eventData = eventObj;\n var formElements = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n var keyNames = Object.keys(eventObj);\n for (var _i = 0, formElements_2 = formElements; _i < formElements_2.length; _i++) {\n var curElement = formElements_2[_i];\n var columnName = curElement.name || this.getColumnName(curElement);\n if (!isNullOrUndefined(columnName) && columnName !== '') {\n if (keyNames.indexOf(columnName) !== -1) {\n this.setValueToElement(curElement, eventObj[columnName]);\n }\n else {\n this.setDefaultValueToElement(curElement);\n }\n }\n }\n if (isNullOrUndefined(this.parent.editorTemplate)) {\n this.onAllDayChange(eventObj[this.fields.isAllDay]);\n var timezoneObj = this.getInstance(cls.TIME_ZONE_CLASS + '.' + EVENT_FIELD);\n if (!(isNullOrUndefined(eventObj[this.fields.startTimezone]) && isNullOrUndefined(eventObj[this.fields.endTimezone]))) {\n timezoneObj.checked = true;\n timezoneObj.dataBind();\n }\n this.timezoneChangeStyle(timezoneObj.checked);\n delete eventObj.Timezone;\n }\n };\n EventWindow.prototype.getColumnName = function (element) {\n var attrName = element.getAttribute('data-name') || '';\n if (attrName === '') {\n var isDropDowns = false;\n var fieldSelector = '';\n if (element.classList.contains('e-dropdownlist')) {\n fieldSelector = 'e-ddl';\n isDropDowns = true;\n }\n else if (element.classList.contains('e-multiselect')) {\n fieldSelector = 'e-multiselect';\n isDropDowns = true;\n }\n else if (element.classList.contains('e-datetimepicker')) {\n fieldSelector = 'e-datetimepicker';\n }\n else if (element.classList.contains('e-datepicker')) {\n fieldSelector = 'e-datepicker';\n }\n else if (element.classList.contains('e-checkbox')) {\n fieldSelector = 'e-checkbox';\n }\n var classSelector = isDropDowns ? \".\" + fieldSelector + \":not(.e-control)\" : \".\" + fieldSelector;\n var control = closest(element, classSelector) || element.querySelector(\".\" + fieldSelector);\n if (control) {\n var attrEle = control.querySelector('[name]');\n if (attrEle) {\n attrName = attrEle.name;\n }\n }\n }\n return attrName;\n };\n EventWindow.prototype.onAllDayChange = function (allDayStatus) {\n var startObj = this.getInstance(cls.EVENT_WINDOW_START_CLASS);\n var endObj = this.getInstance(cls.EVENT_WINDOW_END_CLASS);\n var timezoneDiv = this.element.querySelector('.e-time-zone-container');\n var format;\n if (allDayStatus) {\n format = (isNullOrUndefined(this.parent.dateFormat)) ? this.getFormat('dateFormats') : this.parent.dateFormat;\n addClass(this.element.querySelectorAll('.e-time-icon'), cls.EVENT_WINDOW_ICON_DISABLE_CLASS);\n addClass([timezoneDiv], cls.DISABLE_CLASS);\n if (this.element.querySelector('.' + cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS)) {\n removeClass([this.element.querySelector('.' + cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS)], cls.ENABLE_CLASS);\n }\n startObj.format = endObj.format = format;\n }\n else {\n format = (isNullOrUndefined(this.parent.dateFormat)) ? this.getFormat('dateFormats') + ' ' +\n this.parent.activeViewOptions.timeFormat : this.parent.dateFormat + ' ' + this.parent.activeViewOptions.timeFormat;\n removeClass(this.element.querySelectorAll('.e-time-icon'), cls.EVENT_WINDOW_ICON_DISABLE_CLASS);\n removeClass([timezoneDiv], cls.DISABLE_CLASS);\n if (this.element.querySelector('.e-checkbox-wrapper .e-time-zone').checked) {\n addClass([this.element.querySelector('.' + cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS)], cls.ENABLE_CLASS);\n }\n startObj.format = endObj.format = format;\n }\n if (this.cellClickAction) {\n this.updateDateTime(allDayStatus, startObj, endObj);\n }\n startObj.dataBind();\n endObj.dataBind();\n if (!isNullOrUndefined(this.recurrenceEditor)) {\n this.recurrenceEditor.updateRuleUntilDate(startObj.value);\n }\n };\n EventWindow.prototype.updateDateTime = function (allDayStatus, startObj, endObj) {\n var startDate;\n var endDate;\n if (allDayStatus) {\n startDate = util.resetTime(new Date(this.eventWindowTime.startTime.getTime()));\n if (this.parent.activeCellsData.isAllDay) {\n var temp = util.addDays(new Date(this.eventWindowTime.endTime.getTime()), -1).getTime();\n endDate = (+this.eventWindowTime.startTime > temp) ? this.eventWindowTime.endTime : new Date(temp);\n }\n else {\n endDate = util.resetTime(new Date(this.eventWindowTime.endTime.getTime()));\n }\n }\n else {\n var start = this.parent.activeCellsData.startTime;\n startDate = new Date(this.eventWindowTime.startTime.getTime());\n startDate.setHours(start.getHours(), start.getMinutes(), start.getSeconds());\n if (this.parent.activeCellsData.isAllDay) {\n var startHour = this.parent.getStartEndTime(this.parent.workHours.start);\n startDate.setHours(startHour.getHours(), startHour.getMinutes(), startHour.getSeconds());\n endDate = new Date(startDate.getTime());\n endDate.setMilliseconds(util.MS_PER_MINUTE * this.getSlotDuration());\n }\n else {\n endDate = new Date(startDate.getTime());\n endDate.setMilliseconds(this.parent.activeCellsData.endTime.getTime() - this.parent.activeCellsData.startTime.getTime());\n }\n }\n this.eventWindowTime = { startTime: new Date(startDate.getTime()), endTime: new Date(endDate.getTime()) };\n startObj.value = startDate;\n endObj.value = endDate;\n startObj.dataBind();\n endObj.dataBind();\n };\n EventWindow.prototype.getFormat = function (formatType) {\n var format;\n if (this.parent.locale === 'en' || this.parent.locale === 'en-US') {\n format = getValue(formatType + '.short', getDefaultDateObject(this.parent.getCalendarMode()));\n }\n else {\n format = getValue(\"main.\" + this.parent.locale + \".dates.calendars.\" + this.parent.getCalendarMode() + \".\" + formatType + \".short\", cldrData);\n }\n return format;\n };\n EventWindow.prototype.onEventDetailsUpdate = function (eventObj) {\n if (!this.parent.eventSettings.allowEditing) {\n return;\n }\n if (!this.parent.isAdaptive) {\n removeClass([this.element.querySelector('.' + cls.DELETE_EVENT_CLASS)], cls.DISABLE_CLASS);\n }\n this.element.querySelector('.' + cls.EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('editEvent');\n this.element.querySelector('.' + cls.FORM_CLASS).setAttribute('data-id', eventObj[this.fields.id].toString());\n if (isNullOrUndefined(this.parent.editorTemplate)) {\n eventObj = extend({}, eventObj, null, true);\n var timezoneObj = this.getInstance(cls.TIME_ZONE_CLASS + '.' + EVENT_FIELD);\n var timezoneValue = void 0;\n if (eventObj[this.fields.startTimezone] || eventObj[this.fields.endTimezone]) {\n timezoneValue = true;\n this.parent.eventBase.timezoneConvert(eventObj);\n }\n else {\n timezoneValue = false;\n }\n eventObj.Timezone = timezoneValue;\n timezoneObj.checked = timezoneValue;\n timezoneObj.dataBind();\n }\n this.showDetails(eventObj);\n if (eventObj[this.fields.recurrenceRule] && this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(eventObj[this.fields.recurrenceRule], eventObj[this.fields.startTime]);\n }\n else if (!this.parent.isAdaptive && this.recurrenceEditor) {\n this.recurrenceEditor.setProperties({ startDate: eventObj[this.fields.startTime] });\n this.recurrenceEditor.setRecurrenceRule('');\n }\n this.repeatStartDate = eventObj[this.fields.startTime];\n this.repeatRule = '';\n if (eventObj[this.fields.recurrenceRule]) {\n if (this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(eventObj[this.fields.recurrenceRule], eventObj[this.fields.startTime]);\n }\n this.repeatRule = eventObj[this.fields.recurrenceRule];\n }\n if (this.parent.isAdaptive && isNullOrUndefined(this.parent.editorTemplate)) {\n var element = this.element.querySelector('.' + REPEAT_CONTAINER_CLASS);\n if (eventObj[this.fields.recurrenceRule]) {\n removeClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: true });\n }\n else {\n addClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: false });\n }\n this.updateRepeatLabel(this.repeatRule);\n }\n var isDisable = (this.parent.readonly || eventObj[this.fields.isReadonly]);\n if (!this.parent.isAdaptive) {\n var saveButton = this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_BUTTON_CLASS);\n var deleteButton = this.element.querySelector('.' + cls.DELETE_EVENT_CLASS);\n this.disableButton(saveButton, isDisable);\n this.disableButton(deleteButton, isDisable);\n }\n else {\n var saveIcon = this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_ICON_CLASS);\n if (saveIcon) {\n if (isDisable) {\n addClass([saveIcon], cls.ICON_DISABLE_CLASS);\n }\n else {\n removeClass([saveIcon], cls.ICON_DISABLE_CLASS);\n }\n }\n }\n this.dialogObject.show();\n };\n EventWindow.prototype.disableButton = function (element, value) {\n if (element) {\n element.ej2_instances[0].disabled = value;\n }\n };\n EventWindow.prototype.renderRecurrenceEditor = function () {\n return new RecurrenceEditor({\n calendarMode: this.parent.calendarMode,\n cssClass: this.parent.cssClass,\n dateFormat: this.parent.dateFormat,\n enableRtl: this.parent.enableRtl,\n firstDayOfWeek: this.parent.activeViewOptions.firstDayOfWeek,\n locale: this.parent.locale\n });\n };\n EventWindow.prototype.updateMinMaxDateToEditor = function () {\n var startDate = this.element.querySelector('.e-start');\n var endDate = this.element.querySelector('.e-end');\n if (startDate && endDate) {\n var startObj = startDate.ej2_instances[0];\n var endObj = endDate.ej2_instances[0];\n startObj.min = this.parent.minDate;\n startObj.max = this.parent.maxDate;\n endObj.min = this.parent.minDate;\n endObj.max = this.parent.maxDate;\n startObj.dataBind();\n endObj.dataBind();\n }\n if (this.recurrenceEditor) {\n var untilDate = this.recurrenceEditor.element.querySelector('.e-until-date');\n if (untilDate) {\n var untilObj = untilDate.ej2_instances[0];\n untilObj.min = this.parent.minDate;\n untilObj.max = this.parent.maxDate;\n untilObj.dataBind();\n }\n }\n };\n EventWindow.prototype.updateRepeatLabel = function (repeatRule) {\n if (this.parent.isAdaptive && !this.repeatDialogObject) {\n this.renderRepeatDialog();\n }\n var data = repeatRule ?\n (this.l10n.getConstant('repeats') + ' ' + this.recurrenceEditor.getRuleSummary(repeatRule)) : this.l10n.getConstant('repeat');\n this.repeatStatus.setProperties({ label: data });\n };\n EventWindow.prototype.dialogClose = function (event) {\n if (this.isEnterKey) {\n this.isEnterKey = false;\n return;\n }\n this.dialogEvent = event;\n this.isCrudAction = false;\n this.parent.activeEventData = { event: undefined, element: undefined };\n this.parent.currentAction = null;\n this.dialogObject.hide();\n };\n EventWindow.prototype.resetForm = function () {\n this.fieldValidator.destroyToolTip();\n this.resetFormFields();\n if (!this.parent.isAdaptive && this.recurrenceEditor && !this.recurrenceEditor.isDestroyed) {\n this.recurrenceEditor.resetFields();\n }\n };\n EventWindow.prototype.timezoneChangeStyle = function (value) {\n var timezoneDiv = this.element.querySelector('.' + cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS);\n var localTimezoneName = this.parent.tzModule.getLocalTimezoneName();\n if (value) {\n addClass([timezoneDiv], cls.ENABLE_CLASS);\n var startTimezoneObj = this.getInstance(cls.EVENT_WINDOW_START_TZ_CLASS);\n var endTimezoneObj = this.getInstance(cls.EVENT_WINDOW_END_TZ_CLASS);\n var timezone = startTimezoneObj.dataSource;\n if (!startTimezoneObj.value || !this.parent.timezone) {\n var found = timezone.some(function (tz) { return tz.Value === localTimezoneName; });\n if (!found) {\n timezone.push({ Value: localTimezoneName, Text: localTimezoneName });\n startTimezoneObj.dataSource = timezone;\n endTimezoneObj.dataSource = timezone;\n startTimezoneObj.dataBind();\n endTimezoneObj.dataBind();\n }\n }\n startTimezoneObj.value = startTimezoneObj.value || this.parent.timezone || localTimezoneName;\n endTimezoneObj.value = endTimezoneObj.value || this.parent.timezone || localTimezoneName;\n startTimezoneObj.dataBind();\n endTimezoneObj.dataBind();\n }\n else {\n removeClass([timezoneDiv], cls.ENABLE_CLASS);\n }\n };\n EventWindow.prototype.resetFormFields = function () {\n var formElement = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n for (var _i = 0, formElement_1 = formElement; _i < formElement_1.length; _i++) {\n var currentElement = formElement_1[_i];\n var columnName = currentElement.name || this.getColumnName(currentElement);\n if (!isNullOrUndefined(columnName) && columnName !== '') {\n this.setDefaultValueToElement(currentElement);\n }\n }\n };\n EventWindow.prototype.eventSave = function (event, alert) {\n if (this.isEnterKey) {\n this.isEnterKey = false;\n return;\n }\n var formElement = this.element.querySelector('.' + cls.FORM_CLASS);\n if (formElement && formElement.classList.contains('e-formvalidator') &&\n !formElement.ej2_instances[0].validate()) {\n return;\n }\n var dataCollection = this.getEventDataFromEditor();\n if (this.processEventValidation(dataCollection.tempData, alert)) {\n return;\n }\n this.eventCrudData = dataCollection.eventData;\n this.dialogEvent = event;\n this.isCrudAction = true;\n this.dialogObject.hide();\n };\n EventWindow.prototype.getEventDataFromEditor = function () {\n var eventObj = extend({}, this.getObjectFromFormData(cls.EVENT_WINDOW_DIALOG_CLASS));\n if (!eventObj.Timezone) {\n eventObj[this.fields.startTimezone] = null;\n eventObj[this.fields.endTimezone] = null;\n }\n delete eventObj.Timezone;\n delete eventObj.Repeat;\n this.setDefaultValueToObject(eventObj);\n eventObj[this.fields.recurrenceRule] = this.recurrenceEditor ? this.recurrenceEditor.getRecurrenceRule() || null : undefined;\n var tempObj = extend({}, eventObj, null, true);\n if (eventObj[this.fields.isAllDay]) {\n eventObj[this.fields.startTime] = (isNullOrUndefined(eventObj[this.fields.startTime])) ? null\n : util.resetTime(new Date(eventObj[this.fields.startTime].getTime()));\n eventObj[this.fields.endTime] = (isNullOrUndefined(eventObj[this.fields.endTime])) ? null\n : util.addDays(util.resetTime(new Date(eventObj[this.fields.endTime].getTime())), 1);\n }\n return { eventData: eventObj, tempData: tempObj };\n };\n EventWindow.prototype.processEventValidation = function (eventObj, alert) {\n var alertType;\n if (isNullOrUndefined(this.parent.editorTemplate)) {\n if (!eventObj[this.fields.startTime] || !eventObj[this.fields.endTime]) {\n this.parent.quickPopup.openValidationError('invalidDateError');\n return true;\n }\n if (eventObj[this.fields.startTime] > eventObj[this.fields.endTime]) {\n this.parent.quickPopup.openValidationError('startEndError');\n return true;\n }\n }\n if (this.recurrenceEditor && this.recurrenceEditor.value && this.recurrenceEditor.value !== '') {\n alertType = this.recurrenceValidation(eventObj[this.fields.startTime], eventObj[this.fields.endTime], alert);\n var isShowAlert = true;\n if (alertType === 'seriesChangeAlert' && this.parent.uiStateValues.isIgnoreOccurrence) {\n isShowAlert = false;\n }\n if (!isNullOrUndefined(alertType) && isShowAlert\n && ((!this.parent.enableRecurrenceValidation && alertType === 'wrongPattern') || this.parent.enableRecurrenceValidation)) {\n this.parent.quickPopup.openRecurrenceValidationAlert(alertType);\n return true;\n }\n }\n return false;\n };\n EventWindow.prototype.processCrudActions = function (eventObj) {\n var _this = this;\n this.parent.uiStateValues.isBlock = false;\n var resourceData = this.getResourceData(eventObj);\n var isResourceEventExpand = (this.parent.activeViewOptions.group.resources.length > 0 ||\n this.parent.resourceCollection.length > 0) && !this.parent.activeViewOptions.group.allowGroupEdit\n && !isNullOrUndefined(resourceData);\n var eventId = this.getEventIdFromForm();\n if (!isNullOrUndefined(eventId)) {\n var eveId_1 = this.parent.eventBase.getEventIDType() === 'string' ? eventId : parseInt(eventId, 10);\n var editedData = this.parent.eventsData.filter(function (data) {\n return data[_this.fields.id] === eveId_1;\n })[0];\n if (isNullOrUndefined(editedData)) {\n editedData = this.parent.blockData.filter(function (data) {\n return data[_this.fields.id] === eveId_1;\n })[0];\n }\n eventObj = extend({}, editedData, eventObj);\n if (eventObj[this.fields.isReadonly]) {\n return false;\n }\n var currentAction = void 0;\n if (!isNullOrUndefined(editedData[this.fields.recurrenceRule])) {\n currentAction = this.parent.currentAction;\n eventObj.Guid = this.parent.activeEventData.event.Guid;\n if (this.parent.currentAction === 'EditOccurrence') {\n if (!eventObj[this.fields.recurrenceID]) {\n eventObj[this.fields.id] = this.parent.eventBase.getEventMaxID();\n eventObj.Guid = this.parent.activeEventData.event.Guid;\n }\n else {\n eveId_1 = eventObj[this.fields.recurrenceID];\n currentAction = null;\n }\n if (this.parent.enableRecurrenceValidation && this.editOccurrenceValidation(eveId_1, eventObj)) {\n return true;\n }\n }\n if (this.parent.currentAction === 'EditSeries' || eventObj[this.fields.id] !== editedData[this.fields.id]) {\n eventObj[this.fields.recurrenceID] = editedData[this.fields.id];\n }\n else if (this.parent.currentAction === 'EditFollowingEvents') {\n eventObj[this.fields.id] = this.parent.eventBase.getEventMaxID();\n eventObj[this.fields.followingID] = editedData[this.fields.id];\n }\n }\n if (isResourceEventExpand) {\n this.resourceSaveEvent(eventObj, 'Save', currentAction);\n }\n else {\n this.parent.saveEvent(eventObj, currentAction);\n }\n }\n else {\n this.parent.currentAction = 'Add';\n if (isResourceEventExpand) {\n this.resourceSaveEvent(eventObj, this.parent.currentAction);\n }\n else {\n eventObj[this.fields.id] = this.parent.eventBase.getEventMaxID();\n this.parent.addEvent(eventObj);\n }\n }\n return this.parent.uiStateValues.isBlock;\n };\n EventWindow.prototype.getResourceData = function (eventObj) {\n var resourceData = null;\n if (!isNullOrUndefined(this.parent.resourceBase) && !isNullOrUndefined(this.parent.resourceBase.resourceCollection)\n && this.parent.resourceBase.resourceCollection.length > 0) {\n var lastResourceData = this.parent.resourceBase.resourceCollection.slice(-1)[0];\n resourceData = eventObj[lastResourceData.field];\n }\n return resourceData;\n };\n EventWindow.prototype.getObjectFromFormData = function (className) {\n var formElement = this.getFormElements(className);\n var eventObj = {};\n for (var _i = 0, formElement_2 = formElement; _i < formElement_2.length; _i++) {\n var currentElement = formElement_2[_i];\n var columnName = currentElement.name || this.getColumnName(currentElement);\n if (!isNullOrUndefined(columnName) && columnName !== '') {\n eventObj[columnName] = this.getValueFromElement(currentElement);\n }\n }\n return eventObj;\n };\n EventWindow.prototype.setDefaultValueToObject = function (eventObj) {\n if (!isNullOrUndefined(eventObj[this.fields.subject])) {\n eventObj[this.fields.subject] = eventObj[this.fields.subject] || this.parent.eventSettings.fields.subject.default\n || this.l10n.getConstant('addTitle');\n }\n if (!isNullOrUndefined(eventObj[this.fields.location])) {\n eventObj[this.fields.location] = eventObj[this.fields.location] || this.parent.eventSettings.fields.location.default;\n }\n if (!isNullOrUndefined(eventObj[this.fields.description])) {\n eventObj[this.fields.description] = eventObj[this.fields.description] || this.parent.eventSettings.fields.description.default;\n }\n };\n EventWindow.prototype.recurrenceValidation = function (startDate, endDate, alert) {\n var alertMessage;\n var recEditor = this.recurrenceEditor;\n var interval = this.getInstance('e-repeat-interval.e-numerictextbox').value;\n if (alert !== this.l10n.getConstant('ok')) {\n var activeEvent = this.parent.activeEventData.event;\n var excludedEvents = [];\n if ((this.parent.currentAction === 'EditSeries' || this.parent.currentAction === 'EditFollowingEvents')\n && !isNullOrUndefined(activeEvent)) {\n var eventStartTime = activeEvent[this.parent.eventFields.startTime];\n var seriesEvents = this.parent.eventBase.getSeriesEvents(this.eventData, eventStartTime);\n if (seriesEvents.length > 0) {\n excludedEvents = this.parent.eventBase.getEditedOccurrences(seriesEvents, eventStartTime);\n }\n else {\n var event_2 = this.parent.eventBase.getEventById(activeEvent[this.parent.eventFields.id]);\n excludedEvents = this.parent.eventBase.getEditedOccurrences([event_2], eventStartTime);\n }\n if (this.parent.currentAction === 'EditSeries'\n && !isNullOrUndefined(this.eventData[this.parent.eventFields.recurrenceException])) {\n excludedEvents.push(this.eventData);\n }\n }\n if (excludedEvents.length > 0) {\n alertMessage = 'seriesChangeAlert';\n }\n if (this.getInstance('e-end-on-left .e-ddl .e-dropdownlist').value === 'until' &&\n this.getInstance('e-end-on-date .e-datepicker').value < startDate) {\n alertMessage = 'wrongPattern';\n }\n if (isNullOrUndefined(alertMessage)) {\n var types = recEditor.value.split(';')[1].split('=')[1].split(',');\n var obj = { 'SU': 0, 'MO': 1, 'TU': 2, 'WE': 3, 'TH': 4, 'FR': 5, 'SA': 6 };\n var temp = [];\n var tempDiff = [];\n var tempValue = void 0;\n switch (recEditor.value.split(';')[0].split('=')[1]) {\n case 'DAILY':\n if ((((endDate.getTime() - startDate.getTime()) / (1000 * 3600)) > (interval * 24))) {\n alertMessage = 'createError';\n }\n break;\n case 'WEEKLY':\n types = recEditor.value.split(';')[1].split('=')[1].split(',');\n for (var index = 0; index < types.length * (interval + 1); index++) {\n temp[index] = (types.length > index) ? obj[types[index]] : temp[index - types.length] + (7 * interval);\n }\n tempValue = temp.sort(function (a, b) { return a - b; });\n for (var index = 1; index < tempValue.length; index++) {\n tempDiff.push(tempValue[index] - tempValue[index - 1]);\n }\n if ((((endDate.getTime() - startDate.getTime()) / (1000 * 3600)) >= Math.min.apply(Math, tempDiff) * 24)\n || isNullOrUndefined(interval)) {\n alertMessage = 'createError';\n }\n break;\n case 'MONTHLY':\n if (endDate.getTime() >= new Date(+startDate).setMonth(startDate.getMonth() + interval)) {\n alertMessage = 'createError';\n }\n break;\n case 'YEARLY':\n if (endDate.getTime() >= new Date(+startDate).setFullYear(startDate.getFullYear() + interval)) {\n alertMessage = 'createError';\n }\n break;\n }\n }\n }\n else {\n if (endDate.getTime() >= new Date(+startDate).setMonth(startDate.getMonth() + interval)) {\n alertMessage = 'createError';\n }\n if (isNullOrUndefined(alertMessage)) {\n this.parent.quickPopup.quickDialog.hide();\n }\n }\n if (isNullOrUndefined(interval)) {\n alertMessage = 'createError';\n }\n return alertMessage;\n };\n EventWindow.prototype.getRecurrenceIndex = function (recColl, event) {\n var recIndex;\n for (var index = 0; index < recColl.length; index++) {\n if (event[this.fields.startTime].valueOf() === recColl[index][this.fields.startTime].valueOf()) {\n recIndex = index;\n break;\n }\n }\n return recIndex;\n };\n EventWindow.prototype.trimAllDay = function (data) {\n if (data[this.fields.isAllDay]) {\n var temp = util.addDays(new Date(+data[this.fields.endTime]), -1).getTime();\n data[this.fields.endTime] = (+data[this.fields.startTime] > temp) ? data[this.fields.endTime] : new Date(temp);\n }\n };\n EventWindow.prototype.editOccurrenceValidation = function (eventId, currentData, editData) {\n var _this = this;\n if (editData === void 0) {\n editData = this.eventData;\n }\n var recurColl = this.parent.getOccurrencesByID(eventId);\n var excludedDatas = this.parent.eventsData.filter(function (data) {\n return data[_this.fields.recurrenceID] === eventId;\n });\n excludedDatas.map(function (data) { return recurColl.push(extend({}, data)); });\n currentData = extend({}, currentData);\n this.trimAllDay(currentData);\n for (var _i = 0, recurColl_1 = recurColl; _i < recurColl_1.length; _i++) {\n var data = recurColl_1[_i];\n this.trimAllDay(data);\n }\n this.parent.eventBase.sortByTime(recurColl);\n var index = this.getRecurrenceIndex(recurColl, editData);\n if (isNullOrUndefined(index)) {\n return false;\n }\n if (index === 0) {\n if (!isNullOrUndefined(recurColl[index + 1])) {\n if (!(util.resetTime(new Date(+recurColl[index + 1][this.fields.startTime])).getTime() >\n util.resetTime(new Date(+currentData[this.fields.endTime])).getTime()) &&\n (util.resetTime(new Date(+recurColl[recurColl.length - 1][this.fields.endTime])).getTime() >=\n util.resetTime(new Date(+currentData[this.fields.startTime])).getTime())) {\n this.parent.quickPopup.openRecurrenceValidationAlert('sameDayAlert');\n return true;\n }\n else if (util.resetTime(new Date(+recurColl[recurColl.length - 1][this.fields.endTime])).getTime() <\n util.resetTime(new Date(+currentData[this.fields.startTime])).getTime()) {\n this.parent.quickPopup.openRecurrenceValidationAlert('occurrenceAlert');\n return true;\n }\n }\n return false;\n }\n else {\n if (index === recurColl.length - 1) {\n if (!(util.resetTime(new Date(+recurColl[index - 1][this.fields.endTime])).getTime() <\n util.resetTime(new Date(+currentData[this.fields.startTime])).getTime()) &&\n (util.resetTime(new Date(+recurColl[(recurColl.length - 1) - index][this.fields.startTime])).getTime() <=\n util.resetTime(new Date(+currentData[this.fields.endTime])).getTime())) {\n this.parent.quickPopup.openRecurrenceValidationAlert('sameDayAlert');\n return true;\n }\n else if (util.resetTime(new Date(+recurColl[(recurColl.length - 1) - index][this.fields.endTime])).getTime() >\n util.resetTime(new Date(+currentData[this.fields.startTime])).getTime()) {\n this.parent.quickPopup.openRecurrenceValidationAlert('occurrenceAlert');\n return true;\n }\n }\n else if (!(((util.resetTime(new Date(+recurColl[index - 1][this.fields.endTime])).getTime() <\n util.resetTime(new Date(+currentData[this.fields.startTime])).getTime()) ||\n (util.resetTime(new Date(+recurColl[0][this.fields.startTime])).getTime() >\n util.resetTime(new Date(+currentData[this.fields.startTime])).getTime())) &&\n ((util.resetTime(new Date(+recurColl[index + 1][this.fields.startTime])).getTime() >\n util.resetTime(new Date(+currentData[this.fields.endTime])).getTime()) ||\n (util.resetTime(new Date(+recurColl[recurColl.length - 1][this.fields.endTime])).getTime() <\n util.resetTime(new Date(+currentData[this.fields.startTime])).getTime())))) {\n this.parent.quickPopup.openRecurrenceValidationAlert('sameDayAlert');\n return true;\n }\n else if ((util.resetTime(new Date(+recurColl[index + 1][this.fields.endTime])).getTime() <\n util.resetTime(new Date(+currentData[this.fields.startTime])).getTime()) ||\n (util.resetTime(new Date(+recurColl[index - 1][this.fields.startTime])).getTime() >\n util.resetTime(new Date(+currentData[this.fields.endTime])).getTime())) {\n this.parent.quickPopup.openRecurrenceValidationAlert('occurrenceAlert');\n return true;\n }\n }\n return false;\n };\n EventWindow.prototype.resourceSaveEvent = function (eventObj, action, currentAction) {\n var _this = this;\n var lastResourceData = this.parent.resourceBase.resourceCollection.slice(-1)[0];\n var resourceData = eventObj[lastResourceData.field];\n resourceData = (resourceData instanceof Array) ? resourceData : [resourceData];\n var lastLevel = this.parent.resourceBase.lastResourceLevel;\n var eventList = [];\n var _loop_2 = function (i) {\n var events = extend({}, eventObj, null, true);\n events[this_2.fields.id] = this_2.parent.eventBase.getEventMaxID();\n var temp = [];\n var addValues = function () {\n if (action === 'Save' && i === resourceData.length - 1) {\n if (temp.length > 0) {\n temp[0][_this.fields.id] = eventObj[_this.fields.id];\n for (var k = 1; k < temp.length; k++) {\n temp[k][_this.fields.id] = _this.parent.eventBase.getEventMaxID(i);\n eventList.push(temp[k]);\n _this.parent.saveEvent(temp[0], currentAction);\n }\n }\n else {\n events[_this.fields.id] = eventObj[_this.fields.id];\n _this.parent.saveEvent(events, currentAction);\n }\n }\n else {\n if (temp.length > 0) {\n for (var j = 0; j < temp.length; j++) {\n temp[j][_this.fields.id] = _this.parent.eventBase.getEventMaxID(j);\n eventList.push(temp[j]);\n }\n }\n else {\n events[_this.fields.id] = _this.parent.eventBase.getEventMaxID(i);\n eventList.push(events);\n }\n }\n };\n if (this_2.parent.activeViewOptions.group.byGroupID && (!isNullOrUndefined(lastLevel))) {\n var lastResource = lastResourceData.dataSource;\n var resCol = this_2.parent.resourceCollection;\n var index = void 0;\n if (resCol.length > 1) {\n index = util.findIndexInData(lastResource, lastResourceData.idField, resourceData[i], events, resCol);\n }\n else {\n index = util.findIndexInData(lastResource, lastResourceData.idField, resourceData[i]);\n }\n if (index < 0) {\n return { value: void 0 };\n }\n var groupId_1 = lastResource[index][lastResourceData.groupIDField];\n var filter = lastLevel.filter(function (obj) { return obj.resourceData[lastResourceData.idField] === resourceData[i]; }).\n filter(function (obj) { return obj.resourceData[lastResourceData.groupIDField] === groupId_1; })[0];\n var groupOrder = filter.groupOrder;\n for (var index_1 = 0; index_1 < this_2.parent.resourceBase.resourceCollection.length; index_1++) {\n var field = this_2.parent.resourceBase.resourceCollection[index_1].field;\n events[field] = (groupOrder[index_1] instanceof Array) ? groupOrder[index_1][0] : groupOrder[index_1];\n }\n addValues();\n }\n else {\n for (var index = 0; index < this_2.parent.resourceBase.resourceCollection.length - 1; index++) {\n var field = this_2.parent.resourceBase.resourceCollection[index].field;\n if (events[field] instanceof Array && events[field].length > 1) {\n for (var k = 0; k < events[field].length; k++) {\n var event_3 = extend({}, events, null, true);\n event_3[field] = eventObj[field][k];\n event_3[lastResourceData.field] = resourceData[i];\n temp.push(event_3);\n }\n }\n else {\n if (temp.length === 0) {\n events[field] = (eventObj[field] instanceof Array) ?\n eventObj[field][0] : eventObj[field];\n events[lastResourceData.field] = resourceData[i];\n }\n else {\n for (var l = 0; l < temp.length; l++) {\n temp[l][field] = (eventObj[field] instanceof Array) ?\n eventObj[field][0] : eventObj[field];\n }\n }\n }\n }\n events[lastResourceData.field] = resourceData[i];\n addValues();\n }\n };\n var this_2 = this;\n for (var i = 0; i < resourceData.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n if (eventList.length > 0) {\n for (var _i = 0, eventList_1 = eventList; _i < eventList_1.length; _i++) {\n var event_4 = eventList_1[_i];\n event_4[this.fields.recurrenceException] = null;\n event_4[this.fields.recurrenceID] = null;\n }\n this.parent.addEvent(eventList);\n }\n };\n EventWindow.prototype.getEventIdFromForm = function () {\n return this.element.querySelector('.' + cls.FORM_CLASS).getAttribute('data-id');\n };\n EventWindow.prototype.getFormElements = function (className) {\n var elements = [];\n if (className === cls.EVENT_WINDOW_DIALOG_CLASS) {\n elements = [].slice.call(this.element.querySelectorAll('.' + EVENT_FIELD));\n }\n else {\n elements = [].slice.call(this.parent.element.querySelectorAll('.' + className + ' .' + EVENT_FIELD));\n }\n return elements;\n };\n EventWindow.prototype.getValueFromElement = function (element) {\n var value;\n if (element.classList.contains('e-datepicker')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-datetimepicker')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-dropdownlist')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-multiselect')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-checkbox')) {\n value = element.ej2_instances[0].checked;\n }\n else {\n if (element.type === 'checkbox') {\n value = element.checked;\n }\n else {\n value = SanitizeHtmlHelper.sanitize(element.value);\n }\n }\n return value;\n };\n EventWindow.prototype.setValueToElement = function (element, value) {\n if (element.classList.contains('e-datepicker')) {\n var instance = element.ej2_instances[0];\n instance.value = value;\n instance.dataBind();\n }\n else if (element.classList.contains('e-datetimepicker')) {\n var instance = element.ej2_instances[0];\n if (instance.element.classList.contains(cls.EVENT_WINDOW_START_CLASS)) {\n this.eventWindowTime.startTime = new Date('' + value);\n }\n else {\n this.eventWindowTime.endTime = new Date('' + value);\n }\n instance.value = value;\n instance.dataBind();\n }\n else if (element.classList.contains('e-dropdownlist')) {\n var instance = element.ej2_instances[0];\n instance.value = value;\n instance.dataBind();\n }\n else if (element.classList.contains('e-multiselect')) {\n var instance = element.ej2_instances[0];\n instance.value = [];\n instance.value = ((value instanceof Array) ? value : [value]);\n instance.dataBind();\n }\n else if (element.classList.contains('e-checkbox')) {\n var instance = element.ej2_instances[0];\n instance.checked = value;\n instance.dataBind();\n }\n else {\n if (element.type !== 'checkbox') {\n element.value = value || '';\n }\n else {\n element.checked = value;\n }\n }\n };\n EventWindow.prototype.setDefaultValueToElement = function (element) {\n if (element.classList.contains('e-datepicker')) {\n var instance = element.ej2_instances[0];\n instance.value = this.parent.getCurrentTime();\n instance.dataBind();\n }\n else if (element.classList.contains('e-datetimepicker')) {\n var instance = element.ej2_instances[0];\n var dateValue = this.parent.getCurrentTime();\n this.eventWindowTime = { startTime: dateValue, endTime: dateValue };\n instance.value = dateValue;\n instance.dataBind();\n }\n else if (element.classList.contains('e-dropdownlist')) {\n var instance = element.ej2_instances[0];\n instance.value = null;\n instance.dataBind();\n }\n else if (element.classList.contains('e-multiselect')) {\n var instance = element.ej2_instances[0];\n instance.value = [];\n instance.dataBind();\n }\n else if (element.classList.contains('e-checkbox')) {\n var instance = element.ej2_instances[0];\n instance.checked = false;\n instance.dataBind();\n }\n else {\n if (element.type === 'checkbox') {\n element.checked = false;\n }\n else {\n element.value = '';\n }\n }\n };\n EventWindow.prototype.getInstance = function (className) {\n var element = this.element.querySelector('.' + className);\n return element ? element.ej2_instances[0] : null;\n };\n EventWindow.prototype.eventDelete = function (event) {\n if (this.isEnterKey) {\n this.isEnterKey = false;\n return;\n }\n switch (this.parent.currentAction) {\n case 'EditOccurrence':\n if (!isNullOrUndefined(this.parent.activeEventData.event[this.parent.eventFields.recurrenceRule])) {\n this.parent.currentAction = 'DeleteOccurrence';\n }\n else {\n this.parent.currentAction = 'Delete';\n }\n break;\n case 'EditSeries':\n this.parent.currentAction = 'DeleteSeries';\n break;\n case 'Save':\n this.parent.currentAction = 'Delete';\n break;\n case 'EditFollowingEvents':\n if (!isNullOrUndefined(this.parent.activeEventData.event[this.parent.eventFields.recurrenceRule])) {\n this.parent.currentAction = 'DeleteFollowingEvents';\n }\n break;\n }\n this.dialogEvent = event;\n this.isCrudAction = false;\n this.dialogObject.hide();\n this.parent.quickPopup.openDeleteAlert();\n };\n EventWindow.prototype.getRecurrenceEditorInstance = function () {\n if (this.parent.isAdaptive && !this.repeatDialogObject) {\n this.renderRepeatDialog();\n }\n return this.recurrenceEditor;\n };\n EventWindow.prototype.destroyComponents = function () {\n var formElements = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n for (var _i = 0, formElements_3 = formElements; _i < formElements_3.length; _i++) {\n var element = formElements_3[_i];\n var instance = void 0;\n if (element.classList.contains('e-datetimepicker')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-datepicker')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-checkbox')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-dropdownlist')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-multiselect')) {\n instance = element.ej2_instances;\n }\n if (instance && instance[0]) {\n instance[0].destroy();\n }\n }\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n };\n EventWindow.prototype.destroy = function (isIgnore) {\n if (this.parent && !this.parent.isDestroyed) {\n this.parent.resetTemplates(['editorTemplate']);\n }\n this.destroyComponents();\n if (this.recurrenceEditor) {\n this.recurrenceEditor.destroy();\n this.recurrenceEditor = null;\n }\n if (this.fieldValidator) {\n this.fieldValidator.destroy();\n this.fieldValidator = null;\n }\n if (this.repeatDialogObject) {\n this.repeatDialogObject.destroy();\n this.repeatDialogObject = null;\n }\n if (this.dialogObject) {\n if (this.dialogObject.element) {\n EventHandler.remove(this.dialogObject.element, 'keydown', this.preventEventSave);\n }\n this.dialogObject.destroy();\n this.dialogObject = null;\n }\n if (this.element) {\n remove(this.element);\n this.element = null;\n }\n if (!isIgnore) {\n this.l10n = null;\n this.parent = null;\n this.fields = null;\n this.buttonObj = null;\n this.repeatStatus = null;\n this.eventWindowTime = null;\n }\n };\n return EventWindow;\n}());\nexport { EventWindow };\n","import { append, addClass, remove, isNullOrUndefined, setStyleAttribute, createElement } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\n/**\n * Virtual Scroll\n */\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(parent) {\n this.translateY = 0;\n this.itemSize = 60;\n this.bufferCount = 3;\n this.renderedLength = 0;\n this.averageRowHeight = 0;\n this.isScrollHeightNull = true;\n this.parent = parent;\n this.addEventListener();\n }\n VirtualScroll.prototype.addEventListener = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.virtualScroll, this.virtualScrolling, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.virtualScroll, this.virtualScrolling);\n };\n VirtualScroll.prototype.getRenderedCount = function () {\n this.setItemSize();\n return Math.ceil(this.parent.element.clientHeight / this.itemSize) + this.bufferCount;\n };\n VirtualScroll.prototype.setTranslateValue = function () {\n var resWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var eventWrap = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n var timeIndicator = this.parent.element.querySelector('.' + cls.CURRENT_TIMELINE_CLASS);\n this.renderVirtualTrackHeight(conWrap, resWrap);\n this.setTranslate(resWrap, conWrap, eventWrap, timeIndicator);\n };\n VirtualScroll.prototype.renderVirtualTrackHeight = function (contentWrap, resourceWrap) {\n this.parent.resourceBase.setExpandedResources();\n if (this.isScrollHeightNull) {\n var wrap = createElement('div', { className: cls.VIRTUAL_TRACK_CLASS });\n var resWrap = [].slice.call((resourceWrap).querySelectorAll('table td'));\n var startIndex_1 = parseInt(resWrap[0].getAttribute('data-group-index'), 10);\n var endIndex_1 = parseInt(resWrap[resWrap.length - 1].getAttribute('data-group-index'), 10);\n this.parent.resourceBase.renderedResources = this.parent.resourceBase.expandedResources.filter(function (resource) {\n return (resource.groupIndex >= startIndex_1 && resource.groupIndex <= endIndex_1);\n });\n this.setItemSize();\n wrap.style.height = (this.parent.resourceBase.expandedResources.length * this.itemSize) + 'px';\n this.isScrollHeightNull = false;\n var virtual = this.parent.element.querySelector('.' + cls.VIRTUAL_TRACK_CLASS);\n if (!isNullOrUndefined(virtual)) {\n remove(virtual);\n }\n contentWrap.appendChild(wrap);\n }\n };\n VirtualScroll.prototype.renderVirtualTrack = function (contentWrap) {\n var wrap = createElement('div', { className: cls.VIRTUAL_TRACK_CLASS });\n wrap.style.height = (this.parent.resourceBase.expandedResources.length * this.itemSize) + 'px';\n contentWrap.appendChild(wrap);\n };\n VirtualScroll.prototype.updateVirtualScrollHeight = function () {\n var virtual = this.parent.element.querySelector('.' + cls.VIRTUAL_TRACK_CLASS);\n var lastResourceIndex = this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].groupIndex;\n var lastRenderIndex = this.parent.resourceBase.renderedResources[this.parent.resourceBase.renderedResources.length - 1].groupIndex;\n if (lastRenderIndex !== lastResourceIndex) {\n var conTable = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);\n this.renderedLength = conTable.querySelector('tbody').children.length;\n virtual.style.height = (conTable.offsetHeight + (this.parent.resourceBase.expandedResources.length - (this.renderedLength)) *\n conTable.offsetHeight / this.renderedLength) + 'px';\n }\n else {\n virtual.style.height = '';\n }\n this.averageRowHeight = virtual.offsetHeight / this.parent.resourceBase.expandedResources.length;\n };\n VirtualScroll.prototype.updateVirtualTrackHeight = function (wrap) {\n var resourceCount = this.parent.resourceBase.renderedResources.length;\n if (resourceCount !== this.getRenderedCount()) {\n wrap.style.height = this.parent.element.querySelector('.e-content-wrap').clientHeight + 'px';\n var resWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var eventWrap = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n this.translateY = 0;\n this.setTranslate(resWrap, conWrap, eventWrap);\n }\n else {\n var lastRenderIndex = this.parent.resourceBase.renderedResources[resourceCount - 1].groupIndex;\n var lastCollIndex = this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].groupIndex;\n var renderedResCount = resourceCount + (lastCollIndex - lastRenderIndex);\n renderedResCount = (renderedResCount > this.parent.resourceBase.expandedResources.length) ?\n this.parent.resourceBase.expandedResources.length : renderedResCount;\n wrap.style.height = (renderedResCount * this.itemSize) + 'px';\n }\n };\n VirtualScroll.prototype.setItemSize = function () {\n this.itemSize = util.getElementHeightFromClass(this.parent.activeView.element, cls.WORK_CELLS_CLASS) || this.itemSize;\n };\n VirtualScroll.prototype.renderEvents = function () {\n this.setTabIndex();\n this.parent.refreshEvents(false);\n this.parent.notify(events.contentReady, {});\n this.parent.hideSpinner();\n };\n VirtualScroll.prototype.virtualScrolling = function () {\n var _this = this;\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide();\n this.parent.quickPopup.morePopup.hide();\n }\n var resWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var eventWrap = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n var timeIndicator = this.parent.element.querySelector('.' + cls.CURRENT_TIMELINE_CLASS);\n var conTable = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);\n this.renderedLength = resWrap.querySelector('tbody').children.length;\n var firstTDIndex = parseInt(resWrap.querySelector('tbody td').getAttribute('data-group-index'), 10);\n var scrollHeight = this.parent.rowAutoHeight ?\n (conTable.offsetHeight - conWrap.offsetHeight) : this.bufferCount * this.itemSize;\n addClass([conWrap], 'e-transition');\n var resCollection = [];\n if ((conWrap.scrollTop) - this.translateY < 0) {\n resCollection = this.upScroll(conWrap, firstTDIndex);\n }\n else if (conWrap.scrollTop - this.translateY > scrollHeight) {\n resCollection = this.downScroll(conWrap, firstTDIndex);\n }\n if (!isNullOrUndefined(resCollection) && resCollection.length > 0) {\n this.parent.showSpinner();\n var selectedEle = this.parent.getSelectedElements();\n this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;\n this.updateContent(resWrap, conWrap, eventWrap, resCollection);\n this.setTranslate(resWrap, conWrap, eventWrap, timeIndicator);\n if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj.action === 'drag') {\n this.parent.dragAndDropModule.navigationWrapper();\n }\n window.clearTimeout(this.timeValue);\n this.timeValue = window.setTimeout(function () { _this.renderEvents(); }, 250);\n }\n };\n VirtualScroll.prototype.upScroll = function (conWrap, firstTDIndex) {\n var index = 0;\n index = (~~(conWrap.scrollTop / this.itemSize) + Math.ceil(conWrap.clientHeight / this.itemSize)) - this.renderedLength;\n if (this.parent.rowAutoHeight) {\n index = (index > firstTDIndex) ? firstTDIndex - this.bufferCount : index;\n }\n index = (index > 0) ? index : 0;\n var prevSetCollection = this.getBufferCollection(index, index + this.renderedLength);\n this.parent.resourceBase.renderedResources = prevSetCollection;\n if (firstTDIndex === 0) {\n this.translateY = conWrap.scrollTop;\n }\n else {\n var height = (this.parent.rowAutoHeight) ? this.averageRowHeight : this.itemSize;\n height = (height > 0) ? height : this.itemSize;\n this.translateY = (conWrap.scrollTop - (this.bufferCount * height) > 0) ?\n conWrap.scrollTop - (this.bufferCount * height) : 0;\n }\n return prevSetCollection;\n };\n VirtualScroll.prototype.downScroll = function (conWrap, firstTDIndex) {\n var lastResource = this.parent.resourceBase.\n renderedResources[this.parent.resourceBase.renderedResources.length - 1].groupIndex;\n var lastResourceIndex = this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].groupIndex;\n if (lastResource === lastResourceIndex) {\n return null;\n }\n var nextSetResIndex = 0;\n nextSetResIndex = ~~(conWrap.scrollTop / this.itemSize);\n if (this.parent.rowAutoHeight) {\n nextSetResIndex = ~~((conWrap.scrollTop - this.translateY) / this.averageRowHeight) + firstTDIndex;\n nextSetResIndex = (nextSetResIndex > firstTDIndex + this.bufferCount) ? nextSetResIndex : firstTDIndex + this.bufferCount;\n }\n var lastIndex = nextSetResIndex + this.renderedLength;\n lastIndex = (lastIndex > this.parent.resourceBase.expandedResources.length) ?\n nextSetResIndex + (this.parent.resourceBase.expandedResources.length - nextSetResIndex) : lastIndex;\n var nextSetCollection = this.getBufferCollection(lastIndex - this.renderedLength, lastIndex);\n this.translateY = conWrap.scrollTop;\n return nextSetCollection;\n };\n VirtualScroll.prototype.updateContent = function (resWrap, conWrap, eventWrap, resCollection) {\n var renderedLength = resWrap.querySelector('tbody').children.length;\n if (document.activeElement && document.activeElement.classList.contains(cls.RESOURCE_CELLS_CLASS)) {\n this.isResourceCell = true;\n this.parent.element.focus();\n }\n for (var i = 0; i < renderedLength; i++) {\n remove(resWrap.querySelector('tbody tr'));\n remove(conWrap.querySelector('tbody tr'));\n remove(eventWrap.querySelector('div'));\n }\n this.parent.resourceBase.renderedResources = resCollection;\n var resourceRows = this.parent.resourceBase.getContentRows(resCollection, true);\n var contentRows = this.parent.activeView.getContentRows();\n var eventRows = this.parent.activeView.getEventRows(resCollection.length);\n append(resourceRows, resWrap.querySelector('tbody'));\n append(contentRows, conWrap.querySelector('tbody'));\n append(eventRows, eventWrap);\n };\n VirtualScroll.prototype.getBufferCollection = function (startIndex, endIndex) {\n return this.parent.resourceBase.expandedResources.slice(startIndex, endIndex);\n };\n VirtualScroll.prototype.setTranslate = function (resWrap, conWrap, eventWrap, timeIndicator) {\n setStyleAttribute(resWrap.querySelector('table'), { transform: \"translateY(\" + this.translateY + \"px)\" });\n setStyleAttribute(conWrap.querySelector('table'), { transform: \"translateY(\" + this.translateY + \"px)\" });\n setStyleAttribute(eventWrap, { transform: \"translateY(\" + this.translateY + \"px)\" });\n if (!isNullOrUndefined(timeIndicator)) {\n setStyleAttribute(timeIndicator, { transform: \"translateY(\" + this.translateY + \"px)\" });\n }\n };\n VirtualScroll.prototype.updateFocusedWorkCell = function () {\n if (this.focusedEle) {\n var date = parseInt(this.focusedEle.getAttribute('data-date'), 10);\n var groupIndex = parseInt(this.focusedEle.getAttribute('data-group-index'), 10);\n var ele = this.parent.element.querySelector(\".\" + cls.WORK_CELLS_CLASS + \"[data-date=\\\"\" + date + \"\\\"][data-group-index=\\\"\" + groupIndex + \"\\\"]\");\n if (ele) {\n this.parent.addSelectedClass([ele], ele, true);\n }\n this.focusedEle = null;\n }\n };\n VirtualScroll.prototype.setTabIndex = function () {\n var resColWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n var resCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.RESOURCE_CELLS_CLASS));\n if (resCells && resColWrap) {\n resCells.forEach(function (element) {\n if (element.getBoundingClientRect().top >= resColWrap.getBoundingClientRect().top) {\n element.setAttribute('tabindex', '0');\n }\n });\n }\n var focusResCell = this.parent.element.querySelector(\".\" + cls.RESOURCE_CELLS_CLASS + \"[tabindex=\\\"\" + 0 + \"\\\"]\");\n if (this.isResourceCell && focusResCell) {\n focusResCell.focus();\n this.isResourceCell = false;\n }\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","import { isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { VirtualScroll } from '../actions/virtual-scroll';\nimport { EventTooltip } from '../popups/event-tooltip';\nimport * as cls from '../base/css-constant';\n/**\n * Schedule DOM rendering\n */\nvar Render = /** @class */ (function () {\n function Render(parent) {\n this.parent = parent;\n }\n Render.prototype.render = function (viewName, isDataRefresh) {\n if (isDataRefresh === void 0) { isDataRefresh = true; }\n this.initializeLayout(viewName);\n if (this.parent.activeView && isDataRefresh) {\n this.parent.crudModule.refreshDataManager();\n }\n };\n Render.prototype.initializeLayout = function (viewName) {\n if (this.parent.activeView) {\n var templates = [\n 'cellTemplate', 'eventTemplate', 'tooltipTemplate', 'majorSlotTemplate', 'minorSlotTemplate',\n 'headerTooltipTemplate', 'dateHeaderTemplate', 'dayHeaderTemplate', 'mothHeaderTemplate',\n 'headerIndentTemplate', 'resourceHeaderTemplate', 'cellHeaderTemplate'\n ];\n this.parent.resetTemplates(templates);\n this.parent.activeView.removeEventListener();\n this.parent.activeView.destroy();\n }\n switch (viewName) {\n case 'Day':\n this.parent.activeView = this.parent.dayModule;\n break;\n case 'Week':\n this.parent.activeView = this.parent.weekModule;\n break;\n case 'WorkWeek':\n this.parent.activeView = this.parent.workWeekModule;\n break;\n case 'Month':\n this.parent.activeView = this.parent.monthModule;\n break;\n case 'Year':\n this.parent.activeView = this.parent.yearModule;\n break;\n case 'Agenda':\n this.parent.activeView = this.parent.agendaModule;\n break;\n case 'MonthAgenda':\n this.parent.activeView = this.parent.monthAgendaModule;\n break;\n case 'TimelineDay':\n this.parent.activeView = this.parent.timelineViewsModule;\n this.parent.activeView.viewClass = 'e-timeline-day-view';\n break;\n case 'TimelineWorkWeek':\n this.parent.activeView = this.parent.timelineViewsModule;\n this.parent.activeView.viewClass = 'e-timeline-work-week-view';\n break;\n case 'TimelineWeek':\n this.parent.activeView = this.parent.timelineViewsModule;\n this.parent.activeView.viewClass = 'e-timeline-week-view';\n break;\n case 'TimelineMonth':\n this.parent.activeView = this.parent.timelineMonthModule;\n break;\n case 'TimelineYear':\n this.parent.activeView = this.parent.timelineYearModule;\n break;\n }\n if (isNullOrUndefined(this.parent.activeView)) {\n var firstView = this.parent.viewCollections[0].option;\n if (firstView) {\n this.parent.setProperties({ currentView: firstView }, true);\n if (this.parent.headerModule) {\n this.parent.headerModule.updateActiveView();\n this.parent.headerModule.setCalendarView();\n }\n return this.initializeLayout(firstView);\n }\n throw Error('Inject required modules');\n }\n this.parent.activeView.viewIndex = this.parent.viewIndex;\n this.updateLabelText(viewName);\n this.parent.activeView.addEventListener();\n this.parent.activeView.getRenderDates();\n this.parent.uiStateValues.isGroupAdaptive = this.parent.activeViewOptions.group.resources.length > 0 &&\n (this.parent.enableAdaptiveUI && !this.parent.isAdaptive ||\n this.parent.isAdaptive && this.parent.activeViewOptions.group.enableCompactView);\n if (this.parent.virtualScrollModule) {\n this.parent.virtualScrollModule.destroy();\n this.parent.virtualScrollModule = null;\n }\n if (this.parent.currentView.indexOf('Timeline') !== -1 && this.parent.currentView.indexOf('Year') === -1\n && this.parent.activeViewOptions.allowVirtualScrolling\n && this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n this.parent.virtualScrollModule = new VirtualScroll(this.parent);\n this.parent.uiStateValues.top = 0;\n }\n this.updateHeader();\n this.parent.activeView.renderLayout(cls.CURRENT_PANEL_CLASS);\n this.parent.renderTemplates();\n if (this.parent.eventTooltip) {\n this.parent.eventTooltip.destroy();\n this.parent.eventTooltip = null;\n }\n if (this.parent.eventSettings.enableTooltip || (this.parent.activeViewOptions.group.resources.length > 0\n && this.parent.activeViewOptions.group.headerTooltipTemplate)) {\n this.parent.eventTooltip = new EventTooltip(this.parent);\n }\n };\n Render.prototype.updateHeader = function () {\n if (this.parent.headerModule) {\n this.parent.headerModule.setDayOfWeek(this.parent.activeViewOptions.firstDayOfWeek);\n if (this.parent.activeViewOptions.readonly) {\n addClass([this.parent.element], cls.READ_ONLY);\n }\n else if (this.parent.element.classList.contains(cls.READ_ONLY)) {\n removeClass([this.parent.element], cls.READ_ONLY);\n }\n this.parent.headerModule.updateDateRange(this.parent.activeView.getDateRangeText());\n this.parent.headerModule.updateHeaderItems('remove');\n }\n };\n Render.prototype.updateLabelText = function (view) {\n var content = this.parent.activeView.getLabelText(view);\n this.parent.element.setAttribute('role', 'main');\n this.parent.element.setAttribute('aria-label', content);\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, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that represents the configuration of working hours related options of scheduler.\n */\nvar WorkHours = /** @class */ (function (_super) {\n __extends(WorkHours, _super);\n function WorkHours() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], WorkHours.prototype, \"highlight\", void 0);\n __decorate([\n Property('09:00')\n ], WorkHours.prototype, \"start\", void 0);\n __decorate([\n Property('18:00')\n ], WorkHours.prototype, \"end\", void 0);\n return WorkHours;\n}(ChildProperty));\nexport { WorkHours };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * A class that represents the configuration of options related to timescale on scheduler.\n */\nvar TimeScale = /** @class */ (function (_super) {\n __extends(TimeScale, _super);\n function TimeScale() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], TimeScale.prototype, \"enable\", void 0);\n __decorate([\n Property(60)\n ], TimeScale.prototype, \"interval\", void 0);\n __decorate([\n Property(2)\n ], TimeScale.prototype, \"slotCount\", void 0);\n __decorate([\n Property()\n ], TimeScale.prototype, \"minorSlotTemplate\", void 0);\n __decorate([\n Property()\n ], TimeScale.prototype, \"majorSlotTemplate\", void 0);\n return TimeScale;\n}(ChildProperty));\nexport { TimeScale };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * A class that defines the template options available to customize the quick popup of scheduler.\n */\nvar QuickInfoTemplates = /** @class */ (function (_super) {\n __extends(QuickInfoTemplates, _super);\n function QuickInfoTemplates() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], QuickInfoTemplates.prototype, \"templateType\", void 0);\n __decorate([\n Property()\n ], QuickInfoTemplates.prototype, \"header\", void 0);\n __decorate([\n Property()\n ], QuickInfoTemplates.prototype, \"content\", void 0);\n __decorate([\n Property()\n ], QuickInfoTemplates.prototype, \"footer\", void 0);\n return QuickInfoTemplates;\n}(ChildProperty));\nexport { QuickInfoTemplates };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * A class that represents the header rows related configurations on timeline views.\n */\nvar HeaderRows = /** @class */ (function (_super) {\n __extends(HeaderRows, _super);\n function HeaderRows() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], HeaderRows.prototype, \"option\", void 0);\n __decorate([\n Property()\n ], HeaderRows.prototype, \"template\", void 0);\n return HeaderRows;\n}(ChildProperty));\nexport { HeaderRows };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-len */\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { getRecurrenceStringFromDate, generate } from '../../recurrence-editor/date-generator';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\n/**\n * Schedule CRUD operations\n */\nvar Crud = /** @class */ (function () {\n function Crud(parent) {\n this.parent = parent;\n this.crudObj = { sourceEvent: null, targetEvent: null, isCrudAction: false };\n }\n Crud.prototype.getQuery = function () {\n var start = this.parent.activeView.startDate();\n var end = this.parent.activeView.endDate();\n return this.parent.dataModule.generateQuery(start, end);\n };\n Crud.prototype.getTable = function () {\n if (this.parent.eventSettings.query) {\n var query = this.parent.eventSettings.query.clone();\n return query.fromTable;\n }\n return null;\n };\n Crud.prototype.refreshDataManager = function () {\n var _this = this;\n if (!this.parent.activeView) {\n return;\n }\n var start = this.parent.activeView.startDate();\n var end = this.parent.activeView.endDate();\n var dataManager = this.parent.dataModule.getData(this.parent.dataModule.generateQuery(start, end));\n dataManager.then(function (e) { return _this.dataManagerSuccess(e); }).catch(function (e) { return _this.dataManagerFailure(e); });\n };\n Crud.prototype.dataManagerSuccess = function (e) {\n var _this = this;\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.parent.trigger(events.dataBinding, e, function (args) {\n var resultData = extend([], args.result, null, true);\n _this.parent.eventsData = resultData.filter(function (data) { return !data[_this.parent.eventFields.isBlock]; });\n _this.parent.blockData = resultData.filter(function (data) { return data[_this.parent.eventFields.isBlock]; });\n _this.parent.refreshEvents(false);\n if (_this.parent.dragAndDropModule && _this.parent.dragAndDropModule.actionObj.action === 'drag') {\n _this.parent.dragAndDropModule.navigationWrapper();\n }\n _this.parent.trigger(events.dataBound, null, function () {\n _this.parent.hideSpinner();\n if (_this.parent.isPrinting) {\n _this.parent.notify(events.print, {});\n }\n });\n });\n };\n Crud.prototype.dataManagerFailure = function (e) {\n var _this = this;\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.parent.trigger(events.actionFailure, { error: e }, function () { return _this.parent.hideSpinner(); });\n };\n Crud.prototype.refreshData = function (args) {\n var _this = this;\n var actionArgs = {\n requestType: args.requestType, cancel: false, data: args.data,\n addedRecords: args.editParams.addedRecords, changedRecords: args.editParams.changedRecords,\n deletedRecords: args.editParams.deletedRecords\n };\n if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj && this.parent.dragAndDropModule.actionObj.element) {\n this.parent.dragAndDropModule.actionObj.element.style.display = 'none';\n }\n if (this.parent.resizeModule && this.parent.resizeModule.actionObj && this.parent.resizeModule.actionObj.element) {\n this.parent.resizeModule.actionObj.element.style.display = 'none';\n }\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.activeViewOptions.group.allowGroupEdit\n && !this.parent.rowAutoHeight && !this.parent.virtualScrollModule && this.parent.activeViewOptions.group.byGroupID) {\n if (args.requestType === 'eventCreated' || args.requestType === 'eventRemoved') {\n this.crudObj.isCrudAction = true;\n this.crudObj.sourceEvent = [];\n var crudData = args.data instanceof Array ? (args.data.length === 0 &&\n args.requestType === 'eventRemoved' ? args.editParams.deletedRecords : args.data) :\n ((typeof args.data === 'string' || typeof args.data === 'number') && args.requestType === 'eventRemoved') ?\n args.editParams.deletedRecords : [args.data];\n var _loop_1 = function (data) {\n this_1.crudObj.isCrudAction = !(args.requestType === 'eventRemoved' && !isNullOrUndefined(data.parent));\n var groupIndex = this_1.parent.eventBase.getGroupIndexFromEvent(data);\n if (groupIndex > -1 && this_1.parent.crudModule.crudObj.sourceEvent.filter(function (tdData) { return tdData.groupIndex === groupIndex; }).length === 0\n && this_1.crudObj.isCrudAction) {\n this_1.crudObj.sourceEvent.push(this_1.parent.resourceBase.lastResourceLevel[groupIndex]);\n }\n };\n var this_1 = this;\n for (var _i = 0, crudData_1 = crudData; _i < crudData_1.length; _i++) {\n var data = crudData_1[_i];\n _loop_1(data);\n }\n this.crudObj.targetEvent = this.crudObj.sourceEvent;\n }\n }\n if (this.parent.dataModule.dataManager.dataSource.offline) {\n this.parent.trigger(events.actionComplete, actionArgs, function (offlineArgs) {\n if (!offlineArgs.cancel) {\n _this.refreshDataManager();\n }\n });\n }\n else {\n args.promise.then(function () {\n if (!_this.parent || _this.parent && _this.parent.isDestroyed) {\n return;\n }\n _this.parent.trigger(events.actionComplete, actionArgs, function (onlineArgs) {\n if (!onlineArgs.cancel) {\n _this.refreshDataManager();\n }\n });\n }).catch(function (e) {\n if (!_this.parent || _this.parent && _this.parent.isDestroyed) {\n return;\n }\n _this.parent.trigger(events.actionFailure, { error: e });\n });\n }\n };\n Crud.prototype.addEvent = function (eventData) {\n var _this = this;\n if (this.parent.eventSettings.allowAdding && !this.parent.activeViewOptions.readonly) {\n if (!this.isBlockEvent(eventData) && this.parent.eventBase.isBlockRange(eventData)) {\n this.parent.quickPopup.openValidationError('blockAlert', eventData);\n return;\n }\n var addEvents = (eventData instanceof Array) ? eventData : [eventData];\n var args = {\n requestType: 'eventCreate', cancel: false, data: addEvents,\n addedRecords: addEvents, changedRecords: [], deletedRecords: []\n };\n this.parent.trigger(events.actionBegin, args, function (addArgs) {\n if (!addArgs.cancel) {\n var fields = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n var promise = void 0;\n if (addArgs.addedRecords instanceof Array) {\n for (var _i = 0, _a = addArgs.addedRecords; _i < _a.length; _i++) {\n var event_1 = _a[_i];\n event_1 = _this.parent.eventBase.updateEventDateTime(event_1);\n var eventData_1 = extend({}, _this.parent.eventBase.processTimezone(event_1, true), null, true);\n editParams.addedRecords.push(eventData_1);\n }\n promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());\n }\n else {\n var event_2 = _this.parent.eventBase.processTimezone(addArgs.addedRecords, true);\n editParams.addedRecords.push(event_2);\n promise = _this.parent.dataModule.dataManager.insert(event_2, _this.getTable(), _this.getQuery());\n }\n var crudArgs = {\n requestType: 'eventCreated', cancel: false, data: addArgs.addedRecords, promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n }\n };\n Crud.prototype.saveEvent = function (eventData, action) {\n var _this = this;\n if (this.parent.eventSettings.allowEditing && !this.parent.activeViewOptions.readonly) {\n if (this.parent.currentAction !== 'EditFollowingEvents' && !this.isBlockEvent(eventData)\n && this.parent.eventBase.isBlockRange(eventData)) {\n this.parent.quickPopup.openValidationError('blockAlert', eventData);\n return;\n }\n this.parent.currentAction = action;\n if (action) {\n switch (action) {\n case 'Save':\n this.processSave(eventData);\n break;\n case 'EditOccurrence':\n this.processOccurrences(eventData, action);\n break;\n case 'EditFollowingEvents':\n this.processFollowSeries(eventData, action);\n break;\n case 'EditSeries':\n this.processEntireSeries(eventData, action);\n break;\n }\n }\n else {\n var updateEvents = (eventData instanceof Array) ? eventData : [eventData];\n var args = {\n requestType: 'eventChange', cancel: false, data: eventData,\n addedRecords: [], changedRecords: updateEvents, deletedRecords: []\n };\n this.parent.trigger(events.actionBegin, args, function (saveArgs) {\n if (!saveArgs.cancel) {\n var promise = void 0;\n var fields = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n if (saveArgs.changedRecords instanceof Array) {\n for (var _i = 0, _a = saveArgs.changedRecords; _i < _a.length; _i++) {\n var event_3 = _a[_i];\n event_3 = _this.parent.eventBase.updateEventDateTime(event_3);\n var eventData_2 = extend({}, _this.parent.eventBase.processTimezone(event_3, true), null, true);\n editParams.changedRecords.push(eventData_2);\n }\n promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());\n }\n else {\n var event_4 = _this.parent.eventBase.processTimezone(saveArgs.changedRecords, true);\n editParams.changedRecords.push(event_4);\n promise = _this.parent.dataModule.dataManager.update(fields.id, event_4, _this.getTable(), _this.getQuery());\n }\n var crudArgs = {\n requestType: 'eventChanged', cancel: false,\n data: saveArgs.changedRecords, promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n }\n }\n };\n Crud.prototype.deleteEvent = function (eventData, action) {\n var _this = this;\n if (this.parent.eventSettings.allowDeleting && !this.parent.activeViewOptions.readonly) {\n this.parent.currentAction = action;\n var deleteEvents = [];\n if (typeof eventData === 'string' || typeof eventData === 'number') {\n deleteEvents = this.parent.eventsData.filter(function (eventObj) {\n return eventObj[_this.parent.eventFields.id] === eventData;\n });\n }\n else {\n deleteEvents = (eventData instanceof Array ? eventData : [eventData]);\n }\n if (action) {\n switch (action) {\n case 'Delete':\n this.processDelete(deleteEvents);\n break;\n case 'DeleteOccurrence':\n this.processOccurrences(deleteEvents, action);\n break;\n case 'DeleteFollowingEvents':\n this.processFollowSeries(deleteEvents, action);\n break;\n case 'DeleteSeries':\n this.processEntireSeries(deleteEvents, action);\n break;\n }\n }\n else {\n var args = {\n requestType: 'eventRemove', cancel: false, data: eventData,\n addedRecords: [], changedRecords: [], deletedRecords: deleteEvents\n };\n this.parent.trigger(events.actionBegin, args, function (deleteArgs) {\n if (!deleteArgs.cancel) {\n var promise = void 0;\n var fields = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n if (deleteArgs.deletedRecords.length > 1) {\n editParams.deletedRecords = editParams.deletedRecords.concat(deleteArgs.deletedRecords);\n promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());\n }\n else {\n editParams.deletedRecords.push(deleteArgs.deletedRecords[0]);\n promise = _this.parent.dataModule.dataManager.remove(fields.id, deleteArgs.deletedRecords[0], _this.getTable(), _this.getQuery());\n }\n _this.parent.eventBase.selectWorkCellByTime(deleteArgs.deletedRecords);\n var crudArgs = {\n requestType: 'eventRemoved', cancel: false,\n data: deleteArgs.deletedRecords, promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n }\n }\n };\n Crud.prototype.processOccurrences = function (eventData, action) {\n var _this = this;\n var occurrenceData = [];\n var isDeletedRecords = false;\n if (eventData instanceof Array) {\n for (var _i = 0, eventData_3 = eventData; _i < eventData_3.length; _i++) {\n var event_5 = eventData_3[_i];\n occurrenceData.push({ occurrence: event_5, parent: this.getParentEvent(event_5) });\n }\n }\n else {\n occurrenceData = { occurrence: eventData, parent: this.getParentEvent(eventData) };\n }\n var updateEvents = (eventData instanceof Array) ? eventData : [eventData];\n var args = {\n requestType: action === 'EditOccurrence' ? 'eventChange' : 'eventRemove', cancel: false,\n addedRecords: [], changedRecords: updateEvents, deletedRecords: []\n };\n args.data = occurrenceData;\n this.parent.trigger(events.actionBegin, args, function (occurrenceArgs) {\n if (!occurrenceArgs.cancel) {\n var fields = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n var occurrenceEvents = (occurrenceData instanceof Array ? occurrenceData : [occurrenceData]);\n var _loop_2 = function (a, count) {\n var childEvent = occurrenceArgs.changedRecords[a];\n var parentEvent = occurrenceEvents[a].parent;\n var parentException = parentEvent[fields.recurrenceException];\n var editedData = void 0;\n var exceptionDate = void 0;\n switch (action) {\n case 'EditOccurrence':\n editedData = _this.parent.eventsProcessed.filter(function (event) { return event.Guid === childEvent.Guid; })[0];\n exceptionDate = _this.excludeDateCheck(editedData[fields.startTime], parentException);\n if (exceptionDate !== parentEvent[fields.recurrenceException]) {\n parentEvent[fields.recurrenceException] = exceptionDate;\n childEvent[fields.recurrenceException] = getRecurrenceStringFromDate(editedData[fields.startTime]);\n childEvent[fields.recurrenceID] = parentEvent[fields.id];\n childEvent[fields.followingID] = null;\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(parentEvent, true));\n editParams.addedRecords.push(_this.parent.eventBase.processTimezone(childEvent, true));\n }\n else {\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(childEvent, true));\n }\n break;\n case 'DeleteOccurrence':\n if (!childEvent[fields.recurrenceException]) {\n parentEvent[fields.recurrenceException] =\n _this.excludeDateCheck(childEvent[fields.startTime], parentException);\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(parentEvent, true));\n }\n if (childEvent[fields.id] !== parentEvent[fields.id]) {\n editParams.deletedRecords.push(childEvent);\n isDeletedRecords = true;\n }\n break;\n }\n };\n for (var a = 0, count = occurrenceArgs.changedRecords.length; a < count; a++) {\n _loop_2(a, count);\n }\n var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());\n _this.parent.eventBase.selectWorkCellByTime(occurrenceArgs.changedRecords);\n var crudArgs = {\n requestType: action === 'EditOccurrence' ? 'eventChanged' : 'eventRemoved',\n cancel: false, data: isDeletedRecords ? occurrenceArgs.deletedRecords : occurrenceArgs.changedRecords,\n promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n };\n Crud.prototype.processFollowSeries = function (eventData, action) {\n var _this = this;\n var followData = [];\n if (eventData instanceof Array) {\n for (var _i = 0, eventData_4 = eventData; _i < eventData_4.length; _i++) {\n var event_6 = eventData_4[_i];\n followData.push({ occurrence: event_6, parent: this.getParentEvent(event_6) });\n }\n }\n else {\n followData = { occurrence: eventData, parent: this.getParentEvent(eventData) };\n }\n var updateFollowEvents = (eventData instanceof Array) ? eventData : [eventData];\n var args = {\n requestType: action === 'EditFollowingEvents' ? 'eventChange' : 'eventRemove', cancel: false,\n addedRecords: [], changedRecords: updateFollowEvents, deletedRecords: []\n };\n args.data = followData;\n this.parent.trigger(events.actionBegin, args, function (followArgs) {\n if (!followArgs.cancel) {\n var fields_1 = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n var followEvents = followData instanceof Array ? followData : [followData];\n var _loop_3 = function (a, count) {\n var childEvent = followArgs.changedRecords[a];\n var parentEvent = followEvents[a].parent;\n var followData_1 = _this.parent.eventBase.getEventCollections(parentEvent, childEvent);\n var isSpanned = void 0;\n switch (action) {\n case 'EditFollowingEvents':\n _this.processRecurrenceRule(parentEvent, childEvent);\n isSpanned = !_this.parent.eventBase.isFollowingEvent(parentEvent, childEvent);\n childEvent[fields_1.followingID] = isSpanned ? null : parentEvent[fields_1.id];\n childEvent[fields_1.recurrenceID] = null;\n editParams.addedRecords.push(_this.parent.eventBase.processTimezone(childEvent, true));\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(parentEvent, true));\n if (!_this.parent.uiStateValues.isIgnoreOccurrence) {\n childEvent[fields_1.recurrenceException] = null;\n if (followData_1.occurrence.length > 0) {\n var rule = followData_1.occurrence.slice(-1)[0][fields_1.recurrenceRule];\n if (rule.indexOf('COUNT') === -1) {\n childEvent[fields_1.recurrenceRule] = rule;\n }\n }\n if (followData_1.follow.length > 0) {\n childEvent[fields_1.recurrenceRule] = followData_1.follow.slice(-1)[0][fields_1.recurrenceRule];\n editParams.deletedRecords = editParams.deletedRecords.concat(followData_1.follow);\n }\n if (isSpanned) {\n followData_1.occurrence = followData_1.occurrence.filter(function (eventObj) {\n return eventObj[fields_1.recurrenceID] === childEvent[fields_1.id];\n });\n }\n editParams.deletedRecords = editParams.deletedRecords.concat(followData_1.occurrence);\n }\n break;\n case 'DeleteFollowingEvents':\n _this.processRecurrenceRule(parentEvent, childEvent[fields_1.startTime]);\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(parentEvent, true));\n editParams.deletedRecords = editParams.deletedRecords.concat(followData_1.occurrence).concat(followData_1.follow);\n break;\n }\n };\n for (var a = 0, count = followArgs.changedRecords.length; a < count; a++) {\n _loop_3(a, count);\n }\n var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_1.id, _this.getTable(), _this.getQuery());\n _this.parent.eventBase.selectWorkCellByTime(followArgs.changedRecords);\n var crudArgs = {\n requestType: action === 'EditFollowingEvents' ? 'eventChanged' : 'eventRemoved',\n cancel: false, data: followArgs.changedRecords, promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n };\n Crud.prototype.processEntireSeries = function (eventData, action) {\n var _this = this;\n var seriesData = [];\n var isDeletedRecords = false;\n if (eventData instanceof Array) {\n for (var _i = 0, eventData_5 = eventData; _i < eventData_5.length; _i++) {\n var event_7 = eventData_5[_i];\n seriesData.push(this.getParentEvent(event_7, true));\n }\n }\n else {\n seriesData = this.getParentEvent(eventData, true);\n }\n var updateSeriesEvents = (eventData instanceof Array) ? eventData : [eventData];\n var args = {\n requestType: action === 'EditSeries' ? 'eventChange' : 'eventRemove', cancel: false,\n addedRecords: [], changedRecords: updateSeriesEvents, deletedRecords: []\n };\n args.data = seriesData;\n this.parent.trigger(events.actionBegin, args, function (seriesArgs) {\n if (!seriesArgs.cancel) {\n var fields_2 = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n var seriesEvents = seriesData instanceof Array ? seriesData : [seriesData];\n var _loop_4 = function (a, count) {\n var childEvent = seriesArgs.changedRecords[a];\n var parentEvent = seriesEvents[a];\n var eventCollections = _this.parent.eventBase.getEventCollections(parentEvent);\n var deletedEvents = eventCollections.follow.concat(eventCollections.occurrence);\n switch (action) {\n case 'EditSeries':\n if ((childEvent[fields_2.startTime] > parentEvent[fields_2.startTime]) && childEvent[fields_2.recurrenceRule]) {\n _this.processRecurrenceRule(parentEvent, childEvent);\n }\n childEvent[fields_2.id] = parentEvent[fields_2.id];\n childEvent[fields_2.recurrenceID] = null;\n childEvent[fields_2.followingID] = null;\n if (_this.parent.uiStateValues.isIgnoreOccurrence && childEvent[fields_2.recurrenceException]) {\n var originalParent = _this.parent.eventsData.filter(function (eventObj) {\n return eventObj[fields_2.id] === childEvent[fields_2.id];\n });\n if (originalParent.length > 0) {\n childEvent[fields_2.recurrenceRule] = originalParent[0][fields_2.recurrenceRule];\n }\n }\n else {\n childEvent[fields_2.recurrenceException] = null;\n editParams.deletedRecords = editParams.deletedRecords.concat(deletedEvents);\n }\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(childEvent, true));\n _this.parent.uiStateValues.isIgnoreOccurrence = false;\n break;\n case 'DeleteSeries':\n editParams.deletedRecords = editParams.deletedRecords.concat(deletedEvents.concat(parentEvent));\n isDeletedRecords = true;\n break;\n }\n };\n for (var a = 0, count = seriesArgs.changedRecords.length; a < count; a++) {\n _loop_4(a, count);\n }\n var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_2.id, _this.getTable(), _this.getQuery());\n _this.parent.eventBase.selectWorkCellByTime(seriesArgs.changedRecords);\n var crudArgs = {\n requestType: action === 'EditSeries' ? 'eventChanged' : 'eventRemoved',\n cancel: false, data: isDeletedRecords ? seriesArgs.deletedRecords : seriesArgs.changedRecords,\n promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n };\n Crud.prototype.processDelete = function (eventData) {\n var _this = this;\n var deleteData = [];\n for (var _i = 0, eventData_6 = eventData; _i < eventData_6.length; _i++) {\n var eventObj = eventData_6[_i];\n if (eventObj[this.parent.eventFields.recurrenceRule]) {\n deleteData.push({ occurrence: eventObj, parent: this.getParentEvent(eventObj) });\n }\n else {\n deleteData.push(eventObj);\n }\n }\n var args = {\n requestType: 'eventRemove', cancel: false,\n addedRecords: [], changedRecords: [], deletedRecords: eventData\n };\n args.data = deleteData;\n this.parent.trigger(events.actionBegin, args, function (deleteArgs) {\n if (!deleteArgs.cancel) {\n var fields_3 = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n var _loop_5 = function (a, count) {\n var isDelete = isNullOrUndefined(deleteArgs.deletedRecords[a][_this.parent.eventFields.recurrenceRule]);\n if (!isDelete) {\n var parentEvent_1 = deleteData[a].parent;\n var isEdited = editParams.changedRecords.filter(function (obj) {\n return obj[fields_3.id] === parentEvent_1[fields_3.id];\n });\n var editedDate = deleteArgs.deletedRecords[a][fields_3.startTime];\n if (isEdited.length > 0) {\n var editedData = isEdited[0];\n editedData[fields_3.recurrenceException] =\n _this.excludeDateCheck(editedDate, editedData[fields_3.recurrenceException]);\n }\n else {\n parentEvent_1[fields_3.recurrenceException] =\n _this.excludeDateCheck(editedDate, parentEvent_1[fields_3.recurrenceException]);\n }\n if (isEdited.length === 0) {\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(parentEvent_1, true));\n }\n isDelete = deleteArgs.deletedRecords[a][fields_3.id] !== parentEvent_1[fields_3.id];\n }\n if (isDelete) {\n editParams.deletedRecords.push(deleteArgs.deletedRecords[a]);\n }\n };\n for (var a = 0, count = deleteArgs.deletedRecords.length; a < count; a++) {\n _loop_5(a, count);\n }\n var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_3.id, _this.getTable(), _this.getQuery());\n var crudArgs = {\n requestType: 'eventRemoved', cancel: false, data: deleteArgs.deletedRecords, promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n };\n Crud.prototype.processSave = function (data) {\n var _this = this;\n var eventData = (data instanceof Array) ? data : [data];\n var editData = [];\n for (var _i = 0, eventData_7 = eventData; _i < eventData_7.length; _i++) {\n var eventObj = eventData_7[_i];\n if (eventObj[this.parent.eventFields.recurrenceRule]) {\n editData.push({ occurrence: eventObj, parent: this.getParentEvent(eventObj) });\n }\n else {\n editData.push(eventObj);\n }\n }\n var args = { requestType: 'eventChange', cancel: false, addedRecords: [], changedRecords: eventData, deletedRecords: [] };\n args.data = editData;\n this.parent.trigger(events.actionBegin, args, function (editArgs) {\n if (!editArgs.cancel) {\n var fields = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n for (var _i = 0, _a = editArgs.changedRecords; _i < _a.length; _i++) {\n var record = _a[_i];\n if (!isNullOrUndefined(record[fields.recurrenceRule]) && isNullOrUndefined(record[fields.recurrenceException])) {\n var exceptionString = getRecurrenceStringFromDate(record[fields.startTime]);\n var parentEle = _this.getParentEvent(record);\n parentEle[fields.recurrenceException] = isNullOrUndefined(parentEle[fields.recurrenceException]) ?\n exceptionString : parentEle[fields.recurrenceException].concat(',' + exceptionString);\n record[fields.id] = _this.parent.getEventMaxID();\n record[fields.recurrenceException] = exceptionString;\n editParams.addedRecords.push(_this.parent.eventBase.processTimezone(record, true));\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(parentEle, true));\n }\n else {\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(record, true));\n }\n }\n var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());\n var crudArgs = { requestType: 'eventChanged', cancel: false, data: editArgs.changedRecords, promise: promise, editParams: editParams };\n _this.refreshData(crudArgs);\n }\n });\n };\n Crud.prototype.getParentEvent = function (event, isParent) {\n if (isParent === void 0) { isParent = false; }\n var parentEvent = this.parent.eventBase.getParentEvent(event, isParent) || event;\n if (parentEvent[this.parent.eventFields.startTimezone] || parentEvent[this.parent.eventFields.endTimezone]) {\n this.parent.eventBase.timezoneConvert(parentEvent);\n }\n return parentEvent;\n };\n Crud.prototype.excludeDateCheck = function (eventStartTime, exceptionDateList) {\n var exDate = getRecurrenceStringFromDate(eventStartTime);\n if (!isNullOrUndefined(exceptionDateList)) {\n if (exceptionDateList.indexOf(exDate) === -1) {\n exceptionDateList = !(isNullOrUndefined(exceptionDateList)) ? exceptionDateList + ',' + exDate : exDate;\n }\n }\n else {\n exceptionDateList = exDate;\n }\n return exceptionDateList;\n };\n Crud.prototype.processRecurrenceRule = function (parentEvent, followEvent) {\n var fields = this.parent.eventFields;\n var recurrenceRule = parentEvent[fields.recurrenceRule];\n var endDate;\n if (followEvent instanceof Date) {\n endDate = new Date(+followEvent);\n }\n else {\n endDate = new Date(+followEvent[fields.startTime]);\n var newRecurrenceRule = followEvent[fields.recurrenceRule];\n var startDate = parentEvent[fields.startTime];\n var ruleException = (this.parent.currentAction === 'DeleteFollowingEvents') ? followEvent[fields.recurrenceException] : null;\n var dateCollection = generate(startDate, newRecurrenceRule, ruleException, this.parent.activeViewOptions.firstDayOfWeek);\n var untilDate = new Date(dateCollection.slice(-1)[0]);\n untilDate.setHours(endDate.getHours(), endDate.getMinutes(), endDate.getSeconds());\n endDate.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds());\n followEvent[fields.recurrenceRule] = this.getUpdatedRecurrenceRule(newRecurrenceRule, new Date(+untilDate), false);\n }\n parentEvent[fields.recurrenceRule] = this.getUpdatedRecurrenceRule(recurrenceRule, util.addDays(new Date(endDate.getTime()), -1), true);\n };\n Crud.prototype.getUpdatedRecurrenceRule = function (recurrenceRule, untilDate, isParent) {\n var splitRule = recurrenceRule.split(';');\n var updatedRule = '';\n for (var _i = 0, splitRule_1 = splitRule; _i < splitRule_1.length; _i++) {\n var rule = splitRule_1[_i];\n if (rule !== '') {\n var ruleKey = rule.split('=')[0];\n var ruleValue = rule.split('=')[1];\n if (ruleKey === 'COUNT' || ruleKey === 'UNTIL') {\n ruleValue = getRecurrenceStringFromDate(untilDate);\n rule = rule.replace(rule, 'UNTIL=' + ruleValue);\n }\n updatedRule += rule + ';';\n }\n }\n if (isParent && updatedRule.indexOf('UNTIL') === -1) {\n updatedRule += 'UNTIL=' + getRecurrenceStringFromDate(untilDate);\n }\n return updatedRule;\n };\n Crud.prototype.isBlockEvent = function (eventData) {\n var eventCollection = (eventData instanceof Array) ? eventData : [eventData];\n var value = false;\n for (var _i = 0, eventCollection_1 = eventCollection; _i < eventCollection_1.length; _i++) {\n var event_8 = eventCollection_1[_i];\n value = event_8[this.parent.eventFields.isBlock] || false;\n }\n return value;\n };\n /**\n * To destroy the crud module.\n *\n * @returns {void}\n * @private\n */\n Crud.prototype.destroy = function () {\n this.crudObj = null;\n this.parent = null;\n };\n return Crud;\n}());\nexport { Crud };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { extend, closest, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * Work cell interactions\n */\nvar WorkCellInteraction = /** @class */ (function () {\n function WorkCellInteraction(parent) {\n this.parent = parent;\n EventHandler.add(this.parent.element, 'mouseover', this.onHover, this);\n }\n WorkCellInteraction.prototype.cellMouseDown = function (e) {\n if (this.isPreventAction(e)) {\n return;\n }\n this.parent.notify(event.cellMouseDown, { event: e });\n };\n WorkCellInteraction.prototype.cellClick = function (e) {\n var _this = this;\n if (this.isPreventAction(e)) {\n return;\n }\n var queryStr = '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS + ',.' + cls.HEADER_CELLS_CLASS;\n var target = closest(e.target, queryStr);\n if (isNullOrUndefined(target)) {\n return;\n }\n if (!isNullOrUndefined(closest(e.target, '.' + cls.NEW_EVENT_CLASS))) {\n this.parent.eventWindow.openEditor(this.parent.activeCellsData, 'Add');\n return;\n }\n var navigateEle = closest(e.target, '.' + cls.NAVIGATE_CLASS);\n var navigateView = this.parent.getNavigateView();\n var sameView = this.parent.currentView === navigateView;\n if (isNullOrUndefined(navigateEle) || sameView ||\n isNullOrUndefined(this.parent.viewOptions[navigateView.charAt(0).toLowerCase() + navigateView.slice(1)])) {\n if (this.parent.activeViewOptions.readonly && this.parent.currentView !== 'MonthAgenda') {\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide();\n }\n return;\n }\n if (this.parent.isAdaptive && (e.target.classList.contains(cls.MORE_INDICATOR_CLASS) ||\n closest(e.target, '.' + cls.MORE_INDICATOR_CLASS))) {\n return;\n }\n var isWorkCell_1 = target.classList.contains(cls.WORK_CELLS_CLASS) ||\n target.classList.contains(cls.ALLDAY_CELLS_CLASS);\n if (isWorkCell_1 && e.shiftKey && e.which === 1 && this.parent.keyboardInteractionModule) {\n this.parent.keyboardInteractionModule.onMouseSelection(e);\n return;\n }\n this.parent.activeCellsData = this.parent.getCellDetails(target);\n var args = extend(this.parent.activeCellsData, { cancel: false, event: e, name: 'cellClick' });\n this.parent.trigger(event.cellClick, args, function (clickArgs) {\n if (!clickArgs.cancel) {\n if (isWorkCell_1) {\n _this.parent.selectCell(target);\n }\n if (_this.parent.allowInline) {\n var inlineArgs = {\n element: clickArgs.element,\n groupIndex: clickArgs.groupIndex, type: 'Cell'\n };\n _this.parent.notify(event.inlineClick, inlineArgs);\n }\n else {\n _this.parent.notify(event.cellClick, clickArgs);\n }\n }\n else {\n if (_this.parent.quickPopup) {\n _this.parent.quickPopup.quickPopupHide();\n }\n }\n });\n }\n else {\n var date = this.parent.getDateFromElement(target);\n if (!isNullOrUndefined(date) && !this.parent.isAdaptive && this.parent.isMinMaxDate(date)) {\n this.parent.setProperties({ selectedDate: date }, true);\n this.parent.changeView(this.parent.getNavigateView(), e);\n }\n }\n };\n WorkCellInteraction.prototype.cellDblClick = function (e) {\n var _this = this;\n var queryStr = '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS + ',.' + cls.HEADER_CELLS_CLASS;\n var target = closest(e.target, queryStr);\n if (this.parent.activeViewOptions.readonly || this.isPreventAction(e) || isNullOrUndefined(target)) {\n return;\n }\n var args = extend(this.parent.activeCellsData, { cancel: false, event: e, name: 'cellDoubleClick' });\n this.parent.trigger(event.cellDoubleClick, args, function (clickArgs) {\n var date = new Date(clickArgs.startTime.getTime());\n if (!_this.parent.isMinMaxDate(new Date(date.setHours(0, 0, 0, 0)))) {\n return;\n }\n if (!clickArgs.cancel) {\n _this.parent.eventWindow.openEditor(_this.parent.activeCellsData, 'Add');\n }\n });\n };\n WorkCellInteraction.prototype.onHover = function (e) {\n var targetSelector = '.' + cls.WORK_CELLS_CLASS + ',.' + cls.TIME_SLOT_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS + ',.' +\n cls.HEADER_CELLS_CLASS + ',.' + cls.RESOURCE_CELLS_CLASS + ',.' + cls.APPOINTMENT_CLASS + ',.' + cls.WEEK_NUMBER_CLASS +\n ',.' + cls.MONTH_HEADER_CLASS;\n var hoverTarget = closest(e.target, targetSelector);\n if (hoverTarget) {\n var hoverArgs = { element: hoverTarget, event: e };\n this.parent.trigger(event.hover, hoverArgs);\n }\n };\n WorkCellInteraction.prototype.isPreventAction = function (e) {\n if (closest(e.target, '.' + cls.NAVIGATE_CLASS)) {\n return false;\n }\n if (closest(e.target, '.' + cls.APPOINTMENT_WRAPPER_CLASS) &&\n !closest(e.target, '.' + cls.MORE_INDICATOR_CLASS)) {\n return true;\n }\n var target = closest(e.target, '.' + cls.APPOINTMENT_CLASS + ',.' + cls.RESOURCE_GROUP_CELLS_CLASS);\n if (!isNullOrUndefined(target)) {\n return true;\n }\n target = closest(e.target, '.' + cls.HEADER_CELLS_CLASS);\n if (this.parent.activeView.isTimelineView() && !isNullOrUndefined(target)) {\n return true;\n }\n return false;\n };\n WorkCellInteraction.prototype.destroy = function () {\n EventHandler.remove(this.parent.element, 'mouseover', this.onHover);\n };\n return WorkCellInteraction;\n}());\nexport { WorkCellInteraction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configuration that applies on each appointment field options of scheduler.\n */\nvar FieldOptions = /** @class */ (function (_super) {\n __extends(FieldOptions, _super);\n function FieldOptions() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldOptions.prototype, \"name\", void 0);\n __decorate([\n Property()\n ], FieldOptions.prototype, \"default\", void 0);\n __decorate([\n Property()\n ], FieldOptions.prototype, \"title\", void 0);\n __decorate([\n Property({})\n ], FieldOptions.prototype, \"validation\", void 0);\n return FieldOptions;\n}(ChildProperty));\nexport { FieldOptions };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { FieldOptions } from './field-options';\n/**\n * A Class that holds the collection of event fields that requires to be mapped with the dataSource\n * fields along with its available configuration settings. Each field in it accepts both string and Object\n * data type. When each of the field is assigned with simple `string` value, it is assumed that the dataSource field\n * name is mapped with it. If the `object` type is defined on each fields, then the validation related settings and mapping of\n * those fields with dataSource can be given altogether within it.\n */\nvar Field = /** @class */ (function (_super) {\n __extends(Field, _super);\n function Field() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Id')\n ], Field.prototype, \"id\", void 0);\n __decorate([\n Property('IsBlock')\n ], Field.prototype, \"isBlock\", void 0);\n __decorate([\n Complex({ name: 'Subject' }, FieldOptions)\n ], Field.prototype, \"subject\", void 0);\n __decorate([\n Complex({ name: 'StartTime' }, FieldOptions)\n ], Field.prototype, \"startTime\", void 0);\n __decorate([\n Complex({ name: 'EndTime' }, FieldOptions)\n ], Field.prototype, \"endTime\", void 0);\n __decorate([\n Complex({ name: 'StartTimezone' }, FieldOptions)\n ], Field.prototype, \"startTimezone\", void 0);\n __decorate([\n Complex({ name: 'EndTimezone' }, FieldOptions)\n ], Field.prototype, \"endTimezone\", void 0);\n __decorate([\n Complex({ name: 'Location' }, FieldOptions)\n ], Field.prototype, \"location\", void 0);\n __decorate([\n Complex({ name: 'Description' }, FieldOptions)\n ], Field.prototype, \"description\", void 0);\n __decorate([\n Complex({ name: 'IsAllDay' }, FieldOptions)\n ], Field.prototype, \"isAllDay\", void 0);\n __decorate([\n Complex({ name: 'RecurrenceID' }, FieldOptions)\n ], Field.prototype, \"recurrenceID\", void 0);\n __decorate([\n Complex({ name: 'RecurrenceRule' }, FieldOptions)\n ], Field.prototype, \"recurrenceRule\", void 0);\n __decorate([\n Complex({ name: 'RecurrenceException' }, FieldOptions)\n ], Field.prototype, \"recurrenceException\", void 0);\n __decorate([\n Property('IsReadonly')\n ], Field.prototype, \"isReadonly\", void 0);\n __decorate([\n Property('FollowingID')\n ], Field.prototype, \"followingID\", void 0);\n return Field;\n}(ChildProperty));\nexport { Field };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Property, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Field } from './fields';\n/**\n * Holds the configuration of event related options and dataSource binding to Schedule.\n */\nvar EventSettings = /** @class */ (function (_super) {\n __extends(EventSettings, _super);\n function EventSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], EventSettings.prototype, \"template\", void 0);\n __decorate([\n Property([])\n ], EventSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], EventSettings.prototype, \"query\", void 0);\n __decorate([\n Complex({}, Field)\n ], EventSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], EventSettings.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property('AllDayRow')\n ], EventSettings.prototype, \"spannedEventPlacement\", void 0);\n __decorate([\n Property(1)\n ], EventSettings.prototype, \"minimumEventDuration\", void 0);\n __decorate([\n Property()\n ], EventSettings.prototype, \"tooltipTemplate\", void 0);\n __decorate([\n Property()\n ], EventSettings.prototype, \"resourceColorField\", void 0);\n __decorate([\n Property(false)\n ], EventSettings.prototype, \"editFollowingEvents\", void 0);\n __decorate([\n Property(true)\n ], EventSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(true)\n ], EventSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(true)\n ], EventSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property(false)\n ], EventSettings.prototype, \"enableMaxHeight\", void 0);\n __decorate([\n Property(false)\n ], EventSettings.prototype, \"enableIndicator\", void 0);\n __decorate([\n Property(false)\n ], EventSettings.prototype, \"ignoreWhitespace\", void 0);\n __decorate([\n Property()\n ], EventSettings.prototype, \"sortComparer\", void 0);\n return EventSettings;\n}(ChildProperty));\nexport { EventSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * A class that holds the resource grouping related configurations on Schedule.\n */\nvar Group = /** @class */ (function (_super) {\n __extends(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], Group.prototype, \"byDate\", void 0);\n __decorate([\n Property(true)\n ], Group.prototype, \"byGroupID\", void 0);\n __decorate([\n Property(false)\n ], Group.prototype, \"allowGroupEdit\", void 0);\n __decorate([\n Property([])\n ], Group.prototype, \"resources\", void 0);\n __decorate([\n Property(true)\n ], Group.prototype, \"enableCompactView\", void 0);\n __decorate([\n Property()\n ], Group.prototype, \"headerTooltipTemplate\", void 0);\n return Group;\n}(ChildProperty));\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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that represents the resource related configurations and its data binding options.\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, \"field\", void 0);\n __decorate([\n Property()\n ], Resources.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], Resources.prototype, \"name\", void 0);\n __decorate([\n Property(false)\n ], Resources.prototype, \"allowMultiple\", void 0);\n __decorate([\n Property([])\n ], Resources.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], Resources.prototype, \"query\", void 0);\n __decorate([\n Property('Id')\n ], Resources.prototype, \"idField\", void 0);\n __decorate([\n Property('Text')\n ], Resources.prototype, \"textField\", void 0);\n __decorate([\n Property('Expanded')\n ], Resources.prototype, \"expandedField\", void 0);\n __decorate([\n Property('GroupID')\n ], Resources.prototype, \"groupIDField\", void 0);\n __decorate([\n Property('Color')\n ], Resources.prototype, \"colorField\", void 0);\n __decorate([\n Property('StartHour')\n ], Resources.prototype, \"startHourField\", void 0);\n __decorate([\n Property('EndHour')\n ], Resources.prototype, \"endHourField\", void 0);\n __decorate([\n Property('WorkDays')\n ], Resources.prototype, \"workDaysField\", void 0);\n __decorate([\n Property('CssClass')\n ], Resources.prototype, \"cssClassField\", void 0);\n return Resources;\n}(ChildProperty));\nexport { Resources };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-len */\nimport { extend, isNullOrUndefined, createElement, EventHandler, addClass, append, removeClass, remove, closest, classList } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Data } from '../actions/data';\nimport * as cls from '../base/css-constant';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\nvar ResourceBase = /** @class */ (function () {\n function ResourceBase(parent) {\n this.resourceCollection = [];\n this.leftPixel = 25;\n this.parent = parent;\n }\n ResourceBase.prototype.renderResourceHeaderIndent = function (tr) {\n var resColTd = createElement('td', { className: cls.RESOURCE_LEFT_TD_CLASS });\n var resColDiv = createElement('div', { className: cls.RESOURCE_TEXT_CLASS });\n if (this.parent.activeViewOptions.headerIndentTemplate) {\n var data = { className: [resColTd.className], type: 'emptyCells' };\n this.parent.renderHeaderIndentTemplate(data, resColTd);\n }\n else {\n resColTd.appendChild(resColDiv);\n }\n var args = { elementType: 'emptyCells', element: resColTd };\n this.parent.trigger(events.renderCell, args);\n tr.appendChild(resColTd);\n };\n ResourceBase.prototype.hideResourceRows = function (tBody) {\n if (this.resourceCollection.length <= 1 || this.parent.virtualScrollModule) {\n return;\n }\n var trCount = this.lastResourceLevel.length;\n for (var i = 0; i < trCount; i++) {\n var resData = this.lastResourceLevel[i].resourceData;\n var res = this.lastResourceLevel[i].resource;\n if (resData.ClassName === cls.RESOURCE_PARENT_CLASS && !resData[res.expandedField] &&\n !isNullOrUndefined(resData[res.expandedField])) {\n var trCollection = [].slice.call(tBody.children);\n var slicedCollection = trCollection.slice(i + 1, i + (parseInt(resData.Count, 10) + 1));\n addClass(slicedCollection, cls.HIDDEN_CLASS);\n }\n }\n };\n ResourceBase.prototype.createResourceColumn = function () {\n var resColl = this.resourceCollection;\n var resDiv = createElement('div', { className: cls.RESOURCE_COLUMN_WRAP_CLASS });\n var tbl = this.parent.activeView.createTableLayout(cls.RESOURCE_COLUMN_TABLE_CLASS);\n if (!this.parent.uiStateValues.isGroupAdaptive && this.parent.rowAutoHeight && this.parent.activeView.isTimelineView()\n && this.parent.activeViewOptions.group.resources.length > 0) {\n addClass([tbl], cls.AUTO_HEIGHT);\n }\n var tBody = tbl.querySelector('tbody');\n var resData = this.generateTreeData(true);\n this.countCalculation(resColl.slice(0, -2), resColl.slice(0, -1));\n this.renderedResources = this.lastResourceLevel;\n if (this.parent.virtualScrollModule) {\n var resourceCount = this.parent.virtualScrollModule.getRenderedCount();\n this.setExpandedResources();\n resData = this.expandedResources.slice(0, resourceCount);\n this.renderedResources = resData;\n }\n append(this.getContentRows(resData), tBody);\n this.hideResourceRows(tBody);\n tbl.appendChild(tBody);\n resDiv.appendChild(tbl);\n return resDiv;\n };\n ResourceBase.prototype.setRenderedResources = function () {\n var resColl = this.resourceCollection;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var temp = this.generateTreeData(true);\n this.countCalculation(resColl.slice(0, -2), resColl.slice(0, -1));\n this.renderedResources = this.lastResourceLevel;\n };\n ResourceBase.prototype.setExpandedResources = function () {\n var resources = [];\n for (var i = 0; i < this.lastResourceLevel.length; i++) {\n var resource = this.lastResourceLevel[i].resourceData;\n var count = resource.Count;\n resources.push(this.lastResourceLevel[i]);\n var isExpanded = resource[this.lastResourceLevel[i].resource.expandedField];\n if (!isNullOrUndefined(isExpanded) && !isExpanded && count > 0) {\n i = i + count;\n }\n }\n this.expandedResources = resources;\n };\n ResourceBase.prototype.getContentRows = function (resData, isVirtualScroll) {\n var resRows = [];\n var left;\n var rIndex;\n var resColl = this.resourceCollection;\n var tr = createElement('tr');\n var td = createElement('td', { attrs: { tabindex: isVirtualScroll ? '-1' : '0' } });\n for (var i = 0; i < resData.length; i++) {\n var ntd = td.cloneNode();\n rIndex = util.findIndexInData(resColl, 'name', resData[i].resource.name);\n if (rIndex === resColl.length - 1) {\n extend(resData[i].resourceData, { ClassName: cls.RESOURCE_CHILD_CLASS });\n this.renderedResources[i].className = [cls.RESOURCE_CHILD_CLASS];\n }\n else {\n extend(resData[i].resourceData, { ClassName: cls.RESOURCE_PARENT_CLASS });\n this.renderedResources[i].className = [cls.RESOURCE_PARENT_CLASS];\n }\n left = (rIndex * this.leftPixel) + 'px';\n if (resData[i].resourceData.ClassName === cls.RESOURCE_PARENT_CLASS\n && !isNullOrUndefined(resData[i].resourceData.Count) && (resData[i].resourceData.Count > 0)) {\n var iconClass = void 0;\n if (resData[i].resourceData[resColl[rIndex].expandedField] ||\n isNullOrUndefined(resData[i].resourceData[resColl[rIndex].expandedField])) {\n iconClass = cls.RESOURCE_COLLAPSE_CLASS;\n }\n else {\n iconClass = cls.RESOURCE_EXPAND_CLASS;\n }\n var iconDiv = createElement('div');\n addClass([iconDiv], [cls.RESOURCE_TREE_ICON_CLASS, iconClass]);\n this.setMargin(iconDiv, left);\n ntd.appendChild(iconDiv);\n if (this.resourceCollection.length > 1) {\n EventHandler.add(iconDiv, 'click', this.onTreeIconClick, this);\n }\n }\n this.parent.activeView.setResourceHeaderContent(ntd, resData[i], cls.RESOURCE_TEXT_CLASS);\n ntd.setAttribute('data-group-index', resData[i].groupIndex.toString());\n ntd.setAttribute('aria-label', resData[i].resourceData[resData[i].resource.textField] + ' resource');\n if (!this.parent.activeViewOptions.resourceHeaderTemplate) {\n this.setMargin(ntd.querySelector('.' + cls.RESOURCE_TEXT_CLASS), left);\n }\n var classCollection = [cls.RESOURCE_CELLS_CLASS, resData[i].resourceData.ClassName];\n addClass([ntd], classCollection);\n var args = { elementType: 'resourceHeader', element: ntd, groupIndex: resData[i].groupIndex };\n this.parent.trigger(events.renderCell, args);\n var ntr = tr.cloneNode();\n ntr.appendChild(ntd);\n resRows.push(ntr);\n }\n return resRows;\n };\n ResourceBase.prototype.setMargin = function (element, value) {\n if (!this.parent.enableRtl) {\n element.style.marginLeft = value;\n }\n else {\n element.style.marginRight = value;\n }\n };\n ResourceBase.prototype.countCalculation = function (parentCollection, wholeCollection) {\n var collection;\n for (var y = 0; y < parentCollection.length; y++) {\n var data = parentCollection[parentCollection.length - (y + 1)].dataSource;\n for (var x = 0; x < data.length; x++) {\n var totalCount = 0;\n if (this.parent.activeViewOptions.group.byGroupID) {\n var query = new Query().where(wholeCollection[wholeCollection.length - 1].groupIDField, 'equal', data[x][parentCollection[parentCollection.length - (y + 1)].idField]);\n collection = new DataManager(wholeCollection[wholeCollection.length - 1].dataSource).executeLocal(query);\n }\n else {\n collection = wholeCollection[wholeCollection.length - 1].dataSource;\n }\n for (var z = 0; z < collection.length; z++) {\n totalCount = totalCount + parseInt(collection[z].Count, 10);\n }\n totalCount = totalCount + parseInt(data[x].Count, 10);\n extend(data[x], { Count: totalCount });\n }\n wholeCollection = wholeCollection.slice(0, -1);\n }\n };\n ResourceBase.prototype.onTreeIconClick = function (e) {\n var _this = this;\n if (this.parent.eventTooltip) {\n this.parent.eventTooltip.close();\n }\n var target = e.target;\n var hide;\n var trElement = closest(target, '.' + cls.RESOURCE_PARENT_CLASS)\n .parentElement;\n var index = parseInt(trElement.children[0].getAttribute('data-group-index'), 10);\n var args = {\n cancel: false, event: e, groupIndex: index,\n requestType: !target.classList.contains(cls.RESOURCE_COLLAPSE_CLASS) ? 'resourceExpand' : 'resourceCollapse'\n };\n this.parent.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n if (target.classList.contains(cls.RESOURCE_COLLAPSE_CLASS)) {\n classList(target, [cls.RESOURCE_EXPAND_CLASS], [cls.RESOURCE_COLLAPSE_CLASS]);\n hide = true;\n }\n else {\n classList(target, [cls.RESOURCE_COLLAPSE_CLASS], [cls.RESOURCE_EXPAND_CLASS]);\n hide = false;\n }\n var eventElements = [].slice.call(_this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n for (var _i = 0, eventElements_1 = eventElements; _i < eventElements_1.length; _i++) {\n var element = eventElements_1[_i];\n remove(element);\n }\n if (_this.parent.virtualScrollModule) {\n _this.updateVirtualContent(index, hide, e, target);\n }\n else {\n _this.updateContent(index, hide);\n }\n var data = { cssProperties: _this.parent.getCssProperties(), module: 'scroll' };\n _this.parent.notify(events.scrollUiUpdate, data);\n args = {\n cancel: false, event: e, groupIndex: index,\n requestType: target.classList.contains(cls.RESOURCE_COLLAPSE_CLASS) ? 'resourceExpanded' : 'resourceCollapsed'\n };\n _this.parent.refreshEvents(false);\n _this.parent.trigger(events.actionComplete, args);\n }\n });\n };\n ResourceBase.prototype.updateContent = function (index, hide) {\n var rowCollection = [];\n var workCellCollection = [];\n var headerRowCollection = [];\n var pNode;\n var clickedRes = this.lastResourceLevel[index].resourceData;\n var resRows = [].slice.call(this.parent.element.querySelectorAll('.' + cls.RESOURCE_COLUMN_WRAP_CLASS + ' ' + 'tr'));\n var contentRows = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_WRAP_CLASS + ' ' + 'tbody tr'));\n var eventRows = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_WRAP_CLASS + ' .' + cls.APPOINTMENT_CONTAINER_CLASS));\n for (var j = 0; j < clickedRes.Count; j++) {\n rowCollection.push(resRows[index + j + 1]);\n workCellCollection.push(contentRows[index + j + 1]);\n headerRowCollection.push(eventRows[index + j + 1]);\n }\n var clonedCollection = this.lastResourceLevel;\n for (var i = 0; i < rowCollection.length; i++) {\n var expanded = true;\n pNode = rowCollection[i].children[0].classList.contains(cls.RESOURCE_PARENT_CLASS);\n clonedCollection[index].resourceData[clonedCollection[index].resource.expandedField] = !hide;\n if (hide) {\n if (pNode) {\n var trElem = rowCollection[i].querySelector('.' + cls.RESOURCE_TREE_ICON_CLASS);\n if (trElem) {\n classList(trElem, [cls.RESOURCE_EXPAND_CLASS], [cls.RESOURCE_COLLAPSE_CLASS]);\n }\n }\n if (!rowCollection[i].classList.contains(cls.HIDDEN_CLASS)) {\n addClass([rowCollection[i], workCellCollection[i], headerRowCollection[i]], cls.HIDDEN_CLASS);\n }\n }\n else {\n if (pNode) {\n var rowIndex = rowCollection[i].rowIndex;\n if (!clonedCollection[rowIndex].resourceData[clonedCollection[rowIndex].resource.expandedField]\n && !isNullOrUndefined(clonedCollection[rowIndex].resourceData[clonedCollection[rowIndex].resource.expandedField])) {\n rowCollection.splice(i + 1, (parseInt(clonedCollection[rowIndex].resourceData.Count, 10)));\n workCellCollection.splice(i + 1, (parseInt(clonedCollection[rowIndex].resourceData.Count, 10)));\n headerRowCollection.splice(i + 1, (parseInt(clonedCollection[rowIndex].resourceData.Count, 10)));\n expanded = false;\n }\n if (expanded) {\n var trElem = rowCollection[i].querySelector('.' + cls.RESOURCE_TREE_ICON_CLASS);\n if (trElem) {\n classList(trElem, [cls.RESOURCE_COLLAPSE_CLASS], [cls.RESOURCE_EXPAND_CLASS]);\n }\n }\n }\n if (rowCollection[i].classList.contains(cls.HIDDEN_CLASS)) {\n removeClass([rowCollection[i], workCellCollection[i], headerRowCollection[i]], cls.HIDDEN_CLASS);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ResourceBase.prototype.updateVirtualContent = function (index, expand, e, target) {\n this.lastResourceLevel[index].resourceData[this.lastResourceLevel[index].resource.expandedField] = !expand;\n this.setExpandedResources();\n var resourceCount = this.parent.virtualScrollModule.getRenderedCount();\n var startIndex = this.expandedResources.indexOf(this.renderedResources[0]);\n this.renderedResources = this.expandedResources.slice(startIndex, startIndex + resourceCount);\n if (this.renderedResources.length < resourceCount) {\n var sIndex = this.expandedResources.length - resourceCount;\n sIndex = (sIndex > 0) ? sIndex : 0;\n this.renderedResources = this.expandedResources.slice(sIndex, this.expandedResources.length);\n }\n var virtualTrack = this.parent.element.querySelector('.' + cls.VIRTUAL_TRACK_CLASS);\n this.parent.virtualScrollModule.updateVirtualTrackHeight(virtualTrack);\n var resTable = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS + ' ' + 'table');\n var contentTable = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS + ' ' + 'table');\n var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n this.parent.virtualScrollModule.updateContent(resTable, contentTable, eventTable, this.renderedResources);\n var timeIndicator = this.parent.element.querySelector('.' + cls.CURRENT_TIMELINE_CLASS);\n if (!isNullOrUndefined(timeIndicator)) {\n timeIndicator.style.height =\n this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS).offsetHeight + 'px';\n }\n };\n ResourceBase.prototype.renderResourceHeader = function () {\n var resourceWrapper = createElement('div', { className: cls.RESOURCE_TOOLBAR_CONTAINER });\n resourceWrapper.innerHTML = '
    ' +\n '
    ';\n if (this.parent.currentView === 'MonthAgenda') {\n var target = this.parent.activeView.getPanel().querySelector('.' + cls.CONTENT_WRAP_CLASS);\n target.insertBefore(resourceWrapper, target.querySelector('.' + cls.WRAPPER_CONTAINER_CLASS));\n }\n else {\n this.parent.element.insertBefore(resourceWrapper, this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS));\n }\n this.renderResourceHeaderText();\n EventHandler.add(resourceWrapper.querySelector('.' + cls.RESOURCE_MENU_ICON), 'click', this.menuClick, this);\n };\n ResourceBase.prototype.renderResourceTree = function () {\n this.popupOverlay = createElement('div', { className: cls.RESOURCE_TREE_POPUP_OVERLAY });\n var treeWrapper = createElement('div', { className: cls.RESOURCE_TREE_POPUP + ' e-popup-close' });\n if (this.parent.currentView === 'MonthAgenda') {\n var target = this.parent.activeView.getPanel().querySelector('.' + cls.WRAPPER_CONTAINER_CLASS);\n target.insertBefore(treeWrapper, target.children[0]);\n target.appendChild(this.popupOverlay);\n }\n else {\n this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS).appendChild(treeWrapper);\n this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS).appendChild(this.popupOverlay);\n }\n var resourceTree = createElement('div', { className: cls.RESOURCE_TREE });\n treeWrapper.appendChild(resourceTree);\n this.treeViewObj = new TreeView({\n cssClass: this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n fields: {\n dataSource: [].slice.call(this.generateTreeData()),\n id: 'resourceId',\n text: 'resourceName',\n child: 'resourceChild'\n },\n nodeTemplate: this.parent.resourceHeaderTemplate,\n nodeClicked: this.resourceClick.bind(this)\n });\n this.treeViewObj.appendTo(resourceTree);\n this.treeViewObj.expandAll();\n this.treePopup = new Popup(treeWrapper, {\n targetType: 'relative',\n actionOnScroll: 'none',\n content: this.treeViewObj.element,\n relateTo: this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS),\n enableRtl: this.parent.enableRtl,\n hideAnimation: { name: 'SlideLeftOut', duration: 500 },\n showAnimation: { name: 'SlideLeftIn', duration: 500 },\n viewPortElement: this.parent.element.querySelector('.' + (this.parent.currentView === 'MonthAgenda' ?\n cls.WRAPPER_CONTAINER_CLASS : cls.TABLE_CONTAINER_CLASS))\n });\n this.parent.on(events.documentClick, this.documentClick, this);\n };\n ResourceBase.prototype.generateTreeData = function (isTimeLine) {\n var _this = this;\n var treeCollection = [];\n var resTreeColl = [];\n var groupIndex = 0;\n var _loop_1 = function (i, len) {\n var treeHandler = function (treeLevel, index, levelId) {\n var resource = _this.resourceCollection[index];\n var treeArgs;\n var resObj;\n if (!isTimeLine) {\n treeArgs = {\n resourceId: levelId,\n resourceName: treeLevel.resourceData[resource.textField],\n resource: treeLevel.resource,\n resourceData: treeLevel.resourceData\n };\n }\n else {\n resObj = {\n type: 'resourceHeader', resource: treeLevel.resource,\n resourceData: treeLevel.resourceData, groupIndex: groupIndex,\n groupOrder: treeLevel.groupOrder\n };\n resTreeColl.push(resObj);\n groupIndex++;\n }\n if (treeLevel.child.length > 0 && !isTimeLine) {\n treeArgs.resourceChild = [];\n }\n var count = 1;\n for (var _i = 0, _a = treeLevel.child; _i < _a.length; _i++) {\n var tree = _a[_i];\n if (!isTimeLine) {\n treeArgs.resourceChild.push(treeHandler(tree, index + 1, levelId + '-' + count));\n }\n else {\n treeHandler(tree, index + 1, levelId + '-' + count);\n }\n count += 1;\n }\n if (isTimeLine) {\n extend(resObj.resourceData, { Count: count - 1 });\n }\n return treeArgs;\n };\n if (!isTimeLine) {\n treeCollection.push(treeHandler(this_1.resourceTreeLevel[i], 0, (i + 1).toString()));\n }\n else {\n treeHandler(this_1.resourceTreeLevel[i], 0, (i + 1).toString());\n }\n };\n var this_1 = this;\n for (var i = 0, len = this.resourceTreeLevel.length; i < len; i++) {\n _loop_1(i, len);\n }\n if (isTimeLine) {\n this.lastResourceLevel = resTreeColl;\n return resTreeColl;\n }\n else {\n return treeCollection;\n }\n };\n ResourceBase.prototype.renderResourceHeaderText = function () {\n var resource = this.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n var headerCollection = [];\n var _loop_2 = function (i, len) {\n var resourceLevel = this_2.resourceCollection[i];\n var resourceText = resourceLevel.dataSource.filter(function (resData) {\n return resData[resourceLevel.idField] === resource.groupOrder[i];\n });\n var resourceName = createElement('div', {\n className: cls.RESOURCE_NAME,\n innerHTML: resourceText[0][resourceLevel.textField]\n });\n headerCollection.push(resourceName);\n var levelIcon = createElement('div', { className: 'e-icons e-icon-next' });\n headerCollection.push(levelIcon);\n };\n var this_2 = this;\n for (var i = 0, len = resource.groupOrder.length; i < len; i++) {\n _loop_2(i, len);\n }\n headerCollection.pop();\n var target = (this.parent.currentView === 'MonthAgenda') ? this.parent.activeView.getPanel() : this.parent.element;\n var headerWrapper = target.querySelector('.' + cls.RESOURCE_LEVEL_TITLE);\n util.removeChildren(headerWrapper);\n for (var _i = 0, headerCollection_1 = headerCollection; _i < headerCollection_1.length; _i++) {\n var header = headerCollection_1[_i];\n headerWrapper.appendChild(header);\n }\n if (this.lastResourceLevel.length === 1) {\n addClass([this.parent.element.querySelector('.' + cls.RESOURCE_MENU)], cls.DISABLE_CLASS);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ResourceBase.prototype.menuClick = function (event) {\n if (this.parent.element.querySelector('.' + cls.RESOURCE_TREE_POPUP).classList.contains(cls.POPUP_OPEN)) {\n this.treePopup.hide();\n removeClass([this.popupOverlay], cls.ENABLE_CLASS);\n }\n else {\n var treeNodes = [].slice.call(this.treeViewObj.element.querySelectorAll('.e-list-item:not(.e-has-child)'));\n removeClass(treeNodes, 'e-active');\n addClass([treeNodes[this.parent.uiStateValues.groupIndex]], 'e-active');\n this.treePopup.show();\n addClass([this.popupOverlay], cls.ENABLE_CLASS);\n }\n };\n ResourceBase.prototype.selectResourceByIndex = function (groupIndex) {\n if (this.lastResourceLevel && groupIndex > -1 && groupIndex < this.lastResourceLevel.length) {\n this.triggerEvents(groupIndex);\n }\n };\n ResourceBase.prototype.resourceClick = function (event) {\n if (!event.node.classList.contains('e-has-child')) {\n this.treePopup.hide();\n removeClass([this.popupOverlay], cls.ENABLE_CLASS);\n var treeNodes = [].slice.call(this.treeViewObj.element.querySelectorAll('.e-list-item:not(.e-has-child)'));\n var groupIndex = treeNodes.indexOf(event.node);\n this.triggerEvents(groupIndex, event);\n event.event.preventDefault();\n }\n };\n ResourceBase.prototype.triggerEvents = function (groupIndex, event) {\n var _this = this;\n var args = { cancel: false, event: (event) ? event.event : null, groupIndex: groupIndex, requestType: 'resourceChange' };\n this.parent.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n _this.parent.uiStateValues.groupIndex = actionArgs.groupIndex;\n _this.parent.renderModule.render(_this.parent.currentView);\n args = {\n cancel: false, event: (event) ? event.event : null, groupIndex: _this.parent.uiStateValues.groupIndex, requestType: 'resourceChanged'\n };\n _this.parent.trigger(events.actionComplete, args);\n }\n });\n };\n ResourceBase.prototype.documentClick = function (args) {\n if (closest(args.event.target, '.' + cls.RESOURCE_TREE_POPUP)) {\n return;\n }\n var treeWrapper = this.parent.element.querySelector('.' + cls.RESOURCE_TREE_POPUP);\n if (treeWrapper && treeWrapper.classList.contains(cls.POPUP_OPEN)) {\n this.treePopup.hide();\n removeClass([this.popupOverlay], cls.ENABLE_CLASS);\n }\n };\n ResourceBase.prototype.bindResourcesData = function (isSetModel) {\n var _this = this;\n this.parent.showSpinner();\n var promises = [];\n for (var _i = 0, _a = this.parent.resources; _i < _a.length; _i++) {\n var resource = _a[_i];\n var dataModule = new Data(resource.dataSource, resource.query);\n promises.push(dataModule.getData(dataModule.generateQuery()));\n }\n Promise.all(promises).then(function (e) { return _this.dataManagerSuccess(e, isSetModel); })\n .catch(function (e) { return _this.parent.crudModule.dataManagerFailure(e); });\n };\n ResourceBase.prototype.dataManagerSuccess = function (e, isSetModel) {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.parent.resourceCollection = [];\n for (var i = 0, length_1 = e.length; i < length_1; i++) {\n var resource = this.parent.resources[i];\n var resourceObj = this.getResourceModel(resource, e[i].result);\n this.parent.resourceCollection.push(resourceObj);\n }\n this.refreshLayout(isSetModel);\n };\n ResourceBase.prototype.getResourceModel = function (resource, resourceData) {\n var resourceObj = {\n field: resource.field,\n title: resource.title,\n name: resource.name,\n allowMultiple: resource.allowMultiple,\n dataSource: resourceData || resource.dataSource,\n idField: resource.idField,\n textField: resource.textField,\n groupIDField: resource.groupIDField,\n colorField: resource.colorField,\n startHourField: resource.startHourField,\n endHourField: resource.endHourField,\n workDaysField: resource.workDaysField,\n expandedField: resource.expandedField,\n cssClassField: resource.cssClassField\n };\n return resourceObj;\n };\n ResourceBase.prototype.refreshLayout = function (isSetModel) {\n if (isNullOrUndefined(this.parent.uiStateValues.groupIndex) || !(this.parent.enablePersistence)) {\n this.parent.uiStateValues.groupIndex = 0;\n }\n this.parent.renderElements(isSetModel);\n };\n ResourceBase.prototype.setResourceCollection = function () {\n var requiredResources = [];\n this.resourceCollection = [];\n this.colorIndex = null;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n for (var _i = 0, _a = this.parent.activeViewOptions.group.resources; _i < _a.length; _i++) {\n var resource = _a[_i];\n var index_1 = util.findIndexInData(this.parent.resourceCollection, 'name', resource);\n if (index_1 >= 0) {\n requiredResources.push(this.parent.resourceCollection[index_1]);\n }\n }\n }\n else if (this.parent.resourceCollection.length > 0) {\n requiredResources = this.parent.resourceCollection;\n }\n var index = 0;\n for (var _b = 0, requiredResources_1 = requiredResources; _b < requiredResources_1.length; _b++) {\n var resource = requiredResources_1[_b];\n var resources = this.getResourceModel(resource);\n if (resource.name === this.parent.eventSettings.resourceColorField) {\n this.colorIndex = index;\n }\n index++;\n this.resourceCollection.push(resources);\n }\n if (isNullOrUndefined(this.colorIndex)) {\n this.colorIndex = this.resourceCollection.length - 1;\n }\n };\n ResourceBase.prototype.generateResourceLevels = function (innerDates, isTimeLine) {\n var _this = this;\n var resources = this.resourceCollection;\n var resTreeGroup = [];\n var lastColumnDates = [];\n var group = function (resources, index, prevResource, prevResourceData, prevOrder) {\n var resTree = [];\n var resource = resources[0];\n if (resource) {\n var data = void 0;\n if (prevResourceData && _this.parent.activeViewOptions.group.byGroupID) {\n var id_1 = prevResourceData[prevResource.idField];\n data = resource.dataSource.filter(function (e) {\n return e[resource.groupIDField] === id_1;\n });\n }\n else {\n data = resource.dataSource;\n }\n for (var i = 0; i < data.length; i++) {\n var groupOrder = [];\n if (prevOrder && prevOrder.length > 0) {\n groupOrder = groupOrder.concat(prevOrder);\n }\n groupOrder.push(data[i][resource.idField]);\n var items = group(resources.slice(1), index + 1, resource, data[i], groupOrder);\n // Here validate child item empty top level resource only\n if (index === 0 && items.length === 0 && _this.resourceCollection.length > 1) {\n continue;\n }\n var dateCol = [];\n var renderDates = _this.parent.activeView.renderDates;\n var resWorkDays = void 0;\n if (!_this.parent.activeViewOptions.group.byDate && index + 1 === _this.resourceCollection.length) {\n var workDays = data[i][resource.workDaysField];\n var resStartHour = data[i][resource.startHourField];\n var resEndHour = data[i][resource.endHourField];\n if (workDays && workDays.length > 0) {\n renderDates = _this.parent.activeView.getRenderDates(workDays);\n resWorkDays = workDays;\n dateCol = _this.parent.activeView.getDateSlots(renderDates, workDays);\n }\n else {\n resWorkDays = _this.parent.activeViewOptions.workDays;\n dateCol = innerDates;\n }\n var dateSlots = _this.generateCustomHours(dateCol, resStartHour, resEndHour, groupOrder);\n lastColumnDates = lastColumnDates.concat(dateSlots);\n }\n var resCssClass = data[i][resource.cssClassField];\n var slotData = {\n type: 'resourceHeader', className: ['e-resource-cells'],\n resourceLevelIndex: index, groupOrder: groupOrder,\n resource: resource, resourceData: data[i],\n colSpan: _this.parent.activeViewOptions.group.byDate ? 1 : dateCol.length,\n renderDates: renderDates, workDays: resWorkDays, cssClass: resCssClass,\n child: items\n };\n resTree.push(slotData);\n }\n if (!resTreeGroup[index]) {\n resTreeGroup[index] = [];\n }\n if (resTree.length > 0) {\n resTreeGroup[index].push(resTree);\n }\n return resTree;\n }\n return [];\n };\n this.resourceTreeLevel = group(resources, 0);\n return (isTimeLine) ? [] : this.generateHeaderLevels(resTreeGroup, lastColumnDates, innerDates);\n };\n ResourceBase.prototype.generateCustomHours = function (renderDates, startHour, endHour, groupOrder) {\n var dateSlots = extend([], renderDates, null, true);\n for (var _i = 0, dateSlots_1 = dateSlots; _i < dateSlots_1.length; _i++) {\n var dateSlot = dateSlots_1[_i];\n if (startHour) {\n dateSlot.startHour = this.parent.getStartEndTime(startHour);\n }\n if (endHour) {\n dateSlot.endHour = this.parent.getStartEndTime(endHour);\n }\n if (groupOrder) {\n dateSlot.groupOrder = groupOrder;\n }\n }\n return dateSlots;\n };\n ResourceBase.prototype.generateHeaderLevels = function (resTreeGroup, lastColumnDates, headerDates) {\n var headerLevels = [];\n for (var i = resTreeGroup.length - 1; i >= 0; i--) {\n var temp = 0;\n for (var _i = 0, _a = resTreeGroup[i]; _i < _a.length; _i++) {\n var currentLevelChilds = _a[_i];\n for (var _b = 0, currentLevelChilds_1 = currentLevelChilds; _b < currentLevelChilds_1.length; _b++) {\n var currentLevelChild = currentLevelChilds_1[_b];\n if (resTreeGroup[i + 1] && resTreeGroup[i + 1].length > 0) {\n var nextLevelChilds = resTreeGroup[i + 1][temp];\n if (!nextLevelChilds) {\n continue;\n }\n var colSpan = 0;\n for (var _c = 0, nextLevelChilds_1 = nextLevelChilds; _c < nextLevelChilds_1.length; _c++) {\n var nextLevelChild = nextLevelChilds_1[_c];\n if (!this.parent.activeViewOptions.group.byGroupID || (this.parent.activeViewOptions.group.byGroupID &&\n nextLevelChild.resourceData[nextLevelChild.resource.groupIDField] ===\n currentLevelChild.resourceData[currentLevelChild.resource.idField])) {\n colSpan += nextLevelChild.colSpan;\n }\n }\n currentLevelChild.colSpan = colSpan;\n }\n currentLevelChild.groupIndex = temp;\n temp++;\n headerLevels[currentLevelChild.resourceLevelIndex] = headerLevels[currentLevelChild.resourceLevelIndex] || [];\n headerLevels[currentLevelChild.resourceLevelIndex].push(currentLevelChild);\n }\n }\n }\n this.lastResourceLevel = headerLevels.slice(-1)[0] || [];\n if (!this.parent.activeViewOptions.group.byDate) {\n var index = 0;\n for (var _d = 0, _e = this.lastResourceLevel; _d < _e.length; _d++) {\n var lastLevelResource = _e[_d];\n for (var i = 0; i < lastLevelResource.colSpan; i++) {\n lastColumnDates[index].groupIndex = lastLevelResource.groupIndex;\n index++;\n }\n }\n headerLevels.push(lastColumnDates);\n return headerLevels;\n }\n var dateHeaderLevels = [];\n var levels = extend([], headerLevels, null, true);\n var dateColSpan = 0;\n for (var _f = 0, _g = levels[0]; _f < _g.length; _f++) {\n var firstRowTd = _g[_f];\n dateColSpan += firstRowTd.colSpan;\n }\n var datesColumn = [];\n for (var _h = 0, headerDates_1 = headerDates; _h < headerDates_1.length; _h++) {\n var headerDate = headerDates_1[_h];\n headerDate.colSpan = dateColSpan;\n datesColumn.push(headerDate);\n var resGroup = extend([], levels, null, true);\n for (var k = 0, length_2 = resGroup.length; k < length_2; k++) {\n if (k === resGroup.length - 1) {\n for (var _j = 0, _k = resGroup[k]; _j < _k.length; _j++) {\n var resTd = _k[_j];\n resTd.date = headerDate.date;\n resTd.workDays = headerDate.workDays;\n resTd.startHour = this.parent.getStartEndTime(resTd.resourceData[resTd.resource.startHourField]) ||\n headerDate.startHour;\n resTd.endHour = this.parent.getStartEndTime(resTd.resourceData[resTd.resource.endHourField]) ||\n headerDate.endHour;\n }\n }\n if (!dateHeaderLevels[k]) {\n dateHeaderLevels[k] = [];\n }\n dateHeaderLevels[k] = dateHeaderLevels[k].concat(resGroup[k]);\n }\n }\n dateHeaderLevels.unshift(datesColumn);\n return dateHeaderLevels;\n };\n ResourceBase.prototype.setResourceValues = function (eventObj, groupIndex) {\n var _this = this;\n var setValues = function (index, field, value) {\n if (_this.resourceCollection[index].allowMultiple && _this.parent.activeViewOptions.group.allowGroupEdit) {\n eventObj[field] = [value];\n }\n else {\n eventObj[field] = value;\n }\n };\n if (groupIndex === void 0) {\n groupIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex :\n this.parent.activeCellsData.groupIndex;\n }\n if (this.parent.activeViewOptions.group.resources.length > 0 && !isNullOrUndefined(groupIndex)) {\n var groupOrder = this.lastResourceLevel[groupIndex].groupOrder;\n for (var index = 0; index < this.resourceCollection.length; index++) {\n setValues(index, this.resourceCollection[index].field, groupOrder[index]);\n }\n }\n else if (this.parent.resourceCollection.length > 0) {\n for (var index = 0; index < this.resourceCollection.length; index++) {\n var data = this.resourceCollection[index].dataSource[0];\n if (data) {\n setValues(index, this.resourceCollection[index].field, data[this.resourceCollection[index].idField]);\n }\n }\n }\n };\n ResourceBase.prototype.getResourceColor = function (eventObj, groupOrder) {\n var colorFieldIndex = (!isNullOrUndefined(groupOrder) &&\n this.colorIndex > groupOrder.length - 1) ? groupOrder.length - 1 : this.colorIndex;\n var resource = this.resourceCollection[colorFieldIndex];\n if (isNullOrUndefined(groupOrder) && this.parent.activeViewOptions.group.allowGroupEdit && resource.allowMultiple) {\n return undefined;\n }\n var id = isNullOrUndefined(groupOrder) ? eventObj[resource.field] : groupOrder[colorFieldIndex];\n var data = this.filterData(resource.dataSource, resource.idField, id);\n if (data.length > 0) {\n return data[0][resource.colorField];\n }\n return undefined;\n };\n ResourceBase.prototype.getCssClass = function (eventObj) {\n var resource = this.resourceCollection.slice(-1)[0];\n if (this.parent.activeViewOptions.group.allowGroupEdit && resource.allowMultiple) {\n return undefined;\n }\n var data = this.filterData(resource.dataSource, resource.idField, eventObj[resource.field]);\n if (data.length > 0) {\n return data[0][resource.cssClassField];\n }\n return undefined;\n };\n ResourceBase.prototype.getResourceRenderDates = function () {\n // eslint-disable-next-line prefer-spread\n var resourceDates = [].concat.apply([], this.lastResourceLevel.map(function (e) { return e.renderDates; }));\n var removeDuplicateDates = function (dateColl) { return dateColl.filter(function (date, index, dates) {\n return dates.map(function (dateObj) { return dateObj.getTime(); }).indexOf(date.getTime()) === index;\n }); };\n var renderDates = removeDuplicateDates(resourceDates);\n renderDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n return renderDates;\n };\n ResourceBase.prototype.filterData = function (dataSource, field, value) {\n return dataSource.filter(function (data) { return data[field] === value; });\n };\n ResourceBase.prototype.getResourceData = function (eventObj, index, groupEditIndex) {\n if (this.parent.activeViewOptions.group.allowGroupEdit) {\n var resourceObj = {};\n for (var _i = 0, groupEditIndex_1 = groupEditIndex; _i < groupEditIndex_1.length; _i++) {\n var groupIndex = groupEditIndex_1[_i];\n var resourceLevel = this.lastResourceLevel[groupIndex].groupOrder;\n for (var level = 0, length_3 = resourceLevel.length; level < length_3; level++) {\n var fieldName = this.resourceCollection[level].field;\n if (isNullOrUndefined(resourceObj[fieldName])) {\n resourceObj[fieldName] = [];\n }\n resourceObj[fieldName].push(resourceLevel[level]);\n }\n }\n eventObj = extend(eventObj, resourceObj);\n }\n else {\n for (var level = 0, length_4 = this.resourceCollection.length; level < length_4; level++) {\n if (this.lastResourceLevel[index]) {\n eventObj[this.resourceCollection[level].field] = this.lastResourceLevel[index].groupOrder[level];\n }\n }\n }\n };\n ResourceBase.prototype.addResource = function (resources, name, index) {\n var resourceCollection = (resources instanceof Array) ? resources : [resources];\n var _loop_3 = function (resource) {\n if (resource.name === name) {\n resourceCollection.forEach(function (addObj, i) {\n return new DataManager({ json: resource.dataSource }).insert(addObj, null, null, index + i);\n });\n return \"break\";\n }\n };\n for (var _i = 0, _a = this.parent.resourceCollection; _i < _a.length; _i++) {\n var resource = _a[_i];\n var state_1 = _loop_3(resource);\n if (state_1 === \"break\")\n break;\n }\n this.refreshLayout(true);\n };\n ResourceBase.prototype.removeResource = function (resourceId, name) {\n var resourceCollection = (resourceId instanceof Array) ? resourceId : [resourceId];\n var _loop_4 = function (resource) {\n if (resource.name === name) {\n resourceCollection.forEach(function (removeObj) {\n return new DataManager({ json: resource.dataSource }).remove(resource.idField, removeObj);\n });\n return \"break\";\n }\n };\n for (var _i = 0, _a = this.parent.resourceCollection; _i < _a.length; _i++) {\n var resource = _a[_i];\n var state_2 = _loop_4(resource);\n if (state_2 === \"break\")\n break;\n }\n this.refreshLayout(true);\n };\n ResourceBase.prototype.getIndexFromResourceId = function (id, name, resourceData, event, parentField) {\n name = name || this.parent.resourceCollection.slice(-1)[0].name;\n if (isNullOrUndefined(resourceData)) {\n resourceData = this.resourceCollection.filter(function (e) { return e.name === name; })[0];\n if (isNullOrUndefined(resourceData)) {\n return null;\n }\n }\n var resource = resourceData.dataSource.filter(function (e) {\n if (event && e[resourceData.idField] === id) {\n if (e[resourceData.groupIDField] === event[parentField]) {\n return e[resourceData.idField] === id;\n }\n return null;\n }\n else {\n return e[resourceData.idField] === id;\n }\n })[0];\n return (this.lastResourceLevel.map(function (e) { return e.resourceData; }).indexOf(resource));\n };\n ResourceBase.prototype.resourceExpand = function (id, name, hide) {\n var resource = this.parent.resourceCollection.filter(function (e) {\n if (e.name === name) {\n return e;\n }\n return null;\n })[0];\n var index = 0;\n var resourceData = resource.dataSource.filter(function (e) { return e[resource.idField] === id; })[0];\n if (!this.parent.activeViewOptions.group.byGroupID) {\n index = this.getIndexFromResourceId(id, name, resource);\n }\n else {\n index = this.lastResourceLevel.map(function (e) { return e.resourceData; }).indexOf(resourceData);\n }\n var target = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS + ' ' + (\"[data-group-index=\\\"\" + index + \"\\\"]\") +\n ' ' + '.' + cls.RESOURCE_TREE_ICON_CLASS);\n if (target) {\n if (target.classList.contains(cls.RESOURCE_EXPAND_CLASS) && !hide) {\n target.click();\n }\n else if (target.classList.contains(cls.RESOURCE_COLLAPSE_CLASS) && hide) {\n target.click();\n }\n }\n };\n ResourceBase.prototype.resourceScroll = function (id, name) {\n if (this.parent.isAdaptive || ['Agenda', 'MonthAgenda'].indexOf(this.parent.currentView) > -1) {\n return;\n }\n var levelName = name || this.parent.resourceCollection.slice(-1)[0].name;\n var levelIndex = this.parent.resourceCollection.length - 1;\n var resource = this.parent.resourceCollection.filter(function (e, index) {\n if (e.name === levelName) {\n levelIndex = index;\n return e;\n }\n return null;\n })[0];\n var scrollElement = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var index = 0;\n if (this.parent.activeView.isTimelineView()) {\n if (!this.parent.activeViewOptions.group.byGroupID) {\n index = this.getIndexFromResourceId(id, levelName, resource);\n }\n else {\n var resourceData = resource.dataSource.filter(function (e) {\n return e[resource.idField] === id;\n })[0];\n index = this.lastResourceLevel.map(function (e) { return e.resourceData; }).indexOf(resourceData);\n }\n if (this.parent.virtualScrollModule) {\n var virtual = this.parent.element.querySelector('.' + cls.VIRTUAL_TRACK_CLASS);\n var averageRowHeight = Math.round(virtual.offsetHeight / this.expandedResources.length);\n if (this.parent.rowAutoHeight) {\n scrollElement.scrollTop = 0;\n this.parent.virtualScrollModule.virtualScrolling();\n }\n scrollElement.scrollTop = (index * averageRowHeight) - (((this.parent.virtualScrollModule.bufferCount - 1) * averageRowHeight));\n this.parent.virtualScrollModule.virtualScrolling();\n if (this.parent.rowAutoHeight) {\n var td = this.parent.element.querySelector(\".\" + cls.WORK_CELLS_CLASS + \"[data-group-index=\\\"\" + index + \"\\\"]\");\n if (td && !td.parentElement.classList.contains(cls.HIDDEN_CLASS)) {\n scrollElement.scrollTop =\n (scrollElement.scrollTop < td.offsetTop) ? td.offsetTop : scrollElement.scrollTop + td.offsetTop;\n }\n }\n else {\n scrollElement.scrollTop = (index * averageRowHeight);\n }\n }\n else {\n var td = this.parent.element.querySelector(\".\" + cls.WORK_CELLS_CLASS + \"[data-group-index=\\\"\" + index + \"\\\"]\");\n if (td && !td.parentElement.classList.contains(cls.HIDDEN_CLASS)) {\n scrollElement.scrollTop = td.offsetTop;\n }\n }\n }\n else {\n if (!this.parent.activeViewOptions.group.byGroupID) {\n index = this.getIndexFromResourceId(id, levelName, resource);\n }\n else {\n if (levelName === this.parent.resourceCollection.slice(-1)[0].name) {\n index = this.lastResourceLevel.map(function (e) { return e.resourceData[resource.idField]; }).indexOf(id);\n }\n else {\n index = resource.dataSource.map(function (e) { return e[resource.idField]; }).indexOf(id);\n }\n }\n var offsetTarget = this.parent.element.querySelector(\".\" + cls.HEADER_ROW_CLASS + \":nth-child(\" + (levelIndex + 1) + \")\");\n var offset = [].slice.call(offsetTarget.children).map(function (node) { return node.offsetLeft; });\n scrollElement.scrollLeft = offset[index];\n }\n };\n ResourceBase.prototype.destroy = function () {\n this.parent.off(events.documentClick, this.documentClick);\n if (this.treeViewObj) {\n this.treeViewObj.destroy();\n this.treeViewObj = null;\n }\n if (this.treePopup) {\n this.treePopup.destroy();\n this.treePopup = null;\n remove(this.parent.element.querySelector('.' + cls.RESOURCE_TREE_POPUP));\n remove(this.parent.element.querySelector('.' + cls.RESOURCE_TREE_POPUP_OVERLAY));\n }\n var resToolBarEle = this.parent.element.querySelector('.' + cls.RESOURCE_TOOLBAR_CONTAINER);\n if (resToolBarEle) {\n remove(resToolBarEle);\n }\n };\n return ResourceBase;\n}());\nexport { ResourceBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Animation, Collection, append } from '@syncfusion/ej2-base';\nimport { EventHandler, Browser, Internationalization, getDefaultDateObject, cldrData, L10n } from '@syncfusion/ej2-base';\nimport { getValue, compile, extend, isNullOrUndefined, NotifyPropertyChanges, Complex } from '@syncfusion/ej2-base';\nimport { getElement, removeClass, addClass, classList, remove } from '@syncfusion/ej2-base';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { HeaderRenderer } from '../renderer/header-renderer';\nimport { Scroll } from '../actions/scroll';\nimport { ScheduleTouch } from '../actions/touch';\nimport { KeyboardInteraction } from '../actions/keyboard';\nimport { Data } from '../actions/data';\nimport { EventBase } from '../event-renderer/event-base';\nimport { InlineEdit } from '../event-renderer/inline-edit';\nimport { QuickPopups } from '../popups/quick-popups';\nimport { EventTooltip } from '../popups/event-tooltip';\nimport { EventWindow } from '../popups/event-window';\nimport { Render } from '../renderer/renderer';\nimport { WorkHours } from '../models/work-hours';\nimport { TimeScale } from '../models/time-scale';\nimport { QuickInfoTemplates } from '../models/quick-info-templates';\nimport { HeaderRows } from '../models/header-rows';\nimport { Crud } from '../actions/crud';\nimport { WorkCellInteraction } from '../actions/work-cells';\nimport { EventSettings } from '../models/event-settings';\nimport { Group } from '../models/group';\nimport { Resources } from '../models/resources';\nimport { Gregorian, Islamic } from '../../common/calendar-util';\nimport { ResourceBase } from '../base/resource';\nimport { Timezone, timezoneData } from '../timezone/timezone';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\n/**\n * Represents the Schedule component that displays a list of events scheduled against specific date and timings,\n * thus helping us to plan and manage it properly.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Schedule = /** @class */ (function (_super) {\n __extends(Schedule, _super);\n /**\n * Constructor for creating the Schedule widget\n *\n * @param {ScheduleModel} options Accepts the schedule model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function Schedule(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Core method that initializes the control rendering.\n *\n * @returns {void}\n * @private\n */\n Schedule.prototype.render = function () {\n var addClasses = [];\n var removeClasses = [];\n addClasses.push(cls.ROOT);\n if (this.enableRtl) {\n addClasses.push(cls.RTL);\n }\n else {\n removeClasses.push(cls.RTL);\n }\n if (this.isAdaptive) {\n addClasses.push(cls.DEVICE_CLASS);\n }\n else {\n removeClasses.push(cls.DEVICE_CLASS);\n }\n if (this.allowMultiDrag) {\n addClasses.push(cls.MULTI_DRAG);\n }\n else {\n removeClasses.push(cls.MULTI_DRAG);\n }\n if (this.cssClass) {\n var cssClass = this.cssClass.split(' ');\n for (var _i = 0, cssClass_1 = cssClass; _i < cssClass_1.length; _i++) {\n var cls_1 = cssClass_1[_i];\n addClasses.push(cls_1);\n }\n }\n classList(this.element, addClasses, removeClasses);\n this.validateDate();\n createSpinner({ target: this.element });\n this.scrollModule = new Scroll(this);\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n this.renderModule = new Render(this);\n this.eventBase = new EventBase(this);\n this.workCellAction = new WorkCellInteraction(this);\n if (this.allowKeyboardInteraction) {\n this.keyboardInteractionModule = new KeyboardInteraction(this);\n }\n this.inlineModule = new InlineEdit(this);\n this.initializeDataModule();\n this.renderTableContainer();\n this.activeViewOptions = this.getActiveViewOptions();\n this.initializeResources();\n this.wireEvents();\n };\n Schedule.prototype.renderTableContainer = function () {\n if (!this.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS)) {\n this.element.appendChild(this.createElement('div', { className: cls.TABLE_CONTAINER_CLASS }));\n }\n };\n /**\n * Method to render react templates\n *\n * @returns {void}\n * @private\n */\n Schedule.prototype.renderTemplates = function () {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Method to reset react templates\n *\n * @param {string[]} templates Accepts the template ID\n * @returns {void}\n * @private\n */\n Schedule.prototype.resetTemplates = function (templates) {\n if (this.isAngular || this.isReact) {\n this.clearTemplate(templates);\n }\n };\n Schedule.prototype.initializeResources = function (isSetModel) {\n if (isSetModel === void 0) { isSetModel = false; }\n if (this.resources.length > 0) {\n this.resourceBase = new ResourceBase(this);\n this.resourceBase.bindResourcesData(isSetModel);\n }\n else {\n this.resourceBase = null;\n this.resourceCollection = [];\n this.renderElements(isSetModel);\n }\n };\n /**\n * Method to render the layout elements\n *\n * @param {boolean} isLayoutOnly Accepts the boolean value to render layout or not\n * @returns {void}\n * @private\n */\n Schedule.prototype.renderElements = function (isLayoutOnly) {\n if (isLayoutOnly) {\n this.initializeView(this.currentView);\n this.eventWindow.refresh();\n return;\n }\n this.destroyHeaderModule();\n if (this.showHeaderBar) {\n this.headerModule = new HeaderRenderer(this);\n }\n this.renderTableContainer();\n if (Browser.isDevice || Browser.isTouch) {\n this.scheduleTouchModule = new ScheduleTouch(this);\n }\n this.initializeView(this.currentView);\n this.destroyPopups();\n if (!this.isPrinting) {\n this.initializePopups();\n }\n };\n Schedule.prototype.validateDate = function (selectedDate) {\n if (selectedDate === void 0) { selectedDate = this.selectedDate; }\n // persist the selected date value\n var date = selectedDate instanceof Date ? new Date(selectedDate.getTime()) : new Date(selectedDate);\n var minDate = this.minDate instanceof Date ? new Date(this.minDate.getTime()) : new Date(this.minDate);\n var maxDate = this.maxDate instanceof Date ? new Date(this.maxDate.getTime()) : new Date(this.maxDate);\n if (minDate <= maxDate) {\n if (date < minDate) {\n date = minDate;\n }\n if (date > maxDate) {\n date = maxDate;\n }\n this.setProperties({ selectedDate: new Date('' + date), minDate: new Date('' + minDate), maxDate: new Date('' + maxDate) }, true);\n if (this.eventWindow) {\n this.eventWindow.updateMinMaxDateToEditor();\n }\n }\n else {\n throw Error('minDate should be equal or less than maxDate');\n }\n };\n Schedule.prototype.getViewIndex = function (viewName) {\n for (var item = 0; item < this.viewCollections.length; item++) {\n var checkIndex = this.viewCollections[item].option;\n if (checkIndex === viewName) {\n return item;\n }\n }\n return -1;\n };\n Schedule.prototype.setViewOptions = function (isModuleLoad) {\n if (isModuleLoad === void 0) { isModuleLoad = false; }\n this.viewOptions = {};\n this.viewCollections = [];\n var viewName;\n var selectedView;\n var prevIndex = this.viewIndex;\n var count = 0;\n this.viewIndex = -1;\n for (var _i = 0, _a = this.views; _i < _a.length; _i++) {\n var view = _a[_i];\n var isOptions = (typeof view === 'string') ? false : true;\n if (typeof view === 'string') {\n viewName = view;\n if (this.currentView === viewName) {\n selectedView = viewName;\n this.viewIndex = count;\n }\n }\n else {\n viewName = view.option;\n if (view.isSelected) {\n selectedView = viewName;\n this.viewIndex = count;\n }\n }\n var obj = extend({ option: viewName }, isOptions ? view : {});\n var fieldViewName = viewName.charAt(0).toLowerCase() + viewName.slice(1);\n obj.cellHeaderTemplateName = obj.cellHeaderTemplate ? obj.option : '';\n obj.dateHeaderTemplateName = obj.dateHeaderTemplate ? obj.option : '';\n obj.cellTemplateName = obj.cellTemplate ? obj.option : '';\n obj.dayHeaderTemplateName = obj.dayHeaderTemplate ? obj.option : '';\n obj.monthHeaderTemplateName = obj.monthHeaderTemplate ? obj.option : '';\n obj.resourceHeaderTemplateName = obj.resourceHeaderTemplate ? obj.option : '';\n obj.headerIndentTemplateName = obj.headerIndentTemplate ? obj.option : '';\n obj.eventTemplateName = obj.eventTemplate ? obj.option : '';\n if (!isNullOrUndefined(obj.firstDayOfWeek) && obj.firstDayOfWeek === 0) {\n delete obj.firstDayOfWeek;\n }\n if (!isNullOrUndefined(obj.interval) && obj.interval === 1) {\n delete obj.interval;\n }\n this.viewCollections.push(obj);\n if (isNullOrUndefined(this.viewOptions[fieldViewName])) {\n this.viewOptions[fieldViewName] = [obj];\n }\n else {\n this.viewOptions[fieldViewName].push(obj);\n }\n count++;\n }\n if (!isModuleLoad && selectedView) {\n this.setProperties({ currentView: selectedView }, true);\n }\n if (this.viewIndex === -1) {\n var currentIndex = this.getViewIndex(this.currentView);\n this.viewIndex = ((typeof this.views[0] !== 'string') && (!isNullOrUndefined(prevIndex) && prevIndex !== -1)) ? prevIndex :\n (currentIndex === -1) ? 0 : currentIndex;\n }\n };\n Schedule.prototype.getActiveViewOptions = function () {\n var timeScale = {\n enable: this.timeScale.enable,\n interval: this.timeScale.interval,\n slotCount: this.timeScale.slotCount,\n majorSlotTemplate: this.timeScale.majorSlotTemplate,\n minorSlotTemplate: this.timeScale.minorSlotTemplate\n };\n var isYearView = this.viewCollections[this.viewIndex].option.indexOf('Year') > -1;\n var group = {\n byDate: isYearView ? false : this.group.byDate,\n byGroupID: this.group.byGroupID,\n allowGroupEdit: this.group.allowGroupEdit,\n resources: this.group.resources,\n headerTooltipTemplate: this.group.headerTooltipTemplate,\n enableCompactView: this.group.enableCompactView\n };\n var workDays = this.viewCollections[this.viewIndex].workDays ? [] : this.workDays;\n var scheduleOptions = {\n dateFormat: this.dateFormat,\n endHour: this.endHour,\n isSelected: false,\n option: null,\n readonly: this.readonly,\n startHour: this.startHour,\n allowVirtualScrolling: false,\n cellHeaderTemplate: this.cellHeaderTemplate,\n dayHeaderTemplate: this.dayHeaderTemplate,\n monthHeaderTemplate: this.monthHeaderTemplate,\n cellTemplate: this.cellTemplate,\n eventTemplate: this.eventSettings.template,\n dateHeaderTemplate: this.dateHeaderTemplate,\n resourceHeaderTemplate: this.resourceHeaderTemplate,\n headerIndentTemplate: this.headerIndentTemplate,\n firstMonthOfYear: this.firstMonthOfYear,\n firstDayOfWeek: this.firstDayOfWeek,\n workDays: workDays,\n monthsCount: this.monthsCount,\n showWeekend: this.showWeekend,\n showWeekNumber: this.showWeekNumber,\n displayName: null,\n interval: 1,\n timeScale: timeScale,\n timeFormat: this.internalTimeFormat,\n group: group,\n headerRows: this.headerRows,\n orientation: 'Horizontal',\n numberOfWeeks: 0,\n displayDate: null\n };\n var viewOptions = this.viewCollections[this.viewIndex];\n var viewsData = extend(scheduleOptions, viewOptions, undefined, true);\n if (this.firstDayOfWeek !== 0 && viewOptions.firstDayOfWeek && this.firstDayOfWeek !== viewOptions.firstDayOfWeek) {\n viewsData.firstDayOfWeek = this.firstDayOfWeek;\n }\n if (viewsData.displayDate) {\n viewsData.displayDate = viewsData.displayDate instanceof Date ? new Date(viewsData.displayDate.getTime()) :\n new Date(viewsData.displayDate);\n }\n return viewsData;\n };\n Schedule.prototype.initializeDataModule = function () {\n this.eventFields = {\n id: this.eventSettings.fields.id,\n isBlock: this.eventSettings.fields.isBlock,\n subject: this.eventSettings.fields.subject.name,\n startTime: this.eventSettings.fields.startTime.name,\n endTime: this.eventSettings.fields.endTime.name,\n startTimezone: this.eventSettings.fields.startTimezone.name,\n endTimezone: this.eventSettings.fields.endTimezone.name,\n location: this.eventSettings.fields.location.name,\n description: this.eventSettings.fields.description.name,\n isAllDay: this.eventSettings.fields.isAllDay.name,\n recurrenceID: this.eventSettings.fields.recurrenceID.name,\n recurrenceRule: this.eventSettings.fields.recurrenceRule.name,\n recurrenceException: this.eventSettings.fields.recurrenceException.name,\n isReadonly: this.eventSettings.fields.isReadonly,\n followingID: this.eventSettings.fields.followingID\n };\n this.setEditorTitles();\n this.dataModule = new Data(this.eventSettings.dataSource, this.eventSettings.query);\n this.crudModule = new Crud(this);\n };\n Schedule.prototype.setEditorTitles = function () {\n this.editorTitles = {\n subject: this.eventSettings.fields.subject.title || this.localeObj.getConstant('title'),\n startTime: this.eventSettings.fields.startTime.title || this.localeObj.getConstant('start'),\n endTime: this.eventSettings.fields.endTime.title || this.localeObj.getConstant('end'),\n isAllDay: this.eventSettings.fields.isAllDay.title || this.localeObj.getConstant('allDay'),\n startTimezone: this.eventSettings.fields.startTimezone.title || this.localeObj.getConstant('startTimezone'),\n endTimezone: this.eventSettings.fields.endTimezone.title || this.localeObj.getConstant('endTimezone'),\n location: this.eventSettings.fields.location.title || this.localeObj.getConstant('location'),\n description: this.eventSettings.fields.description.title || this.localeObj.getConstant('description'),\n recurrenceRule: this.eventSettings.fields.recurrenceRule.title || this.localeObj.getConstant('repeat')\n };\n };\n Schedule.prototype.initializeView = function (viewName) {\n this.showSpinner();\n this.activeViewOptions = this.getActiveViewOptions();\n if (this.resourceBase) {\n this.resourceBase.setResourceCollection();\n }\n this.initializeTemplates();\n this.renderModule.render(viewName);\n };\n Schedule.prototype.initializeTemplates = function () {\n this.cellHeaderTemplateFn = this.templateParser(this.activeViewOptions.cellHeaderTemplate);\n this.dayHeaderTemplateFn = this.templateParser(this.activeViewOptions.dayHeaderTemplate);\n this.monthHeaderTemplateFn = this.templateParser(this.activeViewOptions.monthHeaderTemplate);\n this.cellTemplateFn = this.templateParser(this.activeViewOptions.cellTemplate);\n this.dateHeaderTemplateFn = this.templateParser(this.activeViewOptions.dateHeaderTemplate);\n this.majorSlotTemplateFn = this.templateParser(this.activeViewOptions.timeScale.majorSlotTemplate);\n this.minorSlotTemplateFn = this.templateParser(this.activeViewOptions.timeScale.minorSlotTemplate);\n this.appointmentTemplateFn = this.templateParser(this.activeViewOptions.eventTemplate);\n this.resourceHeaderTemplateFn = this.templateParser(this.activeViewOptions.resourceHeaderTemplate);\n this.headerIndentTemplateFn = this.templateParser(this.activeViewOptions.headerIndentTemplate);\n this.headerTooltipTemplateFn = this.templateParser(this.activeViewOptions.group.headerTooltipTemplate);\n this.eventTooltipTemplateFn = this.templateParser(this.eventSettings.tooltipTemplate);\n this.editorTemplateFn = this.templateParser(this.editorTemplate);\n this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);\n this.quickInfoTemplatesContentFn = this.templateParser(this.quickInfoTemplates.content);\n this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);\n };\n Schedule.prototype.initializePopups = function () {\n this.eventWindow = new EventWindow(this);\n this.quickPopup = new QuickPopups(this);\n };\n /**\n * Method to get day names\n *\n * @param {string} type Accepts the day name\n * @returns {string[]} Returns the collection of day names\n * @private\n */\n Schedule.prototype.getDayNames = function (type) {\n var culShortNames = [];\n var cldrObj;\n var nameSpace = '';\n if (this.locale === 'en' || this.locale === 'en-US') {\n nameSpace = 'days.stand-alone.';\n cldrObj = (getValue(nameSpace + type, getDefaultDateObject(this.getCalendarMode())));\n }\n else {\n nameSpace = 'main.' + '' + this.locale + '.dates.calendars.' + this.getCalendarMode() + '.days.format.' + type;\n cldrObj = (getValue(nameSpace, cldrData));\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 Schedule.prototype.setCldrTimeFormat = function () {\n if (!isNullOrUndefined(this.timeFormat)) {\n this.internalTimeFormat = this.timeFormat;\n return;\n }\n if (this.locale === 'en' || this.locale === 'en-US') {\n this.internalTimeFormat = (getValue('timeFormats.short', getDefaultDateObject(this.getCalendarMode())));\n }\n else {\n this.internalTimeFormat = (getValue('main.' + '' + this.locale + '.dates.calendars.' + this.getCalendarMode() + '.timeFormats.short', cldrData));\n }\n };\n /**\n * Method to get calendar mode\n *\n * @returns {string} Returns the calendar mode\n * @private\n */\n Schedule.prototype.getCalendarMode = function () {\n return this.calendarMode.toLowerCase();\n };\n /**\n * Method to get time in string\n *\n * @param {Date} date Accepts the date object\n * @returns {string} Returns the time in string\n * @private\n */\n Schedule.prototype.getTimeString = function (date) {\n var time = this.globalize.formatDate(date, {\n format: this.activeViewOptions.timeFormat,\n type: 'time', calendar: this.getCalendarMode()\n });\n return time.toLocaleUpperCase();\n };\n /**\n * Method to get date object\n *\n * @param {Date} date Accepts the date object\n * @returns {Date} Returns the date object\n * @private\n */\n Schedule.prototype.getDateTime = function (date) {\n return date instanceof Date ? new Date(date.getTime()) : new Date(date);\n };\n Schedule.prototype.setCalendarMode = function () {\n if (this.calendarMode === 'Islamic') {\n this.calendarUtil = new Islamic();\n }\n else {\n this.calendarUtil = new Gregorian();\n }\n };\n /**\n * Method to change the current view\n *\n * @param {View} view Accepts the view name\n * @param {Event} event Accepts the event object\n * @param {boolean} muteOnChange Accepts the value to enable or disable mute on change\n * @param {number} index Accepts the index value\n * @returns {void}\n * @private\n */\n Schedule.prototype.changeView = function (view, event, muteOnChange, index) {\n var _this = this;\n if (isNullOrUndefined(index)) {\n index = this.getViewIndex(view);\n }\n if (!muteOnChange && index === this.viewIndex && this.currentView === view || index < 0) {\n return;\n }\n this.viewIndex = index;\n var args = { requestType: 'viewNavigate', cancel: false, event: event };\n this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n var navArgs = {\n action: 'view', cancel: false, currentDate: _this.selectedDate, previousView: _this.currentView, currentView: view, viewIndex: _this.viewIndex\n };\n _this.trigger(events.navigating, navArgs, function (navigationArgs) {\n if (!navigationArgs.cancel) {\n _this.viewIndex = navigationArgs.viewIndex;\n _this.setProperties({ currentView: view }, true);\n if (_this.headerModule) {\n _this.headerModule.updateActiveView();\n _this.headerModule.setCalendarDate(_this.selectedDate);\n _this.headerModule.setCalendarView();\n }\n _this.initializeView(_this.currentView);\n _this.animateLayout();\n args = { requestType: 'viewNavigate', cancel: false, event: event };\n _this.trigger(events.actionComplete, args);\n }\n });\n }\n });\n };\n /**\n * Method to change the view date\n *\n * @param {Date} selectedDate Accepts the selected date\n * @param {Event} event Accepts the event object\n * @returns {void}\n * @private\n */\n Schedule.prototype.changeDate = function (selectedDate, event) {\n var _this = this;\n var args = { requestType: 'dateNavigate', cancel: false, event: event };\n this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n var navArgs = {\n action: 'date', cancel: false, previousDate: _this.selectedDate, currentDate: selectedDate\n };\n _this.trigger(events.navigating, navArgs, function (navigationArgs) {\n if (!navigationArgs.cancel) {\n _this.uiStateValues.isInitial = _this.activeView.isTimelineView() ? true : _this.uiStateValues.isInitial;\n _this.validateDate(navigationArgs.currentDate);\n if (_this.headerModule) {\n _this.headerModule.setCalendarDate(navigationArgs.currentDate);\n }\n _this.initializeView(_this.currentView);\n _this.animateLayout();\n args = { requestType: 'dateNavigate', cancel: false, event: event };\n _this.trigger(events.actionComplete, args);\n }\n });\n }\n });\n };\n /**\n * Method to validate min and max date\n *\n * @param {Date} date Accepts the date object\n * @returns {boolean} Returns the boolean result to validate the min and max date\n * @private\n */\n Schedule.prototype.isMinMaxDate = function (date) {\n if (date === void 0) { date = this.selectedDate; }\n return ((date.getTime() >= this.minDate.getTime()) && (date.getTime() <= this.maxDate.getTime()));\n };\n /**\n * Method to validate the selected date\n *\n * @param {Date} date Accepts the date object\n * @returns {boolean} Returns the boolean value for given date is selected date or not\n * @private\n */\n Schedule.prototype.isSelectedDate = function (date) {\n return date.setHours(0, 0, 0, 0) === new Date('' + this.selectedDate).setHours(0, 0, 0, 0);\n };\n /**\n * Method to get the current time\n *\n * @param {Date} date Accepts the date object\n * @returns {Date} Returns the date object after performing the timezone conversion\n * @private\n */\n Schedule.prototype.getCurrentTime = function (date) {\n if (date === void 0) { date = new Date(); }\n if (this.timezone) {\n return this.tzModule.convert(date, this.tzModule.getLocalTimezoneName(), this.timezone);\n }\n return date;\n };\n /** Method to get navigate view\n *\n * @returns {View} Return the navigate view name\n * @private\n */\n Schedule.prototype.getNavigateView = function () {\n if (this.activeView.isTimelineView()) {\n return this.currentView === 'TimelineMonth' || this.currentView === 'TimelineYear' ? 'TimelineDay' : 'Agenda';\n }\n return 'Day';\n };\n Schedule.prototype.animateLayout = function () {\n if (!this.activeView.element) {\n return;\n }\n new Animation({ duration: 600, name: 'FadeIn', timingFunction: 'easeIn' }).animate(this.activeView.element);\n };\n /**\n * To provide the array of modules needed for control rendering\n *\n * @returns {ModuleDeclaration[]} Returns the declared modules\n * @private\n */\n Schedule.prototype.requiredModules = function () {\n var modules = [];\n this.setViewOptions(true);\n for (var _i = 0, _a = Object.keys(this.viewOptions); _i < _a.length; _i++) {\n var view = _a[_i];\n view = (view === 'timelineDay' || view === 'timelineWeek' || view === 'timelineWorkWeek') ? 'timelineViews' : view;\n modules.push({ member: view, args: [this] });\n }\n if (this.allowDragAndDrop) {\n modules.push({ member: 'dragAndDrop', args: [this] });\n }\n if (this.allowResizing) {\n modules.push({ member: 'resize', args: [this] });\n }\n modules.push({ member: 'excelExport', args: [this] });\n modules.push({ member: 'iCalendarExport', args: [this] });\n modules.push({ member: 'iCalendarImport', args: [this] });\n modules.push({ member: 'print', args: [this] });\n return modules;\n };\n /**\n * Initializes the values of private members.\n *\n * @returns {void}\n * @private\n */\n Schedule.prototype.preRender = function () {\n this.isAdaptive = Browser.isDevice || util.isIPadDevice();\n this.globalize = new Internationalization(this.locale);\n this.tzModule = new Timezone();\n if (this && isNullOrUndefined(this.uiStateValues) || !(this.enablePersistence)) {\n this.uiStateValues = {\n expand: false, isInitial: true, left: 0, top: 0, isGroupAdaptive: false,\n isIgnoreOccurrence: false, groupIndex: 0, action: false, isBlock: false, isCustomMonth: true, isResize: false\n };\n }\n this.activeCellsData = { startTime: this.getCurrentTime(), endTime: this.getCurrentTime(), isAllDay: false };\n this.activeEventData = { event: undefined, element: undefined };\n this.getDefaultLocale();\n this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale);\n this.setCldrTimeFormat();\n this.setCalendarMode();\n this.eventsData = [];\n this.eventsProcessed = [];\n this.blockData = [];\n this.blockProcessed = [];\n this.resourceCollection = [];\n this.currentAction = null;\n this.selectedElements = [];\n this.setViewOptions();\n };\n Schedule.prototype.getDefaultLocale = function () {\n this.defaultLocale = {\n day: 'Day',\n week: 'Week',\n workWeek: 'Work Week',\n month: 'Month',\n year: 'Year',\n agenda: 'Agenda',\n weekAgenda: 'Week Agenda',\n workWeekAgenda: 'Work Week Agenda',\n monthAgenda: 'Month Agenda',\n today: 'Today',\n noEvents: 'No events',\n emptyContainer: 'There are no events scheduled on this day.',\n allDay: 'All day',\n start: 'Start',\n end: 'End',\n more: 'more',\n close: 'Close',\n cancel: 'Cancel',\n noTitle: '(No Title)',\n delete: 'Delete',\n deleteEvent: 'Delete Event',\n deleteMultipleEvent: 'Delete Multiple Events',\n selectedItems: 'Items selected',\n deleteSeries: 'Entire Series',\n edit: 'Edit',\n editSeries: 'Entire Series',\n editEvent: 'Edit Event',\n createEvent: 'Create',\n subject: 'Subject',\n addTitle: 'Add title',\n moreDetails: 'More Details',\n save: 'Save',\n editContent: 'How would you like to change the appointment in the series?',\n deleteContent: 'Are you sure you want to delete this event?',\n deleteMultipleContent: 'Are you sure you want to delete the selected events?',\n newEvent: 'New Event',\n title: 'Title',\n location: 'Location',\n description: 'Description',\n timezone: 'Timezone',\n startTimezone: 'Start Timezone',\n endTimezone: 'End Timezone',\n repeat: 'Repeat',\n saveButton: 'Save',\n cancelButton: 'Cancel',\n deleteButton: 'Delete',\n recurrence: 'Recurrence',\n wrongPattern: 'The recurrence pattern is not valid.',\n seriesChangeAlert: 'Do you want to cancel the changes made to specific ' +\n 'instances of this series and match it to the whole series again?',\n createError: 'The duration of the event must be shorter than how frequently it occurs. ' +\n 'Shorten the duration, or change the recurrence pattern in the recurrence event editor.',\n sameDayAlert: 'Two occurrences of the same event cannot occur on the same day.',\n occurenceAlert: 'Cannot reschedule an occurrence of the recurring appointment if it skips over ' +\n 'a later occurrence of the same appointment.',\n editRecurrence: 'Edit Recurrence',\n repeats: 'Repeats',\n alert: 'Alert',\n startEndError: 'The selected end date occurs before the start date.',\n invalidDateError: 'The entered date value is invalid.',\n blockAlert: 'Events cannot be scheduled within the blocked time range.',\n ok: 'Ok',\n yes: 'Yes',\n no: 'No',\n occurrence: 'Occurrence',\n series: 'Series',\n previous: 'Previous',\n next: 'Next',\n timelineDay: 'Timeline Day',\n timelineWeek: 'Timeline Week',\n timelineWorkWeek: 'Timeline Work Week',\n timelineMonth: 'Timeline Month',\n timelineYear: 'Timeline Year',\n editFollowingEvent: 'Following Events',\n deleteTitle: 'Delete Event',\n editTitle: 'Edit Event',\n beginFrom: 'Begin From',\n endAt: 'Ends At',\n expandAllDaySection: 'Expand-all-day-section',\n collapseAllDaySection: 'Collapse-all-day-section',\n searchTimezone: 'Search Timezone',\n noRecords: 'No records found'\n };\n };\n Schedule.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.onScheduleResize, this);\n EventHandler.add(window, 'orientationchange', this.onScheduleResize, this);\n EventHandler.add(document, Browser.touchStartEvent, this.onDocumentClick, this);\n };\n /**\n * Method to remove selected class\n *\n * @returns {void}\n * @private\n */\n Schedule.prototype.removeSelectedClass = function () {\n var selectedCells = this.getSelectedElements();\n for (var _i = 0, selectedCells_1 = selectedCells; _i < selectedCells_1.length; _i++) {\n var cell = selectedCells_1[_i];\n cell.setAttribute('aria-selected', 'false');\n cell.removeAttribute('tabindex');\n }\n removeClass(selectedCells, cls.SELECTED_CELL_CLASS);\n };\n /**\n * Method to add selected class\n *\n * @param {HTMLTableCellElement[]} cells Accepts the collection of elements\n * @param {HTMLTableCellElement} focusCell Accepts the focus element\n * @param {boolean} isPreventScroll Accepts the boolean value to prevent scroll\n * @returns {void}\n * @private\n */\n Schedule.prototype.addSelectedClass = function (cells, focusCell, isPreventScroll) {\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n cell.setAttribute('aria-selected', 'true');\n }\n addClass(cells, cls.SELECTED_CELL_CLASS);\n if (focusCell) {\n focusCell.setAttribute('tabindex', '0');\n focusCell.focus({ preventScroll: isPreventScroll || false });\n }\n };\n /**\n * Method to select cell\n *\n * @param {HTMLElement | HTMLTableCellElement} element Accepts the select element\n * @returns {void}\n * @private\n */\n Schedule.prototype.selectCell = function (element) {\n this.removeSelectedClass();\n this.addSelectedClass([element], element);\n };\n /**\n * Method to get all day row element\n *\n * @returns {Element} Returns the all day row element\n * @private\n */\n Schedule.prototype.getAllDayRow = function () {\n return this.element.querySelector('.' + cls.ALLDAY_ROW_CLASS);\n };\n /**\n * Method to get content table element\n *\n * @returns {HTMLElement} Returns the content table element\n * @private\n */\n Schedule.prototype.getContentTable = function () {\n return this.activeView.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n };\n /**\n * Method to get all content table rows\n *\n * @returns {HTMLElement[]} Returns the content table rows\n * @private\n */\n Schedule.prototype.getTableRows = function () {\n return [].slice.call(this.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr:not(.' + cls.HIDDEN_CLASS + ')'));\n };\n /**\n * Method to get work cell elements\n *\n * @returns {Element[]} Returns the all work cell elements\n * @private\n */\n Schedule.prototype.getWorkCellElements = function () {\n return [].slice.call(this.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n };\n /**\n * Method to get the index from date collection\n *\n * @param {Date[]} collection Accepts the collections of date\n * @param {Date} date Accepts the date object\n * @returns {number} Returns the index compared date with date collections\n * @private\n */\n Schedule.prototype.getIndexOfDate = function (collection, date) {\n return collection.map(Number).indexOf(+date);\n };\n /**\n * Method to find all day cell\n *\n * @param {Element} td Accepts the DOM Element\n * @returns {boolean} Returns the boolean value\n * @private\n */\n Schedule.prototype.isAllDayCell = function (td) {\n if (['Month', 'TimelineMonth', 'TimelineYear', 'MonthAgenda'].indexOf(this.currentView) > -1 ||\n td.classList.contains(cls.ALLDAY_CELLS_CLASS) ||\n td.classList.contains(cls.HEADER_CELLS_CLASS) || !this.activeViewOptions.timeScale.enable) {\n return true;\n }\n if (this.activeView.isTimelineView() && this.activeViewOptions.headerRows.length > 0 &&\n this.activeViewOptions.headerRows.slice(-1)[0].option !== 'Hour') {\n return true;\n }\n return false;\n };\n /**\n * Method to get date from element\n *\n * @param {Element} td Accepts the DOM element\n * @returns {Date} Returns the date object\n * @private\n */\n Schedule.prototype.getDateFromElement = function (td) {\n var dateString;\n if (!isNullOrUndefined(td)) {\n dateString = td.getAttribute('data-date');\n }\n if (!isNullOrUndefined(dateString)) {\n var dateInMS = parseInt(dateString, 10);\n var date = new Date(dateInMS);\n return date;\n }\n return undefined;\n };\n /**\n * Method to get target element from given selector\n *\n * @param {string} selector Accepts the element selector\n * @param {number} left Accepts the pageX value\n * @param {number} top Accepts the pageY value\n * @returns {Element[]} Returns the collection of elements based on the given selector\n * @private\n */\n Schedule.prototype.getTargetElement = function (selector, left, top) {\n var element = document.elementFromPoint(left, top);\n var targetElement;\n if (element) {\n targetElement = element.closest(selector);\n }\n return (targetElement) ? [targetElement] : null;\n };\n /**\n * Method to process cell header template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getCellHeaderTemplate = function () {\n return this.cellHeaderTemplateFn;\n };\n /**\n * Method to process cell header template in year view.\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getDayHeaderTemplate = function () {\n return this.dayHeaderTemplateFn;\n };\n /**\n * Method to process cell header template in year view.\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getMonthHeaderTemplate = function () {\n return this.monthHeaderTemplateFn;\n };\n /**\n * Method to process cell template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getCellTemplate = function () {\n return this.cellTemplateFn;\n };\n /**\n * Method to process date header template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getDateHeaderTemplate = function () {\n return this.dateHeaderTemplateFn;\n };\n /**\n * Method to process major slot template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getMajorSlotTemplate = function () {\n return this.majorSlotTemplateFn;\n };\n /**\n * Method to process minor slot template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getMinorSlotTemplate = function () {\n return this.minorSlotTemplateFn;\n };\n /**\n * Method to process appointment template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getAppointmentTemplate = function () {\n return this.appointmentTemplateFn;\n };\n /**\n * Method to process appointment tooltip template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getEventTooltipTemplate = function () {\n return this.eventTooltipTemplateFn;\n };\n /**\n * Method to process header tooltip template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getHeaderTooltipTemplate = function () {\n return this.headerTooltipTemplateFn;\n };\n /**\n * Method to process editor template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getEditorTemplate = function () {\n return this.editorTemplateFn;\n };\n /**\n * Method to process quick info header template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getQuickInfoTemplatesHeader = function () {\n return this.quickInfoTemplatesHeaderFn;\n };\n /**\n * Method to process quick info content template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getQuickInfoTemplatesContent = function () {\n return this.quickInfoTemplatesContentFn;\n };\n /**\n * Method to process quick info footer template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getQuickInfoTemplatesFooter = function () {\n return this.quickInfoTemplatesFooterFn;\n };\n /**\n * Method to process resource header template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getResourceHeaderTemplate = function () {\n return this.resourceHeaderTemplateFn;\n };\n /**\n * Method to process indent template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getHeaderIndentTemplate = function () {\n return this.headerIndentTemplateFn;\n };\n /**\n * Method to get dynamic CSS properties\n *\n * @returns {ScrollCss} Returns the CSS properties dynamically\n * @private\n */\n Schedule.prototype.getCssProperties = function () {\n var cssProps = {\n border: this.enableRtl ? 'borderLeftWidth' : 'borderRightWidth',\n padding: this.enableRtl ? 'paddingLeft' : 'paddingRight',\n rtlBorder: this.enableRtl ? 'borderRightWidth' : 'borderLeftWidth',\n rtlPadding: this.enableRtl ? 'paddingRight' : 'paddingLeft'\n };\n return cssProps;\n };\n /**\n * Method to remove new event element in adaptive mode\n *\n * @returns {void}\n * @private\n */\n Schedule.prototype.removeNewEventElement = function () {\n var eventClone = this.element.querySelector('.' + cls.NEW_EVENT_CLASS);\n if (!isNullOrUndefined(eventClone)) {\n remove(eventClone);\n }\n };\n /**\n * Method to get start end time from string\n *\n * @param {string} startEndTime Accepts the start end time string value\n * @returns {Date} Returns the date object\n * @private\n */\n Schedule.prototype.getStartEndTime = function (startEndTime) {\n if (!isNullOrUndefined(startEndTime) && startEndTime !== '') {\n var startEndDate = util.resetTime(this.getCurrentTime());\n var timeString = startEndTime.split(':');\n if (timeString.length === 2) {\n startEndDate.setHours(parseInt(timeString[0], 10), parseInt(timeString[1], 10), 0);\n }\n return startEndDate;\n }\n return null;\n };\n Schedule.prototype.onDocumentClick = function (args) {\n this.notify(events.documentClick, { event: args });\n };\n Schedule.prototype.onScheduleResize = function () {\n if (isNullOrUndefined(this.activeView) || ((this.isAdaptive || util.isMobile()) && document.activeElement\n && document.activeElement.classList.contains(cls.SUBJECT_CLASS))) {\n return;\n }\n if (this.activeViewOptions.timeScale.enable && this.activeView) {\n this.activeView.highlightCurrentTime();\n }\n if (this.quickPopup) {\n this.quickPopup.onClosePopup();\n }\n if (this.currentView === 'Month' || ((this.currentView !== 'Agenda' && this.currentView !== 'MonthAgenda')\n && !this.activeViewOptions.timeScale.enable) || this.activeView.isTimelineView()) {\n this.uiStateValues.isResize = true;\n this.activeView.resetColWidth();\n this.notify(events.scrollUiUpdate, { cssProperties: this.getCssProperties(), isPreventScrollUpdate: true });\n this.refreshEvents(false);\n this.uiStateValues.isResize = false;\n }\n else {\n this.notify(events.contentReady, {});\n }\n };\n /**\n * Method to process the templates\n *\n * @param {string} template Accepts the template in string\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n /**\n * Method to generate the announcement string\n *\n * @param {Object} event Accepts the event object\n * @param {string} subject Accepts the subject text\n * @returns {string} Returns the announcement string\n * @private\n */\n Schedule.prototype.getAnnouncementString = function (event, subject) {\n var resourceName;\n if (this.quickPopup && this.activeViewOptions.group.resources.length > 0) {\n var constantText = '\"s event - ';\n resourceName = this.quickPopup.getResourceText({ event: event }, 'event') + constantText;\n }\n var recordSubject = (subject || (event[this.eventFields.subject] || this.eventSettings.fields.subject.default));\n var skeleton = 'full';\n var startDateText = this.globalize.formatDate(event[this.eventFields.startTime], {\n type: 'dateTime', skeleton: skeleton, calendar: this.getCalendarMode()\n });\n var endDateText = this.globalize.formatDate(event[this.eventFields.endTime], {\n type: 'dateTime', skeleton: skeleton, calendar: this.getCalendarMode()\n });\n var announcementString = recordSubject + ' ' + this.localeObj.getConstant('beginFrom') + ' '\n + startDateText + ' ' + this.localeObj.getConstant('endAt') + ' ' + endDateText;\n if (resourceName) {\n announcementString = resourceName + ' ' + announcementString;\n }\n return announcementString;\n };\n /**\n * Method to process the element boundary validation\n *\n * @param {number} pageY Accepts the pageY value\n * @param {number} pageX Accepts the pageX value\n * @returns {ResizeEdges} Returns the boundary validation object\n * @private\n */\n Schedule.prototype.boundaryValidation = function (pageY, pageX) {\n var autoScrollDistance = 30;\n var scrollEdges = { left: false, right: false, top: false, bottom: false };\n var viewBoundaries = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS).getBoundingClientRect();\n if ((pageY < viewBoundaries.top + autoScrollDistance + window.pageYOffset) &&\n (pageY > viewBoundaries.top + window.pageYOffset)) {\n scrollEdges.top = true;\n }\n if ((pageY > (viewBoundaries.bottom - autoScrollDistance) + window.pageYOffset) &&\n (pageY < viewBoundaries.bottom + window.pageYOffset)) {\n scrollEdges.bottom = true;\n }\n if ((pageX < viewBoundaries.left + autoScrollDistance + window.pageXOffset) &&\n (pageX > viewBoundaries.left + window.pageXOffset)) {\n scrollEdges.left = true;\n }\n if ((pageX > (viewBoundaries.right - autoScrollDistance) + window.pageXOffset) &&\n (pageX < viewBoundaries.right + window.pageXOffset)) {\n scrollEdges.right = true;\n }\n return scrollEdges;\n };\n /**\n * Method to get the week number.\n *\n * @param {Date[]} dates Accepts the date collections\n * @returns {number} Returns the week number\n * @private\n */\n Schedule.prototype.getWeekNumberContent = function (dates) {\n var weekNumber;\n if (this.weekRule === 'FirstDay') {\n var weekNumberDate = util.getWeekLastDate(dates.slice(-1)[0], this.firstDayOfWeek);\n weekNumber = this.globalize.formatNumber(util.getWeekNumber(weekNumberDate));\n }\n else if (this.weekRule === 'FirstFourDayWeek') {\n var weekFirstDate = util.getWeekFirstDate(dates.slice(-1)[0], this.firstDayOfWeek);\n var weekLastDate = util.getWeekLastDate(dates.slice(-1)[0], this.firstDayOfWeek);\n var weekMidDate = util.getWeekMiddleDate(weekFirstDate, weekLastDate);\n weekNumber = this.globalize.formatNumber(util.getWeekNumber(weekMidDate));\n }\n else if (this.weekRule === 'FirstFullWeek') {\n var weekFirstDate = util.getWeekFirstDate(dates.slice(-1)[0], this.firstDayOfWeek);\n weekNumber = this.globalize.formatNumber(util.getWeekNumber(weekFirstDate));\n }\n return weekNumber;\n };\n /**\n * Method to render the header indent template.\n *\n * @param {TdData} data Accepts the td data\n * @param {Element} td Accepts the td element\n * @returns {void}\n * @private\n */\n Schedule.prototype.renderHeaderIndentTemplate = function (data, td) {\n if (this.activeViewOptions.headerIndentTemplate) {\n var scheduleId = this.element.id + '_';\n var viewName = this.activeViewOptions.headerIndentTemplateName;\n var templateId = scheduleId + viewName + 'headerIndentTemplate';\n var indentTemplate = [].slice.call(this.getHeaderIndentTemplate()(data, this, 'headerIndentTemplate', templateId, false));\n append(indentTemplate, td);\n }\n };\n Schedule.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.onScheduleResize);\n EventHandler.remove(window, 'orientationchange', this.onScheduleResize);\n EventHandler.remove(document, Browser.touchStartEvent, this.onDocumentClick);\n };\n /**\n * Core method to return the component name.\n *\n * @returns {string} Returns the module name\n * @private\n */\n Schedule.prototype.getModuleName = function () {\n return 'schedule';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persistance data\n * @private\n */\n Schedule.prototype.getPersistData = function () {\n return this.addOnPersist(['currentView', 'selectedDate', 'scrollTop', 'scrollLeft']);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @returns {void}\n * @private\n */\n Schedule.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isReact && isNullOrUndefined(this.activeView)) {\n return;\n }\n var state = {\n isRefresh: false, isResource: false, isDate: false, isView: false, isLayout: false, isDataManager: false\n };\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'views':\n this.setViewOptions();\n if (this.headerModule) {\n this.headerModule.updateItems();\n }\n state.isView = true;\n break;\n case 'currentView':\n state.isView = true;\n break;\n case 'minDate':\n case 'maxDate':\n case 'selectedDate':\n state.isDate = true;\n break;\n case 'dateFormat':\n this.activeViewOptions = this.getActiveViewOptions();\n if (this.headerModule) {\n this.headerModule.updateDateRange(this.activeView.getDateRangeText());\n }\n break;\n case 'showHeaderBar':\n this.destroyHeaderModule();\n if (newProp.showHeaderBar) {\n this.headerModule = new HeaderRenderer(this);\n this.headerModule.updateDateRange(this.activeView.getDateRangeText());\n }\n this.notify(events.scrollUiUpdate, { cssProperties: this.getCssProperties() });\n if (this.activeView.isTimelineView()) {\n this.refreshEvents(false);\n }\n break;\n case 'showWeekend':\n case 'workDays':\n case 'startHour':\n case 'endHour':\n case 'workHours':\n case 'readonly':\n case 'headerRows':\n case 'showWeekNumber':\n case 'rowAutoHeight':\n state.isLayout = true;\n break;\n case 'locale':\n case 'calendarMode':\n this.globalize = new Internationalization(this.locale);\n this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale);\n this.setCldrTimeFormat();\n this.setCalendarMode();\n state.isRefresh = true;\n break;\n case 'firstDayOfWeek':\n this.activeViewOptions.firstDayOfWeek = newProp.firstDayOfWeek;\n if (this.eventWindow) {\n this.eventWindow.refreshRecurrenceEditor();\n }\n state.isLayout = true;\n break;\n case 'showTimeIndicator':\n if (this.activeViewOptions.timeScale.enable && this.activeView) {\n this.activeView.highlightCurrentTime();\n }\n break;\n case 'cellHeaderTemplate':\n this.activeViewOptions.cellHeaderTemplate = newProp.cellHeaderTemplate;\n this.cellHeaderTemplateFn = this.templateParser(this.activeViewOptions.cellHeaderTemplate);\n state.isLayout = true;\n break;\n case 'cellTemplate':\n this.activeViewOptions.cellTemplate = newProp.cellTemplate;\n this.cellTemplateFn = this.templateParser(this.activeViewOptions.cellTemplate);\n state.isLayout = true;\n break;\n case 'dateHeaderTemplate':\n this.activeViewOptions.dateHeaderTemplate = newProp.dateHeaderTemplate;\n this.dateHeaderTemplateFn = this.templateParser(this.activeViewOptions.dateHeaderTemplate);\n state.isLayout = true;\n break;\n case 'dayHeaderTemplate':\n this.activeViewOptions.dayHeaderTemplate = newProp.dayHeaderTemplate;\n this.dayHeaderTemplateFn = this.templateParser(this.activeViewOptions.dayHeaderTemplate);\n state.isLayout = true;\n break;\n case 'monthHeaderTemplate':\n this.activeViewOptions.monthHeaderTemplate = newProp.monthHeaderTemplate;\n this.monthHeaderTemplateFn = this.templateParser(this.activeViewOptions.monthHeaderTemplate);\n state.isLayout = true;\n break;\n case 'resourceHeaderTemplate':\n this.activeViewOptions.resourceHeaderTemplate = newProp.resourceHeaderTemplate;\n this.resourceHeaderTemplateFn = this.templateParser(this.activeViewOptions.resourceHeaderTemplate);\n state.isLayout = true;\n break;\n case 'timezone':\n this.eventBase.timezonePropertyChange(oldProp.timezone);\n this.headerModule.setCalendarTimezone();\n break;\n case 'enableRtl':\n this.setRtlClass();\n state.isRefresh = true;\n break;\n default:\n this.extendedPropertyChange(prop, newProp, oldProp, state);\n break;\n }\n }\n this.propertyChangeAction(state);\n };\n Schedule.prototype.propertyChangeAction = function (state) {\n if (state.isRefresh) {\n this.refresh();\n }\n else if (state.isResource) {\n this.initializeResources(true);\n }\n else if (state.isView) {\n this.changeView(this.currentView, null, true);\n }\n else if (state.isDate) {\n this.changeDate(this.selectedDate);\n }\n else if (state.isLayout) {\n this.initializeView(this.currentView);\n }\n else if (state.isDataManager && this.crudModule) {\n if (this.dragAndDropModule) {\n this.dragAndDropModule.actionObj.action = '';\n removeClass([this.element], cls.EVENT_ACTION_CLASS);\n }\n this.crudModule.refreshDataManager();\n }\n };\n Schedule.prototype.allDayRowScrollUpdate = function () {\n var dateHeader = this.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS);\n var allDayRow = this.element.querySelector('.' + cls.ALLDAY_ROW_CLASS);\n if (this.height === 'auto' || !this.enableAllDayScroll) {\n addClass([dateHeader], cls.ALLDAY_APPOINTMENT_AUTO);\n if (dateHeader.classList.contains(cls.ALLDAY_APPOINTMENT_SCROLL)) {\n removeClass([dateHeader], cls.ALLDAY_APPOINTMENT_SCROLL);\n }\n if (this.uiStateValues.expand) {\n var allDayCells = [].slice.call(this.element.querySelectorAll('.' + cls.ALLDAY_CELLS_CLASS));\n allDayCells[0].style.height = (allDayRow.style.height) ? allDayRow.style.height : allDayCells[1].style.height;\n }\n }\n else {\n if (dateHeader.classList.contains(cls.ALLDAY_APPOINTMENT_AUTO)) {\n removeClass([dateHeader], cls.ALLDAY_APPOINTMENT_AUTO);\n }\n this.eventBase.allDayExpandScroll(dateHeader);\n }\n if (!this.uiStateValues.expand) {\n allDayRow.style.height = '';\n }\n };\n Schedule.prototype.extendedPropertyChange = function (prop, newProp, oldProp, state) {\n switch (prop) {\n case 'width':\n case 'height':\n case 'enableAllDayScroll':\n if (['Day', 'Week', 'WorkWeek'].indexOf(this.currentView) > -1) {\n this.allDayRowScrollUpdate();\n }\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\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 'hideEmptyAgendaDays':\n case 'agendaDaysCount':\n this.activeViewOptions = this.getActiveViewOptions();\n state.isView = true;\n break;\n case 'eventSettings':\n this.onEventSettingsPropertyChanged(newProp.eventSettings, oldProp.eventSettings, state);\n break;\n case 'allowKeyboardInteraction':\n if (this.keyboardInteractionModule) {\n this.keyboardInteractionModule.destroy();\n this.keyboardInteractionModule = null;\n }\n if (newProp.allowKeyboardInteraction) {\n this.keyboardInteractionModule = new KeyboardInteraction(this);\n }\n break;\n case 'timezoneDataSource':\n if (this.eventWindow) {\n this.eventWindow.refresh();\n }\n break;\n case 'editorTemplate':\n if (!isNullOrUndefined(this.editorTemplate)) {\n this.editorTemplateFn = this.templateParser(this.editorTemplate);\n }\n if (this.eventWindow) {\n this.eventWindow.setDialogContent();\n }\n break;\n case 'quickInfoTemplates':\n if (this.quickInfoTemplates.header) {\n this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);\n }\n if (this.quickInfoTemplates.content) {\n this.quickInfoTemplatesContentFn = this.templateParser(this.quickInfoTemplates.content);\n }\n if (this.quickInfoTemplates.footer) {\n this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);\n }\n break;\n case 'group':\n this.onGroupSettingsPropertyChanged(newProp.group, oldProp.group, state);\n break;\n case 'resources':\n state.isResource = true;\n break;\n case 'timeScale':\n this.activeViewOptions.timeScale.interval = newProp.timeScale.interval || this.activeViewOptions.timeScale.interval;\n this.activeViewOptions.timeScale.slotCount = newProp.timeScale.slotCount || this.activeViewOptions.timeScale.slotCount;\n if (this.eventWindow) {\n this.eventWindow.refreshDateTimePicker();\n }\n state.isLayout = true;\n break;\n case 'allowDragAndDrop':\n case 'allowResizing':\n case 'eventDragArea':\n this.refreshEvents(false);\n break;\n case 'weekRule':\n state.isLayout = true;\n break;\n case 'firstMonthOfYear':\n this.activeViewOptions.firstMonthOfYear = newProp.firstMonthOfYear;\n this.viewIndex = this.activeView.viewIndex;\n state.isLayout = true;\n break;\n case 'monthsCount':\n this.activeViewOptions.monthsCount = newProp.monthsCount;\n this.viewIndex = this.activeView.viewIndex;\n state.isLayout = true;\n break;\n case 'timeFormat':\n this.internalTimeFormat = newProp.timeFormat || this.activeViewOptions.timeFormat;\n if (this.eventWindow) {\n this.eventWindow.refreshDateTimePicker();\n }\n state.isLayout = true;\n break;\n case 'enableAdaptiveUI':\n if (this.showHeaderBar && this.headerModule) {\n this.destroyHeaderModule();\n this.headerModule = new HeaderRenderer(this);\n this.headerModule.updateDateRange(this.activeView.getDateRangeText());\n }\n state.isLayout = true;\n break;\n case 'headerIndentTemplate':\n this.activeViewOptions.headerIndentTemplate = newProp.headerIndentTemplate;\n this.headerIndentTemplateFn = this.templateParser(this.activeViewOptions.headerIndentTemplate);\n state.isLayout = true;\n break;\n }\n };\n Schedule.prototype.setRtlClass = function () {\n if (this.enableRtl) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n Schedule.prototype.onGroupSettingsPropertyChanged = function (newProp, oldProp, state) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (prop === 'headerTooltipTemplate') {\n this.headerTooltipTemplateFn = this.templateParser(newProp[prop]);\n }\n else {\n state.isLayout = true;\n if (this.eventWindow) {\n this.eventWindow.refresh();\n }\n }\n }\n };\n Schedule.prototype.onEventSettingsPropertyChanged = function (newProp, oldProp, state) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'dataSource':\n case 'query':\n case 'fields':\n this.initializeDataModule();\n state.isDataManager = true;\n break;\n case 'template':\n this.activeViewOptions.eventTemplate = newProp.template;\n this.appointmentTemplateFn = this.templateParser(this.activeViewOptions.eventTemplate);\n state.isDataManager = true;\n break;\n case 'enableTooltip':\n if (this.eventTooltip) {\n this.eventTooltip.destroy();\n this.eventTooltip = null;\n }\n if (newProp.enableTooltip) {\n this.eventTooltip = new EventTooltip(this);\n }\n break;\n case 'tooltipTemplate':\n this.eventTooltipTemplateFn = this.templateParser(this.eventSettings.tooltipTemplate);\n break;\n case 'resourceColorField':\n if (this.resourceBase) {\n this.resourceBase.setResourceCollection();\n }\n state.isDataManager = true;\n break;\n case 'editFollowingEvents':\n if (this.quickPopup) {\n this.quickPopup.refreshQuickDialog();\n }\n break;\n case 'allowAdding':\n case 'allowEditing':\n case 'allowDeleting':\n if (this.showHeaderBar && this.headerModule) {\n this.headerModule.updateAddIcon();\n }\n if (this.eventWindow) {\n this.eventWindow.refresh();\n }\n break;\n case 'spannedEventPlacement':\n case 'minimumEventDuration':\n case 'enableMaxHeight':\n case 'enableIndicator':\n this.refreshEvents(false);\n break;\n case 'ignoreWhitespace':\n state.isLayout = true;\n break;\n }\n }\n };\n Schedule.prototype.destroyHeaderModule = function () {\n if (this.headerModule) {\n this.headerModule.destroy();\n this.headerModule = null;\n }\n };\n Schedule.prototype.destroyPopups = function () {\n if (this.quickPopup) {\n this.quickPopup.destroy();\n this.quickPopup = null;\n }\n if (this.eventWindow) {\n this.eventWindow.destroy();\n this.eventWindow = null;\n }\n };\n /**\n * Allows to show the spinner on schedule at the required scenarios.\n *\n * @function showSpinner\n * @returns {void}\n */\n Schedule.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * When the spinner is shown manually using `showSpinner` method, it can be hidden using this `hideSpinner` method.\n *\n * @function hideSpinner\n * @returns {void}\n */\n Schedule.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * Sets different working hours on the required working days by accepting the required start and end time as well as the date collection\n * as its parameters.\n *\n * @function setWorkHours\n * @param {Date} dates Collection of dates on which the given start and end hour range needs to be applied.\n * @param {string} start Defines the work start hour.\n * @param {string} end Defines the work end hour.\n * @param {number} groupIndex Defines the resource index from last level.\n * @returns {void}\n */\n Schedule.prototype.setWorkHours = function (dates, start, end, groupIndex) {\n var cells = [];\n cells = this.getWorkHourCells(dates, start, end, groupIndex);\n addClass(cells, cls.WORK_HOURS_CLASS);\n };\n /**\n * Removes or resets different working hours on the required working days by accepting the required start and end time as well as the\n * date collection as its parameters.\n * if no parameters has been passed to this function, it will remove all the work hours.\n *\n * @param {Date} dates Collection of dates on which the given start and end hour range need to be applied.\n * @param {string} start Defines the work start hour.\n * @param {string} end Defines the work end hour.\n * @param {number} groupIndex Defines the resource index from last level.\n * @returns {void}\n */\n Schedule.prototype.resetWorkHours = function (dates, start, end, groupIndex) {\n if (dates === void 0) { dates = this.activeView.renderDates; }\n if (dates && start && end) {\n var cells = this.getWorkHourCells(dates, start, end, groupIndex);\n removeClass(cells, cls.WORK_HOURS_CLASS);\n }\n else {\n var workHourCells = [].slice.call(this.element.querySelectorAll('.' + cls.WORK_HOURS_CLASS));\n removeClass(workHourCells, cls.WORK_HOURS_CLASS);\n }\n };\n Schedule.prototype.getWorkHourCells = function (dates, start, end, groupIndex) {\n if (['Agenda', 'MonthAgenda', 'Month', 'TimelineMonth'].indexOf(this.currentView) > -1) {\n return [];\n }\n var startHour = this.getStartEndTime(start);\n var endHour = this.getStartEndTime(end);\n var tableEle = this.getContentTable();\n if (isNullOrUndefined(startHour) || isNullOrUndefined(endHour) || !tableEle) {\n return [];\n }\n startHour.setMilliseconds(0);\n endHour.setMilliseconds(0);\n var viewStartHour = this.activeView.getStartHour();\n if (startHour < viewStartHour) {\n startHour = viewStartHour;\n }\n var viewEndHour = this.activeView.getEndHour();\n if (endHour > viewEndHour) {\n endHour = viewEndHour;\n }\n var msMajorInterval = this.activeViewOptions.timeScale.interval * util.MS_PER_MINUTE;\n var msInterval = msMajorInterval / this.activeViewOptions.timeScale.slotCount;\n var startIndex = Math.round((startHour.getTime() - viewStartHour.getTime()) / msInterval);\n var endIndex = Math.ceil((endHour.getTime() - viewStartHour.getTime()) / msInterval);\n var tempStartIndex = startIndex;\n var tempEndIndex = endIndex;\n var cells = [];\n for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) {\n var date = dates_1[_i];\n date = this.getDateTime(date);\n util.resetTime(date);\n var renderDates = this.activeView.renderDates;\n if (!isNullOrUndefined(groupIndex) && this.resourceBase && !this.activeView.isTimelineView()) {\n renderDates = this.resourceBase.lastResourceLevel[groupIndex].renderDates;\n }\n var colIndex = this.getIndexOfDate(renderDates, date);\n if (colIndex >= 0) {\n if (this.activeView.isTimelineView()) {\n var slotsPerDay = Math.round((viewEndHour.getTime() - viewStartHour.getTime()) / msInterval);\n startIndex = tempStartIndex + (colIndex * slotsPerDay);\n endIndex = tempEndIndex + (colIndex * slotsPerDay);\n }\n for (var i = startIndex; i < endIndex; i++) {\n if (this.activeView.isTimelineView()) {\n var rowIndex = (!isNullOrUndefined(groupIndex)) ? groupIndex : 0;\n cells.push(tableEle.rows[rowIndex].cells[i]);\n }\n else {\n if (!isNullOrUndefined(groupIndex)) {\n var selector = '.' + cls.WORK_CELLS_CLASS + '[data-group-index=\"' + groupIndex + '\"]';\n var tds = [].slice.call(tableEle.rows[i].querySelectorAll(selector));\n cells.push(tds[colIndex]);\n }\n else {\n cells.push(tableEle.rows[i].cells[colIndex]);\n }\n }\n }\n }\n }\n return cells;\n };\n /**\n * Retrieves the start and end time information of the specific cell element.\n *\n * @function getCellDetails\n * @param {Element | Element[]} tdCol Accepts the single or collection of elements.\n * @returns {CellClickEventArgs} Object An object holding the startTime, endTime and all-day information along with the target HTML element will be returned.\n */\n Schedule.prototype.getCellDetails = function (tdCol) {\n var td = (tdCol instanceof Array) ? tdCol : [tdCol];\n var firstTd = getElement(td[0]);\n var lastTd = getElement(td.slice(-1)[0]);\n var startTime = this.getDateFromElement(firstTd);\n var endTime = this.getDateFromElement(lastTd);\n if (isNullOrUndefined(startTime) || isNullOrUndefined(endTime)) {\n return undefined;\n }\n var endDateFromColSpan = this.activeView.isTimelineView() && !isNullOrUndefined(lastTd.getAttribute('colSpan')) &&\n this.headerRows.length > 0;\n var duration = endDateFromColSpan ? parseInt(lastTd.getAttribute('colSpan'), 10) : 1;\n if (!this.activeViewOptions.timeScale.enable || endDateFromColSpan || lastTd.classList.contains(cls.ALLDAY_CELLS_CLASS) ||\n lastTd.classList.contains(cls.HEADER_CELLS_CLASS)) {\n endTime = util.addDays(new Date(endTime.getTime()), duration);\n }\n else {\n endTime = this.activeView.getEndDateFromStartDate(endTime);\n }\n var data = {\n startTime: startTime,\n endTime: endTime,\n isAllDay: this.isAllDayCell(firstTd),\n element: tdCol\n };\n var groupIndex = firstTd.getAttribute('data-group-index');\n if (!isNullOrUndefined(groupIndex)) {\n data.groupIndex = parseInt(groupIndex, 10);\n }\n return data;\n };\n /**\n * Retrieves the selected cell elements.\n *\n * @function getSelectedElements\n * @returns {Element[]} The elements of currently selected cells will be returned.\n */\n Schedule.prototype.getSelectedElements = function () {\n return [].slice.call(this.element.querySelectorAll('.' + cls.SELECTED_CELL_CLASS));\n };\n /**\n * To get the resource collection\n *\n * @function getResourceCollections\n * @returns {ResourcesModel[]} Returns the resource collections\n */\n Schedule.prototype.getResourceCollections = function () {\n return this.resourceCollection;\n };\n /**\n * To set the resource collection\n *\n * @function setResourceCollections\n * @param {ResourcesModel[]} resourceCol Accepts the resource collections in ResourcesModel type\n * @returns {void}\n */\n Schedule.prototype.setResourceCollections = function (resourceCol) {\n this.setProperties({ resources: resourceCol }, false);\n };\n /**\n * Current View could be change based on the provided parameters.\n *\n * @function changeCurrentView\n * @param {View} viewName Accept the view in the viewCollections.\n * @param {number} viewIndex Accept the viewIndex in the viewCollections.\n * @returns {void}\n */\n Schedule.prototype.changeCurrentView = function (viewName, viewIndex) {\n var index = this.getViewIndex(viewName);\n var view = viewName.charAt(0).toLowerCase() + viewName.slice(1);\n var viewOptions = this.viewOptions[view];\n if (viewOptions) {\n index = this.viewCollections.indexOf(viewOptions[viewIndex || 0]);\n }\n if (index === -1 || index === this.viewIndex) {\n return;\n }\n this.changeView(viewName, null, null, index);\n };\n /**\n * Return the current view Index.\n *\n * @function getCurrentViewIndex\n * @returns {number} Returns the view index\n */\n Schedule.prototype.getCurrentViewIndex = function () {\n return this.viewIndex;\n };\n /**\n * Retrieves the resource details based on the provided resource index.\n *\n * @param {number} index index of the resources at the last level.\n * @returns {ResourceDetails} Object An object holding the details of resource and resourceData.\n */\n Schedule.prototype.getResourcesByIndex = function (index) {\n if (this.resourceBase && this.resourceBase.lastResourceLevel) {\n if (index < 0 || index >= this.resourceBase.lastResourceLevel.length) {\n return undefined;\n }\n var data = this.resourceBase.lastResourceLevel[index];\n var groupData = {};\n this.resourceBase.setResourceValues(groupData, index);\n return { resource: data.resource, resourceData: data.resourceData, groupData: groupData };\n }\n return undefined;\n };\n /**\n * This method allows to expand the resource that available on the scheduler.\n *\n * @function expandResource\n * @param {string | number} resourceId Accepts the resource id in either string or number type\n * @param {string} name Accepts the name of the resource collection\n * @returns {void}\n */\n Schedule.prototype.expandResource = function (resourceId, name) {\n if (this.activeView.isTimelineView() && this.resourceBase && this.resourceCollection.length > 1) {\n this.resourceBase.resourceExpand(resourceId, name, false);\n }\n };\n /**\n * This method allows to collapse the resource that available on the scheduler.\n *\n * @function collapseResource\n * @param {string | number} resourceId Accepts the resource id in either string or number type\n * @param {string} name Accepts the name of the resource collection\n * @returns {void}\n */\n Schedule.prototype.collapseResource = function (resourceId, name) {\n if (this.activeView.isTimelineView() && this.resourceBase && this.resourceCollection.length > 1) {\n this.resourceBase.resourceExpand(resourceId, name, true);\n }\n };\n /**\n * Scrolls the Schedule content area to the specified time.\n *\n * @function scrollTo\n * @param {string} hour Accepts the time value in the skeleton format of 'Hm'.\n * @param {Date} scrollDate Accepts the date object value.\n * @returns {void}\n */\n Schedule.prototype.scrollTo = function (hour, scrollDate) {\n if (this.activeView.scrollToDate && isNullOrUndefined(hour) && scrollDate) {\n this.activeView.scrollToDate(scrollDate);\n }\n else if (this.activeView.scrollToHour) {\n this.activeView.scrollToHour(hour, scrollDate);\n }\n };\n /**\n * This method allows scroll to the position of the any resources that available on the scheduler.\n * This method is applicable for without Agenda and Month agenda views of the schedule.\n *\n * @function scrollToResource\n * @param {string | number} resourceId Accepts the resource id in either string or number type\n * @param {string} groupName Accepts the name of the resource collection\n * @returns {void}\n */\n Schedule.prototype.scrollToResource = function (resourceId, groupName) {\n if (this.resourceBase && this.resourceBase.lastResourceLevel) {\n this.resourceBase.resourceScroll(resourceId, groupName);\n }\n };\n /**\n * Exports the Scheduler events to a calendar (.ics) file. By default, the calendar is exported with a file name `Calendar.ics`.\n * To change this file name on export, pass the custom string value as `fileName` to get the file downloaded with this provided name.\n *\n * @function exportToICalendar\n * @param {string} fileName Accepts the string value.\n * @param {Object[]} customData Accepts the collection of objects.\n * @returns {void}\n */\n Schedule.prototype.exportToICalendar = function (fileName, customData) {\n if (this.iCalendarExportModule) {\n this.iCalendarExportModule.initializeCalendarExport(fileName, customData);\n }\n else {\n throw Error('Inject ICalendarExport module');\n }\n };\n /**\n * Imports the events from an .ics file downloaded from any of the calendars like Google or Outlook into the Scheduler.\n * This method accepts the blob object or string format of an .ics file to be imported as a mandatory argument.\n *\n * @function importICalendar\n * @param {Blob | string} fileContent Accepts the file object or string format of an .ics file.\n * @returns {void}\n */\n Schedule.prototype.importICalendar = function (fileContent) {\n if (this.iCalendarImportModule) {\n this.iCalendarImportModule.initializeCalendarImport(fileContent);\n }\n else {\n throw Error('Inject ICalendarImport module');\n }\n };\n /**\n * Adds the newly created event into the Schedule dataSource.\n *\n * @function addEvent\n * @param {Object | Object[]} data Single or collection of event objects to be added into Schedule.\n * @returns {void}\n */\n Schedule.prototype.addEvent = function (data) {\n this.crudModule.addEvent(data);\n };\n /**\n * Allows the Scheduler events data to be exported as an Excel file either in .xlsx or .csv file formats.\n * By default, the whole event collection bound to the Scheduler gets exported as an Excel file.\n * To export only the specific events of Scheduler, you need to pass the custom data collection as\n * a parameter to this `exportToExcel` method. This method accepts the export options as arguments such as fileName,\n * exportType, fields, customData, and includeOccurrences. The `fileName` denotes the name to be given for the exported\n * file and the `exportType` allows you to set the format of an Excel file to be exported either as .xlsx or .csv.\n * The custom or specific field collection of event dataSource to be exported can be provided through `fields` option\n * and the custom data collection can be exported by passing them through the `customData` option. There also exists\n * option to export each individual instances of the recurring events to an Excel file, by setting true or false to the\n * `includeOccurrences` option, denoting either to include or exclude the occurrences as separate instances on an exported Excel file.\n *\n * @function exportToExcel\n * @param {ExportOptions} excelExportOptions The export options to be set before start with exporting the Scheduler events to an Excel file.\n * @returns {void}\n */\n Schedule.prototype.exportToExcel = function (excelExportOptions) {\n if (this.excelExportModule) {\n this.excelExportModule.initializeExcelExport(excelExportOptions);\n }\n else {\n throw Error('Inject ExcelExport module');\n }\n };\n /**\n * Method allows to print the scheduler.\n *\n * @function print\n * @param {ScheduleModel} printOptions The export options to be set before start with exporting\n * the Scheduler events to the print window.\n * @returns {void}\n */\n Schedule.prototype.print = function (printOptions) {\n if (this.printModule) {\n this.printModule.print(printOptions);\n }\n else {\n throw Error('Inject Print module');\n }\n };\n /**\n * Updates the changes made in the event object by passing it as an parameter into the dataSource.\n *\n * @function saveEvent\n * @param {Object | Object[]} data Single or collection of event objects to be saved into Schedule.\n * @param {CurrentAction} currentAction Denotes the action that takes place either for editing occurrence or series.\n * The valid current action names are `EditOccurrence` or `EditSeries`.\n * @returns {void}\n */\n Schedule.prototype.saveEvent = function (data, currentAction) {\n this.crudModule.saveEvent(data, currentAction);\n };\n /**\n * Deletes the events based on the provided ID or event collection in the argument list.\n *\n * @function deleteEvent\n * @param {string | number | Object | Object[]} id Accepts the ID as string or number type or single or collection of the event object which needs to be removed from the Schedule.\n * @param {CurrentAction} currentAction Denotes the delete action that takes place either on occurrence or series events.\n * The valid current action names are `Delete`, `DeleteOccurrence` or `DeleteSeries`.\n * @returns {void}\n */\n Schedule.prototype.deleteEvent = function (id, currentAction) {\n this.crudModule.deleteEvent(id, currentAction);\n };\n /**\n * Retrieves the entire collection of events bound to the Schedule.\n *\n * @function getEvents\n * @param {Date} startDate Accepts the start date.\n * @param {Date} endDate Accepts te end date.\n * @param {boolean} includeOccurrences Accepts the boolean value to process the occurrence from recurrence series.\n * @returns {Object[]} Returns the collection of event objects from the Schedule.\n */\n Schedule.prototype.getEvents = function (startDate, endDate, includeOccurrences) {\n var eventCollections = [];\n if (includeOccurrences) {\n eventCollections = this.eventBase.getProcessedEvents();\n }\n else {\n eventCollections = this.eventsData;\n }\n if (startDate) {\n startDate = this.getDateTime(startDate);\n }\n if (endDate) {\n endDate = this.getDateTime(endDate);\n }\n eventCollections = this.eventBase.filterEventsByRange(eventCollections, startDate, endDate);\n return eventCollections;\n };\n /**\n * Retrieves the entire collection of block events bound to the Schedule.\n *\n * @function getBlockEvents\n * @param {Date} startDate Accepts the start date.\n * @param {Date} endDate Accepts te end date.\n * @param {boolean} includeOccurrences Accepts the boolean value to process the occurrence from recurrence series.\n * @returns {Object[]} Returns the collection of block event objects from the Schedule.\n */\n Schedule.prototype.getBlockEvents = function (startDate, endDate, includeOccurrences) {\n var eventCollections = [];\n if (includeOccurrences) {\n eventCollections = this.eventBase.getProcessedEvents(this.blockData);\n }\n else {\n eventCollections = this.blockData;\n }\n if (startDate) {\n startDate = this.getDateTime(startDate);\n }\n if (endDate) {\n endDate = this.getDateTime(endDate);\n }\n eventCollections = this.eventBase.filterEventsByRange(eventCollections, startDate, endDate);\n return eventCollections;\n };\n /**\n * Retrieves the occurrences of a single recurrence event based on the provided parent ID.\n *\n * @function getOccurrencesByID\n * @param {number} eventID ID of the parent recurrence data from which the occurrences are fetched.\n * @returns {Object[]} Returns the collection of occurrence event objects.\n */\n Schedule.prototype.getOccurrencesByID = function (eventID) {\n return this.eventBase.getOccurrencesByID(eventID);\n };\n /**\n * Retrieves all the occurrences that lies between the specific start and end time range.\n *\n * @function getOccurrencesByRange\n * @param {Date} startTime Denotes the start time range.\n * @param {Date} endTime Denotes the end time range.\n * @returns {Object[]} Returns the collection of occurrence event objects that lies between the provided start and end time.\n */\n Schedule.prototype.getOccurrencesByRange = function (startTime, endTime) {\n startTime = this.getDateTime(startTime);\n endTime = this.getDateTime(endTime);\n return this.eventBase.getOccurrencesByRange(startTime, endTime);\n };\n /**\n * Retrieves the dates that lies on active view of Schedule.\n *\n * @function getCurrentViewDates\n * @returns {Date[]} Returns the collection of dates.\n */\n Schedule.prototype.getCurrentViewDates = function () {\n return this.activeView ? this.activeView.renderDates : [];\n };\n /**\n * Set the recurrence editor instance from custom editor template.\n *\n * @function setRecurrenceEditor\n * @param {RecurrenceEditor} recurrenceEditor instance has passed to fetch the instance in event window.\n * @returns {void}\n */\n Schedule.prototype.setRecurrenceEditor = function (recurrenceEditor) {\n this.eventWindow.setRecurrenceEditor(recurrenceEditor);\n };\n /**\n * Get the maximum id of an event.\n *\n * @function getEventMaxID\n * @returns {number | string} Returns the maximum ID from scheduler data collections.\n */\n Schedule.prototype.getEventMaxID = function () {\n return this.eventBase.getEventMaxID();\n };\n /**\n * Get deleted occurrences from given recurrence series.\n *\n * @function getDeletedOccurrences\n * @param {string | number | Object} recurrenceData Accepts the parent ID of the event object or parent event object\n * @returns {Object[]} Returns the collection of deleted occurrence events.\n */\n Schedule.prototype.getDeletedOccurrences = function (recurrenceData) {\n return this.eventBase.getDeletedOccurrences(recurrenceData);\n };\n /**\n * Retrieves the events that lies on the current date range of the active view of Schedule.\n *\n * @function getCurrentViewEvents\n * @returns {Object[]} Returns the collection of events.\n */\n Schedule.prototype.getCurrentViewEvents = function () {\n return this.eventsProcessed;\n };\n /**\n * Refreshes the event dataSource. This method may be useful when the events alone in the schedule needs to be re-rendered.\n *\n * @function refreshEvents\n * @param {boolean} isRemoteRefresh Accepts the boolean to refresh data from remote or local\n * @returns {void}\n */\n Schedule.prototype.refreshEvents = function (isRemoteRefresh) {\n if (isRemoteRefresh === void 0) { isRemoteRefresh = true; }\n if (this.dragAndDropModule) {\n this.dragAndDropModule.actionObj.action = '';\n removeClass([this.element], cls.EVENT_ACTION_CLASS);\n }\n if (isRemoteRefresh) {\n this.crudModule.refreshDataManager();\n }\n else {\n if (this.activeViewOptions && this.activeViewOptions.eventTemplate) {\n var templateNames = ['eventTemplate'];\n if (this.crudModule && this.crudModule.crudObj.isCrudAction &&\n ['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(this.currentView) === -1) {\n templateNames = [];\n for (var i = 0, len = this.crudModule.crudObj.sourceEvent.length; i < len; i++) {\n templateNames.push('eventTemplate_' + this.crudModule.crudObj.sourceEvent[i].groupIndex);\n if (this.crudModule.crudObj.targetEvent[i] && this.crudModule.crudObj.sourceEvent[i].groupIndex !==\n this.crudModule.crudObj.targetEvent[i].groupIndex) {\n templateNames.push('eventTemplate_' + this.crudModule.crudObj.targetEvent[i].groupIndex);\n }\n }\n }\n this.resetTemplates(templateNames);\n }\n var eventsData = this.eventsData || [];\n var blockData = this.blockData || [];\n var data = eventsData.concat(blockData);\n this.notify(events.dataReady, { processedData: this.eventBase ? this.eventBase.processData(data) : [] });\n }\n };\n /**\n * Method to refresh the given Schedule templates\n *\n * @param {string} templateName Accepts the template name\n * @returns {void}\n */\n Schedule.prototype.refreshTemplates = function (templateName) {\n if (templateName) {\n this.resetTemplates([templateName]);\n }\n else {\n this.resetTemplates();\n }\n switch (templateName) {\n case 'eventTemplate':\n this.appointmentTemplateFn = this.templateParser(this.activeViewOptions.eventTemplate);\n this.refreshEvents(false);\n break;\n case 'dateHeaderTemplate':\n this.dateHeaderTemplateFn = this.templateParser(this.activeViewOptions.dateHeaderTemplate);\n this.activeView.refreshHeader();\n break;\n case 'resourceHeaderTemplate':\n this.resourceHeaderTemplateFn = this.templateParser(this.activeViewOptions.resourceHeaderTemplate);\n if (this.activeView.isTimelineView()) {\n this.activeView.refreshResourceHeader();\n }\n else {\n this.activeView.refreshHeader();\n }\n break;\n case 'quickInfoTemplates':\n if (this.quickPopup) {\n this.quickPopup.destroy();\n this.quickPopup = null;\n }\n this.quickPopup = new QuickPopups(this);\n this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);\n this.quickInfoTemplatesContentFn = this.templateParser(this.quickInfoTemplates.content);\n this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);\n break;\n case 'editorTemplate':\n if (this.eventWindow) {\n this.eventWindow.destroy();\n this.eventWindow = null;\n }\n this.eventWindow = new EventWindow(this);\n this.editorTemplateFn = this.templateParser(this.editorTemplate);\n break;\n case 'tooltipTemplate':\n case 'headerTooltipTemplate':\n if (this.eventTooltip) {\n this.eventTooltip.destroy();\n this.eventTooltip = null;\n }\n this.eventTooltip = new EventTooltip(this);\n this.eventTooltipTemplateFn = this.templateParser(this.eventSettings.tooltipTemplate);\n this.headerTooltipTemplateFn = this.templateParser(this.activeViewOptions.group.headerTooltipTemplate);\n break;\n default:\n this.initializeView(this.currentView);\n break;\n }\n };\n /**\n * Refreshes the Schedule layout without re-render.\n *\n * @function refreshLayout\n * @returns {void}\n */\n Schedule.prototype.refreshLayout = function () {\n this.onScheduleResize();\n if (this.headerModule) {\n this.headerModule.refresh();\n }\n if (this.eventWindow) {\n this.eventWindow.refresh();\n }\n };\n /**\n * To retrieve the appointment object from element.\n *\n * @function getEventDetails\n * @param {Element} element Denotes the event UI element on the Schedule.\n * @returns {Object} Returns the event details.\n */\n Schedule.prototype.getEventDetails = function (element) {\n element = getElement(element);\n var guid = element.getAttribute('data-guid');\n if (guid) {\n return this.eventBase.getEventByGuid(guid);\n }\n return {};\n };\n /**\n * To check whether the given time range slots are available for event creation or already occupied by other events.\n *\n * @function isSlotAvailable\n * @param {Date | Object} startTime Denotes the start time of the slot.\n * @param {Date} endTime Denotes the end time of the slot.\n * @param {number} groupIndex Defines the resource index from last level.\n * @returns {boolean} Returns true, if the slot that lies in the provided time range does not contain any other events.\n */\n Schedule.prototype.isSlotAvailable = function (startTime, endTime, groupIndex) {\n var _this = this;\n var eventStart;\n var eventEnd;\n var eventObj = this.activeEventData.event;\n if (startTime instanceof Date || typeof (startTime) === 'string') {\n eventStart = startTime;\n eventEnd = endTime;\n }\n else {\n eventObj = startTime;\n eventStart = startTime[this.eventFields.startTime];\n eventEnd = startTime[this.eventFields.endTime];\n if (this.resourceBase) {\n groupIndex = this.eventBase.getGroupIndexFromEvent(startTime);\n }\n }\n if (isNullOrUndefined(eventStart) || isNullOrUndefined(eventEnd)) {\n return true;\n }\n eventStart = this.getDateTime(eventStart);\n eventEnd = this.getDateTime(eventEnd);\n var eventCollection = this.eventBase.filterEvents(eventStart, eventEnd);\n if (!isNullOrUndefined(groupIndex) && this.resourceBase && this.resourceBase.lastResourceLevel.length > 0) {\n eventCollection = this.eventBase.filterEventsByResource(this.resourceBase.lastResourceLevel[groupIndex], eventCollection);\n }\n if (eventObj) {\n if (eventObj.Guid) {\n eventCollection = eventCollection.filter(function (event) { return event.Guid !== eventObj.Guid; });\n }\n else {\n eventCollection = eventCollection.filter(function (event) {\n return event[_this.eventFields.id] !== eventObj[_this.eventFields.id];\n });\n }\n }\n return (eventCollection.length > 0) ? false : true;\n };\n /**\n * To manually open the event editor on specific time or on certain events.\n *\n * @function openEditor\n * @param {Object} data It can be either cell data or event data.\n * @param {CurrentAction} action Defines the action for which the editor needs to be opened such as either for new event creation or\n * for editing of existing events. The applicable action names that can be used here are `Add`, `Save`, `EditOccurrence`\n * and `EditSeries`.\n * @param {boolean} isEventData It allows to decide whether the editor needs to be opened with the clicked cell details or with the\n * passed event details.\n * @param {number} repeatType It opens the editor with the recurrence options based on the provided repeat type.\n * @returns {void}\n */\n Schedule.prototype.openEditor = function (data, action, isEventData, repeatType) {\n if (action === 'Add' && !isEventData) {\n data.startTime = this.getDateTime(data.startTime);\n data.endTime = this.getDateTime(data.endTime);\n if (!isNullOrUndefined(data.element)) {\n data.element = getElement(data.element);\n }\n }\n else {\n data[this.eventFields.startTime] = this.getDateTime(data[this.eventFields.startTime]);\n data[this.eventFields.endTime] = this.getDateTime(data[this.eventFields.endTime]);\n }\n this.currentAction = action;\n if (action !== 'Add') {\n this.activeEventData.event = data;\n }\n this.eventWindow.openEditor(data, action, isEventData, repeatType);\n };\n /**\n * To manually close the event editor window\n *\n * @function closeEditor\n * @returns {void}\n */\n Schedule.prototype.closeEditor = function () {\n if (this.eventWindow) {\n this.eventWindow.dialogClose();\n }\n };\n /**\n * To manually close the quick info popup\n *\n * @function closeQuickInfoPopup\n * @returns {void}\n */\n Schedule.prototype.closeQuickInfoPopup = function () {\n if (this.quickPopup) {\n this.quickPopup.quickPopupHide(true);\n }\n };\n /**\n * Select the resource based on group index in mobile mode.\n *\n * @param {number} groupIndex Defines the resource index based on last level.\n * @returns {void}\n */\n Schedule.prototype.selectResourceByIndex = function (groupIndex) {\n if (this.resourceBase && this.uiStateValues.isGroupAdaptive) {\n this.resourceBase.selectResourceByIndex(groupIndex);\n }\n };\n /**\n * Select the resources to the based on id.\n *\n * @param {string | number} id id of the resource defined in resources collection.\n * @param {string} name Name of the resource defined in resources collection.\n * @returns {number} Returns the group index\n */\n Schedule.prototype.getIndexFromResourceId = function (id, name) {\n if (this.resourceBase) {\n return this.resourceBase.getIndexFromResourceId(id, name);\n }\n return null;\n };\n /**\n * Adds the resources to the specified index.\n *\n * @param {Object | Object[]} resources Accepts the resource data in single or collection of data.\n * @param {string} name Name of the resource defined in resources collection.\n * @param {number} index Index or position where the resource should be added.\n * @returns {void}\n */\n Schedule.prototype.addResource = function (resources, name, index) {\n this.resourceBase.addResource(resources, name, index);\n };\n /**\n * Removes the specified resource.\n *\n * @param {string | string[] | number | number[]} resourceId Specifies the resource id to be removed.\n * @param {string} name Specifies the resource name from which the id should be referred.\n * @returns {void}\n */\n Schedule.prototype.removeResource = function (resourceId, name) {\n this.resourceBase.removeResource(resourceId, name);\n };\n /**\n * Destroys the Schedule component.\n *\n * @function destroy\n * @returns {void}\n */\n Schedule.prototype.destroy = function () {\n if (this.eventTooltip) {\n this.eventTooltip.destroy();\n this.eventTooltip = null;\n }\n this.destroyPopups();\n this.hideSpinner();\n this.unWireEvents();\n this.destroyHeaderModule();\n if (this.eventTooltip) {\n this.eventTooltip.destroy();\n this.eventTooltip = null;\n }\n if (this.eventBase) {\n this.eventBase.destroy();\n this.eventBase = null;\n }\n if (this.workCellAction) {\n this.workCellAction.destroy();\n this.workCellAction = null;\n }\n if (this.inlineModule) {\n this.inlineModule.destroy();\n this.inlineModule = null;\n }\n if (this.keyboardInteractionModule) {\n this.keyboardInteractionModule.destroy();\n this.keyboardInteractionModule = null;\n }\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.printModule) {\n this.printModule.destroy();\n }\n if (this.activeView) {\n this.resetTemplates();\n this.activeView.removeEventListener();\n this.activeView.destroy();\n this.activeView = null;\n }\n if (this.scheduleTouchModule) {\n this.scheduleTouchModule.destroy();\n this.scheduleTouchModule = null;\n }\n if (this.crudModule) {\n this.crudModule.destroy();\n this.crudModule = null;\n }\n if (this.dataModule) {\n this.dataModule.destroy();\n this.dataModule = null;\n }\n _super.prototype.destroy.call(this);\n var modules = [\n 'dayModule', 'weekModule', 'workWeekModule', 'monthModule', 'monthAgendaModule', 'yearModule', 'agendaModule',\n 'timelineViewsModule', 'timelineMonthModule', 'timelineYearModule', 'resizeModule', 'dragAndDropModule',\n 'excelExportModule', 'printModule', 'iCalendarExportModule', 'iCalendarImportModule', 'tzModule', 'eventsData',\n 'eventsProcessed', 'blockData', 'blockProcessed', 'uiStateValues', 'viewCollections', 'viewOptions', 'defaultLocale',\n 'localeObj', 'selectedElements', 'resourceCollection', 'editorTitles', 'eventFields', 'activeViewOptions',\n 'activeEventData', 'activeCellsData', 'renderModule'\n ];\n for (var _i = 0, modules_1 = modules; _i < modules_1.length; _i++) {\n var module = modules_1[_i];\n this[module] = null;\n }\n util.removeChildren(this.element);\n var removeClasses = [cls.ROOT, cls.RTL, cls.DEVICE_CLASS, cls.MULTI_DRAG];\n if (this.cssClass) {\n removeClasses = removeClasses.concat(this.cssClass.split(' '));\n }\n removeClass([this.element], removeClasses);\n };\n __decorate([\n Property('auto')\n ], Schedule.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Schedule.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"showHeaderBar\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"showTimeIndicator\", void 0);\n __decorate([\n Property('Week')\n ], Schedule.prototype, \"currentView\", void 0);\n __decorate([\n Property(['Day', 'Week', 'WorkWeek', 'Month', 'Agenda'])\n ], Schedule.prototype, \"views\", void 0);\n __decorate([\n Property(new Date())\n ], Schedule.prototype, \"selectedDate\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], Schedule.prototype, \"minDate\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], Schedule.prototype, \"maxDate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"dateFormat\", void 0);\n __decorate([\n Property('Gregorian')\n ], Schedule.prototype, \"calendarMode\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"showWeekend\", void 0);\n __decorate([\n Property(0)\n ], Schedule.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('FirstDay')\n ], Schedule.prototype, \"weekRule\", void 0);\n __decorate([\n Property([1, 2, 3, 4, 5])\n ], Schedule.prototype, \"workDays\", void 0);\n __decorate([\n Property(12)\n ], Schedule.prototype, \"monthsCount\", void 0);\n __decorate([\n Property('00:00')\n ], Schedule.prototype, \"startHour\", void 0);\n __decorate([\n Property('24:00')\n ], Schedule.prototype, \"endHour\", void 0);\n __decorate([\n Property(null)\n ], Schedule.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"enableAllDayScroll\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"allowResizing\", void 0);\n __decorate([\n Complex({}, WorkHours)\n ], Schedule.prototype, \"workHours\", void 0);\n __decorate([\n Complex({}, TimeScale)\n ], Schedule.prototype, \"timeScale\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"allowKeyboardInteraction\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"dateHeaderTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"cellHeaderTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"dayHeaderTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"monthHeaderTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"cellTemplate\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"showQuickInfo\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"allowInline\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"allowMultiCellSelection\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"allowMultiRowSelection\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"quickInfoOnSelectionEnd\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"showWeekNumber\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"rowAutoHeight\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"allowMultiDrag\", void 0);\n __decorate([\n Property(0)\n ], Schedule.prototype, \"firstMonthOfYear\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"editorTemplate\", void 0);\n __decorate([\n Complex({}, QuickInfoTemplates)\n ], Schedule.prototype, \"quickInfoTemplates\", void 0);\n __decorate([\n Property(7)\n ], Schedule.prototype, \"agendaDaysCount\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"hideEmptyAgendaDays\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"enableRecurrenceValidation\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"timezone\", void 0);\n __decorate([\n Complex({}, EventSettings)\n ], Schedule.prototype, \"eventSettings\", void 0);\n __decorate([\n Property(timezoneData)\n ], Schedule.prototype, \"timezoneDataSource\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"resourceHeaderTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"headerIndentTemplate\", void 0);\n __decorate([\n Complex({}, Group)\n ], Schedule.prototype, \"group\", void 0);\n __decorate([\n Collection([], Resources)\n ], Schedule.prototype, \"resources\", void 0);\n __decorate([\n Collection([], HeaderRows)\n ], Schedule.prototype, \"headerRows\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"cssClass\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"eventDragArea\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"cellClick\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"cellDoubleClick\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"moreEventsClick\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"hover\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"navigating\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"renderCell\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"eventClick\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"eventRendered\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"dataBinding\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"dataBound\", void 0);\n Schedule = __decorate([\n NotifyPropertyChanges\n ], Schedule);\n return Schedule;\n}(Component));\nexport { Schedule };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Schedule } from '@syncfusion/ej2-schedule';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `ScheduleComponent` represents the react Schedule.\n * ```tsx\n * \n * ```\n */\nvar ScheduleComponent = /** @class */ (function (_super) {\n __extends(ScheduleComponent, _super);\n function ScheduleComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'views': 'view', 'resources': 'resource', 'headerRows': 'headerRow' };\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n ScheduleComponent.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 ScheduleComponent;\n}(Schedule));\nexport { ScheduleComponent };\napplyMixins(ScheduleComponent, [ComponentBase, React.Component]);\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 if (typeof this.Grid.isChildGrid !== 'undefined' && typeof this.Grid.isChildGrid) {\n this.Grid.measureColumnsWidth(this.currentBounds);\n }\n else {\n this.Grid.measureColumnsWidth(new RectangleF(this.currentBounds.x, this.currentBounds.y, this.currentBounds.x + this.currentBounds.width, this.currentBounds.height));\n }\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 = this.checkIsFisished(row);\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).returnValue) {\n break;\n }\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 if (format != null && (format.paginateBounds.x !== 0 || format.paginateBounds.y !== 0 || format.paginateBounds.height !== 0 || format.paginateBounds.width !== 0)) {\n this.currentBounds.x = format.paginateBounds.x;\n this.currentBounds.width = format.paginateBounds.width;\n this.currentBounds.height = format.paginateBounds.height;\n }\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 PdfGridLayouter.prototype.checkIsFisished = function (row) {\n var result = true;\n for (var i = 0; i < row.cells.count; i++) {\n if (!row.cells.getCell(i).FinishedDrawingCell) {\n result = false;\n }\n }\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 (typeof page !== 'undefined' && 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 = (typeof args.cancel === 'undefined' ? false : 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 (typeof this.Grid.isChildGrid !== 'undefined' && this.Grid.isChildGrid && typeof this.Grid.ParentCell !== 'undefined' && 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 (typeof this.Grid.ParentCell.row.grid.LayoutFormat !== 'undefined' && 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) {\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 if (gridRow.cells.getCell(i).style != null && gridRow.cells.getCell(i).style.borders != null && gridRow.cells.getCell(i).style.borders.top != null && gridRow.cells.getCell(i).style.borders.bottom != null)\n height += (gridRow.cells.getCell(i).style.borders.top.width + gridRow.cells.getCell(i).style.borders.bottom.width) * 2;\n if (this.slr.lineCount > 1 && gridRow.cells.getCell(i).stringFormat != null && gridRow.cells.getCell(i).stringFormat.lineSpacing != 0)\n height += (this.slr.lineCount - 1) * (gridRow.cells.getCell(i).style.stringFormat.lineSpacing);\n if (gridRow.cells.getCell(i).style.cellPadding == null) {\n height += (grid.style.cellPadding.top + grid.style.cellPadding.bottom);\n }\n else {\n height += (grid.style.cellPadding.top + grid.style.cellPadding.bottom);\n }\n height += grid.style.cellSpacing;\n 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 row.rowBreakHeight = calculateHeight - stringResult.actualSize.height;\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.isHeaderRow = 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.isHeaderRow ? this.grid.headers.indexOf(this) : this.grid.rows.rowCollection.indexOf(this);\n for (var j = 0; j < cell.rowSpan; j++) {\n if ((j + 1) < cell.rowSpan) {\n (this.isHeaderRow ? this.grid.headers.getHeader(rowin + j + 1) : 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 row.isHeaderRow = true;\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 var width = param.bounds.width;\n var height = param.bounds.height;\n var hasChanged = false;\n if (typeof param.bounds.width === 'undefined' || param.bounds.width === 0) {\n width = param.page.getClientSize().width - param.bounds.x;\n hasChanged = true;\n }\n if (typeof param.bounds.height === 'undefined' || param.bounds.height === 0) {\n height = param.page.getClientSize().height - param.bounds.y;\n hasChanged = true;\n }\n if (hasChanged) {\n param.bounds = new RectangleF(param.bounds.x, param.bounds.y, width, height);\n }\n if (this.rows.count !== 0) {\n var currentRow = this.rows.getRow(0).cells.getCell(0).style;\n if (currentRow.borders != null && ((currentRow.borders.left != null && currentRow.borders.left.width !== 1) ||\n (currentRow.borders.top != null && currentRow.borders.top.width !== 1))) {\n var x = currentRow.borders.left.width / 2;\n var y = currentRow.borders.top.width / 2;\n if (param.bounds.x === PdfBorders.default.right.width / 2 && param.bounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.gridSize.width, this.gridSize.height);\n param.bounds = newBound;\n }\n }\n }\n this.setSpan();\n this.checkSpan();\n this.layoutFormat = param.format;\n this.gridLocation = param.bounds;\n var layouter = new PdfGridLayouter(this);\n var result = (layouter.Layouter(param));\n return result;\n };\n PdfGrid.prototype.setSpan = function () {\n var colSpan = 1;\n var rowSpan = 1;\n var currentCellIndex = 0;\n var currentRowIndex = 0;\n var maxSpan = 0;\n var rowCount = this.headers.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.headers.getHeader(i);\n maxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.headers.count) {\n throw new Error('Invalid span specified at Header ' + j.toString() + ' column ' + i.toString());\n }\n // if (this.rows.count !== 0 && cell.rowSpan + i > this.rows.count) {\n // throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n // }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n colSpan = cell.columnSpan;\n rowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n row.cells.getCell(currentCellIndex).rowSpan = rowSpan;\n colSpan--;\n }\n currentCellIndex = j;\n colSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n rowSpan--;\n while (colSpan > 1) {\n currentCellIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n colSpan--;\n }\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n colSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n rowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n rowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = maxSpan;\n }\n };\n PdfGrid.prototype.checkSpan = function () {\n var cellcolSpan;\n var cellrowSpan = 1;\n var cellmaxSpan = 0;\n var currentCellIndex;\n var currentRowIndex = 0;\n cellcolSpan = cellrowSpan = 1;\n currentCellIndex = currentRowIndex = 0;\n if (this.hasRowSpanSpan || this.hasColumnSpan) {\n var rowCount = this.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.rows.getRow(i);\n cellmaxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cellmaxSpan = Math.max(cellmaxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue\n && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.rows.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n cellcolSpan = cell.columnSpan;\n cellrowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n currentCellIndex = j;\n cellcolSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellrowSpan--;\n while (cellcolSpan > 1) {\n currentCellIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n cellcolSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n cellrowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n cellrowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = cellmaxSpan;\n }\n }\n };\n PdfGrid.prototype.measureColumnsWidth = function (bounds) {\n if (typeof bounds !== 'undefined') {\n this.isPageWidth = false;\n var widths = this.columns.getDefaultWidths(bounds.width - bounds.x);\n //let tempWidth : number = this.columns.getColumn(0).width;\n for (var i = 0, count = this.columns.count; i < count; i++) {\n // if (this.columns.getColumn(i).width < 0)\n // this.columns.getColumn(i).columnWidth = widths[i];\n // else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth && widths[i]>0 && this.isComplete)\n this.columns.getColumn(i).columnWidth = widths[i];\n this.tempWidth = widths[i];\n }\n if (this.ParentCell != null && this.style.allowHorizontalOverflow == false && this.ParentCell.row.grid.style.allowHorizontalOverflow == false) {\n var padding = 0;\n var columnWidth = 0;\n var columnCount = this.columns.count;\n var childGridColumnWidth = 0;\n if (this.ParentCell.style.cellPadding != null || typeof this.ParentCell.style.cellPadding !== 'undefined') {\n if (typeof this.ParentCell.style.cellPadding.left != 'undefined' && this.ParentCell.style.cellPadding.hasLeftPad) {\n padding += this.ParentCell.style.cellPadding.left;\n }\n if (typeof this.ParentCell.style.cellPadding.right != 'undefined' && this.ParentCell.style.cellPadding.hasRightPad) {\n padding += this.ParentCell.style.cellPadding.right;\n }\n }\n for (var i = 0; i < this.ParentCell.columnSpan; i++) {\n columnWidth += this.ParentCell.row.grid.columns.getColumn(this.parentCellIndex + i).width;\n }\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n columnWidth -= this.gridColumns.getColumn(j).width;\n columnCount--;\n }\n }\n if ((this.ParentCell.row.grid.style.cellPadding != null || typeof this.ParentCell.row.grid.style.cellPadding != 'undefined')) {\n if (typeof this.ParentCell.row.grid.style.cellPadding.top != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasTopPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.top;\n }\n if (typeof this.ParentCell.row.grid.style.cellPadding.bottom != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasBottomPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n columnWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n if (columnWidth > padding) {\n childGridColumnWidth = (columnWidth - padding) / columnCount;\n this.tempWidth = childGridColumnWidth;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColumnWidth;\n }\n }\n }\n }\n // if (this.ParentCell != null && this.ParentCell.row.width > 0)\n // {\n // if (this.isChildGrid && this.gridSize.width > this.ParentCell.row.width)\n // {\n // widths = this.columns.getDefaultWidths(bounds.width);\n // for (let i : number = 0; i < this.columns.count; i++)\n // {\n // this.columns.getColumn(i).width = widths[i];\n // }\n // }\n // }\n }\n else {\n var widths = [this.columns.count];\n for (var n = 0; n < this.columns.count; n++) {\n widths[n] = 0;\n }\n var cellWidth = 0;\n var cellWidths = 0;\n if ((typeof this.isChildGrid === 'undefined' && typeof this.gridLocation !== 'undefined') || (this.isChildGrid === null && typeof this.gridLocation !== 'undefined')) {\n this.initialWidth = this.gridLocation.width;\n }\n if (this.headers.count > 0) {\n var colCount_1 = this.headers.getHeader(0).cells.count;\n var rowCount = this.headers.count;\n for (var i = 0; i < colCount_1; i++) {\n cellWidth = 0;\n for (var j = 0; j < rowCount; j++) {\n var rowWidth = Math.min(this.initialWidth, this.headers.getHeader(j).cells.getCell(i).width);\n cellWidth = Math.max(cellWidth, rowWidth);\n }\n widths[i] = cellWidth;\n }\n }\n // else {\n // let colCount : number = this.rows.getRow(0).cells.count;\n // let rowCount : number = this.rows.count;\n // for (let i : number = 0; i < colCount; i++) {\n // cellWidth = 0;\n // for (let j : number = 0; j < rowCount; j++) {\n // let rowWidth : number = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n // cellWidth = Math.max(cellWidth, rowWidth);\n // }\n // widths[i] = cellWidth;\n // }\n // }\n cellWidth = 0;\n for (var i = 0, colCount_2 = this.columns.count; i < colCount_2; i++) {\n for (var j = 0, rowCount = this.rows.count; j < rowCount; j++) {\n if ((this.rows.getRow(j).cells.getCell(i).columnSpan == 1 && !this.rows.getRow(j).cells.getCell(i).isCellMergeContinue) || this.rows.getRow(j).cells.getCell(i).value != null) {\n if (this.rows.getRow(j).cells.getCell(i).value != null && !this.rows.getRow(j).grid.style.allowHorizontalOverflow) {\n var value = this.rows.getRow(j).grid.style.cellPadding.right +\n this.rows.getRow(j).grid.style.cellPadding.left\n + this.rows.getRow(j).cells.getCell(i).style.borders.left.width / 2;\n // if (this.initialWidth != 0 )\n // (this.rows.getRow(j).cells.getCell(i).value as PdfGrid).initialWidth = this.initialWidth - value;\n }\n var rowWidth = 0;\n rowWidth = this.initialWidth > 0.0 ? Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width) : this.rows.getRow(j).cells.getCell(i).width;\n // let internalWidth : number = this.rows.getRow(j).cells.getCell(i).width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.left.width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.right.width;\n // let internalHeight : number = this.rows.getRow(j).cells.getCell(i).height;\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.top.width);\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.bottom.width);\n // let isCorrectWidth : boolean = (internalWidth + this.gridLocation.x) > this.currentGraphics.clientSize.width;\n // let isCorrectHeight : boolean = (internalHeight + this.gridLocation.y) > this.currentGraphics.clientSize.height;\n // if (isCorrectWidth || isCorrectHeight) {\n // throw Error('Image size exceeds client size of the page. Can not insert this image');\n // }\n // rowWidth = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n cellWidth = Math.max(widths[i], Math.max(cellWidth, rowWidth));\n cellWidth = Math.max(this.columns.getColumn(i).width, cellWidth);\n }\n }\n if (this.rows.count != 0)\n widths[i] = cellWidth;\n cellWidth = 0;\n }\n for (var i = 0, RowCount = this.rows.count; i < RowCount; i++) {\n for (var j = 0, ColCount = this.columns.count; j < ColCount; j++) {\n if (this.rows.getRow(i).cells.getCell(j).columnSpan > 1) {\n var total = widths[j];\n for (var k = 1; k < this.rows.getRow(i).cells.getCell(j).columnSpan; k++) {\n total += widths[j + k];\n }\n // if (this.rows.getRow(i).cells.getCell(j).width > total)\n // {\n // let extendedWidth : number = this.rows.getRow(i).cells.getCell(j).width - total;\n // extendedWidth = extendedWidth / this.rows.getRow(i).cells.getCell(j).columnSpan;\n // for (let k : number = j; k < j + this.rows.getRow(i).cells.getCell(j).columnSpan; k++)\n // widths[k] += extendedWidth;\n // }\n }\n }\n }\n // if (this.isChildGrid && this.initialWidth != 0)\n // {\n // widths = this.columns.getDefaultWidths(this.initialWidth);\n // }\n for (var i = 0, count = this.columns.count; i < count; i++) {\n if (this.columns.getColumn(i).width <= 0)\n this.columns.getColumn(i).columnWidth = widths[i];\n else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth)\n this.columns.getColumn(i).columnWidth = widths[i];\n }\n var padding = 0;\n var colWidth = 0;\n var colCount = this.columns.count;\n var childGridColWidth = 0;\n colWidth = this.tempWidth;\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n colWidth -= this.gridColumns.getColumn(j).width;\n colCount--;\n }\n }\n // if (this.style.cellSpacing != 0){\n // colWidth -= this.style.cellSpacing * 2;\n // }\n if (colWidth > 0) {\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n colWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n }\n if (colWidth > padding) {\n childGridColWidth = (colWidth) / colCount;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColWidth;\n }\n }\n }\n }\n };\n return PdfGrid;\n}(PdfLayoutElement));\nexport { PdfGrid };\n","/**\n * PdfPageTemplateElement.ts class for EJ2-Pdf\n */\nimport { PdfDockStyle, PdfAlignmentStyle, TemplateType } from './enum';\nimport { PointF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTemplate } from './../graphics/figures/pdf-template';\nimport { PdfPage } from './pdf-page';\nimport { RectangleF } from './../drawing/pdf-drawing';\n/**\n * Describes a `page template` object that can be used as header/footer, watermark or stamp.\n */\nvar PdfPageTemplateElement = /** @class */ (function () {\n /* tslint:disable */\n function PdfPageTemplateElement(arg1, arg2, arg3, arg4, arg5) {\n if (arg1 instanceof RectangleF && typeof arg2 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, null);\n }\n else if (arg1 instanceof RectangleF && arg2 instanceof PdfPage && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, arg2);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, null);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, arg3);\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.InitiateBounds(0, 0, arg1.width, arg1.height, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, arg3);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n }\n else {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n }\n /* tslint:enable */\n }\n Object.defineProperty(PdfPageTemplateElement.prototype, \"dock\", {\n // Properties\n /**\n * Gets or sets the `dock style` of the page template element.\n * @private\n */\n get: function () {\n return this.dockStyle;\n },\n set: function (value) {\n // if (this.dockStyle !== value && this.Type === TemplateType.None) {\n this.dockStyle = value;\n // Reset alignment.\n this.resetAlignment();\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"alignment\", {\n /**\n * Gets or sets `alignment` of the page template element.\n * @private\n */\n get: function () {\n return this.alignmentStyle;\n },\n set: function (value) {\n // if (this.alignmentStyle !== value) {\n this.setAlignment(value);\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"foreground\", {\n /**\n * Indicates whether the page template is located `in front of the page layers or behind of it`.\n * @private\n */\n get: function () {\n return this.isForeground;\n },\n set: function (value) {\n // if (this.foreground !== value) {\n this.isForeground = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"background\", {\n /**\n * Indicates whether the page template is located `behind of the page layers or in front of it`.\n * @private\n */\n get: function () {\n return !this.isForeground;\n },\n set: function (value) {\n this.isForeground = !value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"location\", {\n /**\n * Gets or sets `location` of the page template element.\n * @private\n */\n get: function () {\n return this.currentLocation;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"x\", {\n /**\n * Gets or sets `X` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.x : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.x = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"y\", {\n /**\n * Gets or sets `Y` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.y : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.y = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"size\", {\n /**\n * Gets or sets `size` of the page template element.\n * @private\n */\n get: function () {\n return this.template.size;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.template.reset(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"width\", {\n /**\n * Gets or sets `width` of the page template element.\n * @private\n */\n get: function () {\n return this.template.width;\n },\n set: function (value) {\n if (this.template.width !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.width = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"height\", {\n /**\n * Gets or sets `height` of the page template element.\n * @private\n */\n get: function () {\n return this.template.height;\n },\n set: function (value) {\n if (this.template.height !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.height = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"graphics\", {\n /**\n * Gets `graphics` context of the page template element.\n * @private\n */\n get: function () {\n return this.template.graphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"template\", {\n /**\n * Gets Pdf `template` object.\n * @private\n */\n get: function () {\n // if (typeof this.pdfTemplate === 'undefined' || this.pdfTemplate == null) {\n // this.pdfTemplate = new PdfTemplate(this.size);\n // }\n return this.pdfTemplate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"type\", {\n /**\n * Gets or sets `type` of the usage of this page template.\n * @private\n */\n get: function () {\n return this.templateType;\n },\n set: function (value) {\n this.updateDocking(value);\n this.templateType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"bounds\", {\n /**\n * Gets or sets `bounds` of the page template.\n * @public\n */\n get: function () {\n return new RectangleF(new PointF(this.x, this.y), this.size);\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.location = new PointF(value.x, value.y);\n this.size = new SizeF(value.width, value.height);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize Bounds` Initialize the bounds value of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.InitiateBounds = function (arg1, arg2, arg3, arg4, arg5) {\n this.x = arg1;\n this.y = arg2;\n this.pdfTemplate = new PdfTemplate(arg3, arg4);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n };\n /**\n * `Updates Dock` property if template is used as header/footer.\n * @private\n */\n PdfPageTemplateElement.prototype.updateDocking = function (type) {\n if (type !== TemplateType.None) {\n switch (type) {\n case TemplateType.Top:\n this.dock = PdfDockStyle.Top;\n break;\n case TemplateType.Bottom:\n this.dock = PdfDockStyle.Bottom;\n break;\n case TemplateType.Left:\n this.dock = PdfDockStyle.Left;\n break;\n case TemplateType.Right:\n this.dock = PdfDockStyle.Right;\n break;\n }\n this.resetAlignment();\n }\n };\n /**\n * `Resets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.resetAlignment = function () {\n this.alignment = PdfAlignmentStyle.None;\n };\n /**\n * `Sets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.setAlignment = function (alignment) {\n if (this.dock === PdfDockStyle.None) {\n this.alignmentStyle = alignment;\n }\n else {\n // Template is docked and alignment has been changed.\n var canBeSet = false;\n switch (this.dock) {\n case PdfDockStyle.Left:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.MiddleLeft ||\n alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Top:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.TopCenter ||\n alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Right:\n canBeSet = (alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.MiddleRight ||\n alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Bottom:\n canBeSet = (alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.BottomCenter\n || alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Fill:\n canBeSet = (alignment === PdfAlignmentStyle.MiddleCenter || alignment === PdfAlignmentStyle.None);\n break;\n }\n if (canBeSet) {\n this.alignmentStyle = alignment;\n }\n }\n };\n /**\n * Draws the template.\n * @private\n */\n PdfPageTemplateElement.prototype.draw = function (layer, document) {\n var page = layer.page;\n var bounds = this.calculateBounds(page, document);\n if (bounds.x === -0) {\n bounds.x = 0;\n }\n layer.graphics.drawPdfTemplate(this.template, new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n };\n /**\n * Calculates bounds of the page template.\n * @private\n */\n PdfPageTemplateElement.prototype.calculateBounds = function (page, document) {\n var result = this.bounds;\n if (this.alignmentStyle !== PdfAlignmentStyle.None) {\n result = this.getAlignmentBounds(page, document);\n }\n else if (this.dockStyle !== PdfDockStyle.None) {\n result = this.getDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getAlignmentBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleAlignmentBounds(page, document);\n }\n else {\n result = this.getTemplateAlignmentBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleAlignmentBounds = function (page, document) {\n var bounds = this.bounds;\n var pdfSection = page.section;\n var actualBounds = pdfSection.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n x = 0;\n y = 0;\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = 0;\n break;\n case PdfAlignmentStyle.TopRight:\n x = actualBounds.width - this.width;\n y = 0;\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = 0;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n x = 0;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n x = actualBounds.width - this.width;\n y = actualBounds.height - this.height;\n break;\n }\n bounds.x = x;\n bounds.y = y;\n return bounds;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateAlignmentBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = -actualBounds.x;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = -actualBounds.y;\n break;\n case PdfAlignmentStyle.TopRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = -actualBounds.x;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n }\n result.x = x;\n result.y = y;\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getDockBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleDockBounds(page, document);\n }\n else {\n result = this.getTemplateDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = 0;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = 0;\n y = 0;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = 0;\n y = actualBounds.height - this.height;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Calculates template bounds basing on docking if template is a page template.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var actualSize = section.pageSettings.getActualSize();\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = -actualBounds.x;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = -actualBounds.x;\n y = -actualBounds.y;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y = -actualBounds.y + actualSize.height;\n }\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y -= actualSize.height;\n }\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n return PdfPageTemplateElement;\n}());\nexport { PdfPageTemplateElement };\n","/**\n * PdfNumbersConvertor.ts class for EJ2-PDF\n * @private\n */\nimport { PdfNumberStyle } from './../../pages/enum';\n/**\n * `PdfNumbersConvertor` for convert page number into numbers, roman letters, etc.,\n * @private\n */\nvar PdfNumbersConvertor = /** @class */ (function () {\n function PdfNumbersConvertor() {\n }\n // Static methods\n /**\n * Convert string value from page number with correct format.\n * @private\n */\n PdfNumbersConvertor.convert = function (intArabic, numberStyle) {\n var result = '';\n switch (numberStyle) {\n case PdfNumberStyle.None:\n result = '';\n break;\n case PdfNumberStyle.Numeric:\n result = intArabic.toString();\n break;\n case PdfNumberStyle.LowerLatin:\n result = this.arabicToLetter(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.LowerRoman:\n result = this.arabicToRoman(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.UpperLatin:\n result = this.arabicToLetter(intArabic);\n break;\n case PdfNumberStyle.UpperRoman:\n result = this.arabicToRoman(intArabic);\n break;\n }\n return result;\n };\n /**\n * Converts `arabic to roman` letters.\n * @private\n */\n PdfNumbersConvertor.arabicToRoman = function (intArabic) {\n var retval = '';\n var retvalM = this.generateNumber(intArabic, 1000, 'M');\n retval += retvalM.returnValue;\n intArabic = retvalM.intArabic;\n var retvalCM = this.generateNumber(intArabic, 900, 'CM');\n retval += retvalCM.returnValue;\n intArabic = retvalCM.intArabic;\n var retvalD = this.generateNumber(intArabic, 500, 'D');\n retval += retvalD.returnValue;\n intArabic = retvalD.intArabic;\n var retvalCD = this.generateNumber(intArabic, 400, 'CD');\n retval += retvalCD.returnValue;\n intArabic = retvalCD.intArabic;\n var retvalC = this.generateNumber(intArabic, 100, 'C');\n retval += retvalC.returnValue;\n intArabic = retvalC.intArabic;\n var retvalXC = this.generateNumber(intArabic, 90, 'XC');\n retval += retvalXC.returnValue;\n intArabic = retvalXC.intArabic;\n var retvalL = this.generateNumber(intArabic, 50, 'L');\n retval += retvalL.returnValue;\n intArabic = retvalL.intArabic;\n var retvalXL = this.generateNumber(intArabic, 40, 'XL');\n retval += retvalXL.returnValue;\n intArabic = retvalXL.intArabic;\n var retvalX = this.generateNumber(intArabic, 10, 'X');\n retval += retvalX.returnValue;\n intArabic = retvalX.intArabic;\n var retvalIX = this.generateNumber(intArabic, 9, 'IX');\n retval += retvalIX.returnValue;\n intArabic = retvalIX.intArabic;\n var retvalV = this.generateNumber(intArabic, 5, 'V');\n retval += retvalV.returnValue;\n intArabic = retvalV.intArabic;\n var retvalIV = this.generateNumber(intArabic, 4, 'IV');\n retval += retvalIV.returnValue;\n intArabic = retvalIV.intArabic;\n var retvalI = this.generateNumber(intArabic, 1, 'I');\n retval += retvalI.returnValue;\n intArabic = retvalI.intArabic;\n return retval.toString();\n };\n /**\n * Converts `arabic to normal letters`.\n * @private\n */\n PdfNumbersConvertor.arabicToLetter = function (arabic) {\n var stack = this.convertToLetter(arabic);\n var result = '';\n while (stack.length > 0) {\n var num = stack.pop();\n result = this.appendChar(result, num);\n }\n return result.toString();\n };\n /**\n * Generate a string value of an input number.\n * @private\n */\n PdfNumbersConvertor.generateNumber = function (value, magnitude, letter) {\n var numberstring = '';\n while (value >= magnitude) {\n value -= magnitude;\n numberstring += letter;\n }\n return { returnValue: numberstring.toString(), intArabic: value };\n };\n /**\n * Convert a input number into letters.\n * @private\n */\n PdfNumbersConvertor.convertToLetter = function (arabic) {\n if (arabic <= 0) {\n throw Error('ArgumentOutOfRangeException-arabic, Value can not be less 0');\n }\n var stack = [];\n while (arabic > this.letterLimit) {\n var remainder = arabic % this.letterLimit;\n if (remainder === 0.0) {\n arabic = arabic / this.letterLimit - 1;\n remainder = this.letterLimit;\n }\n else {\n arabic /= this.letterLimit;\n }\n stack.push(remainder);\n }\n stack.push(arabic);\n return stack;\n };\n /**\n * Convert number to actual string value.\n * @private\n */\n PdfNumbersConvertor.appendChar = function (builder, value) {\n var letter = String.fromCharCode(PdfNumbersConvertor.acsiiStartIndex + value);\n builder += letter;\n return builder;\n };\n // Fields\n /**\n * numbers of letters in english [readonly].\n * @default = 26.0\n * @private\n */\n PdfNumbersConvertor.letterLimit = 26.0;\n /**\n * Resturns `acsii start index` value.\n * @default 64\n * @private\n */\n PdfNumbersConvertor.acsiiStartIndex = (65 - 1);\n return PdfNumbersConvertor;\n}());\nexport { PdfNumbersConvertor };\n","/**\n * Represent class to store information about `template and value pairs`.\n * @private\n */\nvar PdfTemplateValuePair = /** @class */ (function () {\n function PdfTemplateValuePair(template, value) {\n // Fields\n /**\n * Internal variable to store template.\n * @default null\n * @private\n */\n this.pdfTemplate = null;\n /**\n * Intenal variable to store value.\n * @private\n */\n this.content = '';\n if (typeof template === 'undefined') {\n //\n }\n else {\n this.template = template;\n this.value = value;\n }\n }\n Object.defineProperty(PdfTemplateValuePair.prototype, \"template\", {\n // Properties\n /**\n * Gets or sets the template.\n * @private\n */\n get: function () {\n return this.pdfTemplate;\n },\n set: function (value) {\n this.pdfTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplateValuePair.prototype, \"value\", {\n /**\n * Gets or sets the value.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplateValuePair;\n}());\nexport { PdfTemplateValuePair };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value within the `PdfGraphics`.\n */\nvar PdfMultipleValueField = /** @class */ (function (_super) {\n __extends(PdfMultipleValueField, _super);\n function PdfMultipleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the instance of dictionary values of `graphics and template value pair`.\n * @private\n */\n _this.list = new TemporaryDictionary();\n return _this;\n }\n // Implementation\n /* tslint:disable */\n PdfMultipleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var value = this.getValue(graphics);\n var template = new PdfTemplate(this.getSize());\n this.list.setValue(graphics, new PdfTemplateValuePair(template, value));\n var g = template.graphics;\n var size = this.getSize();\n template.graphics.drawString(value, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n };\n return PdfMultipleValueField;\n}(PdfAutomaticField));\nexport { PdfMultipleValueField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents PDF document `page number field`.\n * @public\n */\nvar PdfPageNumberField = /** @class */ (function (_super) {\n __extends(PdfPageNumberField, _super);\n function PdfPageNumberField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the page number field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageNumberField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the page number field.\n * @private\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return the `string` value of page number field.\n * @public\n */\n PdfPageNumberField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n result = this.internalGetValue(page);\n return result;\n };\n /**\n * Internal method to `get actual value of page number`.\n * @private\n */\n PdfPageNumberField.prototype.internalGetValue = function (page) {\n var document = page.document;\n var pageIndex = document.pages.indexOf(page) + 1;\n return PdfNumbersConvertor.convert(pageIndex, this.numberStyle);\n };\n return PdfPageNumberField;\n}(PdfMultipleValueField));\nexport { PdfPageNumberField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfCompositeField.ts class for EJ2-PDF\n */\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents class which can concatenate multiple automatic fields into single string.\n */\nvar PdfCompositeField = /** @class */ (function (_super) {\n __extends(PdfCompositeField, _super);\n // Constructor\n /**\n * Initialize a new instance of `PdfCompositeField` class.\n * @param font Font of the field.\n * @param brush Color of the field.\n * @param text Content of the field.\n * @param list List of the automatic fields in specific order based on the text content.\n */\n function PdfCompositeField(font, brush, text) {\n var list = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n list[_i - 3] = arguments[_i];\n }\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the array of automatic fields.\n * @private\n */\n _this.internalAutomaticFields = null;\n /**\n * Stores the text value of the field.\n * @private\n */\n _this.internalText = '';\n _this.font = font;\n _this.brush = brush;\n _this.text = text;\n _this.automaticFields = list;\n return _this;\n }\n Object.defineProperty(PdfCompositeField.prototype, \"text\", {\n // Properties\n /**\n * Gets and sets the content of the field.\n * @public\n */\n get: function () {\n return this.internalText;\n },\n set: function (value) {\n this.internalText = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCompositeField.prototype, \"automaticFields\", {\n /**\n * Gets and sets the list of the field to drawn.\n * @public\n */\n get: function () {\n return this.internalAutomaticFields;\n },\n set: function (value) {\n this.internalAutomaticFields = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value generated from the list of automatic fields.\n * @public\n */\n PdfCompositeField.prototype.getValue = function (graphics) {\n var values = [];\n var text = this.text.toString();\n if (typeof this.automaticFields !== 'undefined' && this.automaticFields != null && this.automaticFields.length > 0) {\n for (var i = 0; i < this.automaticFields.length; i++) {\n var automaticField = this.automaticFields[i];\n text = text.replace('{' + i + '}', automaticField.getValue(graphics));\n }\n }\n return text;\n };\n return PdfCompositeField;\n}(PdfMultipleValueField));\nexport { PdfCompositeField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSingleValueField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value in the whole document.\n */\nvar PdfSingleValueField = /** @class */ (function (_super) {\n __extends(PdfSingleValueField, _super);\n // Constructors\n function PdfSingleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /* tslint:disable */\n _this.list = new TemporaryDictionary();\n /* tslint:enable */\n _this.painterGraphics = [];\n return _this;\n }\n PdfSingleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var page = this.getPageFromGraphics(graphics);\n var document = page.document;\n var textValue = this.getValue(graphics);\n /* tslint:disable */\n if (this.list.containsKey(document)) {\n var pair = this.list.getValue(document);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(pair.template, drawLocation, new SizeF(pair.template.width * scalingX, pair.template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n else {\n var size = this.getSize();\n var template = new PdfTemplate(size);\n this.list.setValue(document, new PdfTemplateValuePair(template, textValue));\n template.graphics.drawString(textValue, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n /* tslint:enable */\n };\n return PdfSingleValueField;\n}(PdfAutomaticField));\nexport { PdfSingleValueField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageCountField.ts class for EJ2-PDF\n */\nimport { PdfSingleValueField } from './single-value-field';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\n/**\n * Represents total PDF document page count automatic field.\n */\nvar PdfPageCountField = /** @class */ (function (_super) {\n __extends(PdfPageCountField, _super);\n function PdfPageCountField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageCountField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the field.\n * @public\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value of the content to drawn.\n * @public\n */\n PdfPageCountField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n var document = page.section.parent.document;\n var count = document.pages.count;\n result = PdfNumbersConvertor.convert(count, this.numberStyle);\n return result;\n };\n return PdfPageCountField;\n}(PdfSingleValueField));\nexport { PdfPageCountField };\n","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, null, null, null, isGrouping ? false : true);\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', data: dataSourceItems };\n this_1.parent.trigger(events.exportGroupCaption, cArgs, function (cArgs) {\n row.cells.getCell(groupIndex).value = cArgs.captionText;\n row.cells.getCell(groupIndex).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 var rowNumber = [];\n for (var i = 0; i < rows.length; i++) {\n rowNumber[i] = 0;\n }\n if (this.parent.groupSettings.columns.length) {\n index = this.parent.groupSettings.columns.length - 1;\n columnCount = columnCount - 1;\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[rowNumber[rowIdx]];\n rowNumber[rowIdx] = rowNumber[rowIdx] + 1;\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, isAggregate) {\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 var aggIdx = isAggregate ? 0 : 1;\n for (var i = 0; i < pdfGrid.columns.count + aggIdx; 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(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 (!isAggregate) {\n if (!isCaption) {\n value.splice(0, 1);\n }\n else {\n for (var i = this.parent.groupSettings.columns.length; i < value.length - 1; i++) {\n value[i] = value[i + 1];\n value[i + 1] = value[i + 2] ? value[i + 2] : '';\n }\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 && leastCaptionSummaryIndex !== -1 && leastCaptionSummaryIndex !== 1) {\n captionRow.cells.getCell(i).columnSpan = (leastCaptionSummaryIndex - 1) - groupIndex;\n }\n else if (i === groupIndex && leastCaptionSummaryIndex === -1) {\n captionRow.cells.getCell(i).columnSpan = pdfGrid.columns.count - groupIndex;\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 ? gObj.groupSettings.columns.length - 1 : 0;\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 args.value.height = args.image.height || args.value.height;\n args.value.width = args.image.width || args.value.width;\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","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].tagName === 'DIV') && childNodes[0].textContent === '')))) {\n var node = this.parent.contentModule.getEditPanel();\n if (this.parent.enterKey === 'DIV') {\n node.innerHTML = '

    ';\n }\n else if (this.parent.enterKey === 'BR') {\n node.innerHTML = '
    ';\n }\n else {\n node.innerHTML = '


    ';\n }\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;\n if (serializeValue === null || serializeValue === '') {\n if (this.parent.enterKey === 'DIV') {\n value = '

    ';\n }\n else if (this.parent.enterKey === 'BR') {\n value = '
    ';\n }\n else {\n value = '


    ';\n }\n }\n else {\n value = serializeValue;\n }\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().innerHTML === '

    ') ||\n (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) ||\n (this.contentModule.getEditPanel().childNodes[0].tagName === 'DIV' &&\n this.contentModule.getEditPanel().innerHTML.length === 11)) ? '' : 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 } 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';\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 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 __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", 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 __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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', 'list-style-type', '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 { isNullOrUndefined as isNOU, detach, Browser } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `EnterKey` module is used to handle enter key press actions.\n */\nvar EnterKeyAction = /** @class */ (function () {\n function EnterKeyAction(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n EnterKeyAction.prototype.addEventListener = function () {\n this.parent.on(events.enterHandler, this.enterHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n EnterKeyAction.prototype.destroy = function () {\n this.removeEventListener();\n };\n EnterKeyAction.prototype.removeEventListener = function () {\n this.parent.off(events.enterHandler, this.enterHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n EnterKeyAction.prototype.getRangeNode = function () {\n this.range = this.parent.getRange();\n this.startNode = this.range.startContainer.nodeName === '#text' ? this.range.startContainer.parentElement :\n this.range.startContainer;\n this.endNode = this.range.endContainer.nodeName === '#text' ? this.range.endContainer.parentElement :\n this.range.endContainer;\n };\n EnterKeyAction.prototype.enterHandler = function (e) {\n var _this = this;\n this.getRangeNode();\n var isTableEnter = true;\n if (!isNOU(this.startNode.closest('TABLE')) && !isNOU(this.endNode.closest('TABLE'))) {\n isTableEnter = false;\n var curElement = this.startNode;\n var blockElement = curElement;\n while (!this.parent.formatter.editorManager.domNode.isBlockNode(curElement)) {\n blockElement = curElement;\n curElement = curElement.parentElement;\n }\n isTableEnter = blockElement.tagName === 'TD' ? false : true;\n }\n if (e.args.which === 13 && e.args.code === 'Enter') {\n if (isNOU(this.startNode.closest('LI')) && isNOU(this.endNode.closest('LI')) && isTableEnter &&\n isNOU(this.startNode.closest('PRE')) && isNOU(this.endNode.closest('PRE'))) {\n var shiftKey_1 = e.args.shiftKey;\n var actionBeginArgs = {\n cancel: false,\n name: events.actionBegin,\n requestType: shiftKey_1 ? 'ShiftEnterAction' : 'EnterAction',\n originalEvent: e.args\n };\n this.parent.trigger(events.actionBegin, actionBeginArgs, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n if (!(_this.range.startOffset === _this.range.endOffset && _this.range.startContainer === _this.range.endContainer)) {\n _this.range.deleteContents();\n if (_this.range.startContainer.nodeName === '#text' && _this.range.startContainer.textContent.length === 0 &&\n _this.range.startContainer.parentElement !== _this.parent.inputElement) {\n if (_this.parent.enterKey === 'BR') {\n _this.range.startContainer.parentElement.innerHTML = '​';\n }\n else {\n _this.range.startContainer.parentElement.innerHTML = '
    ';\n }\n }\n else if (_this.range.startContainer === _this.parent.inputElement && _this.range.startContainer.innerHTML === '') {\n _this.range.startContainer.innerHTML = '
    ';\n var focusElem = _this.range.startContainer.childNodes[_this.range.startOffset];\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, 0);\n }\n else if (_this.parent.inputElement === _this.range.startContainer) {\n var focusElem = _this.range.startContainer.childNodes[_this.range.startOffset];\n if (focusElem.nodeName === '#text' && focusElem.textContent.length === 0) {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, focusElem.previousSibling.textContent.length);\n }\n else {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, focusElem.textContent.length >= 0 ? 0 : 1);\n if (focusElem.previousSibling.textContent.length === 0) {\n detach(focusElem.previousSibling);\n }\n else if (focusElem.textContent.length === 0) {\n var currentFocusElem = focusElem.previousSibling.lastChild;\n while (currentFocusElem.nodeName !== '#text') {\n currentFocusElem = currentFocusElem.lastChild;\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem, currentFocusElem.textContent.length);\n detach(focusElem);\n }\n else if (_this.parent.enterKey !== 'BR' &&\n focusElem.previousSibling.textContent.length !== 0 && focusElem.textContent.length !== 0) {\n e.args.preventDefault();\n return;\n }\n }\n _this.getRangeNode();\n }\n }\n if (_this.range.startContainer === _this.range.endContainer &&\n _this.range.startOffset === _this.range.endOffset && _this.range.startContainer === _this.parent.inputElement) {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.range.startContainer.childNodes[_this.range.startOffset], 0);\n _this.getRangeNode();\n }\n if ((_this.parent.enterKey === 'P' && !shiftKey_1) || (_this.parent.enterKey === 'DIV' && !shiftKey_1) ||\n (_this.parent.shiftEnterKey === 'P' && shiftKey_1) ||\n (_this.parent.shiftEnterKey === 'DIV' && shiftKey_1)) {\n var nearBlockNode = void 0;\n if (isTableEnter && _this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode)) {\n nearBlockNode = _this.startNode;\n }\n else {\n nearBlockNode = _this.parent.formatter.editorManager.domNode.blockParentNode(_this.startNode);\n }\n var isImageNode = false;\n var isFocusedFirst = false;\n if (_this.range.startOffset != 0 && _this.range.endOffset != 0 && _this.range.startContainer === _this.range.endContainer &&\n !(!isNOU(nearBlockNode.childNodes[0]) && nearBlockNode.childNodes[0].nodeName === 'IMG')) {\n var startNodeText = _this.range.startContainer.textContent;\n var splitFirstText = startNodeText.substring(0, _this.range.startOffset);\n if (splitFirstText.charCodeAt(_this.range.startOffset - 1) != 160 && splitFirstText.trim().length === 0) {\n isFocusedFirst = true;\n }\n }\n else if (_this.range.startOffset === 0 && _this.range.endOffset === 0) {\n isFocusedFirst = true;\n }\n _this.removeBRElement(nearBlockNode);\n if (((_this.range.startOffset === 0 && _this.range.endOffset === 0) || isFocusedFirst) &&\n !(!isNOU(_this.range.startContainer.previousSibling) &&\n (_this.range.startContainer.previousSibling.nodeName === 'IMG' || _this.range.startContainer.previousSibling.nodeName === 'BR'))) {\n var isNearBlockLengthZero = void 0;\n var newElem = void 0;\n if (_this.range.startContainer.nodeName === 'IMG') {\n newElem = _this.createInsertElement(shiftKey_1);\n isImageNode = true;\n isNearBlockLengthZero = false;\n }\n else {\n if (nearBlockNode.textContent.trim().length !== 0) {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, false).cloneNode(true);\n isNearBlockLengthZero = false;\n }\n else {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true).cloneNode(true);\n isNearBlockLengthZero = true;\n }\n }\n var insertElem = _this.createInsertElement(shiftKey_1);\n while (newElem.firstChild) {\n insertElem.appendChild(newElem.firstChild);\n }\n nearBlockNode.parentElement.insertBefore(insertElem, nearBlockNode);\n if (!isNearBlockLengthZero) {\n var currentFocusElem = insertElem;\n var finalFocusElem = void 0;\n while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text') {\n finalFocusElem = currentFocusElem;\n currentFocusElem = currentFocusElem.lastChild;\n }\n finalFocusElem.innerHTML = '
    ';\n if (!isImageNode) {\n detach(nearBlockNode);\n }\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), insertElem.nextElementSibling, 0);\n }\n else if (nearBlockNode.textContent.length === 0 && !(!isNOU(nearBlockNode.childNodes[0]) && nearBlockNode.childNodes[0].nodeName === 'IMG')) {\n if (!isNOU(nearBlockNode.children[0]) && nearBlockNode.children[0].tagName !== 'BR') {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, false).cloneNode(true);\n _this.parent.formatter.editorManager.domNode.insertAfter(newElem, nearBlockNode);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, newElem.textContent.length >= 0 ? 0 : 1);\n }\n else {\n var insertElem = _this.createInsertElement(shiftKey_1);\n insertElem.innerHTML = '
    ';\n _this.parent.formatter.editorManager.domNode.insertAfter(insertElem, nearBlockNode);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), insertElem, 0);\n }\n }\n else {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);\n if (!isNOU(newElem.childNodes[0]) && newElem.childNodes[0].nodeName === '#text' &&\n newElem.childNodes[0].textContent.length === 0) {\n detach(newElem.childNodes[0]);\n }\n if (newElem.textContent.trim().length === 0) {\n var brElm = _this.parent.createElement('br');\n if (_this.startNode.nodeName === 'A') {\n var startParentElem = _this.startNode.parentElement;\n _this.startNode.parentElement.insertBefore(brElm, _this.startNode);\n detach(_this.startNode);\n _this.startNode = startParentElem;\n }\n else {\n _this.startNode.appendChild(brElm);\n }\n if (newElem.childNodes[0].textContent === '\\n') {\n detach(newElem.childNodes[0]);\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.startNode, 0);\n }\n if (((_this.parent.enterKey === 'P' || _this.parent.enterKey === 'DIV') && !shiftKey_1) || ((_this.parent.shiftEnterKey === 'DIV' ||\n _this.parent.shiftEnterKey === 'P') && shiftKey_1)) {\n var insertElm = _this.createInsertElement(shiftKey_1);\n while (newElem.firstChild) {\n insertElm.appendChild(newElem.firstChild);\n }\n _this.parent.formatter.editorManager.domNode.insertAfter(insertElm, newElem);\n detach(newElem);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode) ?\n insertElm : _this.startNode, 0);\n }\n }\n e.args.preventDefault();\n }\n if ((_this.parent.enterKey === 'BR' && !shiftKey_1) || (_this.parent.shiftEnterKey === 'BR' && shiftKey_1)) {\n var currentParent = void 0;\n if (!_this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode)) {\n var currentNode = _this.startNode;\n var previousNode = currentNode;\n while (!_this.parent.formatter.editorManager.domNode.isBlockNode(currentNode)) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n currentParent = currentNode === _this.parent.inputElement ?\n previousNode : currentNode;\n }\n else {\n currentParent = _this.startNode;\n }\n _this.removeBRElement(currentParent);\n var isEmptyBrInserted = false;\n var currentParentLastChild = currentParent.lastChild;\n while (!isNOU(currentParentLastChild) && !(currentParentLastChild.nodeName === '#text' || currentParentLastChild.nodeName === 'BR')) {\n currentParentLastChild = currentParentLastChild.lastChild;\n }\n var isLastNodeLength = _this.range.startContainer === currentParentLastChild ?\n _this.range.startContainer.textContent.length : currentParent.textContent.length;\n if (currentParent !== _this.parent.inputElement &&\n _this.parent.formatter.editorManager.domNode.isBlockNode(currentParent) &&\n _this.range.startOffset === _this.range.endOffset &&\n _this.range.startOffset === isLastNodeLength) {\n var focusBRElem = _this.parent.createElement('br');\n if (currentParentLastChild.nodeName === 'BR' && currentParent.textContent.length === 0) {\n _this.parent.formatter.editorManager.domNode.insertAfter(focusBRElem, currentParentLastChild);\n }\n else {\n var lineBreakBRElem = _this.parent.createElement('br');\n _this.parent.formatter.editorManager.domNode.insertAfter(focusBRElem, _this.range.startContainer);\n _this.parent.formatter.editorManager.domNode.insertAfter(lineBreakBRElem, _this.range.startContainer);\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusBRElem, 0);\n }\n else if (!isNOU(currentParent) && currentParent !== _this.parent.inputElement && currentParent.nodeName !== 'BR') {\n if (currentParent.textContent.trim().length === 0 || (currentParent.textContent.trim().length === 1 &&\n currentParent.textContent.charCodeAt(0) === 8203)) {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, currentParent, true).cloneNode(true);\n _this.parent.formatter.editorManager.domNode.insertAfter(newElem, currentParent);\n var outerBRElem = _this.parent.createElement('br');\n newElem.parentElement.insertBefore(outerBRElem, newElem);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, 0);\n }\n else {\n var newElem = void 0;\n var outerBRElem = _this.parent.createElement('br');\n if (_this.range.startOffset === 0 && _this.range.endOffset === 0 &&\n !isNOU(currentParent.previousSibling) && currentParent.previousSibling.nodeName === 'BR') {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, currentParent, false).cloneNode(true);\n _this.parent.formatter.editorManager.domNode.insertAfter(outerBRElem, currentParent);\n _this.insertFocusContent();\n var currentFocusElem = outerBRElem.nextSibling;\n while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text') {\n currentFocusElem = currentFocusElem.lastChild;\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem, 0);\n isEmptyBrInserted = true;\n }\n else {\n _this.insertBRElement();\n }\n }\n }\n else {\n _this.insertBRElement();\n }\n e.args.preventDefault();\n }\n _this.parent.trigger(events.actionComplete, { requestType: shiftKey_1 ? 'ShiftEnterAction' : 'EnterAction', args: e.args });\n }\n });\n }\n }\n };\n EnterKeyAction.prototype.removeBRElement = function (currentElement) {\n if (Browser.userAgent.indexOf('Firefox') != -1 &&\n this.range.endOffset === currentElement.textContent.length &&\n currentElement.lastChild.nodeName === 'BR') {\n detach(currentElement.lastChild);\n }\n };\n EnterKeyAction.prototype.insertBRElement = function () {\n var isEmptyBrInserted = false;\n var brElm = this.parent.createElement('br');\n if (this.startNode.nodeName === 'BR' && this.endNode.nodeName === 'BR' && this.range.startOffset === 0 && this.range.startOffset === this.range.endOffset) {\n this.parent.formatter.editorManager.domNode.insertAfter(brElm, this.startNode);\n isEmptyBrInserted = true;\n }\n else {\n if (this.startNode === this.parent.inputElement && !isNOU(this.range.startContainer.previousSibling) &&\n this.range.startContainer.previousSibling.nodeName === 'BR' && this.range.startContainer.textContent.length === 0) {\n isEmptyBrInserted = true;\n }\n this.range.insertNode(brElm);\n }\n if (isEmptyBrInserted || (!isNOU(brElm.nextElementSibling) && brElm.nextElementSibling.tagName === 'BR') || (!isNOU(brElm.nextSibling) && brElm.nextSibling.textContent.length > 0)) {\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), !isNOU(brElm.nextSibling) ? brElm.nextSibling : brElm, 0);\n isEmptyBrInserted = false;\n }\n else {\n var brElm2 = this.parent.createElement('br');\n this.range.insertNode(brElm2);\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), brElm, 0);\n }\n };\n EnterKeyAction.prototype.insertFocusContent = function () {\n if (this.range.startContainer.textContent.length === 0) {\n if (this.range.startContainer.nodeName === '#text') {\n this.range.startContainer.parentElement.innerHTML = '​';\n }\n else {\n this.range.startContainer.innerHTML = '​';\n }\n }\n };\n EnterKeyAction.prototype.createInsertElement = function (shiftKey) {\n var insertElem;\n if ((this.parent.enterKey === 'DIV' && !shiftKey) || (this.parent.shiftEnterKey === 'DIV' && shiftKey)) {\n insertElem = this.parent.createElement('div');\n }\n else if ((this.parent.enterKey === 'P' && !shiftKey) || (this.parent.shiftEnterKey === 'P' && shiftKey)) {\n insertElem = this.parent.createElement('p');\n }\n return insertElem;\n };\n return EnterKeyAction;\n}());\nexport { EnterKeyAction };\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 } 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 { EnterKeyAction } from '../actions/enter-key';\nimport * as CONSTANT from '../../common/constant';\nimport { dispatchEvent, getEditValue, isIDevice, decode, isEditableValueEmpty, getDefaultValue } 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 this.element.innerHTML = '';\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 this.element.innerHTML = '';\n this.element.parentElement.insertBefore(rteOuterWrapper, this.element);\n this.valueContainer = this.element;\n removeClass([this.valueContainer], this.element.getAttribute('class').split(' '));\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 this.valueContainer.defaultValue = this.value;\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 RichTextEditor.prototype.cleanList = function (e) {\n var range = this.getRange();\n var currentStartContainer = range.startContainer;\n var currentEndContainer = range.endContainer;\n var currentStartOffset = range.startOffset;\n var isSameContainer = currentStartContainer === currentEndContainer ? true : false;\n var currentEndOffset;\n var endNode = range.endContainer.nodeName === '#text' ? range.endContainer.parentElement :\n range.endContainer;\n var closestLI = closest(endNode, 'LI');\n if (!isNOU(closestLI) && endNode.textContent.length === range.endOffset &&\n !range.collapsed) {\n closestLI.textContent = closestLI.textContent.trim();\n currentEndOffset = closestLI.textContent.length - 1;\n var currentLastElem = closestLI;\n while (currentLastElem.nodeName !== '#text') {\n currentLastElem = currentLastElem.lastChild;\n }\n this.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), isSameContainer ? currentLastElem : currentStartContainer, currentLastElem, currentStartOffset, currentLastElem.textContent.length);\n }\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') {\n this.cleanList(e);\n }\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(getDefaultValue(this), 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 if (!(e.key === 'Enter' && e.keyCode === 13) && (this.inputElement.innerHTML === '


    ' || this.inputElement.innerHTML === '

    ' ||\n this.inputElement.innerHTML === '
    ')) {\n this.setPlaceHolder();\n }\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 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 this.valueContainer.value = this.originalElement.innerHTML.trim();\n this.setProperties({ value: (!isNOU(this.initialValue) ? this.initialValue : null) }, true);\n }\n else {\n this.valueContainer.value = this.valueContainer.defaultValue;\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 return this.contentModule.getPanel();\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 'enterKey':\n case 'value': {\n var nVal = void 0;\n if (prop === 'enterKey') {\n if (this.value === null || this.value === '

    ' || this.value === '


    ' ||\n this.value === '
    ') {\n nVal = null;\n }\n else {\n nVal = this.value;\n }\n }\n else {\n nVal = newProp[prop];\n }\n var val = this.editorMode === 'HTML' ? getEditValue(nVal, this) : nVal;\n if ((!isNOU(nVal) && nVal !== '') || prop === 'enterKey') {\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 && !this.inlineMode.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 if (this.enterKey === 'DIV') {\n this.inputElement.innerHTML = '

    ';\n }\n else if (this.enterKey === 'BR') {\n this.inputElement.innerHTML = '
    ';\n }\n else {\n this.inputElement.innerHTML = '


    ';\n if (value === '' && this.formatter && this.inputElement) {\n this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), this.inputElement.firstElementChild, this.inputElement.firstElementChild.childElementCount);\n }\n }\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 && !isNOU(this.inputElement.firstChild) && (this.inputElement.firstChild.nodeName === 'BR' ||\n ((this.inputElement.firstChild.nodeName === 'P' || this.inputElement.firstChild.nodeName === 'DIV') && !isNOU(this.inputElement.firstChild.firstChild) &&\n this.inputElement.firstChild.firstChild.nodeName === 'BR'))) {\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.enterKeyModule = new EnterKeyAction(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.setValue = function () {\n if (this.valueTemplate) {\n if (typeof this.valueTemplate === 'string') {\n this.setProperties({ value: this.valueTemplate });\n }\n else {\n var compiledTemplate = compile(this.valueTemplate)(\"\", this, 'valueTemplate');\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 === '


    ' || this.inputElement.innerHTML === '

    ' ||\n 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 === '


    ' || this.inputElement.innerHTML === '

    ' ||\n 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 (Browser.info.name !== 'msie' && 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 : 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('P')\n ], RichTextEditor.prototype, \"enterKey\", void 0);\n __decorate([\n Property('BR')\n ], RichTextEditor.prototype, \"shiftEnterKey\", 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})();\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, createElement } 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.removeToastContainer = function (isClosed) {\n if (isClosed && this.toastContainer.classList.contains('e-toast-util')) {\n detach(this.toastContainer);\n }\n };\n Toast.prototype.clearContainerPos = function (isClosed) {\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.removeToastContainer(isClosed);\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.removeToastContainer(isClosed);\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(true);\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.classList.add('e-toast-header-close-icon');\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.classList.add('e-toast-header-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/**\n * Base for creating Toast through utility method.\n */\n// eslint-disable-next-line\nexport var ToastUtility;\n(function (ToastUtility) {\n /**\n * To display a simple toast using the 'ToastUtility' with 'ToastModal' or\n * as string with toast content, type, timeOut.\n * ```\n * Eg : ToastUtility.show('Toast Content Message', 'Information', 7000);\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param { ToastModel | string } content - Specifies the toast modal or the content of the Toast.\n * @param {string} type - Specifies the type of toast.\n * @param { number } timeOut - Specifies the timeOut of the toast.\n * @returns {Toast} - returns the element\n */\n function show(content, type, timeOut) {\n var toastContainerElement;\n if (document.querySelector('.' + CONTAINER)) {\n toastContainerElement = document.querySelector('.' + CONTAINER);\n }\n else {\n toastContainerElement = createElement('div', { 'className': ROOT + ' ' + CONTAINER + ' e-toast-util' });\n document.body.appendChild(toastContainerElement);\n }\n var toastObj;\n var untilToastsModel;\n if (typeof (content) === 'string') {\n var cssClass = void 0;\n var icon = void 0;\n if (!isNOU(type)) {\n switch (type) {\n case 'Warning':\n cssClass = 'e-toast-warning';\n icon = 'e-toast-warning-icon';\n break;\n case 'Success':\n cssClass = 'e-toast-success';\n icon = 'e-toast-success-icon';\n break;\n case 'Error':\n cssClass = 'e-toast-danger';\n icon = 'e-toast-error-icon';\n break;\n case 'Information':\n cssClass = 'e-toast-info';\n icon = 'e-toast-info-icon';\n break;\n }\n }\n else {\n cssClass = '';\n icon = '';\n }\n untilToastsModel = {\n content: content,\n cssClass: cssClass,\n icon: icon,\n timeOut: !isNOU(timeOut) ? timeOut : 5000\n };\n }\n else {\n untilToastsModel = content;\n }\n toastObj = new Toast(untilToastsModel);\n toastObj.appendTo(toastContainerElement);\n toastObj.show();\n return toastObj;\n }\n ToastUtility.show = show;\n})(ToastUtility || (ToastUtility = {}));\n","import { createElement, isNullOrUndefined, Browser, isBlazor } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\n/**\n * TextLayer module is used to handle the text content on the control.\n *\n * @hidden\n */\nvar TextLayer = /** @class */ (function () {\n /**\n * @param {PdfViewer} pdfViewer - The PdfViewer.\n * @param {PdfViewerBase} pdfViewerBase - The PdfViewerBase.\n * @private\n */\n function TextLayer(pdfViewer, pdfViewerBase) {\n var _this = this;\n // eslint-disable-next-line\n this.textBoundsArray = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.characterBound = [];\n /**\n * @returns {void}\n */\n this.closeNotification = function () {\n _this.notifyDialog.hide();\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param {number} pageNumber - The pageNumber.\n * @param {number} pageWidth - The pageWidth.\n * @param {number} pageHeight - The pageHeight.\n * @param {HTMLElement} pageDiv - The pageDiv.\n * @returns {HTMLElement} - The HTMLElement.\n * @private\n */\n TextLayer.prototype.addTextLayer = function (pageNumber, pageWidth, pageHeight, pageDiv) {\n var textDiv = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageNumber);\n var textLayer;\n if (!textDiv) {\n textLayer = createElement('div', { id: this.pdfViewer.element.id + '_textLayer_' + pageNumber, className: 'e-pv-text-layer' });\n textLayer.style.width = pageWidth + 'px';\n textLayer.style.height = pageHeight + 'px';\n if (pageDiv) {\n pageDiv.appendChild(textLayer);\n }\n }\n this.pdfViewerBase.applyElementStyles(textLayer, pageNumber);\n return textLayer;\n };\n /**\n * @param {number} pageNumber - The pageNumber.\n * @param {any} textContents - The textContents.\n * @param {any} textBounds - The textBounds.\n * @param {any} rotation - The rotation.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n TextLayer.prototype.renderTextContents = function (pageNumber, textContents, textBounds, rotation) {\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageNumber);\n var canvasElement = createElement(\"canvas\");\n if (canvasElement && textLayer && textLayer.childNodes.length === 0) {\n for (var i = 0; i < textContents.length; i++) {\n // eslint-disable-next-line\n var bounds = textBounds[i];\n // eslint-disable-next-line max-len\n var textDiv = createElement('div', { id: this.pdfViewer.element.id + '_text_' + pageNumber + '_' + i, className: 'e-pv-text', attrs: { 'tabindex': '0' } });\n var textContent = textContents[i];\n textDiv.textContent = textContent.replace(/ /g, ' ');\n // eslint-disable-next-line\n var newLine = textContents[i].replace(/ +/g, ' ');\n if (newLine !== ' ') {\n textDiv.style.whiteSpace = 'pre';\n }\n if (bounds) {\n this.setStyleToTextDiv(textDiv, bounds.X, bounds.Y, bounds.Bottom, bounds.Width, bounds.Height);\n }\n this.setTextElementProperties(textDiv);\n var context = canvasElement.getContext('2d');\n context.font = textDiv.style.fontSize + ' ' + textDiv.style.fontFamily;\n var contextWidth = context.measureText(textContents[i].replace(/(\\r\\n|\\n|\\r)/gm, '')).width;\n if (bounds) {\n var scale = bounds.Width * this.pdfViewerBase.getZoomFactor() / contextWidth;\n this.applyTextRotation(scale, textDiv, rotation, bounds.Rotation);\n }\n textLayer.appendChild(textDiv);\n this.resizeExcessDiv(textLayer, textDiv);\n // eslint-disable-next-line max-len\n if (this.pdfViewer.textSelectionModule && this.pdfViewer.enableTextSelection && !this.pdfViewerBase.isTextSelectionDisabled && textDiv.className !== 'e-pdfviewer-formFields'\n && textDiv.className !== 'e-pdfviewer-signatureformfields' && textDiv.className !== 'e-pdfviewer-signatureformfields-signature') {\n textDiv.classList.add('e-pv-cursor');\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param textContents\n * @param textBounds\n * @param rotation\n * @param isTextSearch\n * @param pageNumber\n * @param textContents\n * @param textBounds\n * @param rotation\n * @param isTextSearch\n * @private\n */\n // eslint-disable-next-line\n TextLayer.prototype.resizeTextContents = function (pageNumber, textContents, textBounds, rotation, isTextSearch) {\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageNumber);\n var canvasElement = createElement(\"canvas\");\n if (canvasElement) {\n for (var i = 0; i < textLayer.childNodes.length; i++) {\n // eslint-disable-next-line\n var bounds = void 0;\n var textDiv = this.pdfViewerBase.getElement('_text_' + pageNumber + '_' + i);\n if (isNullOrUndefined(textDiv)) {\n break;\n }\n if (textBounds) {\n bounds = textBounds[i];\n if (bounds) {\n this.setStyleToTextDiv(textDiv, bounds.X, bounds.Y, bounds.Bottom, bounds.Width, bounds.Height);\n }\n }\n this.setTextElementProperties(textDiv);\n var context = canvasElement.getContext('2d');\n context.font = textDiv.style.fontSize + ' ' + textDiv.style.fontFamily;\n var contextWidth = void 0;\n if (textContents) {\n var textContent = textContents[i];\n if (textContent) {\n contextWidth = context.measureText(textContent.replace(/(\\r\\n|\\n|\\r)/gm, '')).width;\n }\n }\n else {\n contextWidth = context.measureText(textDiv.textContent.replace(/(\\r\\n|\\n|\\r)/gm, '')).width;\n }\n if (bounds) {\n var scale = bounds.Width * this.pdfViewerBase.getZoomFactor() / contextWidth;\n this.applyTextRotation(scale, textDiv, rotation, bounds.Rotation);\n }\n this.resizeExcessDiv(textLayer, textDiv);\n }\n }\n else {\n textLayer.parentElement.removeChild(textLayer);\n }\n if (this.pdfViewer.textSearch) {\n if (!isTextSearch) {\n this.pdfViewer.textSearch.resizeSearchElements(pageNumber);\n }\n }\n };\n TextLayer.prototype.applyTextRotation = function (scale, textDiv, rotation, textRotation) {\n var scaleString = 'scaleX(' + scale + ')';\n if (rotation === 0) {\n if (textRotation >= 0 && textRotation <= 90) {\n textDiv.style.transform = scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n }\n else if (rotation === 1) {\n if (textRotation === 0) {\n textDiv.style.transform = 'rotate(90deg) ' + scaleString;\n }\n else if (textRotation === -90) {\n textDiv.style.transform = scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n }\n else if (rotation === 2) {\n if (textRotation === 0) {\n textDiv.style.transform = 'rotate(180deg) ' + scaleString;\n }\n else if (textRotation === 180) {\n textDiv.style.transform = scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n }\n else if (rotation === 3) {\n if (textRotation === 0) {\n textDiv.style.transform = 'rotate(-90deg) ' + scaleString;\n }\n else if (textRotation === 90) {\n textDiv.style.transform = scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n }\n };\n TextLayer.prototype.setTextElementProperties = function (textDiv) {\n textDiv.style.fontFamily = 'serif';\n textDiv.style.transformOrigin = '0%';\n };\n /**\n * @param {number} pageNumber - The pageNumber.\n * @returns {void}\n * @private\n */\n TextLayer.prototype.resizeTextContentsOnZoom = function (pageNumber) {\n // eslint-disable-next-line max-len\n var renderObject = window.sessionStorage.getItem(this.pdfViewerBase.getDocumentId() + '_' + pageNumber + '_' + this.getPreviousZoomFactor());\n // eslint-disable-next-line\n var textBounds = [];\n var textContents = [];\n // eslint-disable-next-line\n var rotation;\n if (renderObject) {\n // eslint-disable-next-line\n var data = JSON.parse(renderObject);\n // eslint-disable-next-line\n textBounds = data['textBounds'];\n // eslint-disable-next-line\n textContents = data['textContent'];\n // eslint-disable-next-line\n rotation = data['rotation'];\n }\n if (textBounds.length !== 0) {\n this.textBoundsArray.push({ pageNumber: pageNumber, textBounds: textBounds });\n this.resizeTextContents(pageNumber, textContents, textBounds, rotation);\n }\n else {\n // eslint-disable-next-line\n var textElements = this.textBoundsArray.filter(function (obj) {\n return obj.pageNumber === pageNumber;\n });\n if (textElements) {\n if (textElements.length !== 0) {\n // eslint-disable-next-line\n textBounds = textElements[0]['textBounds'];\n this.resizeTextContents(pageNumber, null, textBounds, rotation);\n }\n }\n }\n };\n TextLayer.prototype.resizeExcessDiv = function (textLayer, textDiv) {\n var textLayerPosition = textLayer.getBoundingClientRect();\n var textDivPosition = textDiv.getBoundingClientRect();\n // eslint-disable-next-line max-len\n if ((textDivPosition.width + textDivPosition.left) >= (textLayerPosition.width + textLayerPosition.left) || (textDivPosition.width > textLayerPosition.width)) {\n // 'auto' width is set to reset the size of the div to its contents.\n textDiv.style.width = 'auto';\n // Client width gets reset by 'auto' width property which has the width of the content.\n textDiv.style.width = textDiv.clientWidth + 'px';\n }\n };\n /**\n * @private\n * @param {boolean} isPinchZoomed - The isPinchZoomed.\n * @returns {void}\n */\n TextLayer.prototype.clearTextLayers = function (isPinchZoomed) {\n var lowerPageValue = this.pdfViewerBase.currentPageNumber - 3;\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n var higherPageValue = this.pdfViewerBase.currentPageNumber + 1;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n var textLayers = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_textLayer_\"]');\n for (var i = 0; i < textLayers.length; i++) {\n textLayers[i].style.display = 'block';\n if (this.pdfViewerBase.getMagnified() && (this.getTextSelectionStatus() || this.getTextSearchStatus())) {\n // eslint-disable-next-line radix\n var pageNumber = parseInt(textLayers[i].id.split('_textLayer_')[1]);\n if (!(((lowerPageValue + 1) <= pageNumber) && (pageNumber <= (higherPageValue - 1)))) {\n this.removeElement(textLayers[i], isPinchZoomed);\n }\n }\n else if (this.pdfViewerBase.getPinchZoomed()) {\n this.removeElement(textLayers[i], isPinchZoomed);\n }\n else {\n this.removeElement(textLayers[i], isPinchZoomed);\n }\n }\n };\n TextLayer.prototype.removeElement = function (element, isPinchZoomed) {\n if (isPinchZoomed) {\n this.removeForeignObjects(element);\n }\n else {\n if (Browser.isIE) {\n if (element.parentElement) {\n element.parentElement.removeChild(element);\n }\n else if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n else {\n element.remove();\n }\n }\n };\n TextLayer.prototype.removeForeignObjects = function (element) {\n // eslint-disable-next-line\n var childElement = element.getElementsByClassName('foreign-object');\n if (childElement) {\n for (var i = 0; i < childElement.length; i++) {\n if (childElement[i].parentElement.className === 'e-pv-text-layer') {\n element.removeChild(childElement[0]);\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param divId\n * @param fromOffset\n * @param toOffset\n * @param textString\n * @param className\n * @private\n */\n // eslint-disable-next-line max-len\n TextLayer.prototype.convertToSpan = function (pageNumber, divId, fromOffset, toOffset, textString, className) {\n var textDiv = this.pdfViewerBase.getElement('_text_' + pageNumber + '_' + divId);\n var textContent = textString.substring(fromOffset, toOffset);\n var node = document.createTextNode(textContent);\n if (className) {\n var spanElement = createElement('span');\n spanElement.className = className + ' e-pv-text';\n spanElement.appendChild(node);\n textDiv.appendChild(spanElement);\n }\n else {\n textDiv.appendChild(node);\n }\n };\n /**\n * @param startPage\n * @param endPage\n * @param anchorOffsetDiv\n * @param focusOffsetDiv\n * @param anchorOffset\n * @param focusOffset\n * @private\n */\n // eslint-disable-next-line max-len\n TextLayer.prototype.applySpanForSelection = function (startPage, endPage, anchorOffsetDiv, focusOffsetDiv, anchorOffset, focusOffset) {\n if (this.pdfViewer.textSelectionModule) {\n for (var i = startPage; i <= endPage; i++) {\n var startId = void 0;\n var endId = void 0;\n // eslint-disable-next-line\n var textDivs = this.pdfViewerBase.getElement('_textLayer_' + i).childNodes;\n if (i === startPage) {\n startId = anchorOffsetDiv;\n endId = textDivs.length - 1;\n }\n else if (i === endPage) {\n startId = 0;\n endId = focusOffsetDiv;\n }\n else {\n startId = 0;\n endId = textDivs.length - 1;\n }\n if (startPage === endPage) {\n startId = anchorOffsetDiv;\n endId = focusOffsetDiv;\n }\n for (var j = startId; j <= endId; j++) {\n var textDiv = this.pdfViewerBase.getElement('_text_' + i + '_' + j);\n var initId = void 0;\n var lastId = void 0;\n var length_1 = void 0;\n if (textDiv && textDiv.textContent) {\n length_1 = textDiv.textContent.length;\n var textContent = textDiv.textContent;\n textDiv.textContent = '';\n if (j === startId) {\n if (i === startPage) {\n initId = anchorOffset;\n }\n else {\n initId = 0;\n }\n lastId = length_1;\n this.convertToSpan(i, j, 0, initId, textContent, null);\n }\n else if (j === endId && i === endPage) {\n initId = 0;\n lastId = focusOffset;\n }\n else {\n initId = 0;\n lastId = length_1;\n }\n if (startId === endId && startPage === endPage) {\n initId = anchorOffset;\n lastId = focusOffset;\n }\n this.convertToSpan(i, j, initId, lastId, textContent, 'e-pv-maintaincontent');\n if (j === endId && i === endPage) {\n this.convertToSpan(i, j, lastId, textContent.length, textContent, null);\n }\n }\n }\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n TextLayer.prototype.clearDivSelection = function () {\n var textLayers = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_textLayer_\"]');\n for (var i = 0; i < textLayers.length; i++) {\n var childNodes = textLayers[i].childNodes;\n for (var j = 0; j < childNodes.length; j++) {\n var textDiv = childNodes[j];\n // eslint-disable-next-line max-len\n if (textDiv.className !== 'e-pdfviewer-formFields' && textDiv.className !== 'e-pdfviewer-signatureformfields' && textDiv.className !== 'e-pdfviewer-signatureformfields-signature') {\n var textContent = textDiv.textContent;\n // eslint-disable-next-line max-len\n if (textDiv.childNodes.length > 1 || textDiv.childNodes.length === 1 && (textDiv.childNodes[0].tagName === 'SPAN')) {\n textDiv.textContent = '';\n textDiv.textContent = textContent;\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextLayer.prototype.setStyleToTextDiv = function (textDiv, left, top, bottom, width, height) {\n textDiv.style.left = left * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.top = top * this.pdfViewerBase.getZoomFactor() + 'px';\n var textHeight = height * this.pdfViewerBase.getZoomFactor();\n textDiv.style.height = textHeight + 'px';\n textDiv.style.fontSize = height * this.pdfViewerBase.getZoomFactor() + 'px';\n };\n TextLayer.prototype.getTextSelectionStatus = function () {\n if (this.pdfViewer.textSelectionModule) {\n return this.pdfViewer.textSelectionModule.isTextSelection;\n }\n else {\n return false;\n }\n };\n /**\n * @param {boolean} isAdd - The isAdd.\n * @returns {void}\n * @private\n */\n TextLayer.prototype.modifyTextCursor = function (isAdd) {\n var textLayerList = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_textLayer_\"]');\n for (var i = 0; i < textLayerList.length; i++) {\n var childNodes = textLayerList[i].childNodes;\n for (var j = 0; j < childNodes.length; j++) {\n var textElement = childNodes[j];\n // eslint-disable-next-line max-len\n if (isAdd && textElement.className !== 'e-pdfviewer-formFields' && textElement.className !== 'e-pdfviewer-signatureformfields' && textElement.className !== 'e-pdfviewer-signatureformfields-signature') {\n textElement.classList.add('e-pv-cursor');\n }\n else {\n textElement.classList.remove('e-pv-cursor');\n }\n }\n }\n };\n /**\n * @param {Selection} selection - The Selection.\n * @returns {boolean} - Returns true or false.\n * @private\n */\n TextLayer.prototype.isBackWardSelection = function (selection) {\n var position = selection.anchorNode.compareDocumentPosition(selection.focusNode);\n var backward = false;\n if (!position && selection.anchorOffset > selection.focusOffset || position === Node.DOCUMENT_POSITION_PRECEDING) {\n backward = true;\n }\n return backward;\n };\n /**\n * @param {Node} element - The element.\n * @returns {number} - Returns number.\n * @private\n */\n TextLayer.prototype.getPageIndex = function (element) {\n var pageId;\n // eslint-disable-next-line\n var parentElement = element.parentElement;\n if (!parentElement) {\n parentElement = element.parentNode;\n }\n if (parentElement.className === 'e-pv-text-layer') {\n // eslint-disable-next-line radix\n pageId = parseInt(element.id.split('_text_')[1]);\n }\n else {\n // eslint-disable-next-line radix\n pageId = parseInt(parentElement.id.split('_text_')[1]);\n }\n return pageId;\n };\n /**\n * @param {Node} element - The element.\n * @param {number} pageIndex - The pageIndex.\n * @returns {number} - Returns number.\n * @private\n */\n TextLayer.prototype.getTextIndex = function (element, pageIndex) {\n var textIndex;\n // eslint-disable-next-line\n var parentElement = element.parentElement;\n if (!parentElement) {\n parentElement = element.parentNode;\n }\n if (parentElement.className === 'e-pv-text-layer') {\n // eslint-disable-next-line radix\n textIndex = parseInt(element.id.split('_text_' + pageIndex + '_')[1]);\n }\n else {\n // eslint-disable-next-line radix\n textIndex = parseInt(parentElement.id.split('_text_' + pageIndex + '_')[1]);\n }\n return textIndex;\n };\n TextLayer.prototype.getPreviousZoomFactor = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.previousZoomFactor;\n }\n else {\n return 1;\n }\n };\n /**\n * @private\n * @returns {boolean} - Returns true or false.\n */\n TextLayer.prototype.getTextSearchStatus = function () {\n if (this.pdfViewer.textSearchModule) {\n return this.pdfViewer.textSearchModule.isTextSearch;\n }\n else {\n return false;\n }\n };\n /**\n * @param {string} text - The text.\n * @returns {void}\n * @private\n */\n TextLayer.prototype.createNotificationPopup = function (text) {\n var _this = this;\n if (!this.isMessageBoxOpen) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n var popupElement_1 = createElement('div', { id: this.pdfViewer.element.id + '_notify', className: 'e-pv-notification-popup' });\n this.pdfViewerBase.viewerContainer.appendChild(popupElement_1);\n this.notifyDialog = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true, header: this.pdfViewer.localeObj.getConstant('PdfViewer'),\n buttons: [{\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true },\n click: this.closeNotification.bind(this)\n }],\n // eslint-disable-next-line max-len\n content: '
    ' + text + '
    ', target: this.pdfViewer.element,\n beforeClose: function () {\n _this.notifyDialog.destroy();\n if (_this.pdfViewer.element) {\n try {\n _this.pdfViewer.element.removeChild(popupElement_1);\n }\n catch (error) {\n popupElement_1.parentElement.removeChild(popupElement_1);\n }\n }\n if (_this.pdfViewer.textSearchModule) {\n _this.pdfViewer.textSearch.isMessagePopupOpened = false;\n }\n _this.isMessageBoxOpen = false;\n }\n });\n if (this.pdfViewer.enableRtl) {\n this.notifyDialog.enableRtl = true;\n }\n this.notifyDialog.appendTo(popupElement_1);\n this.isMessageBoxOpen = true;\n }\n else {\n // eslint-disable-next-line\n var notificationElement = document.getElementById(this.pdfViewer.element.id + '_notification_popup_content');\n if (notificationElement) {\n notificationElement.textContent = text;\n notificationElement.innerHTML = text;\n }\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearch.isMessagePopupOpened = false;\n }\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenNotificationPopup', text);\n }\n }\n };\n return TextLayer;\n}());\nexport { TextLayer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, isNullOrUndefined } 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_';\nvar CLS_REORDER_ACTIVE_ITEM = 'e-reorder-active-item';\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.isInteracted = false;\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActiveTabBorder.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 _super.prototype.refresh.call(this);\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 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('.e-tab-header .' + 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 var itemIndex;\n if (_this.isReplace && !isNOU(_this.tbId) && _this.tbId !== '') {\n var num = (_this.tbId.indexOf('_'));\n itemIndex = parseInt(_this.tbId.substring(num + 1), 10);\n _this.tbId = '';\n }\n else {\n itemIndex = index + i;\n }\n var addIndex = _this.isAdd ? tbCount + i : _this.lastIndex + 1;\n _this.lastIndex = ((tbCount === 0) ? i : ((_this.isReplace) ? (itemIndex) : (addIndex)));\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.refreshActiveTabBorder();\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 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 var 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 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.selectTab(trgIndex, null, true);\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 cnt = isNOU(cnt) ? \"\" : cnt;\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.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 if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE);\n }\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 (isNOU(trg)) {\n return;\n }\n if (!this.reorderActiveTab) {\n if (trg.classList.contains(CLS_TB_POPUP) && !this.bdrLine.classList.contains(CLS_HIDDEN)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n if (trgHdrEle && !trgHdrEle.classList.contains(CLS_REORDER_ACTIVE_ITEM)) {\n trgHdrEle.classList.add(CLS_REORDER_ACTIVE_ITEM);\n }\n }\n else if (trgHdrEle) {\n trgHdrEle.classList.remove(CLS_REORDER_ACTIVE_ITEM);\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) && !trg.classList.contains(CLS_TB_POPUP)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind, isInteracted) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\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 {\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 isInteracted: isInteracted\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 (!isNOU(trgParent) && (trgIndex !== this.selectedItem || trgIndex !== this.prevIndex)) {\n this.selectTab(trgIndex, args.originalEvent, true);\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.selectTab(k, null, true);\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.selectTab(i, null, true);\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 /**\n * Refresh the active tab border\n *\n * @returns {void}\n * @private\n */\n Tab.prototype.refreshActiveTabBorder = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle) && this.reorderActiveTab) {\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 properties = Object.keys(newProp.items[index]);\n for (var j = 0; j < properties.length; j++) {\n var oldVal = Object(oldProp.items[index])[properties[j]];\n var newVal = Object(newProp.items[index])[properties[j]];\n var hdr = this.element.querySelectorAll('.' + CLS_TB_ITEM)[index];\n var itemIndex = void 0;\n if (hdr && !isNOU(hdr.id) && hdr.id !== '') {\n var num = (hdr.id.lastIndexOf('_'));\n itemIndex = parseInt(hdr.id.substring(num + 1), 10);\n }\n else {\n itemIndex = index;\n }\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + itemIndex, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + itemIndex, this.element);\n if (properties[j] === 'header' || properties[j] === '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 this.tbId = hdr.id;\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 (properties[j] === '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) {\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (properties[j] === '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 (properties[j] === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (properties[j] === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\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 dropItem = closest(e.target, '.' + 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.selectTab(_this.droppedIndex, null, true);\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('.e-tab-header .' + 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.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n };\n Tab.prototype.selectTab = function (args, event, isInteracted) {\n if (event === void 0) { event = null; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.isInteracted = isInteracted;\n this.select(args, event);\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 isInteracted: this.isInteracted,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args, _this.isInteracted);\n }\n });\n }\n else {\n this.selectingContent(args, this.isInteracted);\n }\n this.isInteracted = false;\n };\n Tab.prototype.selectingContent = function (args, isInteracted) {\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) && this.reorderActiveTab) {\n this.setActive(this.popupHandler(this.tbItem[args]), null, isInteracted);\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, null, isInteracted);\n }\n }\n else {\n this.setActive(0, null, isInteracted);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args), null, isInteracted);\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 this.setContentHeight(false);\n break;\n case 'cssClass':\n if (oldProp.cssClass !== '' && !isNullOrUndefined(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 this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'reorderActiveTab':\n this.refreshActiveTabBorder();\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\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.refreshActiveTabBorder();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\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(true)\n ], Tab.prototype, \"reorderActiveTab\", 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","import { createElement, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { splitArrayCollection, processPathData, getPathString } from '@syncfusion/ej2-drawings';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { cloneObject } from '../drawing/drawing-util';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { Tab } from '@syncfusion/ej2-navigations';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { DisplayMode } from './types';\n/**\n * @hidden\n */\nvar Signature = /** @class */ (function () {\n /**\n * Initialize the constructor of blazorUIadapater.\n * @private\n * @param { PdfViewer } pdfViewer - Specified PdfViewer class.\n * @param { PdfViewerBase } pdfViewerBase - The pdfViewerBase.\n */\n function Signature(pdfViewer, pdfViewerBase) {\n var _this = this;\n // eslint-disable-next-line\n this.newObject = [];\n /**\n * @private\n */\n this.outputString = '';\n /**\n * @private\n */\n this.drawOutputString = '';\n /**\n * @private\n */\n this.imageOutputString = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.signaturecollection = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.outputcollection = [];\n // eslint-disable-next-line\n this.fontsign = [];\n // eslint-disable-next-line\n this.signfontStyle = [];\n this.isSaveSignature = false;\n this.isInitialFiledSaveSignature = false;\n this.isSignatureFieldsSaveSignature = false;\n // eslint-disable-next-line\n this.saveSignatureString = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.saveImageString = '';\n this.signatureImageString = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.maxSaveLimit = 5;\n // eslint-disable-next-line\n this.addStampImage = function (args) {\n // eslint-disable-next-line\n var proxy = _this;\n // eslint-disable-next-line\n var upoadedFiles = args.target.files;\n if (args.target.files[0] !== null) {\n var uploadedFile = upoadedFiles[0];\n if (uploadedFile.type.split('/')[0] === 'image') {\n var reader = new FileReader();\n // eslint-disable-next-line\n reader.onload = function (e) {\n // eslint-disable-next-line\n var canvas = document.getElementById(_this.pdfViewer.element.id + '_signatureuploadCanvas_');\n // eslint-disable-next-line\n var context = canvas.getContext('2d');\n // eslint-disable-next-line\n var image = new Image();\n // eslint-disable-next-line\n var proxy = _this;\n image.onload = function () {\n // eslint-disable-next-line\n var signbutton = document.getElementById(_this.pdfViewer.element.id + '_e-pv-upload-button');\n signbutton.style.visibility = 'hidden';\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\n proxy.enableCreateButton(false);\n proxy.outputString = image.src;\n };\n image.src = e.currentTarget.result;\n proxy.outputString = e.currentTarget.result;\n };\n reader.readAsDataURL(uploadedFile);\n }\n }\n args.target.value = '';\n args.currentTarget.value = '';\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.createSignaturePanel = function () {\n var _this = this;\n var maximumWidth = 750;\n if (!isBlazor()) {\n var elementID = this.pdfViewer.element.id;\n var dialogDiv = createElement('div', { id: elementID + '_signature_window', className: 'e-pv-signature-window' });\n dialogDiv.style.display = 'block';\n this.pdfViewerBase.pageContainer.appendChild(dialogDiv);\n var appearanceTab = this.createSignatureCanvas();\n var signaturePanelHeader = void 0;\n if (!this.pdfViewerBase.isToolbarSignClicked) {\n if (this.pdfViewerBase.isInitialField) {\n signaturePanelHeader = this.pdfViewer.localeObj.getConstant('HandwrittenInitialDialogHeaderText');\n }\n else {\n signaturePanelHeader = this.pdfViewer.localeObj.getConstant('HandwrittenSignatureDialogHeaderText');\n }\n }\n else {\n if (this.pdfViewerBase.isInitialField) {\n signaturePanelHeader = this.pdfViewer.localeObj.getConstant('InitialFieldDialogHeaderText');\n }\n else {\n signaturePanelHeader = this.pdfViewer.localeObj.getConstant('SignatureFieldDialogHeaderText');\n }\n }\n if (this.signatureDialog) {\n this.signatureDialog.content = appearanceTab;\n }\n else {\n this.signatureDialog = new Dialog({\n // eslint-disable-next-line max-len\n showCloseIcon: true, closeOnEscape: false, isModal: true, header: signaturePanelHeader, cssClass: 'e-pv-signature-dialog-height',\n target: this.pdfViewer.element, content: appearanceTab, width: '750px', visible: true, allowDragging: true,\n beforeClose: function () {\n _this.clearSignatureCanvas();\n _this.signatureDialog.destroy();\n _this.signatureDialog = null;\n if (_this.tabObj) {\n _this.tabObj.destroy();\n }\n // eslint-disable-next-line\n var signatureWindow = document.getElementById(_this.pdfViewer.element.id + '_signature_window');\n if (signatureWindow) {\n // eslint-disable-next-line\n signatureWindow.parentNode ? signatureWindow.parentNode.removeChild(signatureWindow) : signatureWindow.parentElement.removeChild(signatureWindow);\n }\n // eslint-disable-next-line max-len\n if (!_this.pdfViewerBase.isToolbarSignClicked && !_this.pdfViewerBase.drawSignatureWithTool && !isNullOrUndefined(_this.pdfViewer.formFieldsModule.currentTarget)) {\n _this.pdfViewer.fireFocusOutFormField(_this.pdfViewer.formFieldsModule.currentTarget.name, '');\n }\n _this.pdfViewerBase.isToolbarSignClicked = false;\n _this.pdfViewer.formFieldsModule.setFocus();\n }\n });\n this.signatureDialog.buttons = [\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Clear'), disabled: true, cssClass: 'e-pv-clearbtn' }, click: this.clearSignatureCanvas.bind(this) },\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.closeSignaturePanel.bind(this) },\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Create'), isPrimary: true, disabled: true, cssClass: 'e-pv-createbtn' }, click: this.addSignatureInPage.bind(this) }\n ];\n this.signatureDialog.appendTo(dialogDiv);\n }\n if (this.pdfViewer.element.offsetWidth < maximumWidth)\n this.updateCanvasSize();\n if (this.pdfViewer.enableRtl) {\n this.signatureDialog.enableRtl = this.pdfViewer.enableRtl;\n }\n var checkboxItem = this.signatureDialog.content.ej2_instances[0].items[0];\n if (checkboxItem.header.label === 'DRAW') {\n var drawCheckbox = document.getElementById(\"checkbox\");\n this.hideSignatureCheckbox(drawCheckbox);\n }\n else if (checkboxItem.header.label === 'TYPE') {\n var typeCheckbox = document.getElementById(\"checkbox1\");\n this.hideSignatureCheckbox(typeCheckbox);\n }\n else {\n var imageCheckbox = document.getElementById(\"checkbox2\");\n this.hideSignatureCheckbox(imageCheckbox);\n }\n }\n else {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n if (canvas) {\n if (!this.pdfViewerBase.pageContainer.querySelector('.e-pv-signature-window')) {\n var elementID = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n var dialogDiv = createElement('div', { id: elementID + '_signature_window', className: 'e-pv-signature-window' });\n dialogDiv.style.display = 'block';\n this.pdfViewerBase.pageContainer.appendChild(dialogDiv);\n }\n canvas.addEventListener('mousedown', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('mousemove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('mouseup', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('mouseleave', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('touchstart', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('touchmove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('touchend', this.signaturePanelMouseUp.bind(this));\n this.clearSignatureCanvas();\n }\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenSignaturePanel', this.pdfViewerBase.isToolbarSignClicked);\n }\n this.drawSavedSignature();\n };\n Signature.prototype.drawSavedSignature = function () {\n if (!this.pdfViewerBase.isToolbarSignClicked && this.isSaveSignature) {\n this.outputString = this.saveSignatureString;\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n // eslint-disable-next-line\n var context_1 = canvas.getContext('2d');\n // eslint-disable-next-line\n var image_1 = new Image();\n image_1.onload = function () {\n context_1.drawImage(image_1, 0, 0);\n };\n image_1.src = this.signatureImageString;\n // eslint-disable-next-line\n var checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n if (checkbox) {\n checkbox.checked = true;\n }\n this.enableCreateButton(false);\n this.enableClearbutton(false);\n }\n };\n Signature.prototype.hideSignatureCheckbox = function (checkbox) {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n if (this.pdfViewerBase.isInitialField) {\n if (this.pdfViewer.handWrittenSignatureSettings.initialDialogSettings.hideSaveSignature) {\n this.hideCheckboxParent(checkbox);\n }\n }\n else if (this.pdfViewer.handWrittenSignatureSettings.signatureDialogSettings.hideSaveSignature) {\n this.hideCheckboxParent(checkbox);\n }\n }\n else {\n if (this.pdfViewerBase.isInitialField) {\n if (this.pdfViewer.initialFieldSettings.initialDialogSettings.hideSaveSignature) {\n this.hideCheckboxParent(checkbox);\n }\n }\n else {\n if (this.pdfViewer.signatureFieldSettings.signatureDialogSettings.hideSaveSignature) {\n this.hideCheckboxParent(checkbox);\n }\n }\n }\n };\n Signature.prototype.saveSignatureCheckbox = function () {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n return false;\n }\n else {\n if (this.pdfViewerBase.isInitialField) {\n if (this.pdfViewer.initialFieldSettings.initialDialogSettings.hideSaveSignature) {\n return false;\n }\n else {\n return this.isInitialFiledSaveSignature;\n }\n }\n else {\n if (this.pdfViewer.signatureFieldSettings.signatureDialogSettings.hideSaveSignature) {\n return false;\n }\n else {\n return this.isSignatureFieldsSaveSignature;\n }\n }\n }\n };\n Signature.prototype.hideCheckboxParent = function (checkbox) {\n if (checkbox) {\n checkbox.parentElement.style.display = 'none';\n }\n };\n Signature.prototype.saveSignatureImage = function () {\n // eslint-disable-next-line\n var checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n if (checkbox && checkbox.checked) {\n if (this.outputString !== '') {\n this.isSaveSignature = true;\n this.saveSignatureString = this.outputString;\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n this.signatureImageString = this.saveImageString;\n }\n }\n else {\n if (this.isSaveSignature) {\n this.isSaveSignature = false;\n this.saveSignatureString = '';\n this.saveImageString = '';\n this.signatureImageString = '';\n }\n this.clearSignatureCanvas();\n }\n };\n /**\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.addSignature = function (type) {\n var annot;\n if (this.pdfViewerBase.isToolbarSignClicked) {\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.isSignatureAdded = true;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n // eslint-disable-next-line max-len\n var thickness = this.pdfViewer.handWrittenSignatureSettings.thickness ? this.pdfViewer.handWrittenSignatureSettings.thickness : 1;\n // eslint-disable-next-line max-len\n var opacity = this.pdfViewer.handWrittenSignatureSettings.opacity ? this.pdfViewer.handWrittenSignatureSettings.opacity : 1;\n // eslint-disable-next-line max-len\n var strokeColor = this.pdfViewer.handWrittenSignatureSettings.strokeColor ? this.pdfViewer.handWrittenSignatureSettings.strokeColor : '#000000';\n // eslint-disable-next-line\n var signatureBounds = this.pdfViewer.formFieldsModule.updateSignatureAspectRatio(this.outputString, true);\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n this.signatureImageString = this.saveImageString;\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: signatureBounds, pageIndex: pageIndex, data: this.outputString,\n shapeAnnotationType: 'HandWrittenSignature', opacity: opacity, strokeColor: strokeColor, thickness: thickness, signatureName: annotationName\n };\n this.pdfViewerBase.currentSignatureAnnot = annot;\n // eslint-disable-next-line\n var checkbox = void 0;\n if (isBlazor()) {\n checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n }\n else {\n checkbox = document.getElementById('checkbox');\n }\n if (checkbox && checkbox.checked) {\n this.addSignatureCollection();\n }\n this.hideSignaturePanel();\n this.pdfViewerBase.isToolbarSignClicked = false;\n }\n else {\n // eslint-disable-next-line\n var checkbox = void 0;\n if (isBlazor()) {\n checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n }\n else {\n checkbox = document.getElementById('checkbox');\n }\n var isSignatureAdded = false;\n if (isBlazor() && type) {\n if (type[0] === 'Image') {\n this.imageAddSignature();\n isSignatureAdded = true;\n this.outputString = '';\n }\n else if (type[0] === 'Type') {\n this.typeAddSignature();\n isSignatureAdded = true;\n this.outputString = '';\n }\n }\n if (!isSignatureAdded) {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n if (checkbox && checkbox.checked) {\n this.isSaveSignature = true;\n this.saveSignatureString = this.outputString;\n this.checkSaveFiledSign(this.pdfViewerBase.isInitialField, true);\n }\n else {\n this.isSaveSignature = false;\n this.saveSignatureString = '';\n this.checkSaveFiledSign(this.pdfViewerBase.isInitialField, false);\n }\n this.signatureImageString = this.saveImageString;\n this.pdfViewer.formFieldsModule.drawSignature(null, null, this.pdfViewerBase.currentTarget, null);\n isSignatureAdded = true;\n }\n }\n };\n Signature.prototype.checkSaveFiledSign = function (initialField, saveSign) {\n if (initialField) {\n this.isInitialFiledSaveSignature = saveSign;\n }\n else {\n this.isSignatureFieldsSaveSignature = saveSign;\n }\n };\n Signature.prototype.addSignatureInPage = function () {\n if (this.signaturetype === 'Draw') {\n this.addSignature();\n }\n else if (this.signaturetype === 'Type') {\n this.typeAddSignature();\n }\n else {\n this.imageAddSignature();\n }\n this.drawOutputString = '';\n this.imageOutputString = '';\n };\n Signature.prototype.typeAddSignature = function () {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annot = null;\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.isSignatureAdded = true;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var currentLeft = 0;\n var currentTop = 0;\n var currentHeight = 65;\n var currentWidth = 200;\n currentLeft = ((parseFloat(pageDiv.style.width) / 2) - (currentWidth / 2)) / zoomvalue;\n currentTop = ((parseFloat(pageDiv.style.height) / 2) - (currentHeight / 2)) / zoomvalue;\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n if (!this.signtypevalue) {\n this.updateSignatureTypeValue(true);\n }\n var inputValue = this.signtypevalue;\n annot = {\n // eslint-disable-next-line max-len\n id: 'Typesign' + this.pdfViewerBase.signatureCount, bounds: {\n left: currentLeft / zoomFactor, top: currentTop / zoomFactor, x: currentLeft / zoomFactor,\n // eslint-disable-next-line max-len\n y: currentTop / zoomFactor, width: currentWidth, height: currentHeight\n }, pageIndex: pageIndex, dynamicText: inputValue, data: this.pdfViewerBase.signatureModule.outputString, shapeAnnotationType: 'SignatureText',\n fontFamily: this.fontName, signatureName: annotationName\n };\n this.pdfViewerBase.currentSignatureAnnot = annot;\n // eslint-disable-next-line\n var checkbox = void 0;\n if (isBlazor()) {\n checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n }\n else {\n checkbox = document.getElementById('checkbox1');\n }\n if (checkbox && checkbox.checked) {\n this.addSignatureCollection();\n }\n this.signtypevalue = '';\n this.hideSignaturePanel();\n this.pdfViewerBase.isToolbarSignClicked = false;\n }\n else {\n if (this.outputString === '') {\n this.updateSignatureTypeValue();\n }\n this.pdfViewer.formFieldsModule.drawSignature('Type', '', this.pdfViewerBase.currentTarget);\n this.hideSignaturePanel();\n }\n };\n Signature.prototype.imageAddSignature = function () {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annot = null;\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.isSignatureAdded = true;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var currentLeft = 0;\n var currentTop = 0;\n var currentHeight = 65; //15arseFloat(this.signHeight);\n var currentWidth = 200; //parseFloat(this.signWidth);\n currentLeft = ((parseFloat(pageDiv.style.width) / 2) - (currentWidth / 2)) / zoomvalue;\n currentTop = ((parseFloat(pageDiv.style.height) / 2) - (currentHeight / 2)) / zoomvalue;\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n var inputValue = this.signtypevalue;\n annot = {\n // eslint-disable-next-line max-len\n id: 'Typesign' + this.pdfViewerBase.signatureCount, bounds: {\n left: currentLeft / zoomFactor, top: currentTop / zoomFactor, x: currentLeft / zoomFactor,\n // eslint-disable-next-line max-len\n y: currentTop / zoomFactor, width: currentWidth, height: currentHeight\n }, pageIndex: pageIndex, dynamicText: inputValue, data: this.pdfViewerBase.signatureModule.outputString, shapeAnnotationType: 'SignatureImage',\n fontFamily: this.fontName, signatureName: annotationName\n };\n this.pdfViewerBase.currentSignatureAnnot = annot;\n // eslint-disable-next-line\n var checkbox = void 0;\n if (isBlazor()) {\n checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n }\n else {\n checkbox = document.getElementById('checkbox2');\n }\n if (checkbox && checkbox.checked) {\n this.addSignatureCollection();\n }\n this.hideSignaturePanel();\n this.pdfViewerBase.isToolbarSignClicked = false;\n }\n else {\n this.pdfViewer.formFieldsModule.drawSignature('Image', '', this.pdfViewerBase.currentTarget);\n this.hideSignaturePanel();\n }\n };\n Signature.prototype.updateSignatureTypeValue = function (isType) {\n // eslint-disable-next-line\n var fontElements = document.querySelectorAll('.e-pv-font-sign');\n if (fontElements) {\n for (var j = 0; j < fontElements.length; j++) {\n if (fontElements[j] && fontElements[j].style.borderColor === 'red') {\n if (isType) {\n this.signtypevalue = fontElements[j].textContent;\n this.outputString = fontElements[j].textContent;\n }\n else {\n this.outputString = fontElements[j].textContent;\n }\n try {\n this.fontName = JSON.parse(fontElements[j].style.fontFamily);\n }\n catch (e) {\n this.fontName = fontElements[j].style.fontFamily;\n }\n }\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.hideSignaturePanel = function () {\n if (this.signatureDialog) {\n this.signatureDialog.hide();\n }\n };\n Signature.prototype.bindTypeSignatureClickEvent = function () {\n if (isBlazor()) {\n for (var i = 0; i < 4; i++) {\n // eslint-disable-next-line\n var fontElement = document.querySelector('#' + this.pdfViewer.element.id + '_font_signature' + i);\n if (fontElement) {\n fontElement.addEventListener('click', this.typeSignatureclicked.bind(this));\n }\n }\n }\n };\n Signature.prototype.bindDrawSignatureClickEvent = function () {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n if (canvas) {\n canvas.addEventListener('mousedown', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('mousemove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('mouseup', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('mouseleave', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('touchstart', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('touchmove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('touchend', this.signaturePanelMouseUp.bind(this));\n }\n };\n // eslint-disable-next-line\n Signature.prototype.typeSignatureclicked = function (event) {\n var eventTarget = event.target;\n if (eventTarget) {\n for (var i = 0; i < 4; i++) {\n // eslint-disable-next-line\n var fontElement = document.querySelector('#' + this.pdfViewer.element.id + '_font_signature' + i);\n if (fontElement) {\n fontElement.style.borderColor = '';\n }\n }\n eventTarget.style.borderColor = 'red';\n this.outputString = eventTarget.textContent;\n try {\n this.fontName = JSON.parse(eventTarget.style.fontFamily);\n }\n catch (e) {\n this.fontName = eventTarget.style.fontFamily;\n }\n this.enableCreateButton(false);\n }\n };\n // eslint-disable-next-line\n Signature.prototype.createSignatureCanvas = function () {\n // eslint-disable-next-line\n var previousField = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n // eslint-disable-next-line\n var field = document.getElementById(this.pdfViewer.element.id + 'Signature_appearance');\n if (previousField) {\n previousField.remove();\n }\n if (field) {\n field.remove();\n }\n // eslint-disable-next-line max-len\n var appearanceDiv = createElement('div', { id: this.pdfViewer.element.id + 'Signature_appearance', className: 'e-pv-signature-apperance', styles: 'margin-top:30px' });\n // eslint-disable-next-line max-len\n var canvas = createElement('canvas', { id: this.pdfViewer.element.id + '_signatureCanvas_', className: 'e-pv-signature-canvas' });\n if (this.pdfViewer.element.offsetWidth > 750) {\n canvas.width = 714;\n }\n else {\n canvas.width = this.pdfViewer.element.offsetWidth - 35;\n }\n canvas.classList.add('e-pv-canvas-signature');\n canvas.height = 305;\n canvas.style.height = '305px';\n canvas.style.border = '1px dotted #bdbdbd';\n canvas.style.backgroundColor = 'white';\n canvas.style.boxSizing = 'border-box';\n canvas.style.borderRadius = '2px';\n canvas.addEventListener('mousedown', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('mousemove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('mouseup', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('mouseleave', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('touchstart', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('touchmove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('touchend', this.signaturePanelMouseUp.bind(this));\n appearanceDiv.appendChild(canvas);\n // eslint-disable-next-line\n var checkBoxObj;\n // eslint-disable-next-line\n var input;\n var saveCheckBoxContent;\n if (this.pdfViewerBase.isToolbarSignClicked && !this.pdfViewerBase.isInitialField) {\n saveCheckBoxContent = this.pdfViewer.localeObj.getConstant('Save Signature');\n }\n else {\n saveCheckBoxContent = this.pdfViewerBase.isInitialField ? this.pdfViewer.localeObj.getConstant('Save Initial') : this.pdfViewer.localeObj.getConstant('Save Signature');\n }\n if (!this.pdfViewer.hideSaveSignature) {\n // eslint-disable-next-line\n input = document.createElement('input');\n input.type = 'checkbox';\n input.id = 'checkbox';\n appearanceDiv.appendChild(input);\n checkBoxObj = new CheckBox({ label: saveCheckBoxContent, disabled: false, checked: false });\n checkBoxObj.appendTo(input);\n }\n this.isSaveSignature = this.saveSignatureCheckbox();\n if (this.isSaveSignature) {\n checkBoxObj.checked = true;\n }\n //if (!this.pdfViewerBase.isToolbarSignClicked) {\n // eslint-disable-next-line\n var typeDiv = createElement('div', { id: this.pdfViewer.element.id + 'type_appearance', className: 'e-pv-signature-apperance', styles: 'margin-top:6px' });\n // eslint-disable-next-line\n var inputText = document.createElement('input');\n inputText.type = 'text';\n inputText.id = this.pdfViewer.element.id + '_e-pv-Signtext-box';\n typeDiv.appendChild(inputText);\n // eslint-disable-next-line\n var inputobj = new TextBox({\n placeholder: this.pdfViewer.localeObj.getConstant('Enter Signature as Name'),\n floatLabelType: 'Auto'\n });\n inputobj.appendTo(inputText);\n // eslint-disable-next-line\n var fontDiv = createElement('div', { id: this.pdfViewer.element.id + '_font_appearance', className: 'e-pv-font-appearance-style' });\n fontDiv.classList.add('e-pv-canvas-signature');\n fontDiv.style.height = '270px';\n fontDiv.style.border = '1px dotted #bdbdbd';\n fontDiv.style.boxSizing = 'border-box';\n fontDiv.style.borderRadius = '2px';\n fontDiv.style.backgroundColor = 'white';\n fontDiv.style.color = 'black';\n fontDiv.style.marginTop = '8px';\n typeDiv.appendChild(fontDiv);\n input = document.createElement('input');\n input.type = 'checkbox';\n input.id = 'checkbox1';\n typeDiv.appendChild(input);\n checkBoxObj = new CheckBox({ label: saveCheckBoxContent, disabled: false, checked: false });\n checkBoxObj.appendTo(input);\n inputobj.addEventListener('input', this.renderSignatureText.bind(this));\n this.enableCreateButton(true);\n // eslint-disable-next-line\n var tab = createElement('div', { id: this.pdfViewer.element.id + 'Signature_tab' });\n var uploadDiv = createElement('div', { id: this.pdfViewer.element.id + 'upload_appearance', className: 'e-pv-signature-apperance', styles: 'padding-top:30px' });\n // eslint-disable-next-line\n var button = document.createElement('div');\n button.id = this.pdfViewer.element.id + '_e-pv-upload-button';\n uploadDiv.appendChild(button);\n // eslint-disable-next-line\n var uploadButton = new Button({ cssClass: 'e-pv-sign-upload', content: this.pdfViewer.localeObj.getConstant('Browse Signature Image') });\n uploadButton.appendTo(button);\n uploadButton.element.style.position = 'absolute';\n // eslint-disable-next-line max-len\n var uploadCanvas = createElement('canvas', { id: this.pdfViewer.element.id + '_signatureuploadCanvas_', className: 'e-pv-signature-uploadcanvas' });\n if (this.pdfViewer.element.offsetWidth > 750) {\n uploadCanvas.width = 714;\n }\n else {\n uploadCanvas.width = this.pdfViewer.element.offsetWidth - 35;\n }\n uploadCanvas.classList.add('e-pv-canvas-signature');\n uploadCanvas.height = 305;\n uploadCanvas.style.height = '305px';\n uploadButton.element.style.left = ((uploadCanvas.width / 2) - 50) + 'px';\n uploadButton.element.style.top = ((parseFloat(uploadCanvas.style.height) / 2) + 20) + 'px';\n uploadCanvas.style.border = '1px dotted #bdbdbd';\n uploadCanvas.style.backgroundColor = 'white';\n uploadCanvas.style.boxSizing = 'border-box';\n uploadCanvas.style.borderRadius = '2px';\n uploadCanvas.style.zIndex = '0';\n uploadDiv.appendChild(uploadCanvas);\n input = document.createElement('input');\n input.type = 'checkbox';\n input.id = 'checkbox2';\n uploadDiv.appendChild(input);\n checkBoxObj = new CheckBox({ label: saveCheckBoxContent, disabled: false, checked: false });\n checkBoxObj.appendTo(input);\n button.addEventListener('click', this.uploadSignatureImage.bind(this));\n // eslint-disable-next-line max-len\n this.signfontStyle = [{ FontName: 'Helvetica' }, { FontName: 'Times New Roman' }, { FontName: 'Courier' }, { FontName: 'Symbol' }];\n // eslint-disable-next-line\n var fontSignature = [];\n if (this.pdfViewerBase.isToolbarSignClicked && !isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.typeSignatureFonts)) {\n for (var j = 0; j < 4; j++) {\n if (!isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.typeSignatureFonts[j])) {\n this.signfontStyle[j].FontName = this.pdfViewer.handWrittenSignatureSettings.typeSignatureFonts[j];\n }\n }\n }\n for (var i = 0; i < this.signfontStyle.length; i++) {\n fontSignature[i] = document.createElement('div');\n fontSignature[i].id = '_font_signature' + i + '';\n fontSignature[i].classList.add('e-pv-font-sign');\n }\n this.fontsign = fontSignature;\n // eslint-disable-next-line\n var proxy = this;\n var items = [];\n if (this.pdfViewerBase.isToolbarSignClicked) {\n if (this.pdfViewerBase.isInitialField) {\n items = this.showHideSignatureTab(this.pdfViewer.handWrittenSignatureSettings.initialDialogSettings.displayMode, appearanceDiv, typeDiv, uploadDiv);\n }\n else {\n items = this.showHideSignatureTab(this.pdfViewer.handWrittenSignatureSettings.signatureDialogSettings.displayMode, appearanceDiv, typeDiv, uploadDiv);\n }\n }\n else {\n if (this.pdfViewerBase.isInitialField) {\n items = this.showHideSignatureTab(this.pdfViewer.initialFieldSettings.initialDialogSettings.displayMode, appearanceDiv, typeDiv, uploadDiv);\n }\n else {\n items = this.showHideSignatureTab(this.pdfViewer.signatureFieldSettings.signatureDialogSettings.displayMode, appearanceDiv, typeDiv, uploadDiv);\n }\n }\n // eslint-disable-next-line\n this.tabObj = new Tab({\n selected: function (args) {\n proxy.handleSelectEvent(args);\n },\n items: items\n });\n this.tabObj.appendTo(tab);\n if (tab && tab.lastElementChild) {\n tab.lastElementChild.style.overflow = 'hidden';\n }\n if (items[0].header.label === 'DRAW') {\n this.signaturetype = 'Draw';\n }\n else if (items[0].header.label === 'TYPE') {\n this.signaturetype = 'Type';\n }\n else {\n this.signaturetype = 'Image';\n }\n return tab;\n // } else {\n // return appearanceDiv;\n // }\n };\n Signature.prototype.handleSelectEvent = function (e) {\n // eslint-disable-next-line\n var headerText = '';\n var maximumWidth = 750;\n var tabInstance = document.getElementById(this.pdfViewer.element.id + 'Signature_tab').ej2_instances[0];\n if (tabInstance) {\n if (tabInstance.items.length > 0) {\n for (var i = 0; i < tabInstance.items.length; i++) {\n var headerValue = tabInstance.items[i].header.text;\n if (headerValue === e.selectedItem.textContent) {\n headerText = tabInstance.items[i].header.label;\n }\n }\n }\n }\n var checkbox = document.getElementById('checkbox');\n if (checkbox && checkbox.checked) {\n if (e.previousIndex === 0 && this.outputString !== '') {\n this.isSaveSignature = true;\n this.saveSignatureString = this.outputString;\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n this.signatureImageString = this.saveImageString;\n }\n }\n else {\n if (this.isSaveSignature) {\n this.isSaveSignature = false;\n this.saveSignatureString = '';\n this.saveImageString = '';\n this.signatureImageString = '';\n }\n }\n this.clearSignatureCanvas(e);\n // eslint-disable-next-line\n if (headerText.toLocaleLowerCase() === 'draw') {\n this.signaturetype = 'Draw';\n this.enableCreateSignatureButton();\n var drawCheckbox = document.getElementById(\"checkbox\");\n this.hideSignatureCheckbox(drawCheckbox);\n }\n else if (headerText.toLocaleLowerCase() === 'type') {\n this.updateSignatureTypeValue();\n this.signaturetype = 'Type';\n this.enableCreateSignatureButton();\n var typeCheckbox = document.getElementById(\"checkbox1\");\n this.hideSignatureCheckbox(typeCheckbox);\n }\n else if (headerText.toLocaleLowerCase() === 'upload') {\n this.signaturetype = 'Image';\n this.enableCreateSignatureButton();\n var imageCheckbox = document.getElementById(\"checkbox2\");\n this.hideSignatureCheckbox(imageCheckbox);\n }\n if (this.pdfViewer.element.offsetWidth < maximumWidth)\n this.updateCanvasSize();\n };\n Signature.prototype.enableCreateSignatureButton = function () {\n if (this.outputString !== \"\") {\n this.enableCreateButton(false);\n }\n else {\n this.enableCreateButton(true);\n }\n };\n Signature.prototype.showHideSignatureTab = function (displayMode, appearanceDiv, typeDiv, uploadDiv) {\n var items = [];\n if (displayMode & DisplayMode.Draw) {\n items.push({\n header: { 'text': this.pdfViewer.localeObj.getConstant('Draw-hand Signature'), 'label': 'DRAW' },\n content: appearanceDiv\n });\n }\n if (displayMode & DisplayMode.Text) {\n items.push({\n header: { 'text': this.pdfViewer.localeObj.getConstant('Type Signature'), 'label': 'TYPE' },\n content: typeDiv\n });\n }\n if (displayMode & DisplayMode.Upload) {\n items.push({\n header: { 'text': this.pdfViewer.localeObj.getConstant('Upload Signature'), 'label': 'UPLOAD' },\n content: uploadDiv\n });\n }\n return items;\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.createSignatureFileElement = function () {\n // eslint-disable-next-line\n var signImage = createElement('input', { id: this.pdfViewer.element.id + '_signElement', attrs: { 'type': 'file' } });\n signImage.setAttribute('accept', '.jpg,.jpeg,.png');\n signImage.style.position = 'absolute';\n signImage.style.left = '0px';\n signImage.style.top = '0px';\n signImage.style.visibility = 'hidden';\n document.body.appendChild(signImage);\n signImage.addEventListener('change', this.addStampImage);\n };\n Signature.prototype.uploadSignatureImage = function () {\n // eslint-disable-next-line\n var signImage = document.getElementById(this.pdfViewer.element.id + '_signElement');\n if (signImage) {\n signImage.click();\n }\n };\n Signature.prototype.renderSignatureText = function () {\n var maximumWidth = 750;\n // eslint-disable-next-line\n var fontDiv = document.getElementById(this.pdfViewer.element.id + '_font_appearance');\n // eslint-disable-next-line\n var textBox = document.getElementById(this.pdfViewer.element.id + '_e-pv-Signtext-box');\n for (var i = 0; i < this.signfontStyle.length; i++) {\n this.fontsign[i].innerHTML = textBox.value;\n this.fontsign[i].style.fontFamily = this.signfontStyle[i].FontName;\n if (this.signfontStyle[i].FontName === 'Helvetica') {\n this.fontsign[i].style.borderColor = 'red';\n }\n fontDiv.appendChild(this.fontsign[i]);\n }\n for (var i = 0; i < this.signfontStyle.length; i++) {\n // eslint-disable-next-line\n var clickSign = document.getElementById('_font_signature' + i + '');\n clickSign.addEventListener('click', this.typeSignatureclick.bind(this));\n }\n this.enableCreateButton(false);\n this.enableClearbutton(false);\n if (this.pdfViewer.element.offsetWidth < maximumWidth)\n this.updateCanvasSize();\n };\n Signature.prototype.typeSignatureclick = function () {\n var eventTarget = event.target;\n // eslint-disable-next-line\n var createButton = document.getElementsByClassName('e-pv-createbtn')[0];\n createButton.disabled = false;\n for (var i = 0; i < 4; i++) {\n // eslint-disable-next-line\n var fontElement = document.getElementById('_font_signature' + i + '');\n if (fontElement) {\n fontElement.style.borderColor = '';\n }\n }\n eventTarget.style.borderColor = 'red';\n this.outputString = eventTarget.textContent;\n try {\n this.fontName = JSON.parse(eventTarget.style.fontFamily);\n }\n catch (e) {\n this.fontName = eventTarget.style.fontFamily;\n }\n };\n /**\n * @param bounds\n * @param position\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.addSignatureCollection = function (bounds, position) {\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n // eslint-disable-next-line\n var collectionData = processPathData(this.outputString);\n // eslint-disable-next-line\n var newCanvas = document.createElement('canvas');\n // eslint-disable-next-line\n var context = newCanvas.getContext('2d');\n // eslint-disable-next-line\n var imageString;\n var signatureType = this.pdfViewerBase.currentSignatureAnnot.shapeAnnotationType;\n if (signatureType === 'HandWrittenSignature') {\n if (collectionData.length !== 0) {\n // eslint-disable-next-line\n for (var k = 0; k < collectionData.length; k++) {\n // eslint-disable-next-line\n var val = collectionData[k];\n if (minimumX === -1) {\n // eslint-disable-next-line\n minimumX = (val['x']);\n // eslint-disable-next-line\n maximumX = (val['x']);\n // eslint-disable-next-line\n minimumY = (val['y']);\n // eslint-disable-next-line\n maximumY = (val['y']);\n }\n else {\n // eslint-disable-next-line\n var point1 = (val['x']);\n // eslint-disable-next-line\n var point2 = (val['y']);\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n var newdifferenceX = maximumX - minimumX;\n var newdifferenceY = maximumY - minimumY;\n var differenceX = newdifferenceX / 100;\n var differenceY = newdifferenceY / 100;\n var left = 0;\n var top_1 = 0;\n if (bounds) {\n newCanvas.width = position.currentWidth;\n newCanvas.height = position.currentHeight;\n differenceX = newdifferenceX / (bounds.width);\n differenceY = newdifferenceY / (bounds.height);\n left = bounds.x - position.currentLeft;\n top_1 = bounds.y - position.currentTop;\n }\n else {\n newCanvas.width = 100;\n newCanvas.height = 100;\n }\n context.beginPath();\n for (var n = 0; n < collectionData.length; n++) {\n // eslint-disable-next-line\n var val = collectionData[n];\n // eslint-disable-next-line\n var point1 = ((val['x'] - minimumX) / differenceX) + left;\n // eslint-disable-next-line\n var point2 = ((val['y'] - minimumY) / differenceY) + top_1;\n // eslint-disable-next-line\n if (val['command'] === 'M') {\n context.moveTo(point1, point2);\n // eslint-disable-next-line\n }\n else if (val['command'] === 'L') {\n context.lineTo(point1, point2);\n }\n }\n context.stroke();\n context.closePath();\n imageString = newCanvas.toDataURL();\n }\n }\n else if (signatureType === 'SignatureText') {\n imageString = this.outputString;\n }\n else {\n imageString = this.outputString;\n }\n if (bounds) {\n this.saveImageString = imageString;\n }\n else {\n // eslint-disable-next-line\n var signCollection = {};\n signCollection['sign_' + this.pdfViewerBase.imageCount] = this.outputString;\n this.outputcollection.push(signCollection);\n // eslint-disable-next-line\n var signature = [];\n signature.push({ id: 'sign_' + this.pdfViewerBase.imageCount, imageData: imageString, signatureType: signatureType, fontFamily: this.pdfViewerBase.currentSignatureAnnot.fontFamily });\n this.signaturecollection.push({ image: signature, isInitial: this.pdfViewerBase.isInitialField });\n this.pdfViewerBase.imageCount++;\n }\n };\n /**\n * @private]\n * @param {number} limit - The limit.\n * @returns {number} - Returns number.\n */\n Signature.prototype.getSaveLimit = function (limit) {\n if (limit > this.maxSaveLimit) {\n limit = this.maxSaveLimit;\n }\n else if (limit < 1) {\n limit = 1;\n }\n return limit;\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.RenderSavedSignature = function () {\n this.pdfViewerBase.signatureCount++;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n var annot;\n if (this.pdfViewerBase.isAddedSignClicked) {\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.isSignatureAdded = true;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var currentLeft = 0;\n var currentTop = 0;\n // eslint-disable-next-line max-len\n var currentWidth = this.pdfViewer.handWrittenSignatureSettings.width ? this.pdfViewer.handWrittenSignatureSettings.width : 100;\n // eslint-disable-next-line max-len\n var currentHeight = this.pdfViewer.handWrittenSignatureSettings.height ? this.pdfViewer.handWrittenSignatureSettings.height : 100;\n // eslint-disable-next-line max-len\n var thickness = this.pdfViewer.handWrittenSignatureSettings.thickness ? this.pdfViewer.handWrittenSignatureSettings.thickness : 1;\n // eslint-disable-next-line max-len\n var opacity = this.pdfViewer.handWrittenSignatureSettings.opacity ? this.pdfViewer.handWrittenSignatureSettings.opacity : 1;\n // eslint-disable-next-line max-len\n var strokeColor = this.pdfViewer.handWrittenSignatureSettings.strokeColor ? this.pdfViewer.handWrittenSignatureSettings.strokeColor : '#000000';\n currentLeft = ((parseFloat(pageDiv.style.width) / 2) - (currentWidth / 2)) / zoomvalue;\n // eslint-disable-next-line max-len\n currentTop = ((parseFloat(pageDiv.style.height) / 2) - (currentHeight / 2)) / zoomvalue;\n var keyString = '';\n var signatureType = void 0;\n var signatureFontFamily = void 0;\n for (var collection = 0; collection < this.outputcollection.length; collection++) {\n // eslint-disable-next-line\n var collectionAddedsign = this.outputcollection[collection];\n // eslint-disable-next-line\n var eventTarget = event.target;\n // eslint-disable-next-line max-len\n if (eventTarget && eventTarget.id === 'sign_' + collection || eventTarget && eventTarget.id === 'sign_border' + collection) {\n keyString = collectionAddedsign['sign_' + collection];\n break;\n }\n }\n for (var signatureIndex = 0; signatureIndex < this.signaturecollection.length; signatureIndex++) {\n var eventTarget = event.target;\n var signatureId = this.signaturecollection[signatureIndex].image[0].id.split('_')[1];\n if (eventTarget && eventTarget.id === 'sign_' + signatureId || eventTarget && eventTarget.id === 'sign_border' + signatureId) {\n signatureType = this.signaturecollection[signatureIndex].image[0].signatureType;\n signatureFontFamily = this.signaturecollection[signatureIndex].image[0].fontFamily;\n break;\n }\n }\n if (signatureType === 'HandWrittenSignature') {\n // eslint-disable-next-line\n var signatureBounds = this.pdfViewer.formFieldsModule.updateSignatureAspectRatio(keyString, true);\n // eslint-disable-next-line max-len\n currentWidth = signatureBounds.width ? signatureBounds.width : currentWidth;\n // eslint-disable-next-line max-len\n currentHeight = signatureBounds.height ? signatureBounds.height : currentHeight;\n }\n else {\n currentWidth = currentWidth === 150 ? 200 : this.pdfViewer.handWrittenSignatureSettings.width;\n // eslint-disable-next-line max-len\n currentHeight = currentHeight === 100 ? 65 : this.pdfViewer.handWrittenSignatureSettings.height;\n }\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: keyString,\n // eslint-disable-next-line max-len\n shapeAnnotationType: signatureType, opacity: opacity, fontFamily: signatureFontFamily, strokeColor: strokeColor, thickness: thickness, signatureName: annotationName\n };\n this.pdfViewerBase.currentSignatureAnnot = annot;\n this.pdfViewerBase.isAddedSignClicked = false;\n }\n else {\n this.pdfViewer.formFieldsModule.drawSignature();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.updateCanvasSize = function () {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.setTabItemWidth(canvas);\n var uploadCanvas = document.getElementById(this.pdfViewer.element.id + '_signatureuploadCanvas_');\n this.setTabItemWidth(uploadCanvas);\n var fontAppearance = document.getElementById(this.pdfViewer.element.id + '_font_appearance');\n this.setTabItemWidth(fontAppearance);\n };\n Signature.prototype.setTabItemWidth = function (canvas) {\n var padding = 2;\n var maximumWidth = 750;\n var canvasWidth = 714;\n var margin = 50;\n var elem = document.querySelector('.e-dlg-content');\n if (elem) {\n var style = getComputedStyle(elem);\n padding = padding + parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n }\n if (canvas && this.signatureDialog && this.signatureDialog.visible) {\n if (this.pdfViewer.element.offsetWidth > maximumWidth) {\n canvas.width = canvasWidth;\n canvas.style.width = canvasWidth + 'px';\n }\n else {\n canvas.width = this.pdfViewer.element.offsetWidth - padding;\n canvas.style.width = canvas.width + 'px';\n }\n }\n var fontInnerDiv = document.getElementsByClassName('e-pv-font-sign');\n if (canvas && fontInnerDiv && fontInnerDiv.length > 0) {\n for (var i = 0; i < fontInnerDiv.length; i++) {\n var fontDiv = fontInnerDiv[i];\n fontDiv.style.width = ((canvas.width / 2) - margin) + 'px';\n }\n }\n };\n Signature.prototype.signaturePanelMouseDown = function (e) {\n if (e.type !== 'contextmenu') {\n e.preventDefault();\n this.findMousePosition(e);\n this.mouseDetection = true;\n this.oldX = this.mouseX;\n this.oldY = this.mouseY;\n this.newObject = [];\n this.drawMousePosition(e);\n }\n };\n Signature.prototype.enableCreateButton = function (isEnable) {\n // eslint-disable-next-line\n var createbtn = document.getElementsByClassName('e-pv-createbtn')[0];\n if (createbtn) {\n createbtn.disabled = isEnable;\n }\n this.enableClearbutton(isEnable);\n };\n Signature.prototype.enableClearbutton = function (isEnable) {\n // eslint-disable-next-line\n var clearbtn = document.getElementsByClassName('e-pv-clearbtn')[0];\n if (clearbtn) {\n clearbtn.disabled = isEnable;\n }\n };\n Signature.prototype.signaturePanelMouseMove = function (e) {\n if (this.mouseDetection) {\n this.findMousePosition(e);\n this.enableCreateButton(false);\n this.drawMousePosition(e);\n }\n };\n Signature.prototype.findMousePosition = function (event) {\n var offsetX;\n var offsetY;\n if (event.type.indexOf('touch') !== -1) {\n event = event;\n var element = event.target;\n // eslint-disable-next-line\n var currentRect = element.getBoundingClientRect();\n this.mouseX = event.touches[0].pageX - currentRect.left;\n this.mouseY = event.touches[0].pageY - currentRect.top;\n }\n else {\n event = event;\n this.mouseX = event.offsetX;\n this.mouseY = event.offsetY;\n }\n };\n Signature.prototype.drawMousePosition = function (event) {\n if (this.mouseDetection) {\n this.drawSignatureInCanvas();\n this.oldX = this.mouseX;\n this.oldY = this.mouseY;\n }\n };\n Signature.prototype.drawSignatureInCanvas = function () {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n // eslint-disable-next-line\n var context = canvas.getContext('2d');\n context.beginPath();\n context.moveTo(this.oldX, this.oldY);\n context.lineTo(this.mouseX, this.mouseY);\n context.stroke();\n context.lineWidth = 2;\n context.arc(this.oldX, this.oldY, 2 / 2, 0, Math.PI * 2, true);\n context.closePath();\n this.newObject.push(this.mouseX, this.mouseY);\n };\n Signature.prototype.signaturePanelMouseUp = function () {\n if (this.mouseDetection) {\n this.convertToPath(this.newObject);\n }\n this.mouseDetection = false;\n };\n // eslint-disable-next-line\n Signature.prototype.convertToPath = function (newObject) {\n this.movePath(newObject[0], newObject[1]);\n this.linePath(newObject[0], newObject[1]);\n for (var n = 2; n < newObject.length; n = n + 2) {\n this.linePath(newObject[n], newObject[n + 1]);\n }\n };\n Signature.prototype.linePath = function (x, y) {\n this.outputString += 'L' + x + ',' + y + ' ';\n };\n Signature.prototype.movePath = function (x, y) {\n this.outputString += 'M' + x + ',' + y + ' ';\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.clearSignatureCanvas = function (type) {\n var isCanvasClear = true;\n var drawObject = [];\n if (type && !isNullOrUndefined(type.previousIndex) && !isNullOrUndefined(type.selectedIndex)) {\n isCanvasClear = false;\n if (type.previousIndex === 0) {\n this.drawOutputString = this.outputString;\n drawObject = this.newObject;\n }\n else if (type.previousIndex === 2) {\n this.imageOutputString = this.outputString;\n }\n this.outputString = '';\n this.newObject = [];\n if (type.selectedIndex === 0) {\n this.outputString = this.drawOutputString;\n this.newObject = drawObject;\n }\n else if (type.selectedIndex === 2) {\n this.outputString = this.imageOutputString;\n }\n }\n else {\n this.outputString = '';\n this.newObject = [];\n }\n var isClearDrawTab = false;\n var isClearTypeTab = false;\n var isClearImageTab = false;\n if (type && type.currentTarget && type.currentTarget.classList.contains(\"e-pv-clearbtn\")) {\n isCanvasClear = false;\n if (this.signaturetype === 'Draw') {\n isClearDrawTab = true;\n }\n else if (this.signaturetype === 'Type') {\n isClearTypeTab = true;\n }\n else {\n isClearImageTab = true;\n }\n }\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n // eslint-disable-next-line\n if ((canvas && isCanvasClear) || (isClearDrawTab)) {\n // eslint-disable-next-line\n var context = canvas.getContext('2d');\n context.clearRect(0, 0, canvas.width, canvas.height);\n }\n // eslint-disable-next-line\n var imageCanvas = document.getElementById(this.pdfViewer.element.id + '_signatureuploadCanvas_');\n if (imageCanvas && isCanvasClear || (isClearImageTab)) {\n // eslint-disable-next-line\n var context = imageCanvas.getContext('2d');\n context.clearRect(0, 0, imageCanvas.width, imageCanvas.height);\n // eslint-disable-next-line\n var signbutton = document.getElementById(this.pdfViewer.element.id + '_e-pv-upload-button');\n if (signbutton) {\n signbutton.style.visibility = '';\n }\n }\n // eslint-disable-next-line\n var fontdiv = document.getElementById(this.pdfViewer.element.id + '_font_appearance');\n // eslint-disable-next-line\n var textbox = document.getElementById(this.pdfViewer.element.id + '_e-pv-Signtext-box');\n if ((fontdiv && textbox && isCanvasClear) || (isClearTypeTab)) {\n textbox.value = '';\n if (!isBlazor()) {\n fontdiv.innerHTML = '';\n }\n }\n this.enableCreateButton(true);\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.closeSignaturePanel = function () {\n if (this.pdfViewerBase.currentTarget) {\n this.pdfViewerBase.drawSignatureWithTool = true;\n }\n this.clearSignatureCanvas();\n if (!isBlazor()) {\n this.signatureDialog.hide();\n }\n this.pdfViewerBase.isToolbarSignClicked = false;\n this.pdfViewerBase.drawSignatureWithTool = false;\n this.drawOutputString = '';\n this.imageOutputString = '';\n };\n /**\n * @private\n * @returns {string} - Returns the string.\n */\n Signature.prototype.saveSignature = function () {\n // eslint-disable-next-line\n var storeObject = null;\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'];\n }\n else {\n storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sign');\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n // eslint-disable-next-line max-len\n var strokeColorString = pageAnnotationObject.annotations[z].strokeColor;\n pageAnnotationObject.annotations[z].strokeColor = JSON.stringify(this.getRgbCode(strokeColorString));\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n if (pageAnnotationObject.annotations[z].shapeAnnotationType === 'HandWrittenSignature') {\n // eslint-disable-next-line\n var collectionData = processPathData(pageAnnotationObject.annotations[z].data);\n // eslint-disable-next-line\n var csData = splitArrayCollection(collectionData);\n pageAnnotationObject.annotations[z].data = JSON.stringify(csData);\n }\n else {\n if (pageAnnotationObject.annotations[z].shapeAnnotationType === 'SignatureText' && !this.checkDefaultFont(pageAnnotationObject.annotations[z].fontFamily)) {\n var signTypeCanvas = createElement('canvas');\n signTypeCanvas.width = 150;\n signTypeCanvas.height = pageAnnotationObject.annotations[z].fontSize * 2;\n // eslint-disable-next-line\n var canvasContext = signTypeCanvas.getContext('2d');\n var x = signTypeCanvas.width / 2;\n var y = (signTypeCanvas.height / 2) - 10;\n canvasContext.textAlign = 'center';\n canvasContext.font = pageAnnotationObject.annotations[z].fontSize + 'px ' + pageAnnotationObject.annotations[z].fontFamily;\n canvasContext.fillText(pageAnnotationObject.annotations[z].data, x, y);\n pageAnnotationObject.annotations[z].data = JSON.stringify(signTypeCanvas.toDataURL('image/png'));\n pageAnnotationObject.annotations[z].shapeAnnotationType = 'SignatureImage';\n }\n else {\n pageAnnotationObject.annotations[z].data = JSON.stringify(pageAnnotationObject.annotations[z].data);\n }\n }\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n Signature.prototype.checkDefaultFont = function (fontName) {\n // eslint-disable-next-line\n [{ FontName: 'Helvetica' }, { FontName: 'Times New Roman' }, { FontName: 'Courier' }, { FontName: 'Symbol' }];\n if (fontName === 'Helvetica' || fontName === 'Times New Roman' || fontName === 'Courier' || fontName === 'Symbol') {\n return true;\n }\n return false;\n };\n /**\n * @param colorString\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.getRgbCode = function (colorString) {\n if (!colorString.match(/#([a-z0-9]+)/gi) && !colorString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n colorString = this.pdfViewer.annotationModule.nameToHash(colorString);\n }\n var stringArray = colorString.split(',');\n if (isNullOrUndefined(stringArray[1])) {\n colorString = this.pdfViewer.annotationModule.getValue(colorString, 'rgba');\n stringArray = colorString.split(',');\n }\n // eslint-disable-next-line radix\n var r = parseInt(stringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var g = parseInt(stringArray[1]);\n // eslint-disable-next-line radix\n var b = parseInt(stringArray[2]);\n // eslint-disable-next-line radix\n var a = parseInt(stringArray[3]);\n return { r: r, g: g, b: b, a: a };\n };\n /**\n * @private\n * @param {number} left - The left.\n * @param {number} top - The top.\n * @returns {void}\n */\n Signature.prototype.renderSignature = function (left, top) {\n var annot;\n // eslint-disable-next-line\n var currentAnnotation = this.pdfViewerBase.currentSignatureAnnot;\n var annotationName = this.pdfViewer.annotation.createGUID();\n if (currentAnnotation) {\n if (this.pdfViewerBase.currentSignatureAnnot.shapeAnnotationType === 'HandWrittenSignature') {\n annot = {\n // eslint-disable-next-line max-len\n id: currentAnnotation.id, bounds: { x: left, y: top, width: currentAnnotation.bounds.width, height: currentAnnotation.bounds.height }, pageIndex: currentAnnotation.pageIndex, data: currentAnnotation.data,\n shapeAnnotationType: 'HandWrittenSignature', opacity: currentAnnotation.opacity, strokeColor: currentAnnotation.strokeColor, thickness: currentAnnotation.thickness, signatureName: annotationName\n };\n }\n if (this.pdfViewerBase.currentSignatureAnnot.shapeAnnotationType === 'SignatureText') {\n annot = {\n // eslint-disable-next-line max-len\n id: currentAnnotation.id, bounds: { x: left, y: top, width: currentAnnotation.bounds.width, height: currentAnnotation.bounds.height }, pageIndex: currentAnnotation.pageIndex, data: currentAnnotation.data,\n shapeAnnotationType: 'SignatureText', opacity: currentAnnotation.opacity, strokeColor: currentAnnotation.strokeColor, thickness: currentAnnotation.thickness, signatureName: annotationName\n };\n }\n this.pdfViewer.add(annot);\n // eslint-disable-next-line\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentAnnotation.pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, currentAnnotation.pageIndex);\n this.pdfViewerBase.signatureAdded = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignatureAdd(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, currentAnnotation.bounds, currentAnnotation.opacity, currentAnnotation.strokeColor, currentAnnotation.thickness);\n this.storeSignatureData(currentAnnotation.pageIndex, annot);\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.signatureCount++;\n }\n };\n /**\n * @param annotationCollection\n * @param pageIndex\n * @param isImport\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.renderExistingSignature = function (annotationCollection, pageIndex, isImport) {\n var annot;\n for (var n = 0; n < annotationCollection.length; n++) {\n // eslint-disable-next-line\n var currentAnnotation = annotationCollection[n];\n // eslint-disable-next-line\n if (currentAnnotation) {\n // eslint-disable-next-line\n var bounds = currentAnnotation.Bounds;\n var currentLeft = bounds.X;\n var currentTop = bounds.Y;\n var currentWidth = bounds.Width;\n var currentHeight = bounds.Height;\n // eslint-disable-next-line\n var data = currentAnnotation.PathData;\n if (isImport) {\n if (currentAnnotation.IsSignature) {\n data = currentAnnotation.PathData;\n }\n else if (currentAnnotation.AnnotationType === 'SignatureImage' || currentAnnotation.AnnotationType === 'SignatureText') {\n data = JSON.parse(JSON.stringify(currentAnnotation.PathData));\n }\n else {\n if (data.includes('command')) {\n data = getPathString(JSON.parse(currentAnnotation.PathData));\n }\n else {\n data = currentAnnotation.PathData;\n }\n }\n }\n if (currentAnnotation.AnnotationType === 'SignatureText') {\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data, fontFamily: currentAnnotation.FontFamily, fontSize: currentAnnotation.FontSize,\n shapeAnnotationType: 'SignatureText', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, signatureName: currentAnnotation.SignatureName\n };\n }\n else if (currentAnnotation.AnnotationType === 'SignatureImage') {\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data,\n shapeAnnotationType: 'SignatureImage', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, signatureName: currentAnnotation.SignatureName\n };\n }\n else {\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data,\n shapeAnnotationType: 'HandWrittenSignature', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, signatureName: currentAnnotation.SignatureName\n };\n }\n this.pdfViewer.add(annot);\n // eslint-disable-next-line\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentAnnotation.pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, annot.pageIndex);\n this.storeSignatureData(annot.pageIndex, annot);\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.signatureCount++;\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.navigationPane && this.pdfViewerBase.navigationPane.annotationMenuObj && this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], true);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], true);\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param annotations\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.storeSignatureData = function (pageNumber, annotations) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(annotations.pageIndex, null, annotations, 'Addition', '', annotations, annotations);\n var annotation = null;\n var left = annotations.bounds.left ? annotations.bounds.left : annotations.bounds.x;\n var top = annotations.bounds.top ? annotations.bounds.top : annotations.bounds.y;\n if (annotations.wrapper && annotations.wrapper.bounds) {\n left = annotations.wrapper.bounds.left;\n top = annotations.wrapper.bounds.top;\n }\n annotation = {\n // eslint-disable-next-line max-len\n id: annotations.id, bounds: { left: left, top: top, width: annotations.bounds.width, height: annotations.bounds.height }, shapeAnnotationType: annotations.shapeAnnotationType, opacity: annotations.opacity, thickness: annotations.thickness, strokeColor: annotations.strokeColor, pageIndex: annotations.pageIndex, data: annotations.data, fontSize: annotations.fontSize, fontFamily: annotations.fontFamily, signatureName: annotations.signatureName\n };\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n // eslint-disable-next-line\n var currentAnnotation = Math.round(JSON.stringify(annotation).length / 1024);\n if ((sessionSize + currentAnnotation) > 4500) {\n this.pdfViewerBase.isStorageExceed = true;\n this.pdfViewer.annotationModule.clearAnnotationStorage();\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sign');\n var index = 0;\n if (!storeObject) {\n this.storeSignatureCollections(annotation, pageNumber);\n var shapeAnnotation = { pageIndex: pageNumber, annotations: [] };\n shapeAnnotation.annotations.push(annotation);\n index = shapeAnnotation.annotations.indexOf(annotation);\n var annotationCollection = [];\n annotationCollection.push(shapeAnnotation);\n var annotationStringified = JSON.stringify(annotationCollection);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sign', annotationStringified);\n }\n }\n else {\n this.storeSignatureCollections(annotation, pageNumber);\n var annotObject = JSON.parse(storeObject);\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_sign');\n var pageIndex = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[pageIndex]) {\n annotObject[pageIndex].annotations.push(annotation);\n index = annotObject[pageIndex].annotations.indexOf(annotation);\n }\n else {\n var markupAnnotation = { pageIndex: pageNumber, annotations: [] };\n markupAnnotation.annotations.push(annotation);\n index = markupAnnotation.annotations.indexOf(annotation);\n annotObject.push(markupAnnotation);\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sign', annotationStringified);\n }\n }\n };\n /**\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isSignatureEdited\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.modifySignatureCollection = function (property, pageNumber, annotationBase, isSignatureEdited) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n var currentAnnotObject = null;\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.id === pageAnnotations[i].id) {\n if (property === 'bounds') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.wrapper.bounds.left, top: annotationBase.wrapper.bounds.top, width: annotationBase.bounds.width, height: annotationBase.bounds.height };\n pageAnnotations[i].fontSize = annotationBase.fontSize;\n }\n else if (property === 'stroke') {\n pageAnnotations[i].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n }\n else if (property === 'opacity') {\n pageAnnotations[i].opacity = annotationBase.wrapper.children[0].style.opacity;\n }\n else if (property === 'thickness') {\n pageAnnotations[i].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n }\n else if (property === 'delete') {\n this.updateSignatureCollection(pageAnnotations[i]);\n currentAnnotObject = pageAnnotations.splice(i, 1)[0];\n break;\n }\n if (property && property !== 'delete') {\n this.storeSignatureCollections(pageAnnotations[i], pageNumber);\n }\n if (isSignatureEdited) {\n pageAnnotations[i].opacity = annotationBase.wrapper.children[0].style.opacity;\n pageAnnotations[i].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n pageAnnotations[i].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n this.storeSignatureCollections(pageAnnotations[i], pageNumber);\n break;\n }\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n /**\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.storeSignatureCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var collectionDetails = this.checkSignatureCollection(annotation);\n // eslint-disable-next-line\n var selectAnnotation = cloneObject(annotation);\n selectAnnotation.annotationId = annotation.signatureName;\n selectAnnotation.pageNumber = pageNumber;\n delete selectAnnotation.annotName;\n if (annotation.id) {\n selectAnnotation.uniqueKey = annotation.id;\n delete selectAnnotation.id;\n }\n if (collectionDetails.isExisting) {\n this.pdfViewer.signatureCollection.splice(collectionDetails.position, 0, selectAnnotation);\n }\n else {\n this.pdfViewer.signatureCollection.push(selectAnnotation);\n }\n };\n // eslint-disable-next-line\n Signature.prototype.checkSignatureCollection = function (signature) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.signatureCollection;\n if (collections && signature) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].annotationId === signature.signatureName) {\n this.pdfViewer.signatureCollection.splice(i, 1);\n return { isExisting: true, position: i };\n }\n }\n }\n return { isExisting: false, position: null };\n };\n /**\n * @param signature\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.updateSignatureCollection = function (signature) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.signatureCollection;\n if (collections && signature) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].annotationId === signature.signatureName) {\n this.pdfViewer.signatureCollection.splice(i, 1);\n break;\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param signature\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.addInCollection = function (pageNumber, signature) {\n if (signature) {\n this.storeSignatureCollections(signature, pageNumber);\n // eslint-disable-next-line\n var pageSignatures = this.getAnnotations(pageNumber, null);\n if (pageSignatures) {\n pageSignatures.push(signature);\n }\n this.manageAnnotations(pageSignatures, pageNumber);\n }\n };\n // eslint-disable-next-line\n Signature.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = null;\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'];\n }\n else {\n storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sign');\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n Signature.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = null;\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'];\n }\n else {\n storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sign');\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_sign');\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sign', annotationStringified);\n }\n }\n };\n /**\n * @private\n * @param {boolean} isShow - Returns the true or false.\n * @returns {void}\n */\n Signature.prototype.showSignatureDialog = function (isShow) {\n if (isShow) {\n this.createSignaturePanel();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.setAnnotationMode = function () {\n this.pdfViewerBase.isToolbarSignClicked = true;\n this.showSignatureDialog(true);\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.setInitialMode = function () {\n this.pdfViewerBase.isToolbarSignClicked = true;\n this.pdfViewerBase.isInitialField = true;\n this.showSignatureDialog(true);\n };\n /**\n * @param number\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n /**\n * @param signature\n * @param pageIndex\n * @param isImport\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.updateSignatureCollections = function (signature, pageIndex, isImport) {\n var annot;\n // eslint-disable-next-line\n if (signature) {\n // eslint-disable-next-line\n var bounds = signature.Bounds;\n var currentLeft = bounds.X;\n var currentTop = bounds.Y;\n var currentWidth = bounds.Width;\n var currentHeight = bounds.Height;\n // eslint-disable-next-line\n var data = signature.PathData;\n if (isImport) {\n data = getPathString(JSON.parse(signature.PathData));\n }\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + signature.SignatureName, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data,\n shapeAnnotationType: 'HandWrittenSignature', opacity: signature.Opacity, strokeColor: signature.StrokeColor, thickness: signature.Thickness, signatureName: signature.SignatureName\n };\n return annot;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.destroy = function () {\n window.sessionStorage.removeItem('_annotations_sign');\n // eslint-disable-next-line\n var signImage = document.getElementById(this.pdfViewer.element.id + '_signElement');\n if (signImage) {\n signImage.removeEventListener('change', this.addStampImage);\n if (signImage.parentElement)\n signImage.parentElement.removeChild(signImage);\n }\n if (this.signatureDialog)\n this.signatureDialog.destroy();\n };\n return Signature;\n}());\nexport { Signature };\n","import { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ContextMenu as Context } from '@syncfusion/ej2-navigations';\nimport { ContextMenuItem } from './types';\n/**\n * ContextMenu module is used to handle the context menus used in the control.\n *\n * @hidden\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Initialize the constructor of ontextmenu\n *\n * @param { PdfViewer } pdfViewer - Specified PdfViewer class.\n * @param { PdfViewerBase } pdfViewerBase - The pdfViewerBase.\n */\n function ContextMenu(pdfViewer, pdfViewerBase) {\n this.copyContextMenu = [];\n this.contextMenuList = [];\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n this.copyContextMenu = [{ text: this.pdfViewer.localeObj.getConstant('Cut'), iconCss: 'e-pv-cut-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Copy'), iconCss: 'e-pv-copy-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Highlight context'), iconCss: 'e-pv-highlight-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Underline context'), iconCss: 'e-pv-underline-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Strikethrough context'), iconCss: 'e-pv-strikethrough-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Paste'), iconCss: 'e-pv-paste-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Delete Context'), iconCss: 'e-pv-delete-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Scale Ratio'), iconCss: 'e-pv-scale-ratio-icon' },\n { separator: true, id: pdfViewer.element.id + '_context_menu_comment_separator' },\n { text: this.pdfViewer.localeObj.getConstant('Comment'), iconCss: 'e-pv-comment-icon' },\n { separator: true, id: pdfViewer.element.id + '_context_menu_separator' },\n { text: this.pdfViewer.localeObj.getConstant('Properties'), iconCss: 'e-pv-property-icon' }\n ];\n }\n /**\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.createContextMenu = function () {\n this.contextMenuElement = createElement('ul', { id: this.pdfViewer.element.id + '_context_menu', className: 'e-pv-context-menu' });\n this.pdfViewer.element.appendChild(this.contextMenuElement);\n this.contextMenuObj = new Context({\n target: '#' + this.pdfViewerBase.viewerContainer.id, items: this.copyContextMenu,\n beforeOpen: this.contextMenuOnBeforeOpen.bind(this), select: this.onMenuItemSelect.bind(this),\n created: this.contextMenuOnCreated.bind(this)\n });\n if (this.pdfViewer.enableRtl) {\n this.contextMenuObj.enableRtl = true;\n }\n this.contextMenuObj.appendTo(this.contextMenuElement);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.contextMenuObj.animationSettings.effect = 'ZoomIn';\n }\n else {\n this.contextMenuObj.animationSettings.effect = 'SlideDown';\n }\n };\n ContextMenu.prototype.contextMenuOnCreated = function (args) {\n // eslint-disable-next-line max-len\n var items = [this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'),\n this.pdfViewer.localeObj.getConstant('Strikethrough context')];\n if (this.pdfViewer.annotationModule) {\n if (!this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n this.contextMenuObj.enableItems(items, false);\n }\n }\n else {\n this.contextMenuObj.enableItems(items, false);\n }\n };\n ContextMenu.prototype.setTarget = function (args) {\n var target = null;\n if (args.event && args.event.target) {\n target = args.event.target;\n this.currentTarget = target;\n }\n return target;\n };\n ContextMenu.prototype.contextMenuOnBeforeOpen = function (args) {\n var target = this.setTarget(args);\n var currentAnnotSettings = this.pdfViewer.selectedItems.annotations.length !== 0 ? this.pdfViewer.selectedItems.annotations[0].annotationSettings : null;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus && target && target.className === 'free-text-input' && target.tagName === 'TEXTAREA') {\n this.pdfViewerBase.isFreeTextContextMenu = true;\n }\n // eslint-disable-next-line max-len\n this.contextMenuObj.showItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste'),\n // eslint-disable-next-line max-len\n this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'),\n // eslint-disable-next-line max-len\n this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.remove('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.remove('e-menu-hide');\n // eslint-disable-next-line max-len\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context')], true);\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.checkContextMenuDeleteItem(this.contextMenuObj);\n }\n if (this.pdfViewer.textSelectionModule || this.pdfViewerBase.isShapeBasedAnnotationsEnabled()) {\n if (args.event || this.pdfViewerBase.isTouchDesignerMode) {\n var isClickWithinSelectionBounds = this.pdfViewerBase.isClickWithinSelectionBounds(args.event);\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.isFreeTextContextMenu) {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'), this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment'),\n this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Delete Context')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && this.pdfViewer.annotation.freeTextAnnotationModule.isTextSelected) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Copy')], true);\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Cut')], true);\n }\n else {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Copy')], false);\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Cut')], false);\n window.getSelection().removeAllRanges();\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && this.pdfViewer.annotation.freeTextAnnotationModule.selectedText !== '') {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], true);\n }\n else {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], false);\n }\n }\n else if (isClickWithinSelectionBounds && this.pdfViewer.textSelectionModule) {\n // eslint-disable-next-line max-len\n if ((!args.event.target.classList.contains('e-pv-maintaincontent') && args.event.target.classList.contains('e-pv-text') || args.event.target.classList.contains('e-pv-text-layer'))) {\n if (this.pdfViewerBase.checkIsNormalText()) {\n args.cancel = true;\n }\n // eslint-disable-next-line max-len\n }\n else if ((Browser.isIE || Browser.info.name === 'edge') && args.event.target.classList.contains('e-pv-page-container')) {\n args.cancel = true;\n }\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) {\n this.onOpeningForShape(false, true);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType !== 'Path' && !currentAnnotSettings.isLock) {\n this.onOpeningForShape(true);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.formFields.length !== 0 && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType && this.pdfViewer.designerMode) {\n this.onOpeningForShape(true);\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(this.pdfViewer.toolbar) && !isNullOrUndefined(this.pdfViewer.toolbar.formDesignerToolbarModule)) {\n this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(true);\n }\n }\n else {\n // eslint-disable-next-line\n var target_1 = this.pdfViewerBase.designerModetarget;\n if (args.event && args.event.target) {\n target_1 = args.event.target;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.isShapeCopied && ((target_1).classList.contains('e-pv-text-layer') ||\n (target_1).classList.contains('e-pv-text')) && !this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.onOpeningForShape(false);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isShapeCopied && ((target_1).classList.contains('e-pv-text-layer') ||\n (target_1).classList.contains('e-pv-text'))) {\n this.onOpeningForShape(false);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewerBase.isCalibrateAnnotationModule() && this.pdfViewer.annotationModule.measureAnnotationModule.currentAnnotationMode && !currentAnnotSettings) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.remove('e-menu-hide');\n // eslint-disable-next-line max-len\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Comment')], false);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation && !this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation.annotationSettings.isLock) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'), this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Cut'),\n this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Scale Ratio')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.remove('e-menu-hide');\n // eslint-disable-next-line max-len\n this.contextMenuObj.showItems([this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Comment')], false);\n }\n else {\n args.cancel = true;\n }\n }\n }\n else if (this.pdfViewer.textSelectionModule && (this.pdfViewer.contextMenuOption === 'MouseUp')) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n else {\n this.hideContextItems();\n }\n this.enableCommentPanelItem();\n }\n else {\n args.cancel = true;\n }\n if (this.pdfViewer.contextMenuOption === 'None') {\n args.cancel = true;\n }\n else {\n this.contextMenuItems(args);\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.restrictContextMenu()) {\n args.cancel = true;\n }\n this.pdfViewerBase.isTouchDesignerMode = false;\n };\n ContextMenu.prototype.contextMenuItems = function (args) {\n if (this.pdfViewer.contextMenuSettings.contextMenuItems.length) {\n var hideMenuItems = [];\n var contextMenuList = this.contextMenuCollection();\n var ul = this.contextMenuObj.getRootElement();\n for (var j = 0; j < this.pdfViewer.contextMenuSettings.contextMenuItems.length; j++) {\n for (var i = 0; i < this.contextMenuList.length; i++) {\n var menuItem = this.contextMenuList[i].text;\n switch (menuItem) {\n case 'Highlight':\n menuItem = 'Highlight context';\n break;\n case 'Underline':\n menuItem = 'Underline context';\n break;\n case 'Strikethrough':\n menuItem = 'Strikethrough context';\n break;\n case 'Delete':\n menuItem = 'Delete Context';\n break;\n case 'Scale Ratio':\n menuItem = 'Scale Ratio';\n break;\n case 'Comment':\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n break;\n case 'Properties':\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n break;\n }\n var menuName = this.contextMenuList[i].text;\n if (j === 0 && menuName !== ContextMenuItem[this.pdfViewer.contextMenuSettings.contextMenuItems[j]]) {\n hideMenuItems.push(menuName);\n }\n if (j > 0 && menuName === ContextMenuItem[this.pdfViewer.contextMenuSettings.contextMenuItems[j]]) {\n for (var k = 0; k < hideMenuItems.length; k++) {\n if (hideMenuItems[k] === menuName) {\n if (this.pdfViewer.disableContextMenuItems && this.pdfViewer.disableContextMenuItems.length > 0) {\n var isDisabled = false;\n for (var l = 0; l < this.pdfViewer.disableContextMenuItems.length; l++) {\n if (hideMenuItems[k] === ContextMenuItem[this.pdfViewer.disableContextMenuItems[l]]) {\n isDisabled = true;\n }\n }\n if (!isDisabled) {\n hideMenuItems.splice(k, 1);\n }\n }\n else {\n hideMenuItems.splice(k, 1);\n }\n }\n }\n }\n }\n }\n var hideLocaleItem = this.processLocaleContent(hideMenuItems);\n this.contextMenuObj.hideItems(hideLocaleItem);\n if (this.getEnabledItemCount(ul) === 0) {\n args.cancel = true;\n }\n }\n };\n ContextMenu.prototype.processLocaleContent = function (hideMenuItems) {\n var contextMenuLocaleContent = [];\n if (hideMenuItems.length > 0) {\n for (var i = 0; i < hideMenuItems.length; i++) {\n var menuItem = hideMenuItems[i];\n switch (menuItem) {\n case 'Highlight':\n menuItem = 'Highlight context';\n break;\n case 'Underline':\n menuItem = 'Underline context';\n break;\n case 'Strikethrough':\n menuItem = 'Strikethrough context';\n break;\n case 'Delete':\n menuItem = 'Delete Context';\n break;\n case 'ScaleRatio':\n menuItem = 'Scale Ratio';\n break;\n }\n contextMenuLocaleContent.push(this.pdfViewer.localeObj.getConstant(menuItem));\n }\n }\n return contextMenuLocaleContent;\n };\n ContextMenu.prototype.contextMenuCollection = function () {\n return this.contextMenuList = [{ text: 'Cut' }, { text: 'Copy' }, { text: 'Highlight' }, { text: 'Underline' }, { text: 'Strikethrough' },\n { text: 'Paste' }, { text: 'Delete' }, { text: 'ScaleRatio' }, { text: 'Comment' }, { text: 'Properties' }];\n };\n ContextMenu.prototype.getEnabledItemCount = function (ul) {\n var enabledItemCount = this.copyContextMenu.length;\n var liCollection = ul.children;\n for (var i = 0; i < liCollection.length; i++) {\n // eslint-disable-next-line\n var li = liCollection[i];\n if (li.classList.contains('e-menu-hide') || li.classList.contains('e-disabled')) {\n enabledItemCount = enabledItemCount - 1;\n }\n }\n return enabledItemCount;\n };\n ContextMenu.prototype.hideContextItems = function () {\n if (this.pdfViewer.selectedItems.annotations.length === 0) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n }\n };\n ContextMenu.prototype.enableCommentPanelItem = function () {\n if (this.pdfViewer.enableCommentPanel) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Comment')], true);\n }\n else {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Comment')], false);\n }\n if (this.pdfViewer.selectedItems.formFields.length !== 0) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Comment')], false);\n }\n };\n ContextMenu.prototype.onOpeningForShape = function (isProp, isSignature) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.isShapeCopied) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], true);\n }\n else if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isShapeCopied) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], true);\n }\n else {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], false);\n }\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'), this.pdfViewer.localeObj.getConstant('Scale Ratio')]);\n if (isProp) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'LineWidthArrowHead' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance')) {\n this.contextMenuObj.showItems([this.pdfViewer.localeObj.getConstant('Properties')]);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.formFields.length !== 0 && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType) {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Comment')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.contextMenuObj.showItems([this.pdfViewer.localeObj.getConstant('Properties')]);\n }\n else {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n }\n }\n else if (isSignature) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment')]);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n else {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'),\n // eslint-disable-next-line max-len\n this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n };\n ContextMenu.prototype.OnItemSelected = function (selectedMenu) {\n this.pdfViewerBase.OnItemSelected(selectedMenu);\n };\n ContextMenu.prototype.onMenuItemSelect = function (args) {\n this.pdfViewerBase.OnItemSelected(args.item.text);\n };\n /**\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.destroy = function () {\n if (this.contextMenuObj) {\n this.previousAction = '';\n this.contextMenuObj.destroy();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n this.contextMenuObj.close();\n };\n /**\n * open the context menu.\n * @param {number} top - The top.\n * @param {number} left - The left.\n * @param {HTMLElement} target - The target.\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n this.contextMenuObj.open(top, left, target);\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","import { AnnotationDataFormat } from '../index';\nimport { createElement, Browser, isBlazor } from '@syncfusion/ej2-base';\nimport { Toolbar as Tool, ContextMenu as Context } from '@syncfusion/ej2-navigations';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { Toast } from '@syncfusion/ej2-notifications';\n/**\n * The `NavigationPane` module is used to handle navigation pane for thumbnail and bookmark navigation of PDF viewer.\n *\n * @hidden\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Initialize the constructor of navigationPane.\n *\n * @param { PdfViewer } viewer - Specified PdfViewer class.\n * @param { PdfViewerBase } base - The pdfViewerBase.\n */\n function NavigationPane(viewer, base) {\n var _this = this;\n this.thumbnailWidthMin = 200;\n this.contentContainerScrollWidth = 33;\n this.closeButtonLeft = 170;\n this.isTooltipCreated = false;\n this.isThumbnail = false;\n this.annotationContextMenu = [];\n this.isCommentPanelShow = false;\n this.commentPanelWidthMin = 300;\n /**\n * @private\n */\n this.isNavigationToolbarVisible = false;\n /**\n * @private\n */\n this.isBookmarkListOpen = false;\n /**\n * @private\n */\n this.isNavigationPaneResized = false;\n /**\n * @private\n */\n this.isBookmarkOpen = false;\n /**\n * @private\n */\n this.isThumbnailOpen = false;\n /**\n * @private\n */\n this.restrictUpdateZoomValue = true;\n // eslint-disable-next-line\n this.loadImportAnnotation = function (args) {\n // eslint-disable-next-line\n var upoadedFiles = args.target.files;\n if (args.target.files[0] !== null) {\n var uploadedFile = upoadedFiles[0];\n if (uploadedFile) {\n _this.pdfViewer.fireImportStart(uploadedFile);\n // eslint-disable-next-line\n var uploadedFileType = uploadedFile.type;\n if (uploadedFile.name.split('.json').length > 1 && uploadedFileType.includes('json')) {\n var reader = new FileReader();\n reader.readAsDataURL(uploadedFile);\n // eslint-disable-next-line\n reader.onload = function (e) {\n if (e.currentTarget.result) {\n var importFile = e.currentTarget.result.split(',')[1];\n // eslint-disable-next-line\n var annotationData = atob(importFile);\n if (annotationData) {\n // eslint-disable-next-line\n var jsonData = JSON.parse(annotationData);\n _this.pdfViewerBase.importAnnotations(jsonData, AnnotationDataFormat.Json);\n }\n }\n };\n }\n else if (uploadedFile.name.split('.xfdf').length > 1 && uploadedFileType.includes('xfdf')) {\n var reader = new FileReader();\n reader.readAsDataURL(uploadedFile);\n // eslint-disable-next-line\n reader.onload = function (e) {\n if (e.currentTarget.result) {\n var importFile = e.currentTarget.result.split(',')[1];\n // eslint-disable-next-line\n var annotationData = atob(importFile);\n if (annotationData) {\n // eslint-disable-next-line max-len\n _this.pdfViewerBase.importAnnotations(importFile, AnnotationDataFormat.Xfdf, true);\n }\n }\n };\n }\n else {\n _this.pdfViewer.fireImportFailed(uploadedFile, _this.pdfViewer.localeObj.getConstant('Import Failed'));\n if (isBlazor()) {\n var promise = _this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_ImportFailed');\n promise.then(function (value) {\n _this.pdfViewerBase.openImportExportNotificationPopup(value);\n });\n }\n else {\n _this.pdfViewerBase.openImportExportNotificationPopup(_this.pdfViewer.localeObj.getConstant('Import Failed'));\n }\n }\n }\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.resizeIconMouseOver = function (event) {\n event.srcElement.style.cursor = 'e-resize';\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.resizePanelMouseDown = function (event) {\n var proxy = null;\n proxy = _this;\n proxy.offset = [\n proxy.sideBarResizer.offsetLeft - event.clientX,\n proxy.sideBarResizer.offsetTop - event.clientY,\n proxy.sideBarResizer.offsetParent.clientWidth\n ];\n _this.previousX = event.clientX;\n proxy.isDown = true;\n proxy.isNavigationPaneResized = true;\n proxy.pdfViewerBase.viewerContainer.style.cursor = 'e-resize';\n if (proxy.sideBarContentContainer) {\n proxy.sideBarContentContainer.style.cursor = 'e-resize';\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.resizeViewerMouseLeave = function (event) {\n var proxy = null;\n proxy = _this;\n proxy.isDown = false;\n if (proxy.isNavigationPaneResized && proxy.sideBarContentContainer) {\n proxy.pdfViewerBase.viewerContainer.style.cursor = 'default';\n proxy.sideBarContentContainer.style.cursor = 'default';\n proxy.isNavigationPaneResized = false;\n }\n if (proxy.commentPanelContainer && proxy.isCommentPanelShow) {\n _this.commentPanelMouseLeave(event);\n proxy.isCommentPanelShow = false;\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.resizePanelMouseMove = function (event) {\n var proxy = null;\n proxy = _this;\n if (!_this.pdfViewerBase.getPopupNoteVisibleStatus()) {\n var target = event.target;\n // eslint-disable-next-line max-len\n if (_this.pdfViewerBase.skipPreventDefault(target)) {\n event.preventDefault();\n }\n if (proxy.isDown && _this.sideBarContentContainer) {\n // prevent the sidebar from becoming too narrow, or from occupying more\n // than half of the available viewer width.\n if (_this.pdfViewer.enableRtl) {\n var currentWidth = _this.previousX - event.clientX;\n var width = currentWidth + proxy.offset[2];\n var maxWidth = Math.floor(_this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < _this.thumbnailWidthMin) {\n width = _this.thumbnailWidthMin;\n }\n proxy.sideBarResizer.style.right = width + 'px';\n proxy.sideBarContentContainer.style.width = width + 'px';\n proxy.sideBarContent.style.width = width + 'px';\n proxy.sideBarContentSplitter.style.width = width + 'px';\n proxy.sideBarTitleContainer.style.width = width + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerLeft() + 'px';\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerRight() + 'px';\n }\n else {\n var width = event.clientX + proxy.offset[0];\n var maxWidth = Math.floor(_this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < _this.thumbnailWidthMin) {\n width = _this.thumbnailWidthMin;\n }\n proxy.sideBarResizer.style.left = width + 'px';\n proxy.closeDiv.style.left = width - proxy.contentContainerScrollWidth + 'px';\n proxy.sideBarContentContainer.style.width = width + 'px';\n proxy.sideBarContent.style.width = width + 'px';\n proxy.sideBarContentSplitter.style.width = width + 'px';\n proxy.sideBarTitleContainer.style.width = width + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerLeft() + 'px';\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerRight() + 'px';\n }\n // eslint-disable-next-line max-len\n var viewerWidth = (proxy.pdfViewer.element.clientWidth - proxy.getViewerContainerLeft() - proxy.getViewerContainerRight());\n proxy.pdfViewerBase.viewerContainer.style.width = viewerWidth + 'px';\n proxy.pdfViewerBase.pageContainer.style.width = proxy.pdfViewerBase.viewerContainer.clientWidth + 'px';\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.pdfViewerBase.currentPageNumber - 1);\n proxy.pdfViewerBase.updateZoomValue();\n if (!proxy.bookmarkButton.children[0].classList.contains('e-pv-bookmark-disable-icon')) {\n proxy.pdfViewer.bookmarkViewModule.setBookmarkContentHeight();\n }\n }\n else if (proxy.isCommentPanelShow && _this.commentPanelContainer) {\n _this.updateCommentPanelContainer(event);\n }\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.sideToolbarOnClose = function (event) {\n var proxy = null;\n proxy = _this;\n proxy.removeThumbnailSelectionIconTheme();\n proxy.removeBookmarkSelectionIconTheme();\n proxy.updateViewerContainerOnClose();\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.sideToolbarOnClick = function (event) {\n _this.sideBarTitle.textContent = _this.pdfViewer.localeObj.getConstant('Page Thumbnails');\n _this.sideBarContent.setAttribute('aria-label', 'Thumbnail View Panel');\n var proxy = null;\n proxy = _this;\n var isblazor = isBlazor();\n // eslint-disable-next-line max-len\n var bookmarkPane = isblazor ? _this.pdfViewer.element.querySelector('.e-pv-bookmark-view') : document.getElementById(_this.pdfViewer.element.id + '_bookmark_view');\n if (bookmarkPane) {\n proxy.removeBookmarkSelectionIconTheme();\n bookmarkPane.style.display = 'none';\n }\n document.getElementById(_this.pdfViewer.element.id + '_thumbnail_view').style.display = 'flex';\n if (proxy.sideBarContentContainer) {\n if (proxy.sideBarContentContainer.style.display !== 'none') {\n if (proxy.isBookmarkOpen) {\n proxy.isThumbnailOpen = true;\n proxy.setThumbnailSelectionIconTheme();\n _this.updateViewerContainerOnExpand();\n }\n else {\n proxy.isThumbnailOpen = false;\n proxy.removeThumbnailSelectionIconTheme();\n _this.updateViewerContainerOnClose();\n }\n }\n else {\n _this.sideBarContent.focus();\n proxy.isThumbnailOpen = true;\n proxy.setThumbnailSelectionIconTheme();\n _this.updateViewerContainerOnExpand();\n }\n }\n proxy.isBookmarkOpen = false;\n if (_this.pdfViewer.annotationModule && _this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(_this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n _this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n /**\n * @private\n * @returns {void}\n */\n this.openThumbnailPane = function () {\n var proxy = null;\n proxy = _this;\n var sideBarContent = document.getElementById(_this.pdfViewer.element.id + '_sideBarContent');\n var sideBarContentContainer = document.getElementById(_this.pdfViewer.element.id + '_sideBarContentContainer');\n var viewerContainer = document.getElementById(_this.pdfViewer.element.id + '_viewerContainer');\n var pageContainer = document.getElementById(_this.pdfViewer.element.id + '_pageViewContainer');\n document.getElementById(_this.pdfViewer.element.id + '_thumbnail_view').style.display = 'block';\n document.getElementById(_this.pdfViewer.element.id + '_sideBarResizer').style.display = 'none';\n document.getElementById(_this.pdfViewer.element.id + '_sideBarTitleContainer').style.display = 'none';\n document.getElementById(_this.pdfViewer.element.id + '_sideBarContentSplitter').style.display = 'none';\n sideBarContent.classList.add('e-thumbnail');\n sideBarContentContainer.classList.add('e-thumbnail');\n if (sideBarContentContainer) {\n if (proxy.isThumbnail) {\n sideBarContentContainer.style.display = 'none';\n viewerContainer.style.width = proxy.pdfViewer.element.clientWidth + 'px';\n pageContainer.style.width = viewerContainer.clientWidth + 'px';\n viewerContainer.style.left = sideBarContentContainer.clientWidth + 'px';\n proxy.pdfViewerBase.updateZoomValue();\n proxy.isThumbnail = false;\n }\n else {\n sideBarContent.focus();\n sideBarContentContainer.style.display = 'block';\n // eslint-disable-next-line max-len\n viewerContainer.style.width = (proxy.pdfViewer.element.clientWidth - sideBarContentContainer.clientWidth) + 'px';\n pageContainer.style.width = viewerContainer.clientWidth + 'px';\n viewerContainer.style.left = (sideBarContentContainer.clientWidth) + 'px';\n proxy.pdfViewerBase.updateZoomValue();\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.pdfViewerBase.currentPageNumber - 1);\n proxy.isThumbnail = true;\n }\n }\n if (_this.pdfViewer.annotationModule && _this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(_this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n _this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.bookmarkButtonOnClick = function (event) {\n _this.openBookmarkcontentInitially();\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.commentPanelMouseDown = function (event) {\n var proxy = null;\n proxy = _this;\n proxy.offset = [\n proxy.commentPanelResizer.offsetLeft - event.clientX,\n proxy.commentPanelResizer.offsetTop - event.clientY,\n proxy.getViewerContainerRight()\n ];\n _this.isCommentPanelShow = true;\n _this.previousX = event.clientX;\n proxy.pdfViewerBase.viewerContainer.style.cursor = 'e-resize';\n proxy.commentPanelResizer.style.cursor = 'e-resize';\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.updateCommentPanelContainer = function (event) {\n var proxy = null;\n proxy = _this;\n // prevent the commentPanel from becoming too narrow, or from occupying more\n // than half of the available viewer width.\n if (_this.pdfViewer.enableRtl) {\n var width = event.clientX + proxy.offset[0];\n var maxWidth = Math.floor(_this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < _this.commentPanelWidthMin) {\n width = _this.commentPanelWidthMin;\n }\n proxy.commentPanelResizer.style.left = width + 'px';\n proxy.commentPanelContainer.style.width = width + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerRight() + 'px';\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerLeft() + 'px';\n }\n else {\n var currentWidth = _this.previousX - event.clientX;\n var width = currentWidth + proxy.offset[2];\n var maxWidth = Math.floor(_this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < _this.commentPanelWidthMin) {\n width = _this.commentPanelWidthMin;\n }\n proxy.commentPanelResizer.style.right = width + 'px';\n proxy.commentPanelContainer.style.width = width + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerRight() + 'px';\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerLeft() + 'px';\n }\n _this.pdfViewer.annotation.stickyNotesAnnotationModule.updateCommentPanelTextTop();\n // eslint-disable-next-line max-len\n var viewerWidth = (proxy.pdfViewer.element.clientWidth - proxy.getViewerContainerLeft() - proxy.getViewerContainerRight());\n proxy.pdfViewerBase.viewerContainer.style.width = viewerWidth + 'px';\n proxy.pdfViewerBase.pageContainer.style.width = proxy.pdfViewerBase.viewerContainer.clientWidth + 'px';\n proxy.pdfViewerBase.updateZoomValue();\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.commentPanelMouseLeave = function (event) {\n var proxy = null;\n proxy = _this;\n if (proxy.commentPanelContainer) {\n proxy.pdfViewerBase.viewerContainer.style.cursor = 'default';\n proxy.commentPanelContainer.style.cursor = 'default';\n }\n };\n this.pdfViewer = viewer;\n this.pdfViewerBase = base;\n }\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.initializeNavigationPane = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.createNavigationPane();\n }\n else {\n // eslint-disable-next-line max-len\n this.commentPanelContainer = createElement('div', { id: this.pdfViewer.element.id + '_commantPanel', className: 'e-pv-mobile-comments-container' });\n this.pdfViewerBase.mainContainer.appendChild(this.commentPanelContainer);\n if (this.pdfViewer.enableRtl) {\n this.commentPanelContainer.style.left = 0 + 'px';\n }\n else {\n this.commentPanelContainer.style.right = 0 + 'px';\n }\n this.commentPanelContainer.style.bottom = 0 + 'px';\n this.createCommentPanelTitleContainer();\n this.commentPanelContainer.style.display = 'none';\n // eslint-disable-next-line max-len\n this.commentsContentContainer = createElement('div', { id: this.pdfViewer.element.id + '_commentscontentcontainer', className: 'e-pv-comments-content-container' });\n this.commentPanelContainer.appendChild(this.commentsContentContainer);\n this.createFileElement(this.commentPanelContainer);\n this.createXFdfFileElement(this.commentPanelContainer);\n }\n };\n NavigationPane.prototype.createNavigationPane = function () {\n var isblazor = isBlazor();\n if (!isblazor) {\n // eslint-disable-next-line max-len\n this.sideBarToolbar = createElement('div', { id: this.pdfViewer.element.id + '_sideBarToolbar', className: 'e-pv-sidebar-toolbar', attrs: { 'role': 'toolbar', 'aria-orientation': 'vertical', 'tabindex': '-1' } });\n // eslint-disable-next-line max-len\n this.sideBarToolbarSplitter = createElement('div', { id: this.pdfViewer.element.id + '_sideBarToolbarSplitter', className: 'e-pv-sidebar-toolbar-splitter' });\n // eslint-disable-next-line max-len\n this.sideBarContentContainer = createElement('div', { id: this.pdfViewer.element.id + '_sideBarContentContainer', className: 'e-pv-sidebar-content-container' });\n // eslint-disable-next-line max-len\n this.sideBarContentSplitter = createElement('div', { id: this.pdfViewer.element.id + '_sideBarContentSplitter', className: 'e-pv-sidebar-content-splitter' });\n // eslint-disable-next-line max-len\n this.sideBarContent = createElement('div', { id: this.pdfViewer.element.id + '_sideBarContent', className: 'e-pv-sidebar-content', attrs: { 'tabindex': '0' } });\n // eslint-disable-next-line max-len\n this.sideBarTitleContainer = createElement('div', { id: this.pdfViewer.element.id + '_sideBarTitleContainer', className: 'e-pv-sidebar-title-container' });\n // eslint-disable-next-line max-len\n this.sideBarTitle = createElement('div', { id: this.pdfViewer.element.id + '_sideBarTitle', className: 'e-pv-sidebar-title', attrs: { 'tabindex': '-1' } });\n // eslint-disable-next-line max-len\n this.sideBarResizer = createElement('div', { id: this.pdfViewer.element.id + '_sideBarResizer', className: 'e-pv-sidebar-resizer' });\n }\n else {\n this.sideBarToolbar = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar');\n this.sideBarToolbarSplitter = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar-splitter');\n this.sideBarContentContainer = this.pdfViewer.element.querySelector('.e-pv-sidebar-content-container');\n this.sideBarContentSplitter = this.pdfViewer.element.querySelector('.e-pv-sidebar-content-splitter');\n this.sideBarContent = this.pdfViewer.element.querySelector('.e-pv-sidebar-content');\n this.sideBarTitleContainer = this.pdfViewer.element.querySelector('.e-pv-sidebar-title-container');\n this.sideBarTitle = this.pdfViewer.element.querySelector('.e-pv-sidebar-title');\n this.sideBarResizer = this.pdfViewer.element.querySelector('.e-pv-sidebar-resizer');\n }\n this.pdfViewerBase.mainContainer.appendChild(this.sideBarToolbar);\n if (this.pdfViewer.enableRtl) {\n this.sideBarToolbar.style.cssFloat = 'right';\n this.sideBarToolbar.style.right = 1 + 'px';\n this.sideBarToolbar.style.position = 'relative';\n }\n this.pdfViewerBase.mainContainer.appendChild(this.sideBarToolbarSplitter);\n if (this.pdfViewer.enableRtl) {\n this.sideBarToolbarSplitter.classList.add('e-right');\n }\n else {\n this.sideBarToolbarSplitter.classList.add('e-left');\n }\n if (this.pdfViewer.enableRtl) {\n this.sideBarContentContainer.classList.add('e-right');\n }\n else {\n this.sideBarContentContainer.classList.add('e-left');\n }\n this.pdfViewerBase.mainContainer.appendChild(this.sideBarContentContainer);\n if (this.pdfViewer.enableRtl) {\n this.sideBarContentSplitter.style.right = 0 + 'px';\n }\n this.sideBarContentContainer.appendChild(this.sideBarContentSplitter);\n if (this.pdfViewer.enableRtl) {\n this.sideBarContent.style.right = 0 + 'px';\n this.sideBarContent.style.direction = 'rtl';\n }\n this.sideBarContentContainer.appendChild(this.sideBarContent);\n if (this.pdfViewer.enableRtl) {\n this.sideBarTitleContainer.style.right = 0 + 'px';\n }\n if (this.pdfViewer.enableRtl) {\n this.sideBarTitle.classList.add('e-right');\n }\n else {\n this.sideBarTitle.classList.add('e-left');\n }\n this.sideBarTitleContainer.appendChild(this.sideBarTitle);\n this.sideBarContentContainer.appendChild(this.sideBarTitleContainer);\n this.sideBarResizer.addEventListener('mousedown', this.resizePanelMouseDown);\n this.pdfViewerBase.mainContainer.addEventListener('mousemove', this.resizePanelMouseMove);\n this.pdfViewerBase.mainContainer.addEventListener('mouseup', this.resizeViewerMouseLeave);\n if (this.pdfViewer.enableRtl) {\n this.sideBarResizer.classList.add('e-right');\n }\n else {\n this.sideBarResizer.classList.add('e-left');\n }\n this.sideBarContentContainer.appendChild(this.sideBarResizer);\n this.createCommentPanel();\n var controlLeft = this.getViewerContainerLeft();\n var controlRight = this.getViewerContainerRight();\n if (!this.pdfViewer.enableRtl) {\n this.pdfViewerBase.viewerContainer.style.left = controlLeft + 'px';\n this.pdfViewerBase.viewerContainer.style.right = controlRight + 'px';\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.width = (this.pdfViewer.element.clientWidth - controlLeft - this.commentPanelContainer.clientWidth) + 'px';\n this.sideBarContentContainer.style.display = 'none';\n this.createSidebarToolBar();\n this.createSidebarTitleCloseButton();\n this.createResizeIcon();\n this.sideBarToolbar.addEventListener('mouseup', this.sideToolbarOnMouseup.bind(this));\n this.sideBarContentContainer.addEventListener('mouseup', this.sideBarTitleOnMouseup.bind(this));\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.adjustPane = function () {\n if (isBlazor()) {\n var splitterElement = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar-splitter');\n var sideToolbarElement = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar');\n var sideToolbarContent = this.pdfViewer.element.querySelector('.e-pv-sidebar-content-container');\n var toolbarContainer = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n var toolbarHeight = toolbarContainer.getBoundingClientRect().height;\n if (toolbarHeight === 0) {\n // eslint-disable-next-line\n toolbarHeight = parseFloat(window.getComputedStyle(toolbarContainer)['height']) + 1;\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n sideToolbarElement.style.top = toolbarHeight + 'px';\n sideToolbarContent.style.top = toolbarHeight + 'px';\n splitterElement.style.top = toolbarHeight + 'px';\n sideToolbarElement.style.height = this.getSideToolbarHeight(toolbarHeight);\n sideToolbarContent.style.height = this.getSideToolbarHeight(toolbarHeight);\n splitterElement.style.height = this.getSideToolbarHeight(toolbarHeight);\n this.pdfViewerBase.viewerContainer.style.height = this.getSideToolbarHeight(toolbarHeight);\n }\n else {\n var splitterElement = this.pdfViewerBase.getElement('_sideBarToolbarSplitter');\n var toolbarContainer = this.pdfViewerBase.getElement('_toolbarContainer');\n var toolbarHeight = toolbarContainer.getBoundingClientRect().height;\n if (toolbarHeight === 0) {\n // eslint-disable-next-line\n toolbarHeight = parseFloat(window.getComputedStyle(toolbarContainer)['height']) + 1;\n }\n // eslint-disable-next-line max-len\n this.sideBarToolbar.style.top = toolbarHeight + 'px';\n this.sideBarContentContainer.style.top = toolbarHeight + 'px';\n splitterElement.style.top = toolbarHeight + 'px';\n }\n };\n NavigationPane.prototype.getSideToolbarHeight = function (toolbarHeight) {\n var height = this.pdfViewer.element.getBoundingClientRect().height;\n return (height !== 0) ? height - toolbarHeight + 'px' : '';\n };\n NavigationPane.prototype.createCommentPanel = function () {\n // eslint-disable-next-line max-len\n this.commentPanelContainer = createElement('div', { id: this.pdfViewer.element.id + '_commantPanel', className: 'e-pv-comment-panel' });\n this.pdfViewerBase.mainContainer.appendChild(this.commentPanelContainer);\n if (this.pdfViewer.enableRtl) {\n this.commentPanelContainer.style.left = 0 + 'px';\n }\n else {\n this.commentPanelContainer.style.right = 0 + 'px';\n }\n this.commentPanelContainer.style.bottom = 0 + 'px';\n this.createCommentPanelTitleContainer();\n this.commentPanelContainer.style.display = 'none';\n // eslint-disable-next-line max-len\n this.commentsContentContainer = createElement('div', { id: this.pdfViewer.element.id + '_commentscontentcontainer', className: 'e-pv-comments-content-container' });\n this.commentPanelContainer.appendChild(this.commentsContentContainer);\n // eslint-disable-next-line max-len\n this.commentPanelResizer = createElement('div', { id: this.pdfViewer.element.id + '_commentPanelResizer', className: 'e-pv-comment-panel-resizer' });\n if (this.pdfViewer.enableRtl) {\n this.commentPanelResizer.classList.add('e-left');\n }\n else {\n this.commentPanelResizer.classList.add('e-right');\n }\n this.commentPanelResizer.style.display = 'none';\n this.commentPanelResizer.addEventListener('mousedown', this.commentPanelMouseDown);\n this.pdfViewerBase.mainContainer.appendChild(this.commentPanelResizer);\n this.createCommentPanelResizeIcon();\n this.createFileElement(this.commentPanelContainer);\n this.createXFdfFileElement(this.commentPanelContainer);\n };\n NavigationPane.prototype.createCommentPanelTitleContainer = function () {\n // eslint-disable-next-line max-len\n var commentPanelTitleContainer = createElement('div', { id: this.pdfViewer.element.id + '_commentPanelTitleContainer', className: 'e-pv-comment-panel-title-container' });\n // eslint-disable-next-line max-len\n var commentpanelTilte = createElement('div', { id: this.pdfViewer.element.id + '_commentPanelTitle', className: 'e-pv-comment-panel-title', attrs: { 'tabindex': '-1' } });\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Comments');\n promise.then(function (value) {\n commentpanelTilte.innerText = value;\n });\n }\n else {\n commentpanelTilte.innerText = this.pdfViewer.localeObj.getConstant('Comments');\n }\n var annotationButton = createElement('button', { id: this.pdfViewer.element.id + '_annotations_btn' });\n annotationButton.setAttribute('aria-label', 'annotation button');\n annotationButton.setAttribute('type', 'button');\n annotationButton.className = 'e-btn e-pv-tbar-btn e-pv-comment-panel-title-close-div e-btn';\n // eslint-disable-next-line max-len\n var moreOptionButtonSpan = createElement('span', { id: this.pdfViewer.element.id + '_annotation_more_icon', className: 'e-pv-more-icon e-pv-icon' });\n annotationButton.appendChild(moreOptionButtonSpan);\n if (Browser.isDevice && !isBlazor()) {\n var commentCloseIconDiv = createElement('button');\n commentCloseIconDiv.setAttribute('aria-label', 'annotation button');\n commentCloseIconDiv.setAttribute('type', 'button');\n commentCloseIconDiv.style.borderColor = 'transparent';\n commentCloseIconDiv.style.paddingTop = '11px';\n commentCloseIconDiv.style.paddingBottom = '11px';\n commentCloseIconDiv.style.backgroundColor = '#fafafa';\n commentCloseIconDiv.addEventListener('click', this.closeCommentPanelContainer.bind(this));\n commentpanelTilte.style.left = '37px';\n var commentCloseIcon = createElement('span', { className: 'e-pv-annotation-tools-close-icon e-pv-icon' });\n commentCloseIconDiv.appendChild(commentCloseIcon);\n commentPanelTitleContainer.appendChild(commentCloseIconDiv);\n }\n commentPanelTitleContainer.appendChild(commentpanelTilte);\n commentPanelTitleContainer.appendChild(annotationButton);\n this.commentPanelContainer.appendChild(commentPanelTitleContainer);\n this.createAnnotationContextMenu();\n annotationButton.addEventListener('click', this.openAnnotationContextMenu.bind(this));\n };\n NavigationPane.prototype.createCommentPanelResizeIcon = function () {\n // eslint-disable-next-line max-len\n this.commentPanelResizeIcon = createElement('div', { id: this.pdfViewer.element.id + '_resize', className: 'e-pv-resize-icon e-pv-icon' });\n this.setCommentPanelResizeIconTop();\n this.commentPanelResizeIcon.style.position = 'absolute';\n this.commentPanelResizer.appendChild(this.commentPanelResizeIcon);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.openAnnotationContextMenu = function (event) {\n this.annotationMenuObj.open(event.clientY, event.clientX, event.currentTarget);\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.createAnnotationContextMenu = function () {\n // eslint-disable-next-line max-len\n this.annotationContextMenu = [\n { text: this.pdfViewer.localeObj.getConstant('Export Annotations') },\n { text: this.pdfViewer.localeObj.getConstant('Import Annotations') },\n { text: this.pdfViewer.localeObj.getConstant('Export XFDF') },\n { text: this.pdfViewer.localeObj.getConstant('Import XFDF') }\n ];\n var annotationMenuElement = createElement('ul', { id: this.pdfViewer.element.id + '_annotation_context_menu' });\n this.pdfViewer.element.appendChild(annotationMenuElement);\n this.annotationMenuObj = new Context({\n target: '#' + this.pdfViewer.element.id + '_annotations_btn', items: this.annotationContextMenu,\n select: this.annotationMenuItemSelect.bind(this)\n });\n if (this.pdfViewer.enableRtl) {\n this.annotationMenuObj.enableRtl = true;\n }\n this.annotationMenuObj.appendTo(annotationMenuElement);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.annotationMenuObj.animationSettings.effect = 'ZoomIn';\n }\n else {\n this.annotationMenuObj.animationSettings.effect = 'SlideDown';\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.annotationMenuItemSelect = function (args) {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n if (args.item) {\n switch (args.item.text) {\n case this.pdfViewer.localeObj.getConstant('Export Annotations'):\n this.pdfViewerBase.exportAnnotations(AnnotationDataFormat.Json);\n break;\n case this.pdfViewer.localeObj.getConstant('Import Annotations'):\n this.importAnnotationIconClick(args);\n break;\n case this.pdfViewer.localeObj.getConstant('Export XFDF'):\n this.pdfViewerBase.exportAnnotations(AnnotationDataFormat.Xfdf);\n break;\n case this.pdfViewer.localeObj.getConstant('Import XFDF'):\n this.importXFdfAnnotationIconClick(args);\n break;\n default:\n break;\n }\n }\n };\n NavigationPane.prototype.createFileElement = function (toolbarElement) {\n // eslint-disable-next-line max-len\n this.annotationInputElement = createElement('input', { id: this.pdfViewer.element.id + '_annotationUploadElement', styles: 'position:fixed; left:-100em', attrs: { 'type': 'file', 'aria-label': 'upload elements' } });\n this.annotationInputElement.setAttribute('accept', '.json');\n toolbarElement.appendChild(this.annotationInputElement);\n this.annotationInputElement.addEventListener('change', this.loadImportAnnotation);\n };\n NavigationPane.prototype.createXFdfFileElement = function (toolbarElement) {\n // eslint-disable-next-line max-len\n this.annotationXFdfInputElement = createElement('input', { id: this.pdfViewer.element.id + '_annotationXFdfUploadElement', styles: 'position:fixed; left:-100em', attrs: { 'type': 'file', 'aria-label': 'upload elements' } });\n this.annotationXFdfInputElement.setAttribute('accept', '.xfdf');\n toolbarElement.appendChild(this.annotationXFdfInputElement);\n this.annotationXFdfInputElement.addEventListener('change', this.loadImportAnnotation);\n };\n NavigationPane.prototype.importAnnotationIconClick = function (args) {\n this.annotationInputElement.click();\n };\n NavigationPane.prototype.importXFdfAnnotationIconClick = function (args) {\n this.annotationXFdfInputElement.click();\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.closeCommentPanelContainer = function () {\n var proxy = null;\n proxy = this;\n var viewerContainer = document.getElementById(this.pdfViewer.element.id + '_viewerContainer');\n var pageContainer = document.getElementById(this.pdfViewer.element.id + '_pageViewContainer');\n var commentPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentPanel) {\n commentPanel.style.display = 'none';\n if (proxy.commentPanelResizer) {\n proxy.commentPanelResizer.style.display = 'none';\n }\n if (viewerContainer) {\n if (this.pdfViewer.enableRtl) {\n viewerContainer.style.left = proxy.getViewerContainerRight() + 'px';\n }\n else {\n viewerContainer.style.right = proxy.getViewerContainerRight() + 'px';\n }\n // eslint-disable-next-line max-len\n viewerContainer.style.width = (proxy.pdfViewer.element.clientWidth - proxy.getViewerContainerLeft() - proxy.getViewerContainerRight()) + 'px';\n pageContainer.style.width = (proxy.pdfViewerBase.viewerContainer.offsetWidth - proxy.getViewerContainerScrollbarWidth()) + 'px';\n }\n if (proxy.pdfViewerBase) {\n proxy.pdfViewerBase.updateZoomValue();\n }\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (Browser.isDevice && !isBlazor()) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.element.style.display = 'block';\n if (this.pdfViewer.toolbarModule.annotationToolbarModule.propertyToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.propertyToolbar.element.style.display = 'block';\n }\n }\n }\n }\n };\n /**\n * @private\n * @param {string} option - The option.\n * @returns {void}\n */\n NavigationPane.prototype.createNavigationPaneMobile = function (option) {\n var _this = this;\n this.isNavigationToolbarVisible = true;\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_navigationToolbar', className: 'e-pv-nav-toolbar' });\n this.pdfViewerBase.viewerMainContainer.insertBefore(this.toolbarElement, this.pdfViewerBase.viewerContainer);\n var items;\n if (option === 'search') {\n var searchTemplate = '
    ';\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { template: searchTemplate },\n {\n prefixIcon: 'e-pv-search-icon e-pv-icon', id: this.pdfViewer.element.id + '_search_box-icon',\n click: function () {\n var iconElement = _this.pdfViewerBase.getElement('_search_box-icon').firstElementChild;\n if (iconElement.classList.contains('e-pv-search-close')) {\n _this.enableSearchItems(false);\n }\n _this.pdfViewer.textSearchModule.searchButtonClick(iconElement, _this.searchInput);\n }\n },\n {\n prefixIcon: 'e-pv-prev-search-icon e-pv-icon', id: this.pdfViewer.element.id + '_prev_occurrence',\n click: function (args) {\n _this.pdfViewer.textSearchModule.searchPrevious();\n }\n },\n {\n prefixIcon: 'e-pv-next-search-icon e-pv-icon', id: this.pdfViewer.element.id + '_next_occurrence',\n click: function (args) {\n _this.pdfViewer.textSearchModule.searchNext();\n }\n }\n ];\n }\n else {\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { text: this.pdfViewer.localeObj.getConstant('Bookmarks') }\n ];\n }\n this.toolbar = new Tool({ items: items, width: '', height: '', overflowMode: 'Popup' });\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.toolbarElement);\n if (option === 'search') {\n this.initiateSearchBox();\n }\n else {\n this.initiateBookmarks();\n }\n };\n NavigationPane.prototype.initiateSearchBox = function () {\n var _this = this;\n this.searchInput = this.pdfViewerBase.getElement('_search_input');\n this.pdfViewer.textSearchModule.searchBtn = this.pdfViewerBase.getElement('_search_box-icon').firstElementChild;\n this.searchInput.addEventListener('keyup', function (event) {\n _this.enableSearchItems(true);\n var searchString = _this.searchInput.value;\n if (event.which === 13) {\n _this.initiateTextSearch();\n }\n else {\n _this.pdfViewer.textSearchModule.resetVariables();\n }\n });\n this.pdfViewer.textSearchModule.searchInput = this.searchInput;\n this.setSearchInputWidth();\n this.enableSearchItems(false);\n this.searchInput.focus();\n };\n NavigationPane.prototype.enableSearchItems = function (isEnable) {\n if (!isBlazor()) {\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_prev_occurrence').parentElement, isEnable);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_next_occurrence').parentElement, isEnable);\n }\n else {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableSearchItems', isEnable);\n }\n };\n NavigationPane.prototype.initiateBookmarks = function () {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewerBase.mobileScrollerContainer.style.display = 'none';\n // eslint-disable-next-line\n var mobileTool = document.querySelectorAll('.e-pv-mobile-annotation-toolbar');\n for (var i = 0; i < mobileTool.length; i++) {\n mobileTool[i].style.display = 'none';\n }\n }\n // eslint-disable-next-line max-len\n var bookmarkContainer = createElement('div', { id: this.pdfViewer.element.id + '_bookmarks_container', className: 'e-pv-bookmark-container' });\n bookmarkContainer.style.width = '100%';\n bookmarkContainer.style.height = this.pdfViewerBase.viewerContainer.style.height;\n this.pdfViewerBase.getElement('_viewerMainContainer').appendChild(bookmarkContainer);\n this.pdfViewerBase.viewerContainer.style.display = 'none';\n this.isBookmarkListOpen = true;\n this.pdfViewer.bookmarkViewModule.renderBookmarkContentMobile();\n };\n NavigationPane.prototype.initiateTextSearch = function () {\n var inputString = this.searchInput.value;\n this.pdfViewer.textSearchModule.initiateSearch(inputString);\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.goBackToToolbar = function () {\n this.isNavigationToolbarVisible = false;\n if (isBlazor() && (!Browser.isDevice || this.pdfViewer.enableDesktopMode) || !isBlazor()) {\n this.pdfViewer.textSearchModule.cancelTextSearch();\n }\n this.searchInput = null;\n if (this.pdfViewer.bookmarkViewModule.childNavigateCount !== 0) {\n this.pdfViewer.bookmarkViewModule.bookmarkList.back();\n this.pdfViewer.bookmarkViewModule.childNavigateCount--;\n }\n else {\n if (this.toolbar != null) {\n this.toolbar.destroy();\n this.toolbar = null;\n }\n var bookmarkContainer = this.pdfViewerBase.getElement('_bookmarks_container');\n if (bookmarkContainer) {\n bookmarkContainer.parentElement.removeChild(bookmarkContainer);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewerBase.mobileScrollerContainer.style.display = '';\n }\n }\n if (this.toolbarElement && this.toolbarElement.parentElement != null) {\n this.toolbarElement.parentElement.removeChild(this.toolbarElement);\n }\n this.pdfViewerBase.viewerContainer.style.display = 'block';\n this.isBookmarkListOpen = false;\n if (!isBlazor()) {\n if (!this.pdfViewer.toolbar.annotationToolbarModule.isMobileAnnotEnabled) {\n this.pdfViewer.toolbarModule.showToolbar(true);\n }\n }\n else {\n this.pdfViewerBase.onWindowResize();\n }\n }\n };\n NavigationPane.prototype.setSearchInputWidth = function () {\n var searchInputParent = this.searchInput.parentElement;\n var padding = window.getComputedStyle(searchInputParent.parentElement, null).getPropertyValue('padding-left');\n if (isBlazor() && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n this.toolbarElement = this.pdfViewerBase.getElement('_navigationToolbar');\n }\n // eslint-disable-next-line max-len\n var width = this.toolbarElement.clientWidth - this.getParentElementSearchBox('_backward').clientWidth\n - this.getParentElementSearchBox('_search_box-icon').clientWidth - this.getParentElementSearchBox('_prev_occurrence').clientWidth\n - this.getParentElementSearchBox('_next_occurrence').clientWidth - 6;\n if (padding !== '') {\n width = width - (parseFloat(padding) * 2);\n }\n searchInputParent.style.width = width + 'px';\n };\n NavigationPane.prototype.getParentElementSearchBox = function (idString) {\n return this.pdfViewerBase.getElement(idString).parentElement;\n };\n /**\n * @private\n * @param {string} text - The text.\n * @returns {void}\n */\n NavigationPane.prototype.createTooltipMobile = function (text) {\n if (!this.isTooltipCreated) {\n //boolean to prevent again toast creation.\n this.createMobileTooltip(text);\n }\n else {\n if (this.toastObject) {\n this.toastObject.title = text;\n var tooltipElement = this.pdfViewerBase.getElement('_container_tooltip');\n var tooltipChild = tooltipElement.firstElementChild;\n if (tooltipChild) {\n tooltipChild.style.width = 'auto';\n tooltipChild.firstElementChild.firstElementChild.textContent = text;\n }\n else {\n this.isTooltipCreated = false;\n var tooltipElement_1 = this.pdfViewerBase.getElement('_container_tooltip');\n if (this.toastObject) {\n this.toastObject.destroy();\n }\n tooltipElement_1.parentElement.removeChild(tooltipElement_1);\n this.toastObject = null;\n this.createMobileTooltip(text);\n }\n }\n }\n };\n NavigationPane.prototype.createMobileTooltip = function (text) {\n // eslint-disable-next-line max-len\n var tooltipDiv = createElement('div', { className: 'e-pv-container-tooltip', id: this.pdfViewer.element.id + '_container_tooltip' });\n this.pdfViewer.element.appendChild(tooltipDiv);\n // eslint-disable-next-line max-len\n this.toastObject = new Toast({ title: text, target: this.pdfViewer.element, close: this.onTooltipClose.bind(this), position: { X: 0, Y: 0 }, animation: { hide: { duration: 200, effect: 'FadeOut' } } });\n this.toastObject.appendTo(tooltipDiv);\n var y = this.pdfViewer.element.clientHeight * 0.65;\n var x = (this.pdfViewer.element.clientWidth - tooltipDiv.clientWidth) / 2;\n this.isTooltipCreated = true;\n this.toastObject.show({ position: { X: x, Y: y } });\n var tooltipChild = tooltipDiv.firstElementChild;\n if (tooltipChild) {\n tooltipChild.style.width = 'auto';\n }\n };\n NavigationPane.prototype.onTooltipClose = function (args) {\n if (this.pdfViewer.textSearchModule) {\n this.isTooltipCreated = false;\n var tooltipElement = this.pdfViewerBase.getElement('_container_tooltip');\n this.pdfViewer.textSearchModule.isMessagePopupOpened = false;\n if (this.toastObject) {\n this.toastObject.destroy();\n }\n tooltipElement.parentElement.removeChild(tooltipElement);\n this.toastObject = null;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.toolbarResize = function () {\n if (this.searchInput) {\n this.searchInput.style.width = 'auto';\n this.setSearchInputWidth();\n }\n };\n NavigationPane.prototype.createSidebarToolBar = function () {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n this.thumbnailButton = createElement('button', { id: this.pdfViewer.element.id + '_thumbnail-view', attrs: { 'disabled': 'disabled', 'aria-label': 'Page Thumbnails', 'tabindex': '-1' } });\n this.thumbnailButton.className = 'e-pv-tbar-btn e-pv-thumbnail-view-button e-btn';\n this.thumbnailButton.setAttribute('type', 'button');\n // eslint-disable-next-line max-len\n var thumbnailButtonSpan = createElement('span', { id: this.pdfViewer.element.id + '_thumbnail-view' + '_icon', className: 'e-pv-thumbnail-view-disable-icon e-pv-icon' });\n this.thumbnailButton.appendChild(thumbnailButtonSpan);\n // eslint-disable-next-line max-len\n var thumbnailTooltip = new Tooltip({ content: this.pdfViewer.localeObj.getConstant('Page Thumbnails'), opensOn: 'Hover', beforeOpen: this.onTooltipBeforeOpen.bind(this) });\n thumbnailTooltip.appendTo(this.thumbnailButton);\n // eslint-disable-next-line max-len\n this.bookmarkButton = createElement('button', { id: this.pdfViewer.element.id + '_bookmark', attrs: { 'disabled': 'disabled', 'aria-label': 'Bookmarks', 'tabindex': '-1' } });\n this.bookmarkButton.setAttribute('type', 'button');\n this.bookmarkButton.className = 'e-pv-tbar-btn e-pv-bookmark-button e-btn';\n // eslint-disable-next-line max-len\n var buttonSpan = createElement('span', { id: this.pdfViewer.element.id + '_bookmark' + '_icon', className: 'e-pv-bookmark-disable-icon e-pv-icon' });\n this.bookmarkButton.appendChild(buttonSpan);\n // eslint-disable-next-line max-len\n var bookMarkTooltip = new Tooltip({ content: this.pdfViewer.localeObj.getConstant('Bookmarks'), opensOn: 'Hover', beforeOpen: this.onTooltipBeforeOpen.bind(this) });\n bookMarkTooltip.appendTo(this.bookmarkButton);\n this.sideBarToolbar.appendChild(this.thumbnailButton);\n this.sideBarToolbar.appendChild(this.bookmarkButton);\n }\n else {\n this.thumbnailButton = this.pdfViewer.element.querySelector('.e-pv-thumbnail-view-button');\n this.bookmarkButton = this.pdfViewer.element.querySelector('.e-pv-bookmark-button');\n }\n this.thumbnailButton.addEventListener('click', this.sideToolbarOnClick);\n this.bookmarkButton.addEventListener('click', this.bookmarkButtonOnClick);\n };\n NavigationPane.prototype.onTooltipBeforeOpen = function (args) {\n if (!this.pdfViewer.toolbarSettings.showTooltip) {\n args.cancel = true;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.enableThumbnailButton = function () {\n if (this.thumbnailButton) {\n this.thumbnailButton.removeAttribute('disabled');\n this.thumbnailButton.children[0].classList.remove('e-pv-thumbnail-view-disable-icon');\n this.thumbnailButton.children[0].classList.add('e-pv-thumbnail-view-icon');\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.enableBookmarkButton = function () {\n if (this.bookmarkButton) {\n this.bookmarkButton.removeAttribute('disabled');\n this.bookmarkButton.children[0].classList.remove('e-pv-bookmark-disable-icon');\n this.bookmarkButton.children[0].classList.add('e-pv-bookmark-icon');\n }\n };\n NavigationPane.prototype.createSidebarTitleCloseButton = function () {\n this.closeDiv = createElement('button', { id: this.pdfViewer.element.id + '_close_btn' });\n this.closeDiv.setAttribute('aria-label', 'close button');\n this.closeDiv.setAttribute('type', 'button');\n this.closeDiv.className = 'e-btn e-pv-tbar-btn e-pv-title-close-div e-btn';\n if (this.pdfViewer.enableRtl) {\n this.closeDiv.style.left = 8 + 'px';\n }\n else {\n this.closeDiv.style.left = this.closeButtonLeft + 'px';\n }\n // eslint-disable-next-line max-len\n var buttonSpan = createElement('span', { id: this.pdfViewer.element.id + '_close' + '_icon', className: 'e-pv-title-close-icon e-pv-icon' });\n this.closeDiv.appendChild(buttonSpan);\n this.sideBarTitleContainer.appendChild(this.closeDiv);\n this.closeDiv.addEventListener('click', this.sideToolbarOnClose);\n };\n NavigationPane.prototype.createResizeIcon = function () {\n // eslint-disable-next-line max-len\n this.resizeIcon = createElement('div', { id: this.pdfViewer.element.id + '_resize', className: 'e-pv-resize-icon e-pv-icon' });\n this.setResizeIconTop();\n this.resizeIcon.style.position = 'absolute';\n this.resizeIcon.addEventListener('click', this.sideToolbarOnClose);\n this.resizeIcon.addEventListener('mouseover', this.resizeIconMouseOver);\n this.sideBarResizer.appendChild(this.resizeIcon);\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.setResizeIconTop = function () {\n // eslint-disable-next-line max-len\n if (this.sideBarToolbar && this.sideBarToolbar.clientHeight && this.resizeIcon.style.top === '') {\n this.resizeIcon.style.top = (this.sideBarToolbar.clientHeight) / 2 + 'px';\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.setCommentPanelResizeIconTop = function () {\n // eslint-disable-next-line max-len\n if (this.commentPanelContainer && this.commentPanelContainer.clientHeight && this.commentPanelResizeIcon && this.commentPanelResizeIcon.style.top === '') {\n this.commentPanelResizeIcon.style.top = (this.commentPanelContainer.clientHeight) / 2 + 'px';\n }\n };\n Object.defineProperty(NavigationPane.prototype, \"outerContainerWidth\", {\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n get: function () {\n if (!this.mainContainerWidth) {\n this.mainContainerWidth = this.pdfViewerBase.mainContainer.clientWidth;\n }\n return this.mainContainerWidth;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n NavigationPane.prototype.getViewerContainerScrollbarWidth = function () {\n // eslint-disable-next-line max-len\n return (this.pdfViewerBase.viewerContainer.offsetWidth + this.pdfViewerBase.viewerContainer.offsetLeft) - (this.pdfViewerBase.viewerContainer.clientWidth + this.pdfViewerBase.viewerContainer.offsetLeft);\n };\n Object.defineProperty(NavigationPane.prototype, \"sideToolbarWidth\", {\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n get: function () {\n if (this.sideBarToolbar) {\n return this.sideBarToolbar.clientWidth;\n }\n else {\n return 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigationPane.prototype, \"sideBarContentContainerWidth\", {\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n get: function () {\n if (this.sideBarContentContainer) {\n return this.sideBarContentContainer.clientWidth;\n }\n else {\n return 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigationPane.prototype, \"commentPanelContainerWidth\", {\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n get: function () {\n if (this.commentPanelContainer) {\n return this.commentPanelContainer.offsetWidth;\n }\n else {\n return 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.updateViewerContainerOnClose = function () {\n var proxy = null;\n proxy = this;\n if (proxy.sideBarContentContainer) {\n proxy.sideBarContentContainer.style.display = 'none';\n if (this.pdfViewer.enableRtl) {\n proxy.pdfViewerBase.viewerContainer.style.right = (proxy.sideToolbarWidth) + 'px';\n }\n else {\n proxy.pdfViewerBase.viewerContainer.style.left = (proxy.sideToolbarWidth) + 'px';\n }\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.width = (proxy.pdfViewer.element.clientWidth - proxy.sideToolbarWidth - proxy.getViewerContainerRight()) + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.pageContainer.style.width = (proxy.pdfViewerBase.viewerContainer.offsetWidth - proxy.getViewerContainerScrollbarWidth()) + 'px';\n if (this.restrictUpdateZoomValue) {\n proxy.pdfViewerBase.updateZoomValue();\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.updateViewerContainerOnExpand = function () {\n var proxy = null;\n proxy = this;\n if (proxy.sideBarContentContainer) {\n proxy.sideBarContentContainer.style.display = 'block';\n if (this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerLeft() + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerLeft() + 'px';\n }\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.width = (proxy.pdfViewer.element.clientWidth - this.getViewerContainerLeft() - this.getViewerContainerRight()) + 'px';\n proxy.pdfViewerBase.pageContainer.style.width = proxy.pdfViewerBase.viewerContainer.clientWidth + 'px';\n proxy.pdfViewerBase.updateZoomValue();\n if (proxy.pdfViewer.enableThumbnail) {\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.pdfViewerBase.currentPageNumber - 1);\n }\n }\n };\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n NavigationPane.prototype.getViewerContainerLeft = function () {\n if (this.sideToolbarWidth) {\n return (this.sideToolbarWidth + this.sideBarContentContainerWidth);\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n NavigationPane.prototype.getViewerContainerRight = function () {\n if (this.commentPanelResizer) {\n return (this.commentPanelContainerWidth + this.commentPanelResizer.clientWidth);\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n NavigationPane.prototype.getViewerMainContainerWidth = function () {\n return this.pdfViewer.element.clientWidth - this.sideToolbarWidth;\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.setThumbnailSelectionIconTheme = function () {\n if (this.thumbnailButton) {\n this.thumbnailButton.children[0].classList.remove('e-pv-thumbnail-view-icon');\n this.thumbnailButton.children[0].classList.add('e-pv-thumbnail-view-selection-icon');\n this.thumbnailButton.classList.add('e-pv-thumbnail-view-button-selection');\n }\n };\n NavigationPane.prototype.removeThumbnailSelectionIconTheme = function () {\n if (this.thumbnailButton && this.thumbnailButton.children[0]) {\n this.thumbnailButton.children[0].classList.add('e-pv-thumbnail-view-icon');\n this.thumbnailButton.children[0].classList.remove('e-pv-thumbnail-view-selection-icon');\n this.thumbnailButton.classList.remove('e-pv-thumbnail-view-button-selection');\n }\n };\n NavigationPane.prototype.resetThumbnailIcon = function () {\n if (this.thumbnailButton && this.thumbnailButton.children[0]) {\n this.thumbnailButton.children[0].classList.remove('e-pv-thumbnail-view-icon');\n this.thumbnailButton.children[0].classList.add('e-pv-thumbnail-view-disable-icon');\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.resetThumbnailView = function () {\n if (this.sideBarContentContainer) {\n this.sideBarContentContainer.style.display = 'none';\n if (this.pdfViewer.enableRtl) {\n this.pdfViewerBase.viewerContainer.style.left = 1 + 'px';\n }\n else {\n this.pdfViewerBase.viewerContainer.style.left = (this.sideToolbarWidth) + 'px';\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.width = (this.pdfViewer.element.clientWidth - this.sideToolbarWidth - this.getViewerContainerRight()) + 'px';\n if (this.pdfViewerBase.pageContainer) {\n this.pdfViewerBase.pageContainer.style.width = this.pdfViewerBase.viewerContainer.clientWidth + 'px';\n }\n this.thumbnailButton.setAttribute('disabled', 'disabled');\n this.removeThumbnailSelectionIconTheme();\n this.resetThumbnailIcon();\n }\n };\n NavigationPane.prototype.setBookmarkSelectionIconTheme = function () {\n if (this.bookmarkButton) {\n this.bookmarkButton.children[0].classList.remove('e-pv-bookmark-icon');\n this.bookmarkButton.children[0].classList.add('e-pv-bookmark-selection-icon');\n this.bookmarkButton.classList.add('e-pv-bookmark-button-selection');\n }\n };\n NavigationPane.prototype.removeBookmarkSelectionIconTheme = function () {\n if (this.bookmarkButton && this.bookmarkButton.children[0]) {\n this.bookmarkButton.children[0].classList.add('e-pv-bookmark-icon');\n this.bookmarkButton.children[0].classList.remove('e-pv-bookmark-selection-icon');\n this.bookmarkButton.classList.remove('e-pv-bookmark-button-selection');\n }\n };\n NavigationPane.prototype.sideToolbarOnMouseup = function (event) {\n if (event.target === this.sideBarToolbar) {\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n NavigationPane.prototype.sideBarTitleOnMouseup = function (event) {\n this.pdfViewerBase.focusViewerContainer();\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.openBookmarkcontentInitially = function () {\n var proxy = null;\n proxy = this;\n if (document.getElementById(this.pdfViewer.element.id + '_thumbnail_view')) {\n document.getElementById(this.pdfViewer.element.id + '_thumbnail_view').style.display = 'none';\n }\n this.removeThumbnailSelectionIconTheme();\n this.sideBarTitle.textContent = this.pdfViewer.localeObj.getConstant('Bookmarks');\n this.sideBarContent.setAttribute('aria-label', 'Bookmark View Panel');\n this.pdfViewer.bookmarkViewModule.renderBookmarkcontent();\n if (this.sideBarContentContainer) {\n if (proxy.sideBarContentContainer.style.display !== 'none') {\n if (this.isThumbnailOpen) {\n this.setBookmarkSelectionIconTheme();\n this.isBookmarkOpen = true;\n this.updateViewerContainerOnExpand();\n }\n else {\n this.removeBookmarkSelectionIconTheme();\n this.isBookmarkOpen = false;\n this.updateViewerContainerOnClose();\n }\n }\n else {\n this.sideBarContent.focus();\n this.setBookmarkSelectionIconTheme();\n this.isBookmarkOpen = true;\n this.updateViewerContainerOnExpand();\n }\n }\n this.isThumbnailOpen = false;\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.disableBookmarkButton = function () {\n if (this.sideBarContentContainer && this.bookmarkButton && this.bookmarkButton.children[0]) {\n this.sideBarContentContainer.style.display = 'none';\n this.bookmarkButton.setAttribute('disabled', 'disabled');\n this.bookmarkButton.children[0].classList.add('e-pv-bookmark-disable-icon');\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.clear = function () {\n if (!Browser.isDevice) {\n this.removeBookmarkSelectionIconTheme();\n this.removeThumbnailSelectionIconTheme();\n this.closeCommentPanelContainer();\n }\n if (this.commentsContentContainer) {\n this.commentsContentContainer.innerHTML = '';\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.destroy = function () {\n var bookmarkButtonInstance = this.bookmarkButton;\n var thumbnailButtonInstance = this.thumbnailButton;\n if (bookmarkButtonInstance && bookmarkButtonInstance.ej2_instances && bookmarkButtonInstance.ej2_instances.length > 0) {\n bookmarkButtonInstance.ej2_instances[0].destroy();\n }\n if (thumbnailButtonInstance && thumbnailButtonInstance.ej2_instances && thumbnailButtonInstance.ej2_instances.length > 0) {\n thumbnailButtonInstance.ej2_instances[0].destroy();\n }\n if (this.annotationMenuObj) {\n var annotationMenuElement = this.annotationMenuObj.element;\n annotationMenuElement && annotationMenuElement.ej2_instances && annotationMenuElement.ej2_instances.length > 0 ? this.annotationMenuObj.destroy() : null;\n }\n };\n /**\n * @returns {string} - Returns the string.\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'NavigationPane';\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Size } from './../primitives/size';\nimport { pathSegmentCollection, getRectanglePath, processPathData } from './../utility/path-util';\n// import { overFlow } from './../utility/base-util';\nimport { createHtmlElement } from './../utility/dom-util';\n/**\n * Canvas Renderer\n */\n/** @private */\nvar CanvasRenderer = /** @class */ (function () {\n function CanvasRenderer() {\n }\n /** @private */\n CanvasRenderer.getContext = function (canvas) {\n return canvas.getContext('2d');\n };\n CanvasRenderer.prototype.setStyle = function (canvas, style) {\n var ctx = CanvasRenderer.getContext(canvas);\n if (style.fill === 'none') {\n style.fill = 'transparent';\n }\n if (style.stroke === 'none') {\n style.stroke = 'transparent';\n }\n ctx.strokeStyle = style.stroke;\n style.strokeWidth > 1 ? ctx.lineWidth = style.strokeWidth : ctx.lineWidth = ctx.lineWidth;\n if (style.strokeWidth === 0) {\n ctx.strokeStyle = 'transparent';\n }\n ctx.globalAlpha = style.opacity;\n var dashArray = [];\n if (style.dashArray) {\n dashArray = this.parseDashArray(style.dashArray);\n }\n ctx.setLineDash(dashArray);\n ctx.fillStyle = style.fill;\n };\n CanvasRenderer.prototype.rotateContext = function (canvas, angle, x, y) {\n var ctx = CanvasRenderer.getContext(canvas);\n ctx.translate(x, y);\n ctx.rotate(angle * Math.PI / 180);\n ctx.translate(-x, -y);\n };\n CanvasRenderer.prototype.setFontStyle = function (canvas, text) {\n var ctx = CanvasRenderer.getContext(canvas);\n var font = '';\n if (text.italic) {\n font += 'italic ';\n }\n if (text.bold) {\n font += 'bold ';\n }\n font += (text.fontSize) + 'px ';\n font += text.fontFamily;\n ctx.font = font;\n };\n /** @private */\n CanvasRenderer.prototype.parseDashArray = function (dashArray) {\n var dashes = [];\n var separator = dashArray.indexOf(' ') !== -1 ? ' ' : ',';\n var splittedDashes = dashArray.split(separator);\n for (var _i = 0, splittedDashes_1 = splittedDashes; _i < splittedDashes_1.length; _i++) {\n var i = splittedDashes_1[_i];\n dashes.push(Number(i));\n }\n return dashes;\n };\n //Rendering Part\n /** @private */\n CanvasRenderer.prototype.drawRectangle = function (canvas, options) {\n if (options.visible === true) {\n if (options.cornerRadius) {\n options.data = getRectanglePath(options.cornerRadius, options.height, options.width);\n this.drawPath(canvas, options);\n }\n else {\n var ctx = CanvasRenderer.getContext(canvas);\n ctx.save();\n ctx.beginPath();\n var cornerRadius = options.cornerRadius;\n var pivotX = options.x + options.width * options.pivotX;\n var pivotY = options.y + options.height * options.pivotY;\n this.rotateContext(canvas, options.angle, pivotX, pivotY);\n this.setStyle(canvas, options);\n ctx.rect(options.x, options.y, options.width, options.height);\n ctx.fillRect(options.x, options.y, options.width, options.height);\n ctx.fill();\n ctx.stroke();\n ctx.closePath();\n ctx.restore();\n }\n }\n };\n /** @private */\n CanvasRenderer.prototype.drawPath = function (canvas, options) {\n var collection = [];\n collection = processPathData(options.data);\n collection = pathSegmentCollection(collection);\n var ctx = CanvasRenderer.getContext(canvas);\n ctx.save();\n ctx.beginPath();\n var pivotY = options.y + options.height * options.pivotY;\n var pivotX = options.x + options.width * options.pivotX;\n this.rotateContext(canvas, options.angle, pivotX, pivotY);\n this.setStyle(canvas, options);\n ctx.translate(options.x, options.y);\n this.renderPath(canvas, options, collection);\n ctx.fill();\n ctx.translate(-options.x, -options.y);\n ctx.stroke();\n ctx.restore();\n };\n /** @private */\n CanvasRenderer.prototype.renderPath = function (canvas, options, collection) {\n if (options.visible === true) {\n var ctx = CanvasRenderer.getContext(canvas);\n var x0 = void 0;\n var y0 = void 0;\n var x1 = void 0;\n var y1 = void 0;\n var x2 = void 0;\n var y2 = void 0;\n var x = void 0;\n var y = void 0;\n var length_1;\n var i = void 0;\n var newSeg = void 0;\n var segs = collection;\n for (x = 0, y = 0, i = 0, length_1 = segs.length; i < length_1; ++i) {\n var obj = segs[i];\n var seg = obj;\n var char = seg.command;\n if ('x1' in seg) {\n x1 = seg.x1;\n }\n if ('x2' in seg) {\n x2 = seg.x2;\n }\n if ('y1' in seg) {\n y1 = seg.y1;\n }\n if ('y2' in seg) {\n y2 = seg.y2;\n }\n if ('x' in seg) {\n x = seg.x;\n }\n if ('y' in seg) {\n y = seg.y;\n }\n switch (char) {\n case 'M':\n ctx.moveTo(x, y);\n seg.x = x;\n seg.y = y;\n break;\n case 'L':\n ctx.lineTo(x, y);\n seg.x = x;\n seg.y = y;\n break;\n case 'C':\n ctx.bezierCurveTo(x1, y1, x2, y2, x, y);\n seg.x = x;\n seg.y = y;\n seg.x1 = x1;\n seg.y1 = y1;\n seg.x2 = x2;\n seg.y2 = y2;\n break;\n case 'Q':\n ctx.quadraticCurveTo(x1, y1, x, y);\n seg.x = x;\n seg.y = y;\n seg.x1 = x1;\n seg.y1 = y1;\n break;\n case 'A':\n var curr = { x: x0, y: y0 };\n var rx = seg.r1;\n var ry = seg.r2;\n var xAxisRotation = seg.angle * (Math.PI / 180.0);\n var largeArc = seg.largeArc;\n var sweep = seg.sweep;\n var cp = { x: x, y: y };\n var currp = {\n x: Math.cos(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.sin(xAxisRotation) * (curr.y - cp.y) / 2.0,\n y: -Math.sin(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.cos(xAxisRotation) * (curr.y - cp.y) / 2.0\n };\n var l = Math.pow(currp.x, 2) / Math.pow(rx, 2) + Math.pow(currp.y, 2) / Math.pow(ry, 2);\n if (l > 1) {\n rx *= Math.sqrt(l);\n ry *= Math.sqrt(l);\n }\n var k = (Math.pow(ry, 2) * Math.pow(currp.x, 2));\n var s = (largeArc === sweep ? -1 : 1) * Math.sqrt(((Math.pow(rx, 2) * Math.pow(ry, 2)) - (Math.pow(rx, 2) * Math.pow(currp.y, 2)) - k) /\n (Math.pow(rx, 2) * Math.pow(currp.y, 2) + Math.pow(ry, 2) * Math.pow(currp.x, 2)));\n if (isNaN(s)) {\n s = 0;\n }\n var cpp = { x: s * rx * currp.y / ry, y: s * -ry * currp.x / rx };\n var centp = {\n x: (curr.x + cp.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y,\n y: (curr.y + cp.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y\n };\n var a1 = this.a([1, 0], [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry]);\n var u = [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry];\n var v = [(-currp.x - cpp.x) / rx, (-currp.y - cpp.y) / ry];\n var ad = this.a(u, v);\n if (this.r(u, v) <= -1) {\n ad = Math.PI;\n }\n if (this.r(u, v) >= 1) {\n ad = 0;\n }\n var dir = !sweep ? -1.0 : 1.0;\n var ah = a1 + dir * (ad / 2.0);\n var halfWay = {\n x: centp.x + rx * Math.cos(ah),\n y: centp.y + ry * Math.sin(ah)\n };\n seg.centp = centp;\n seg.xAxisRotation = xAxisRotation;\n seg.rx = rx;\n seg.ry = ry;\n seg.a1 = a1;\n seg.ad = ad;\n seg.sweep = sweep;\n if (ctx != null) {\n var ra = rx > ry ? rx : ry;\n var sx = rx > ry ? 1 : rx / ry;\n var sy = rx > ry ? ry / rx : 1;\n ctx.save();\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, ra, a1, a1 + ad, !sweep);\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n ctx.restore();\n }\n break;\n case 'Z':\n case 'z':\n ctx.closePath();\n x = x0;\n y = y0;\n break;\n }\n x0 = x;\n y0 = y;\n }\n }\n };\n /** @private */\n CanvasRenderer.prototype.drawText = function (canvas, options) {\n if (options.content && options.visible === true) {\n var ctx = CanvasRenderer.getContext(canvas);\n ctx.save();\n this.setStyle(canvas, options);\n var pivotX = options.x + options.width * options.pivotX;\n var pivotY = options.y + options.height * options.pivotY;\n this.rotateContext(canvas, options.angle, pivotX, pivotY);\n this.setFontStyle(canvas, options);\n var i = 0;\n var childNodes = [];\n childNodes = options.childNodes;\n var wrapBounds = options.wrapBounds;\n ctx.fillStyle = options.color;\n if (wrapBounds) {\n var position = this.labelAlign(options, wrapBounds, childNodes);\n for (i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n var offsetX = position.x + child.x - wrapBounds.x;\n var offsetY = position.y + child.dy * i + ((options.fontSize) * 0.8);\n // if (wrapBounds.width > options.width && options.textOverflow !== 'Wrap') {\n // child.text = overFlow(child.text, options);\n // }\n ctx.fillText(child.text, offsetX, offsetY);\n if (options.textDecoration === 'Underline'\n || options.textDecoration === 'Overline'\n || options.textDecoration === 'LineThrough') {\n var startPointX = offsetX;\n var startPointY = void 0;\n var textlength = ctx.measureText(child.text).width;\n var endPointX = offsetX + textlength;\n var endPointY = void 0;\n switch (options.textDecoration) {\n case 'Underline':\n startPointY = offsetY + 2;\n endPointY = offsetY + 2;\n break;\n case 'Overline':\n startPointY = (position.y + child.dy * i);\n endPointY = (position.y + child.dy * i);\n break;\n case 'LineThrough':\n startPointY = ((offsetY + position.y + child.dy * i) / 2) + 2;\n endPointY = ((offsetY + position.y + child.dy * i) / 2) + 2;\n }\n ctx.beginPath();\n ctx.moveTo(startPointX, startPointY);\n ctx.lineTo(endPointX, endPointY);\n ctx.strokeStyle = options.color;\n ctx.lineWidth = options.fontSize * .08;\n ctx.globalAlpha = options.opacity;\n ctx.stroke();\n }\n }\n }\n ctx.restore();\n }\n };\n //end region\n // vector magnitude\n CanvasRenderer.prototype.m = function (v) { return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2)); };\n // ratio between two vectors\n CanvasRenderer.prototype.r = function (u, v) { return (u[0] * v[0] + u[1] * v[1]) / (this.m(u) * this.m(v)); };\n // angle between two vectors\n CanvasRenderer.prototype.a = function (u, v) { return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(this.r(u, v)); };\n CanvasRenderer.prototype.getMeetOffset = function (arg, res, dest) {\n var max = Math.max(res, dest);\n var min = Math.min(res, dest);\n switch (arg) {\n case 'min': return 0;\n case 'mid': return (max - min) / 2;\n case 'max': return max - min;\n default: return 0;\n }\n };\n CanvasRenderer.prototype.getSliceOffset = function (arg, res, dest, src) {\n switch (arg) {\n case 'min': return 0;\n case 'mid': return (res - dest) / 2 * src / res;\n case 'max': return (res - dest) * src / res;\n default: return 0;\n }\n };\n CanvasRenderer.prototype.image = function (ctx, image, x, y, width, height, alignOptions) {\n ctx.beginPath();\n var srcWidth = image.width;\n var srcHeight = image.height;\n var destinationW = width;\n var destinationH = height;\n var resultWidth = 0;\n var resultHeight = 0;\n ctx.globalAlpha = alignOptions.opacity;\n if (alignOptions && alignOptions.alignment !== 'None') {\n var xalign = alignOptions.alignment.toLowerCase().substr(1, 3);\n var yalign = alignOptions.alignment.toLowerCase().substr(5, 3);\n if (alignOptions.scale === 'Slice') {\n var a = function () {\n resultWidth = destinationW;\n resultHeight = srcHeight * destinationW / srcWidth;\n };\n var b = function () {\n resultWidth = srcWidth * destinationH / srcHeight;\n resultHeight = destinationH;\n };\n if (destinationW > destinationH) {\n a();\n if (destinationH > resultHeight) {\n b();\n }\n }\n else if (destinationW === destinationH) {\n if (srcWidth > srcHeight) {\n b();\n }\n else {\n a();\n }\n }\n else {\n b();\n if (destinationW > resultWidth) {\n a();\n }\n }\n var x1 = this.getSliceOffset(xalign, resultWidth, destinationW, srcWidth);\n var y1 = this.getSliceOffset(yalign, resultHeight, destinationH, srcHeight);\n var sWidth = srcWidth - x1;\n var sHeight = srcHeight - y1;\n var dWidth = resultWidth - (x1 * (resultWidth / srcWidth));\n var dHeight = resultHeight - (y1 * (resultHeight / srcHeight));\n var canvas1 = createHtmlElement('canvas', { 'width': width.toString(), 'height': height.toString() });\n var ctx1 = canvas1.getContext('2d');\n ctx1.drawImage(image, x1, y1, sWidth, sHeight, 0, 0, dWidth, dHeight);\n ctx.drawImage(canvas1, x, y, width, height);\n }\n else if (alignOptions.scale === 'Meet') {\n var srcRatio = (srcHeight / srcWidth);\n var destRatio = (destinationH / destinationW);\n resultWidth = destRatio > srcRatio ? destinationW : destinationH / srcRatio;\n resultHeight = destRatio > srcRatio ? destinationW * srcRatio : destinationH;\n x += this.getMeetOffset(xalign, resultWidth, destinationW);\n y += this.getMeetOffset(yalign, resultHeight, destinationH);\n ctx.drawImage(image, 0, 0, srcWidth, srcHeight, x, y, resultWidth, resultHeight);\n }\n else {\n ctx.drawImage(image, x, y, width, height);\n }\n }\n else {\n if (image.complete) {\n ctx.drawImage(image, x, y, width, height);\n }\n else {\n var transform_1 = ctx.getTransform();\n image.onload = function () {\n ctx.setTransform(transform_1.a, transform_1.b, transform_1.c, transform_1.d, transform_1.e, transform_1.f);\n ctx.drawImage(image, x, y, width, height);\n };\n }\n }\n ctx.closePath();\n };\n // text utility\n CanvasRenderer.prototype.loadImage = function (ctx, obj, canvas, pivotX, pivotY) {\n this.rotateContext(canvas, obj.angle, pivotX, pivotY);\n var image = new Image();\n image.src = obj.source;\n this.image(ctx, image, obj.x, obj.y, obj.width, obj.height, obj);\n };\n /** @private */\n CanvasRenderer.prototype.drawImage = function (canvas, obj, parentSvg, fromPalette) {\n var _this = this;\n if (obj.visible) {\n var ctx_1 = CanvasRenderer.getContext(canvas);\n ctx_1.save();\n var pivotX_1 = obj.x + obj.width * obj.pivotX;\n var pivotY_1 = obj.y + obj.height * obj.pivotY;\n var imageObj = new Image();\n imageObj.src = obj.source;\n var id = ctx_1.canvas.id.split('_');\n var value = id[id.length - 1] === ('diagram' || 'diagramLayer') ? true : false;\n /**\n * Since Clipping portion for node with slice option is not calculated properly\n * if (obj.sourceX !== undefined && obj.sourceY !== undefined && obj.sourceWidth !== undefined\n * && obj.sourceHeight !== undefined) {\n * ctx.drawImage(imageObj, obj.sourceX, obj.sourceY, obj.sourceWidth, obj.sourceHeight, obj.x, obj.y, obj.width, obj.height);\n * } else {\n * ctx.drawImage(imageObj, obj.x, obj.y, obj.width, obj.height);\n * }\n */\n if (!fromPalette) {\n this.loadImage(ctx_1, obj, canvas, pivotX_1, pivotY_1);\n }\n else {\n imageObj.onload = function () {\n _this.loadImage(ctx_1, obj, canvas, pivotX_1, pivotY_1);\n };\n }\n ctx_1.restore();\n }\n };\n /** @private */\n CanvasRenderer.prototype.labelAlign = function (text, wrapBounds, childNodes) {\n var bounds = new Size(wrapBounds.width, childNodes.length * (text.fontSize * 1.2));\n var position = { x: 0, y: 0 };\n var labelX = text.x;\n var labelY = text.y;\n var offsetx = text.width * 0.5;\n var offsety = text.height * 0.5;\n var pointx = offsetx;\n var pointy = offsety;\n if (text.textAlign === 'left') {\n pointx = 0;\n }\n else if (text.textAlign === 'center') {\n if (wrapBounds.width > text.width && (text.textOverflow === 'Ellipsis' || text.textOverflow === 'Clip')) {\n pointx = 0;\n }\n else {\n pointx = text.width * 0.5;\n }\n }\n else if (text.textAlign === 'right') {\n pointx = (text.width * 1);\n }\n position.x = labelX + pointx + (wrapBounds ? wrapBounds.x : 0);\n position.y = labelY + pointy - bounds.height / 2;\n return position;\n };\n return CanvasRenderer;\n}());\nexport { CanvasRenderer };\nexport function refreshDiagramElements(canvas, drawingObjects, renderer) {\n for (var i = 0; i < drawingObjects.length; i++) {\n renderer.renderElement(drawingObjects[i], canvas, undefined);\n }\n}\n","import { Size } from './../primitives/size';\nimport { CanvasRenderer } from './../rendering/canvas-renderer';\nimport { processPathData, pathSegmentCollection } from '../utility/path-util';\n/**\n * SVG Renderer\n */\n/** @private */\nvar SvgRenderer = /** @class */ (function () {\n function SvgRenderer() {\n }\n /** @private */\n SvgRenderer.prototype.parseDashArray = function (dashArray) {\n var dashes = [];\n return dashes;\n };\n /** @private */\n SvgRenderer.prototype.drawRectangle = function (svg, options, diagramId, onlyRect, isSelector, parentSvg, ariaLabel) {\n var id;\n if (options.id === svg.id) {\n id = options.id + '_container';\n }\n else {\n id = options.id;\n }\n var rect;\n if (!rect || isSelector) {\n rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n svg.appendChild(rect);\n }\n var attr = {\n 'id': id, 'x': options.x.toString(), 'y': options.y.toString(), 'width': options.width.toString(),\n 'height': options.height.toString(), 'visibility': options.visible ? 'visible' : 'hidden',\n 'transform': 'rotate(' + options.angle + ','\n + (options.x + options.width * options.pivotX) + ',' + (options.y + options.height * options.pivotY) + ')',\n 'rx': options.cornerRadius || 0, 'ry': options.cornerRadius || 0, 'opacity': options.opacity,\n 'aria-label': ariaLabel ? ariaLabel : ''\n };\n if (options.class) {\n attr['class'] = options.class;\n }\n var poiterEvents = 'pointer-events';\n if (!ariaLabel) {\n attr[poiterEvents] = 'none';\n }\n setAttributeSvg(rect, attr);\n this.setSvgStyle(rect, options, diagramId);\n };\n /** @private */\n SvgRenderer.prototype.updateSelectionRegion = function (gElement, options) {\n var rect;\n rect = gElement.parentNode.getElementById(options.id);\n var attr;\n attr = {\n 'id': options.id, 'x': options.x.toString(), 'y': options.y.toString(), 'width': options.width.toString(),\n 'height': options.height.toString(), 'transform': 'rotate(' + options.angle + ','\n + (options.x + options.width * options.pivotX) + ',' + (options.y + options.height * options.pivotY) + ')',\n class: 'e-diagram-selected-region'\n };\n if (!rect) {\n rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n gElement.appendChild(rect);\n }\n this.setSvgStyle(rect, options);\n setAttributeSvg(rect, attr);\n };\n /** @private */\n SvgRenderer.prototype.createGElement = function (elementType, attribute) {\n var gElement = createSvgElement(elementType, attribute);\n return gElement;\n };\n /** @private */\n SvgRenderer.prototype.drawCircle = function (gElement, options, enableSelector, ariaLabel) {\n var circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n this.setSvgStyle(circle, options);\n var classval = options.class || '';\n if (!enableSelector) {\n classval += ' e-disabled';\n }\n var attr = {\n 'id': options.id,\n 'cx': options.centerX,\n 'cy': options.centerY,\n 'r': options.radius,\n 'visibility': options.visible ? 'visible' : 'hidden',\n 'class': classval,\n 'aria-label': ariaLabel ? ariaLabel['aria-label'] : ''\n };\n var pointerEvents = 'pointer-events';\n if (attr['aria-label'] === '') {\n attr[pointerEvents] = 'none';\n }\n circle.style.display = options.visible ? 'block' : 'none';\n setAttributeSvg(circle, attr);\n gElement.appendChild(circle);\n };\n /** @private */\n SvgRenderer.prototype.setSvgStyle = function (svg, style, diagramId) {\n if (style.canApplyStyle || style.canApplyStyle === undefined) {\n if (style.fill === 'none') {\n style.fill = 'transparent';\n }\n if (style.stroke === 'none') {\n style.stroke = 'transparent';\n }\n var dashArray = [];\n var fill = void 0;\n if (style.dashArray !== undefined) {\n var canvasRenderer = new CanvasRenderer();\n dashArray = canvasRenderer.parseDashArray(style.dashArray);\n }\n fill = style.fill;\n if (style.stroke) {\n svg.setAttribute('stroke', style.stroke);\n }\n if (style.strokeWidth !== undefined && style.strokeWidth !== null) {\n svg.setAttribute('stroke-width', style.strokeWidth.toString());\n }\n if (dashArray) {\n svg.setAttribute('stroke-dasharray', dashArray.toString());\n }\n if (fill) {\n svg.setAttribute('fill', fill);\n }\n }\n };\n //end region\n // text utility\n /** @private */\n SvgRenderer.prototype.svgLabelAlign = function (text, wrapBound, childNodes) {\n var bounds = new Size(wrapBound.width, childNodes.length * (text.fontSize * 1.2));\n var pos = { x: 0, y: 0 };\n var x = 0;\n var y = 1.2;\n var offsetX = text.width * 0.5;\n var offsety = text.height * 0.5;\n var pointX = offsetX;\n var pointY = offsety;\n if (text.textAlign === 'left') {\n pointX = 0;\n }\n else if (text.textAlign === 'center') {\n if (wrapBound.width > text.width && (text.textOverflow === 'Ellipsis' || text.textOverflow === 'Clip')) {\n pointX = 0;\n }\n else {\n pointX = text.width * 0.5;\n }\n }\n else if (text.textAlign === 'right') {\n pointX = (text.width * 1);\n }\n pos.x = x + pointX + (wrapBound ? wrapBound.x : 0);\n pos.y = y + pointY - bounds.height / 2;\n return pos;\n };\n /** @private */\n SvgRenderer.prototype.drawLine = function (gElement, options) {\n var line = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n this.setSvgStyle(line, options);\n var pivotX = options.x + options.width * options.pivotX;\n var pivotY = options.y + options.height * options.pivotY;\n var kk = '';\n var attr = {\n 'id': options.id,\n 'x1': options.startPoint.x + options.x,\n 'y1': options.startPoint.y + options.y,\n 'x2': options.endPoint.x + options.x,\n 'y2': options.endPoint.y + options.y,\n 'stroke': options.stroke,\n 'stroke-width': options.strokeWidth.toString(), 'opacity': options.opacity.toString(),\n 'transform': 'rotate(' + options.angle + ' ' + pivotX + ' ' + pivotY + ')',\n 'visibility': options.visible ? 'visible' : 'hidden',\n };\n if (options.class) {\n attr['class'] = options.class;\n }\n setAttributeSvg(line, attr);\n gElement.appendChild(line);\n };\n /** @private */\n SvgRenderer.prototype.drawPath = function (svg, options, diagramId, isSelector, parentSvg, ariaLabel) {\n var id;\n var x = Math.floor((Math.random() * 10) + 1);\n id = svg.id + '_shape' + x.toString();\n var collection = [];\n collection = processPathData(options.data);\n collection = pathSegmentCollection(collection);\n var shadowElement;\n if (parentSvg) {\n shadowElement = parentSvg.getElementById(options.id + '_groupElement_shadow');\n if (shadowElement) {\n shadowElement.parentNode.removeChild(shadowElement);\n }\n }\n var path;\n if (parentSvg) {\n path = parentSvg.getElementById(options.id);\n }\n if (!path || isSelector) {\n path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svg.appendChild(path);\n }\n this.renderPath(path, options, collection);\n var attr = {\n 'id': options.id, 'transform': 'rotate(' + options.angle + ',' + (options.x + options.width * options.pivotX) + ','\n + (options.y + options.height * options.pivotY) + ')' + 'translate(' + (options.x) + ',' + (options.y) + ')',\n 'visibility': options.visible ? 'visible' : 'hidden', 'opacity': options.opacity,\n 'aria-label': ariaLabel ? ariaLabel : ''\n };\n if (options.class) {\n attr['class'] = options.class;\n }\n setAttributeSvg(path, attr);\n this.setSvgStyle(path, options, diagramId);\n };\n /** @private */\n SvgRenderer.prototype.renderPath = function (svg, options, collection) {\n var x1;\n var y1;\n var x2;\n var y2;\n var x;\n var y;\n var length;\n var i;\n var segments = collection;\n var d = '';\n for (x = 0, y = 0, i = 0, length = segments.length; i < length; ++i) {\n var obj = segments[i];\n var segment = obj;\n var char = segment.command;\n if ('x1' in segment) {\n x1 = segment.x1;\n }\n if ('x2' in segment) {\n x2 = segment.x2;\n }\n if ('y1' in segment) {\n y1 = segment.y1;\n }\n if ('y2' in segment) {\n y2 = segment.y2;\n }\n if ('x' in segment) {\n x = segment.x;\n }\n if ('y' in segment) {\n y = segment.y;\n }\n switch (char) {\n case 'M':\n d = d + 'M' + x.toString() + ',' + y.toString() + ' ';\n break;\n case 'L':\n d = d + 'L' + x.toString() + ',' + y.toString() + ' ';\n break;\n case 'C':\n d = d + 'C' + x1.toString() + ',' + y1.toString() + ',' + x2.toString() + ',' + y2.toString() + ',';\n d += x.toString() + ',' + y.toString() + ' ';\n break;\n case 'Q':\n d = d + 'Q' + x1.toString() + ',' + y1.toString() + ',' + x.toString() + ',' + y.toString() + ' ';\n break;\n case 'A':\n d = d + 'A' + segment.r1.toString() + ',' + segment.r2.toString() + ',' + segment.angle.toString() + ',';\n d += segment.largeArc.toString() + ',' + segment.sweep + ',' + x.toString() + ',' + y.toString() + ' ';\n break;\n case 'Z':\n case 'z':\n d = d + 'Z' + ' ';\n break;\n }\n }\n svg.setAttribute('d', d);\n };\n return SvgRenderer;\n}());\nexport { SvgRenderer };\n/** @private */\nexport function setAttributeSvg(svg, attributes) {\n var keys = Object.keys(attributes);\n for (var i = 0; i < keys.length; i++) {\n svg.setAttribute(keys[i], attributes[keys[i]]);\n }\n}\n/** @private */\nexport function createSvgElement(elementType, attribute) {\n var element = document.createElementNS('http://www.w3.org/2000/svg', elementType);\n setAttributeSvg(element, attribute);\n return element;\n}\n/** @private */\nexport function createSvg(id, width, height) {\n var svgObj = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n setAttributeSvg(svgObj, { 'id': id, 'width': width, 'height': height });\n return svgObj;\n}\nexport function getParentSvg(element, targetElement, canvas) {\n if (element && element.id) {\n if (targetElement && targetElement === 'selector') {\n return this.pdfViewer.adornerSvgLayer;\n }\n }\n return canvas;\n}\n","import { createHtmlElement, getDiagramElement } from '@syncfusion/ej2-drawings';\nimport { setAttributeSvg, createSvgElement } from '@syncfusion/ej2-drawings';\n/**\n * @param {ClientRect} bounds - Specified the bounds of the annotation.\n * @param {string} commonStyle - Specified the annotation styles.\n * @param {HTMLElement} cavas - Specified the annotation canvas element.\n * @param {number} index - Specified the page index value.\n * @param {PdfViewer} pdfViewer - Specified the pdfviewer element.\n * @hidden\n * @returns {void}\n */\nexport function renderAdornerLayer(bounds, commonStyle, cavas, index, pdfViewer) {\n var divElement = createHtmlElement('div', {\n 'id': pdfViewer.element.id + index + '_diagramAdornerLayer',\n 'style': 'width:' + bounds.width + 'px;height:' + bounds.height + 'px;' + commonStyle\n });\n if (!getDiagramElement(divElement.id)) {\n var nextElement = pdfViewer.viewerBase.getElement('_pageDiv_' + index);\n var pageBound = nextElement.getBoundingClientRect();\n var svgAdornerSvg = createSvg(pdfViewer.element.id + index + '_diagramAdorner_svg', pageBound.width, pageBound.height);\n svgAdornerSvg.setAttribute('class', 'e-adorner-layer' + index);\n svgAdornerSvg.setAttribute('style', 'pointer-events:none;');\n pdfViewer.adornerSvgLayer = createSvgElement('g', { 'id': pdfViewer.element.id + '_diagramAdorner' });\n pdfViewer.adornerSvgLayer.setAttribute('style', ' pointer-events: all; ');\n svgAdornerSvg.appendChild(pdfViewer.adornerSvgLayer);\n divElement.appendChild(svgAdornerSvg);\n divElement.style.width = pageBound.width + 'px';\n divElement.style.height = pageBound.height + 'px';\n if (nextElement) {\n nextElement.insertBefore(divElement, nextElement.childNodes[0]);\n }\n else {\n cavas.parentElement.appendChild(divElement);\n }\n var svgSelector = createSvgElement('g', { 'id': pdfViewer.element.id + '_SelectorElement' });\n pdfViewer.adornerSvgLayer.appendChild(svgSelector);\n setAttributeSvg(svgAdornerSvg, { style: 'pointer-events:none;' });\n }\n pdfViewer.viewerBase.applyElementStyles(divElement, index);\n}\n/**\n * @param {string} id - Specified the Id of the svg element.\n * @param {string | number} width - Specified the width of the svg element.\n * @param {string | number} height - Specified the height of the svg element.\n * @hidden\n * @returns {SVGElement} - Returns the svg element.\n */\nexport function createSvg(id, width, height) {\n var svgObj = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n setAttributeSvg(svgObj, { 'id': id, 'width': width, 'height': height });\n return svgObj;\n}\n","/**\n * ContextMenu module is used to handle the context menus used in the control.\n *\n * @hidden\n */\nvar BlazorContextMenu = /** @class */ (function () {\n /**\n * Initialize the constructor of blazorcontext\n *\n * @param { PdfViewer } pdfViewer - Specified PdfViewer class.\n * @param { PdfViewerBase } pdfViewerBase - The pdfViewerBase.\n */\n function BlazorContextMenu(pdfViewer, pdfViewerBase) {\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * Create the context menu.\n * @returns {void}\n */\n BlazorContextMenu.prototype.createContextMenu = function () {\n var htmlCollection = document.getElementsByClassName(this.pdfViewer.element.id + '_context_menu');\n if (htmlCollection) {\n this.contextMenuElement = htmlCollection[0];\n if (this.contextMenuElement.children && this.contextMenuElement.children.length > 0) {\n var htmlElement = this.contextMenuElement.children[0];\n htmlElement.className = htmlElement.className + ' ' + 'e-pv-context-menu';\n }\n }\n };\n /**\n * open the context menu.\n * @param {number} top - The top.\n * @param {number} left - The left.\n * @param {HTMLElement} target - The target.\n * @returns {void}\n */\n BlazorContextMenu.prototype.open = function (top, left, target) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenContextMenu', top, left);\n };\n /**\n * close the context menu.\n * @returns {void}\n */\n BlazorContextMenu.prototype.close = function () {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('CloseContextMenu');\n };\n /**\n * destroy the context menu.\n * @returns {void}\n */\n BlazorContextMenu.prototype.destroy = function () {\n this.previousAction = '';\n this.contextMenuElement = null;\n };\n // eslint-disable-next-line\n BlazorContextMenu.prototype.OnItemSelected = function (selectedMenu) {\n if (typeof selectedMenu === 'string') {\n this.pdfViewerBase.OnItemSelected(selectedMenu);\n }\n else {\n this.pdfViewerBase.OnItemSelected(selectedMenu[0]);\n }\n };\n return BlazorContextMenu;\n}());\nexport { BlazorContextMenu };\n","/**\n * The `BlazorUIAdaptor` module is used to handle the UI update of native components.\n * @hidden\n */\nvar BlazorUiAdaptor = /** @class */ (function () {\n /**\n * Initialize the constructor of blazorUIadapater.\n *\n * @param { PdfViewer } pdfviewer - Specified PdfViewer class.\n * @param { PdfViewerBase } pdfViewerBase - The pdfViewerBase.\n */\n function BlazorUiAdaptor(pdfviewer, pdfViewerBase) {\n this.pdfViewer = null;\n this.pdfViewerBase = null;\n /**\n * @private\n */\n this.totalPageElement = null;\n this.currentPageBoxElementContainer = null;\n this.currentPageBoxElement = null;\n this.firstPageElement = null;\n this.previousPageElement = null;\n this.nextPageElement = null;\n this.lastPageElement = null;\n this.zommOutElement = null;\n this.zoomInElement = null;\n this.zoomDropDownElement = null;\n this.selectToolElement = null;\n this.handToolElement = null;\n this.undoElement = null;\n this.redoElement = null;\n this.commentElement = null;\n this.submitFormButton = null;\n this.searchElement = null;\n this.annotationElement = null;\n this.printElement = null;\n this.downloadElement = null;\n this.highlightElement = null;\n this.underlineElement = null;\n this.strikeThroughElement = null;\n this.shapeElement = null;\n this.calibrateElement = null;\n this.stampElement = null;\n this.freeTextElement = null;\n this.signatureElement = null;\n this.inkElement = null;\n this.annotationFontSizeInputElement = null;\n this.annotationFontFamilyInputElement = null;\n this.annotationColorElement = null;\n this.annotationStrokeColorElement = null;\n this.annotationThicknessElement = null;\n this.annotationOpacityElement = null;\n this.annotationFontColorElement = null;\n this.annotationFontFamilyElement = null;\n this.annotationFontSizeElement = null;\n this.annotationTextAlignElement = null;\n this.annotationTextColorElement = null;\n this.annotationTextPropertiesElement = null;\n this.annotationDeleteElement = null;\n this.annotationCloseElement = null;\n this.annotationCommentPanelElement = null;\n this.mobileToolbarContainerElement = null;\n this.mobileSearchPreviousOccurenceElement = null;\n this.mobileSearchNextOccurenceElement = null;\n this.cssClass = 'e-overlay';\n this.disableClass = ' e-overlay';\n this.editAnnotationButtonElement = null;\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n this.findToolbarElements();\n }\n BlazorUiAdaptor.prototype.findToolbarElements = function () {\n this.totalPageElement = this.pdfViewerBase.getElement('_totalPage').children[0];\n this.currentPageBoxElementContainer = this.pdfViewerBase.getElement('_currentPageInput');\n this.currentPageBoxElement = this.pdfViewerBase.getElement('_currentPageInput').children[0].children[0];\n this.firstPageElement = this.pdfViewerBase.getElement('_firstPage');\n this.previousPageElement = this.pdfViewerBase.getElement('_previousPage');\n this.nextPageElement = this.pdfViewerBase.getElement('_nextPage');\n this.lastPageElement = this.pdfViewerBase.getElement('_lastPage');\n this.zommOutElement = this.pdfViewerBase.getElement('_zoomOut');\n this.zoomInElement = this.pdfViewerBase.getElement('_zoomIn');\n this.zoomDropDownElement = this.pdfViewerBase.getElement('_zoomDropDown');\n this.selectToolElement = this.pdfViewerBase.getElement('_selectTool');\n this.handToolElement = this.pdfViewerBase.getElement('_handTool');\n this.undoElement = this.pdfViewerBase.getElement('_undo');\n this.redoElement = this.pdfViewerBase.getElement('_redo');\n this.commentElement = this.pdfViewerBase.getElement('_comment');\n this.submitFormButton = this.pdfViewerBase.getElement('_submitFormButton');\n this.searchElement = this.pdfViewerBase.getElement('_search');\n this.annotationElement = this.pdfViewerBase.getElement('_annotation');\n this.editAnnotationButtonElement = this.annotationElement.children[0];\n this.editAnnotationButtonElement.classList.add('e-pv-tbar-btn');\n this.printElement = this.pdfViewerBase.getElement('_print');\n this.downloadElement = this.pdfViewerBase.getElement('_download');\n this.highlightElement = this.pdfViewerBase.getElement('_highLight');\n this.underlineElement = this.pdfViewerBase.getElement('_underline');\n this.strikeThroughElement = this.pdfViewerBase.getElement('_strikethrough');\n this.shapeElement = this.pdfViewerBase.getElement('_annotation_shapes');\n this.calibrateElement = this.pdfViewerBase.getElement('_annotation_calibrate');\n this.stampElement = this.pdfViewerBase.getElement('_annotation_stamp');\n this.freeTextElement = this.pdfViewerBase.getElement('_annotation_freeTextEdit');\n this.signatureElement = this.pdfViewerBase.getElement('_annotation_signature');\n this.inkElement = this.pdfViewerBase.getElement('_annotation_ink');\n // tslint:disable-next-line:max-line-length\n this.annotationFontSizeInputElement = this.pdfViewerBase.getElement('_annotation_fontsize').children[0].children[0];\n // tslint:disable-next-line:max-line-length\n this.annotationFontFamilyInputElement = this.pdfViewerBase.getElement('_annotation_fontname').children[0].children[0];\n this.annotationColorElement = this.pdfViewerBase.getElement('_annotation_color');\n this.annotationStrokeColorElement = this.pdfViewerBase.getElement('_annotation_stroke');\n this.annotationThicknessElement = this.pdfViewerBase.getElement('_annotation_thickness');\n this.annotationOpacityElement = this.pdfViewerBase.getElement('_annotation_opacity');\n this.annotationFontColorElement = this.pdfViewerBase.getElement('_annotation_textcolor');\n this.annotationFontFamilyElement = this.pdfViewerBase.getElement('_annotation_fontname');\n this.annotationFontSizeElement = this.pdfViewerBase.getElement('_annotation_fontsize');\n this.annotationTextAlignElement = this.pdfViewerBase.getElement('_annotation_textalign');\n this.annotationTextColorElement = this.pdfViewerBase.getElement('_annotation_textcolor');\n this.annotationTextPropertiesElement = this.pdfViewerBase.getElement('_annotation_textproperties');\n this.annotationDeleteElement = this.pdfViewerBase.getElement('_annotation_delete');\n this.annotationCommentPanelElement = this.pdfViewerBase.getElement('_annotation_commentPanel');\n this.annotationCloseElement = this.pdfViewerBase.getElement('_annotation_close');\n this.mobileToolbarContainerElement = this.pdfViewerBase.getElement('_mobileToolbarContainer');\n this.mobileSearchPreviousOccurenceElement = this.pdfViewerBase.getElement('_prev_occurrence');\n this.mobileSearchNextOccurenceElement = this.pdfViewerBase.getElement('_next_occurrence');\n };\n /**\n * Update the total page.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateTotalPage = function () {\n this.totalPageElement.textContent = this.pdfViewer.localeObj.getConstant('of') + this.pdfViewerBase.pageCount.toString();\n };\n /**\n * Update current page.\n * @param {number} pageNumber - The pageNumber.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateCurrentPage = function (pageNumber) {\n this.currentPageBoxElement.value = pageNumber.toString();\n };\n /**\n * Load the PDF document.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.loadDocument = function () {\n if (this.pdfViewer.enableNavigation) {\n this.currentPageBoxElementContainer.classList.remove(this.cssClass);\n this.currentPageBoxElement.value = '1';\n this.totalPageElement.textContent = this.pdfViewer.localeObj.getConstant('of') + this.pdfViewerBase.pageCount.toString();\n if (!this.isEnabled(this.firstPageElement)) {\n this.firstPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.previousPageElement)) {\n this.previousPageElement.className += this.disableClass;\n }\n this.nextPageElement.classList.remove(this.cssClass);\n this.lastPageElement.classList.remove(this.cssClass);\n if (this.pdfViewerBase.pageCount === 1) {\n if (!this.nextPageElement.classList.contains(this.cssClass)) {\n this.nextPageElement.className += this.disableClass;\n }\n if (!this.lastPageElement.classList.contains(this.cssClass)) {\n this.lastPageElement.className += this.disableClass;\n }\n }\n }\n if (this.pdfViewer.enableMagnification) {\n this.zoomInElement.classList.remove(this.cssClass);\n this.zommOutElement.classList.remove(this.cssClass);\n this.zoomDropDownElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableTextSelection) {\n this.selectToolElement.classList.remove(this.cssClass);\n this.selectItem(this.pdfViewer.toolbar.SelectToolElement);\n }\n this.handToolElement.classList.remove(this.cssClass);\n if (this.pdfViewer.enableStickyNotesAnnotation) {\n this.commentElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableTextSearch) {\n this.searchElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.isFormFieldDocument) {\n this.submitFormButton.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableAnnotationToolbar) {\n this.annotationElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enablePrint) {\n this.printElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableDownload) {\n this.downloadElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableTextMarkupAnnotation) {\n this.highlightElement.classList.remove(this.cssClass);\n this.underlineElement.classList.remove(this.cssClass);\n this.strikeThroughElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableShapeAnnotation) {\n this.shapeElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableMeasureAnnotation) {\n this.calibrateElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableStampAnnotations) {\n this.stampElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableFreeText) {\n this.freeTextElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableHandwrittenSignature) {\n this.signatureElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableInkAnnotation) {\n this.inkElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableCommentPanel) {\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n }\n };\n BlazorUiAdaptor.prototype.selectItem = function (element) {\n if (element) {\n element.classList.add(\"e-pv-select\");\n }\n };\n BlazorUiAdaptor.prototype.deselectItem = function (element) {\n if (element) {\n element.classList.remove(\"e-pv-select\");\n }\n };\n BlazorUiAdaptor.prototype.showAnnotationToolbar = function (isToolbarVisible) {\n this.pdfViewer.toolbar.annotationToolbarModule.adjustViewer(isToolbarVisible[0]);\n if (isToolbarVisible[0]) {\n this.pdfViewer.toolbar.selectItem(this.editAnnotationButtonElement);\n }\n else {\n this.pdfViewer.toolbar.deSelectItem(this.editAnnotationButtonElement);\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n BlazorUiAdaptor.prototype.closeAnnotationToolbar = function () {\n this.pdfViewer.toolbar.annotationToolbarModule.adjustViewer(false);\n this.pdfViewer.toolbar.deSelectItem(this.editAnnotationButtonElement);\n this.pdfViewerBase.navigationPane.closeCommentPanelContainer();\n };\n /**\n * Reset the toolbar.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.resetToolbar = function () {\n if (this.pdfViewer.enableToolbar) {\n this.currentPageBoxElement.value = '0';\n this.totalPageElement.textContent = this.pdfViewer.localeObj.getConstant('of') + '0';\n if (!this.isEnabled(this.currentPageBoxElementContainer)) {\n this.currentPageBoxElementContainer.className += this.disableClass;\n }\n if (!this.isEnabled(this.firstPageElement)) {\n this.firstPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.previousPageElement)) {\n this.previousPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.nextPageElement)) {\n this.nextPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.lastPageElement)) {\n this.lastPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.zoomInElement)) {\n this.zoomInElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.zommOutElement)) {\n this.zommOutElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.zoomDropDownElement)) {\n this.zoomDropDownElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.selectToolElement)) {\n this.selectToolElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.handToolElement)) {\n this.handToolElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.undoElement)) {\n this.undoElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.redoElement)) {\n this.redoElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.commentElement)) {\n this.commentElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.searchElement)) {\n this.searchElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.submitFormButton)) {\n this.submitFormButton.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationElement)) {\n this.annotationElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.printElement)) {\n this.printElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.downloadElement)) {\n this.downloadElement.className += this.disableClass;\n }\n }\n if (this.pdfViewer.enableAnnotationToolbar) {\n if (!this.isEnabled(this.highlightElement)) {\n this.highlightElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.underlineElement)) {\n this.underlineElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.strikeThroughElement)) {\n this.strikeThroughElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.shapeElement)) {\n this.shapeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.calibrateElement)) {\n this.calibrateElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.stampElement)) {\n this.stampElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.freeTextElement)) {\n this.freeTextElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.signatureElement)) {\n this.signatureElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.inkElement)) {\n this.inkElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextColorElement)) {\n this.annotationTextColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationCommentPanelElement)) {\n this.annotationCommentPanelElement.className += this.disableClass;\n }\n }\n };\n /**\n * When annotation selection changed.\n * @param {boolean} currentPageNumber - The current page number.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.EnableDeleteOption = function (isEnable) {\n if (this.annotationDeleteElement !== null) {\n if (isEnable) {\n this.annotationDeleteElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n }\n }\n };\n /**\n * when the page changes.\n * @param {number} currentPageNumber - The current page number.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.pageChanged = function (currentPageNumber) {\n if (this.pdfViewer.enableNavigation) {\n this.currentPageBoxElement.value = currentPageNumber.toString();\n }\n if (currentPageNumber === this.pdfViewer.pageCount) {\n if (!this.isEnabled(this.nextPageElement)) {\n this.nextPageElement.className += this.disableClass;\n }\n this.previousPageElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.lastPageElement)) {\n this.lastPageElement.className += this.disableClass;\n }\n this.firstPageElement.classList.remove(this.cssClass);\n }\n if (currentPageNumber < this.pdfViewer.pageCount && currentPageNumber !== 1) {\n this.firstPageElement.classList.remove(this.cssClass);\n this.previousPageElement.classList.remove(this.cssClass);\n this.nextPageElement.classList.remove(this.cssClass);\n this.lastPageElement.classList.remove(this.cssClass);\n }\n if (currentPageNumber === 1) {\n this.nextPageElement.classList.remove(this.cssClass);\n this.lastPageElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.firstPageElement)) {\n this.firstPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.previousPageElement)) {\n this.previousPageElement.className += this.disableClass;\n }\n }\n };\n /**\n * @param {string} item - The current item.\n * @param {boolean} enable - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateUndoRedoButton = function (item, enable) {\n if (item === 'undo') {\n if (enable) {\n this.undoElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.undoElement)) {\n this.undoElement.className += this.disableClass;\n }\n }\n }\n if (item === 'redo') {\n if (enable) {\n this.redoElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.redoElement)) {\n this.redoElement.className += this.disableClass;\n }\n }\n }\n };\n /**\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.disableUndoRedoButton = function () {\n if (!this.isEnabled(this.undoElement)) {\n this.undoElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.redoElement)) {\n this.redoElement.className += this.disableClass;\n }\n };\n /**\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableTextMarkupAnnotationPropertiesTools = function (isEnable) {\n if (isEnable) {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n };\n /**\n * @param {boolean} isEnable - To enable the item or not.\n * @param {boolean} isProperitiesChange - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableAnnotationPropertiesTool = function (isEnable, isProperitiesChange) {\n if (isProperitiesChange) {\n if (isEnable) {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n if (this.pdfViewer.enableShapeLabel) {\n this.annotationFontColorElement.classList.remove(this.cssClass);\n this.annotationFontFamilyElement.classList.remove(this.cssClass);\n this.annotationFontSizeElement.classList.remove(this.cssClass);\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n }\n else {\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n }\n }\n };\n /**\n * @param {boolean} isEnable - To enable the item or not.\n * @param {boolean} isProperitiesChange - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableFreeTextAnnotationPropertiesTools = function (isEnable, isProperitiesChange) {\n if (isProperitiesChange && isEnable) {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n this.annotationFontColorElement.classList.remove(this.cssClass);\n this.annotationFontFamilyElement.classList.remove(this.cssClass);\n this.annotationFontSizeElement.classList.remove(this.cssClass);\n this.annotationTextAlignElement.classList.remove(this.cssClass);\n this.annotationTextPropertiesElement.classList.remove(this.cssClass);\n this.annotationDeleteElement.classList.remove(this.cssClass);\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n }\n };\n /**\n * @param {boolean} isEnable - To enable the item or not.\n * @param {boolean} isPropertiesChange - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableStampAnnotationPropertiesTools = function (isEnable, isPropertiesChange) {\n if (isEnable) {\n this.annotationOpacityElement.classList.remove(this.cssClass);\n this.annotationDeleteElement.classList.remove(this.cssClass);\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationCommentPanelElement)) {\n this.annotationCommentPanelElement.className += this.disableClass;\n }\n }\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n };\n /**\n * @param {boolean} isEnable - To enable the item or not.\n * @param {boolean} isProperitiesChange - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableSignaturePropertiesTools = function (isEnable, isProperitiesChange) {\n if (isEnable) {\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n this.annotationDeleteElement.classList.remove(this.cssClass);\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationCommentPanelElement)) {\n this.annotationCommentPanelElement.className += this.disableClass;\n }\n }\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n };\n /**\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.annotationAdd = function () {\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n };\n /**\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.annotationUnSelect = function () {\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n };\n /**\n * @param {string} annotationType - The annotationType.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.annotationSelect = function (annotationType) {\n if (annotationType === 'FreeText') {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n this.annotationFontColorElement.classList.remove(this.cssClass);\n this.annotationFontFamilyElement.classList.remove(this.cssClass);\n this.annotationFontSizeElement.classList.remove(this.cssClass);\n this.annotationTextAlignElement.classList.remove(this.cssClass);\n this.annotationTextPropertiesElement.classList.remove(this.cssClass);\n }\n if (annotationType === 'Shape' || annotationType === 'Measure') {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n }\n if (annotationType === 'TextMarkup') {\n this.annotationColorElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n this.annotationOpacityElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n }\n this.annotationDeleteElement.classList.remove(this.cssClass);\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n };\n /**\n * @param {string} fontFamily - The fontFamily.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateFontFamilyInIcon = function (fontFamily) {\n this.annotationFontFamilyInputElement.value = fontFamily;\n };\n /**\n * @param {number} fontSize - The fontSize.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateFontSizeInIcon = function (fontSize) {\n var fontValue = fontSize.toString() + 'px';\n this.annotationFontSizeInputElement.value = fontValue;\n };\n /**\n * @param {boolean} isEnable - To enable or disable.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableSearchItems = function (isEnable) {\n if (isEnable) {\n this.mobileSearchPreviousOccurenceElement.classList.remove(this.cssClass);\n this.mobileSearchNextOccurenceElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.mobileSearchPreviousOccurenceElement)) {\n this.mobileSearchPreviousOccurenceElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.mobileSearchNextOccurenceElement)) {\n this.mobileSearchNextOccurenceElement.className += this.disableClass;\n }\n }\n };\n /**\n * @param {boolean} isTapHidden - To enable or disable.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.tapOnMobileDevice = function (isTapHidden) {\n if (this.mobileToolbarContainerElement != null) {\n if (isTapHidden) {\n this.mobileToolbarContainerElement.style.display = 'none';\n }\n else {\n this.mobileToolbarContainerElement.style.display = 'block';\n }\n }\n };\n /**\n * @param {HTMLElement} element - The HTMLElement.\n * @returns {boolean} - Returns trur or false.\n */\n BlazorUiAdaptor.prototype.isEnabled = function (element) {\n return element.classList.contains(this.cssClass);\n };\n return BlazorUiAdaptor;\n}());\nexport { BlazorUiAdaptor };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { createElement, Browser, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { TextLayer, ContextMenu, Signature, PdfFormFieldBase } from '../index';\nimport { NavigationPane } from './navigation-pane';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { AjaxHandler } from '../index';\nimport { Point, Rect, identityMatrix, transformPointByMatrix, contains, rotateMatrix } from '@syncfusion/ej2-drawings';\nimport { SelectTool, MoveTool, ResizeTool, ConnectTool, NodeDrawingTool, PolygonDrawingTool, LineTool, RotateTool, StampTool, InkDrawingTool } from '../drawing/tools';\nimport { Selector } from '../drawing/selector';\nimport { ActiveElements, findActiveElement } from '../drawing/action';\nimport { renderAdornerLayer } from '../drawing/dom-util';\nimport { AnnotationDataFormat } from './types';\nimport { cloneObject } from '../drawing/drawing-util';\nimport { BlazorContextMenu } from './blazor-context-menu';\nimport { createSpinner, showSpinner, hideSpinner } from './spinner';\nimport { BlazorUiAdaptor } from './blazor-ui-adaptor';\n/**\n * The `PdfViewerBase` module is used to handle base methods of PDF viewer.\n *\n * @hidden\n */\nvar PdfViewerBase = /** @class */ (function () {\n /**\n * Initialize the constructor of PDFViewerBase\n *\n * @param { PdfViewer } viewer - Specified PdfViewer class.\n */\n function PdfViewerBase(viewer) {\n var _this = this;\n /**\n * @private\n */\n this.pageSize = [];\n /**\n * @private\n */\n this.pageCount = 0;\n /**\n * @private\n */\n this.isReRenderRequired = true;\n /**\n * @private\n */\n this.currentPageNumber = 0;\n /**\n * @private\n */\n this.activeElements = new ActiveElements();\n /**\n * @private\n */\n this.mouseDownEvent = null;\n /**\n * @private\n */\n this.isDocumentLoaded = false;\n /**\n * @private\n */\n this.renderedPagesList = [];\n /**\n * @private\n */\n this.pageGap = 8;\n /**\n * @private\n */\n this.signatureAdded = false;\n this.pageLeft = 5;\n this.sessionLimit = 1000;\n this.pageStopValue = 300;\n /**\n * @private\n */\n this.toolbarHeight = 56;\n this.pageLimit = 0;\n this.previousPage = 0;\n this.isViewerMouseDown = false;\n this.isViewerMouseWheel = false;\n this.scrollPosition = 0;\n this.sessionStorage = [];\n /**\n * @private\n */\n this.isLoadedFormFieldAdded = false;\n this.pointerCount = 0;\n this.pointersForTouch = [];\n /**\n * @private\n */\n this.isPasswordAvailable = false;\n /**\n * @private\n */\n this.passwordData = '';\n /**\n * @private\n */\n this.reRenderedCount = 0;\n this.mouseX = 0;\n this.mouseY = 0;\n /**\n * @private\n */\n this.mouseLeft = 0;\n /**\n * @private\n */\n this.mouseTop = 0;\n this.touchClientX = 0;\n this.touchClientY = 0;\n this.previousTime = 0;\n this.currentTime = 0;\n this.isTouchScrolled = false;\n this.isLongTouchPropagated = false;\n // eslint-disable-next-line\n this.longTouchTimer = null;\n this.isViewerContainerDoubleClick = false;\n // eslint-disable-next-line\n this.dblClickTimer = null;\n /**\n * @private\n */\n this.pinchZoomStorage = [];\n /**\n * @private\n */\n this.isTextSelectionDisabled = false;\n /**\n * @private\n */\n this.isPanMode = false;\n this.dragX = 0;\n this.dragY = 0;\n this.isScrollbarMouseDown = false;\n this.scrollX = 0;\n this.scrollY = 0;\n this.ispageMoved = false;\n this.isThumb = false;\n this.isTapHidden = false;\n // eslint-disable-next-line\n this.singleTapTimer = null;\n this.tapCount = 0;\n this.inputTapCount = 0;\n /**\n * @private\n */\n this.isInitialLoaded = false;\n this.annotationPageList = [];\n this.importPageList = [];\n /**\n * @private\n */\n this.isImportAction = false;\n this.isImportedAnnotation = false;\n /**\n * @private\n */\n this.isAnnotationCollectionRemoved = false;\n /**\n * @private\n */\n this.tool = null;\n // eslint-disable-next-line\n this.action = 'Select';\n /**\n * @private\n */\n this.eventArgs = null;\n /**\n * @private\n */\n this.inAction = false;\n /**\n * @private\n */\n this.isMouseDown = false;\n /**\n * @private\n */\n this.isStampMouseDown = false;\n /**\n * @private\n */\n this.stampAdded = false;\n /**\n * @private\n */\n this.customStampCount = 0;\n /**\n * @private\n */\n this.isDynamicStamp = false;\n /**\n * @private\n */\n this.isMixedSizeDocument = false;\n /**\n * @private\n */\n this.highestWidth = 0;\n /**\n * @private\n */\n this.highestHeight = 0;\n /**\n * @private\n */\n this.customStampCollection = [];\n /**\n * @private\n */\n this.isAlreadyAdded = false;\n /**\n * @private\n */\n this.isWebkitMobile = false;\n /**\n * @private\n */\n this.isFreeTextContextMenu = false;\n /**\n * @private\n */\n this.isSelection = false;\n /**\n * @private\n */\n this.isAddAnnotation = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.annotationComments = null;\n /**\n * @private\n */\n this.isToolbarSignClicked = false;\n /**\n * @private\n */\n this.signatureCount = 0;\n /**\n * @private\n */\n this.isSignatureAdded = false;\n /**\n * @private\n */\n this.isNewSignatureAdded = false;\n /**\n * @private\n */\n this.isInitialPageMode = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.documentAnnotationCollections = null;\n /**\n * @private\n */\n this.annotationRenderredList = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.annotationStorage = {};\n /**\n * @private\n */\n // eslint-disable-next-line\n this.formFieldStorage = {};\n /**\n * @private\n */\n this.isStorageExceed = false;\n /**\n * @private\n */\n this.isNewStamp = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.downloadCollections = {};\n /**\n * @private\n */\n this.isAnnotationAdded = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.annotationEvent = null;\n /**\n * @private\n */\n this.isAnnotationDrawn = false;\n /**\n * @private\n */\n this.isAnnotationSelect = false;\n /**\n * @private\n */\n this.isAnnotationMouseDown = false;\n /**\n * @private\n */\n this.isAnnotationMouseMove = false;\n /**\n * @private\n */\n this.validateForm = false;\n /**\n * @private\n */\n this.isMinimumZoom = false;\n /**\n * @private\n */\n this.documentLoaded = false;\n this.tileRenderCount = 0;\n this.tileRequestCount = 0;\n /**\n * @private\n */\n this.isTileImageRendered = false;\n this.isDataExits = false;\n this.requestLists = [];\n this.tilerequestLists = [];\n /**\n * @private\n */\n this.isInkAdded = false;\n /**\n * @private\n */\n this.inkCount = 0;\n /**\n * @private\n */\n this.isAddedSignClicked = false;\n /**\n * @private\n */\n this.imageCount = 0;\n /**\n * @private\n */\n this.isMousedOver = false;\n /**\n * @private\n */\n this.isFormFieldSelect = false;\n /**\n * @private\n */\n this.isFormFieldMouseDown = false;\n /**\n * @private\n */\n this.isFormFieldMouseMove = false;\n /**\n * @private\n */\n this.isFormFieldMousedOver = false;\n /**\n * @private\n */\n this.isPassword = false;\n this.isDrawnCompletely = false;\n /**\n * @private\n */\n this.isAddComment = false;\n /**\n * @private\n */\n this.drawSignatureWithTool = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.formFieldCollection = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.nonFillableFields = {};\n /**\n * @private\n */\n this.isInitialField = false;\n /**\n * @private\n */\n this.isTouchDesignerMode = false;\n /**\n * @private\n */\n this.isPrint = false;\n this.downloadFileName = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.isFocusField = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.focusField = [];\n /**\n * @returns {void}\n */\n this.clearSessionStorage = function () {\n var documentId = '';\n if (Browser.isIE || Browser.info.name === 'edge') {\n documentId = decodeURI(window.sessionStorage.getItem('hashId'));\n }\n else {\n documentId = window.sessionStorage.getItem('hashId');\n }\n var documentLiveCount = window.sessionStorage.getItem('documentLiveCount');\n if (documentId !== null) {\n // eslint-disable-next-line max-len\n var jsonObject = { hashId: documentId, documentLiveCount: documentLiveCount, action: 'Unload', elementId: _this.pdfViewer.element.id };\n var actionName = window.sessionStorage.getItem('unload');\n var serviceUrl = window.sessionStorage.getItem('serviceURL');\n if (serviceUrl && serviceUrl !== 'undefined') {\n // eslint-disable-next-line\n var browserSupportsKeepalive = 'keepalive' in new Request('');\n if (browserSupportsKeepalive) {\n // eslint-disable-next-line\n var headerValue = _this.setUnloadRequestHeaders();\n var credentialsData = _this.pdfViewer.ajaxRequestSettings.withCredentials ? 'include' : 'omit';\n fetch(serviceUrl + '/' + actionName, {\n method: 'POST',\n credentials: credentialsData,\n headers: headerValue,\n body: JSON.stringify(jsonObject)\n });\n }\n }\n else if (isBlazor()) {\n _this.clearCache(actionName, jsonObject, _this);\n }\n }\n window.sessionStorage.removeItem(_this.documentId + '_annotations_textMarkup');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_sticky');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_freetext');\n window.sessionStorage.removeItem(_this.documentId + '_formfields');\n window.sessionStorage.removeItem(_this.documentId + '_formDesigner');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_sign');\n window.sessionStorage.removeItem(_this.documentId + '_pagedata');\n window.sessionStorage.removeItem('hashId');\n window.sessionStorage.removeItem('documentLiveCount');\n window.sessionStorage.removeItem('currentDocument');\n window.sessionStorage.removeItem('serviceURL');\n window.sessionStorage.removeItem('unload');\n };\n /**\n * @private\n * @param {MouseEvent} event - Mouse event.\n * @returns {void}\n */\n this.onWindowResize = function (event) {\n var proxy = null;\n proxy = _this;\n if (_this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.right = (proxy.navigationPane.sideBarToolbar ? proxy.navigationPane.getViewerContainerLeft() : 0) + 'px';\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.left = (proxy.navigationPane.commentPanelContainer ? proxy.navigationPane.commentPanelContainer.offsetWidth : 0) + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.left = (proxy.navigationPane.sideBarToolbar ? proxy.navigationPane.getViewerContainerLeft() : 0) + 'px';\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.right = (proxy.navigationPane.commentPanelContainer ? proxy.navigationPane.commentPanelContainer.offsetWidth : 0) + 'px';\n }\n // eslint-disable-next-line\n var viewerElementWidth = (proxy.pdfViewer.element.clientWidth > 0 ? proxy.pdfViewer.element.clientWidth : proxy.pdfViewer.element.style.width);\n // eslint-disable-next-line\n var viewerWidth = (viewerElementWidth - (proxy.navigationPane.sideBarToolbar ? proxy.navigationPane.getViewerContainerLeft() : 0) - (proxy.navigationPane.commentPanelContainer ? proxy.navigationPane.getViewerContainerRight() : 0));\n proxy.viewerContainer.style.width = viewerWidth + 'px';\n if (proxy.pdfViewer.toolbarModule) {\n // eslint-disable-next-line\n var toolbarContainer = isBlazor() ? proxy.pdfViewer.element.querySelector('.e-pv-toolbar') : proxy.getElement('_toolbarContainer');\n var toolbarHeight = 0;\n var formDesignerToolbarHeight = 0;\n if (toolbarContainer) {\n toolbarHeight = toolbarContainer.getBoundingClientRect().height;\n }\n if (proxy.isAnnotationToolbarHidden() || (Browser.isDevice && !_this.pdfViewer.enableDesktopMode)) {\n if (toolbarHeight === 0) {\n if (_this.navigationPane.isNavigationToolbarVisible) {\n // eslint-disable-next-line\n var navigationToolbar = proxy.getElement('_navigationToolbar');\n toolbarHeight = navigationToolbar.getBoundingClientRect().height;\n }\n }\n if (!proxy.isFormDesignerToolbarHidded()) {\n var formDesignerToolbar = proxy.getElement('_formdesigner_toolbar');\n formDesignerToolbarHeight = formDesignerToolbar ? formDesignerToolbar.getBoundingClientRect().height : 0;\n }\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.height = proxy.updatePageHeight(proxy.pdfViewer.element.getBoundingClientRect().height, toolbarHeight + formDesignerToolbarHeight);\n }\n else {\n // eslint-disable-next-line\n var annotationToolbarContainer = isBlazor() ? proxy.pdfViewer.element.querySelector('.e-pv-annotation-toolbar') : proxy.getElement('_annotation_toolbar');\n var annotationToolbarHeight = 0;\n if (annotationToolbarContainer) {\n annotationToolbarHeight = annotationToolbarContainer.getBoundingClientRect().height;\n }\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.height = proxy.updatePageHeight(proxy.pdfViewer.element.getBoundingClientRect().height, toolbarHeight + annotationToolbarHeight);\n }\n }\n else {\n proxy.viewerContainer.style.height = proxy.updatePageHeight(proxy.pdfViewer.element.getBoundingClientRect().height, 0);\n }\n if (proxy.pdfViewer.bookmarkViewModule && (Browser.isDevice && !_this.pdfViewer.enableDesktopMode)) {\n var bookmarkContainer = proxy.getElement('_bookmarks_container');\n if (bookmarkContainer) {\n bookmarkContainer.style.height = proxy.updatePageHeight(proxy.pdfViewer.element.getBoundingClientRect().height, 0);\n }\n }\n if (proxy.viewerContainer.style.height === '0px') {\n if (proxy.pdfViewer.height.toString() === 'auto') {\n proxy.pdfViewer.height = 500;\n proxy.viewerContainer.style.height = proxy.pdfViewer.height + 'px';\n }\n else {\n proxy.viewerContainer.style.height = proxy.pdfViewer.element.style.height;\n }\n }\n if (proxy.viewerContainer.style.width === '0px') {\n if (proxy.pdfViewer.width.toString() === 'auto') {\n proxy.pdfViewer.width = 500;\n proxy.viewerContainer.style.width = proxy.pdfViewer.width + 'px';\n }\n else {\n proxy.viewerContainer.style.width = proxy.pdfViewer.element.style.width;\n }\n }\n proxy.pageContainer.style.width = proxy.viewerContainer.clientWidth + 'px';\n if (proxy.viewerContainer.clientWidth === 0) {\n proxy.pageContainer.style.width = proxy.pdfViewer.element.style.width;\n }\n if (!isBlazor()) {\n if (proxy.pdfViewer.toolbarModule) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.toolbarModule.onToolbarResize((proxy.navigationPane.sideBarToolbar ? proxy.navigationPane.getViewerMainContainerWidth() : proxy.pdfViewer.element.clientWidth));\n }\n }\n if (_this.pdfViewer.enableToolbar && _this.pdfViewer.thumbnailViewModule) {\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.currentPageNumber - 1);\n }\n if (proxy.pdfViewer.textSearchModule && (!Browser.isDevice || _this.pdfViewer.enableDesktopMode)) {\n proxy.pdfViewer.textSearchModule.textSearchBoxOnResize();\n }\n if (viewerWidth !== 0) {\n if (!proxy.navigationPane.isBookmarkListOpen) {\n proxy.updateZoomValue();\n }\n }\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n proxy.mobileScrollerContainer.style.left = (viewerWidth - parseFloat(proxy.mobileScrollerContainer.style.width)) + 'px';\n proxy.mobilePageNoContainer.style.left = (viewerWidth / 2) - (parseFloat(proxy.mobilePageNoContainer.style.width) / 2) + 'px';\n proxy.mobilePageNoContainer.style.top = (proxy.pdfViewer.element.clientHeight / 2) + 'px';\n proxy.updateMobileScrollerPosition();\n }\n else {\n proxy.navigationPane.setResizeIconTop();\n proxy.navigationPane.setCommentPanelResizeIconTop();\n if (event && event.type === 'resize') {\n proxy.signatureModule.updateCanvasSize();\n }\n }\n if (proxy.navigationPane.sideBarToolbar) {\n proxy.navigationPane.sideBarToolbar.style.height = proxy.viewerContainer.style.height;\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMousedown = function (event) {\n _this.isFreeTextContextMenu = false;\n var isUpdate = false;\n _this.isSelection = true;\n if (event.button === 0 && !_this.getPopupNoteVisibleStatus() && !_this.isClickedOnScrollBar(event, false)) {\n _this.isViewerMouseDown = true;\n // eslint-disable-next-line\n var target = event.target;\n if (event.detail === 1 && target.className !== 'e-pdfviewer-formFields' && target.className !== 'free-text-input') {\n isUpdate = true;\n _this.focusViewerContainer(true);\n }\n _this.scrollPosition = _this.viewerContainer.scrollTop / _this.getZoomFactor();\n _this.mouseX = event.clientX;\n _this.mouseY = event.clientY;\n _this.mouseLeft = event.clientX;\n _this.mouseTop = event.clientY;\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (_this.pdfViewer.textSelectionModule && !_this.isClickedOnScrollBar(event, true) && !_this.isTextSelectionDisabled) {\n if (!isIE && target.className !== 'e-pdfviewer-formFields' && target.className !== 'e-pdfviewer-ListBox' && target.className !== 'e-pv-formfield-dropdown'\n && target.className !== 'e-pv-formfield-listbox') {\n event.preventDefault();\n }\n if (target.className !== 'e-pv-droplet') {\n _this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n }\n }\n if (_this.isClickedOnScrollBar(event, false)) {\n _this.isViewerMouseDown = true;\n }\n if (_this.isPanMode) {\n _this.dragX = event.pageX;\n _this.dragY = event.pageY;\n // eslint-disable-next-line max-len\n if (_this.viewerContainer.contains(event.target) && (event.target !== _this.viewerContainer) && (event.target !== _this.pageContainer) && _this.isPanMode) {\n _this.viewerContainer.style.cursor = 'grabbing';\n }\n }\n if (_this.isShapeBasedAnnotationsEnabled()) {\n _this.diagramMouseDown(event);\n }\n if (_this.pdfViewer.annotation && _this.pdfViewer.annotation.stickyNotesAnnotationModule.accordionContainer) {\n if (!isUpdate) {\n _this.pdfViewer.annotationModule.stickyNotesAnnotationModule.isEditableElement = false;\n _this.updateCommentPanel();\n isUpdate = true;\n }\n }\n if (isBlazor()) {\n _this.mouseDownHandler(event);\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseup = function (event) {\n if (!_this.getPopupNoteVisibleStatus()) {\n if (_this.isViewerMouseDown) {\n if (_this.scrollHoldTimer) {\n clearTimeout(_this.scrollHoldTimer);\n _this.scrollHoldTimer = null;\n }\n if ((_this.scrollPosition * _this.getZoomFactor()) !== _this.viewerContainer.scrollTop) {\n _this.pageViewScrollChanged(_this.currentPageNumber);\n }\n }\n var isSignatureFieldReadOnly = false;\n if (event.target) {\n if (event.target.className == 'e-pv-show-designer-name' && event.target.id.split('_', 1) != '') {\n isSignatureFieldReadOnly = document.getElementById(event.target.id.split('_', 1)).disabled;\n }\n if (event.target.className == 'foreign-object' && event.target.children[0]) {\n isSignatureFieldReadOnly = event.target.children[0].disabled;\n }\n }\n if (isSignatureFieldReadOnly && _this.pdfViewer.annotation) {\n _this.pdfViewer.annotation.clearSelection();\n }\n if (_this.isShapeBasedAnnotationsEnabled() && !isSignatureFieldReadOnly) {\n _this.diagramMouseUp(event);\n if (_this.pdfViewer.annotation) {\n _this.pdfViewer.annotation.onAnnotationMouseUp();\n }\n }\n if (_this.pdfViewer.selectedItems.formFields.length > 0) {\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(_this.pdfViewer.toolbar) && !isNullOrUndefined(_this.pdfViewer.toolbar.formDesignerToolbarModule) && !Browser.isDevice) {\n _this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(true);\n }\n }\n else {\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(_this.pdfViewer.toolbar) && !isNullOrUndefined(_this.pdfViewer.toolbar.formDesignerToolbarModule) && !Browser.isDevice) {\n _this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(false);\n }\n }\n _this.isSelection = false;\n // eslint-disable-next-line max-len\n var commentElement = document.getElementById(_this.pdfViewer.element.id + '_commantPanel');\n if (commentElement && commentElement.style.display === 'block') {\n if (_this.pdfViewer.selectedItems) {\n if (_this.pdfViewer.selectedItems.annotations.length !== 0) {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(_this.pdfViewer.element.id + '_accordionContainer' + _this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(_this.pdfViewer.selectedItems.annotations[0].annotName);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n }\n if (event.button === 0 && !_this.isClickedOnScrollBar(event, false)) {\n // 0 is for left button.\n var eventTarget = event.target;\n var offsetX = event.clientX;\n var offsetY = event.clientY;\n var zoomFactor = _this.getZoomFactor();\n var pageIndex = _this.currentPageNumber;\n if (eventTarget) {\n // eslint-disable-next-line\n var pageString = eventTarget.id.split('_text_')[1] || eventTarget.id.split('_textLayer_')[1] || eventTarget.id.split('_annotationCanvas_')[1] || eventTarget.id.split('_pageDiv_')[1];\n // eslint-disable-next-line\n pageIndex = parseInt(pageString);\n }\n var pageDiv = _this.getElement('_pageDiv_' + pageIndex);\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n offsetX = (event.clientX - pageCurrentRect.left) / zoomFactor;\n offsetY = (event.clientY - pageCurrentRect.top) / zoomFactor;\n }\n // eslint-disable-next-line max-len\n if (eventTarget && eventTarget.classList && !eventTarget.classList.contains('e-pv-hyperlink') && !eventTarget.classList.contains('e-pv-page-container')) {\n // eslint-disable-next-line\n _this.pdfViewer.firePageClick(offsetX, offsetY, pageIndex + 1);\n if (_this.pdfViewer.formFieldsModule && !_this.pdfViewer.formDesignerModule) {\n _this.pdfViewer.formFieldsModule.removeFocus();\n }\n }\n if (_this.isTextMarkupAnnotationModule() && !_this.isToolbarInkClicked) {\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.onTextMarkupAnnotationMouseUp(event);\n }\n if (_this.pdfViewer.formDesignerModule && !_this.pdfViewer.annotationModule) {\n _this.pdfViewer.formDesignerModule.updateCanvas(pageIndex);\n }\n // eslint-disable-next-line max-len\n if (_this.viewerContainer.contains(event.target) && (event.target !== _this.viewerContainer) && (event.target !== _this.pageContainer) && _this.isPanMode) {\n _this.viewerContainer.style.cursor = 'move';\n _this.viewerContainer.style.cursor = '-webkit-grab';\n _this.viewerContainer.style.cursor = '-moz-grab';\n _this.viewerContainer.style.cursor = 'grab';\n }\n }\n _this.isViewerMouseDown = false;\n }\n };\n /**\n * @param {WheelEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseWheel = function (event) {\n _this.isViewerMouseWheel = true;\n if (_this.getRerenderCanvasCreated()) {\n event.preventDefault();\n }\n if (event.ctrlKey) {\n var zoomDifference = 25;\n if (_this.pdfViewer.magnification.zoomFactor < 1) {\n zoomDifference = 10;\n }\n if (_this.pdfViewer.magnification.zoomFactor >= 2) {\n zoomDifference = 50;\n }\n // eslint-disable-next-line\n if (event.wheelDelta > 0) {\n _this.pdfViewer.magnification.zoomTo((_this.pdfViewer.magnification.zoomFactor * 100) + zoomDifference);\n }\n else {\n _this.pdfViewer.magnification.zoomTo((_this.pdfViewer.magnification.zoomFactor * 100) - zoomDifference);\n }\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.pageRerenderOnMouseWheel();\n if (event.ctrlKey) {\n event.preventDefault();\n }\n _this.pdfViewer.magnificationModule.fitPageScrollMouseWheel(event);\n }\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n if (_this.isViewerMouseDown) {\n if (!event.target.classList.contains('e-pv-text')) {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseWheel(_this.currentPageNumber - 1);\n }\n }\n }\n };\n /**\n * @param {KeyboardEvent} event - The KeyboardEvent.\n * @returns {void}\n */\n this.onWindowKeyDown = function (event) {\n var isMac = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false;\n var isCommandKey = isMac ? event.metaKey : false;\n if ((_this.isFreeTextAnnotationModule() && _this.pdfViewer.annotationModule\n && (_this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus === true\n || _this.pdfViewer.annotationModule.inputElementModule.isInFocus === true))) {\n return;\n }\n if (!event.ctrlKey || !isCommandKey) {\n switch (event.keyCode) {\n case 27:\n if (_this.pdfViewer.toolbar) {\n _this.pdfViewer.toolbar.addInkAnnotation();\n _this.pdfViewer.toolbar.deSelectCommentAnnotation();\n _this.pdfViewer.toolbar.updateStampItems();\n if (_this.pdfViewer.toolbar.annotationToolbarModule) {\n if (isBlazor()) {\n _this.pdfViewer.toolbar.annotationToolbarModule.deselectAllItemsInBlazor();\n }\n else {\n _this.pdfViewer.toolbar.annotationToolbarModule.deselectAllItems();\n }\n }\n _this.pdfViewer.tool = '';\n _this.focusViewerContainer();\n }\n break;\n }\n }\n };\n /**\n * @param {KeyboardEvent} event - The KeyboardEvent.\n * @returns {void}\n */\n this.viewerContainerOnKeyDown = function (event) {\n var isMac = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false;\n var isCommandKey = isMac ? event.metaKey : false;\n if ((_this.isFreeTextAnnotationModule() && _this.pdfViewer.annotationModule\n && (_this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus === true\n || _this.pdfViewer.annotationModule.inputElementModule.isInFocus === true))) {\n return;\n }\n if (event.ctrlKey || isCommandKey) {\n // add keycodes if shift key is used.\n if ((event.shiftKey && !isMac) || (isMac && !event.shiftKey)) {\n switch (event.keyCode) {\n case 38: // up arrow\n case 33: // page up\n event.preventDefault();\n if (_this.currentPageNumber !== 1) {\n _this.updateScrollTop(0);\n }\n break;\n case 40: // down arrow\n case 34: // page down\n event.preventDefault();\n if (_this.currentPageNumber !== _this.pageCount) {\n _this.updateScrollTop(_this.pageCount - 1);\n }\n break;\n default:\n break;\n }\n }\n switch (event.keyCode) {\n case 79: // o key\n if (_this.pdfViewer.toolbarModule && _this.pdfViewer.enableToolbar) {\n _this.pdfViewer.toolbarModule.openFileDialogBox(event);\n }\n break;\n case 67: // c key\n if (_this.pdfViewer.textSelectionModule && _this.pdfViewer.enableTextSelection && !_this.isTextSelectionDisabled) {\n event.preventDefault();\n _this.pdfViewer.textSelectionModule.copyText();\n }\n if (_this.pdfViewer.selectedItems.annotations.length || _this.pdfViewer.selectedItems.formFields.length) {\n _this.pdfViewer.copy();\n _this.contextMenuModule.previousAction = 'Copy';\n }\n break;\n case 70: // f key\n if (_this.pdfViewer.textSearchModule && _this.pdfViewer.enableTextSearch) {\n event.preventDefault();\n _this.pdfViewer.toolbarModule.textSearchButtonHandler();\n }\n break;\n case 80: // p key\n if (_this.pdfViewer.printModule && _this.pdfViewer.enablePrint) {\n event.preventDefault();\n _this.pdfViewer.print.print();\n }\n break;\n case 90: //z key\n if (_this.pdfViewer.annotationModule) {\n _this.pdfViewer.annotationModule.undo();\n }\n break;\n case 88: //x key\n if (_this.pdfViewer.selectedItems.annotations.length || _this.pdfViewer.selectedItems.formFields.length) {\n _this.pdfViewer.cut();\n _this.contextMenuModule.previousAction = 'Cut';\n }\n break;\n case 89: //y key\n if (_this.pdfViewer.annotationModule) {\n _this.pdfViewer.annotationModule.redo();\n }\n break;\n case 86: //v key\n // eslint-disable-next-line max-len\n if ((_this.pdfViewer.annotation && _this.pdfViewer.annotation.isShapeCopied) || (_this.pdfViewer.formFields && _this.pdfViewer.formDesigner.isShapeCopied)) {\n _this.pdfViewer.paste();\n _this.contextMenuModule.previousAction = 'Paste';\n }\n break;\n default:\n break;\n }\n }\n else {\n switch (event.keyCode) {\n case 46:\n _this.DeleteKeyPressed(event);\n break;\n }\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.magnifyBehaviorKeyDown(event);\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMousemove = function (event) {\n _this.mouseX = event.clientX;\n _this.mouseY = event.clientY;\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n var target = event.target;\n if (_this.action === 'Drag') {\n event.preventDefault();\n }\n // eslint-disable-next-line max-len\n if (_this.isViewerMouseDown && !(_this.action === 'Perimeter' || _this.action === 'Polygon' || _this.action === 'Line' || _this.action === 'DrawTool' || _this.action === 'Distance')) {\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.textSelectionModule && _this.pdfViewer.enableTextSelection && !_this.isTextSelectionDisabled && !_this.getPopupNoteVisibleStatus()) {\n // text selection won't perform if we start the selection from hyperlink content by commenting this line.\n // this region block the toc/hyperlink navigation on sometimes.\n // if ((event.target as HTMLElement).classList.contains('e-pv-hyperlink') && this.pdfViewer.linkAnnotationModule) {\n // this.pdfViewer.linkAnnotationModule.modifyZindexForHyperlink((event.target as HTMLElement), true);\n // }\n if (!isIE) {\n event.preventDefault();\n _this.mouseX = event.clientX;\n _this.mouseY = event.clientY;\n // eslint-disable-next-line\n var annotationModule = _this.pdfViewer.annotationModule;\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.isDropletClicked && annotationModule.textMarkupAnnotationModule.isEnableTextMarkupResizer(annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode)) {\n annotationModule.textMarkupAnnotationModule.textSelect(event.target, _this.mouseX, _this.mouseY);\n }\n else {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseMove(event.target, _this.mouseX, _this.mouseY);\n }\n }\n else {\n var selection = window.getSelection();\n if (!selection.type && !selection.isCollapsed && selection.anchorNode !== null) {\n _this.pdfViewer.textSelectionModule.isTextSelection = true;\n }\n }\n }\n else if (_this.skipPreventDefault(target)) {\n event.preventDefault();\n }\n }\n if (_this.isTextMarkupAnnotationModule() && !_this.getPopupNoteVisibleStatus()) {\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.onTextMarkupAnnotationMouseMove(event);\n }\n if (_this.isPanMode) {\n _this.panOnMouseMove(event);\n }\n if (_this.isShapeBasedAnnotationsEnabled()) {\n var canvas = void 0;\n // eslint-disable-next-line max-len\n if (event.target && (event.target.id.indexOf('_text') > -1 || (event.target.parentElement.classList.contains('foreign-object')) || event.target.id.indexOf('_annotationCanvas') > -1 || event.target.classList.contains('e-pv-hyperlink')) && _this.pdfViewer.annotation) {\n var pageIndex = _this.pdfViewer.annotation.getEventPageNumber(event);\n var diagram = document.getElementById(_this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n if (diagram) {\n var canvas1 = diagram.getBoundingClientRect();\n var left = canvas1.x ? canvas1.x : canvas1.left;\n var top_1 = canvas1.y ? canvas1.y : canvas1.top;\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.annotationModule.stampAnnotationModule.currentStampAnnotation && _this.pdfViewer.annotationModule.stampAnnotationModule.currentStampAnnotation.shapeAnnotationType === 'Image') {\n canvas = new Rect(left, top_1, canvas1.width - 10, canvas1.height - 10);\n }\n else {\n canvas = new Rect(left + 10, top_1 + 10, canvas1.width - 10, canvas1.height - 10);\n }\n }\n }\n else if (!_this.pdfViewer.annotationModule && _this.pdfViewer.formDesignerModule) {\n var pageIndex = _this.pdfViewer.formDesignerModule.getEventPageNumber(event);\n var diagram = document.getElementById(_this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n if (diagram) {\n var canvas1 = diagram.getBoundingClientRect();\n var left = canvas1.x ? canvas1.x : canvas1.left;\n var top_2 = canvas1.y ? canvas1.y : canvas1.top;\n canvas = new Rect(left + 10, top_2 + 10, canvas1.width - 10, canvas1.height - 10);\n }\n }\n // eslint-disable-next-line max-len\n var stampModule = _this.pdfViewer.annotationModule ? _this.pdfViewer.annotationModule.stampAnnotationModule : null;\n if (canvas && canvas.containsPoint({ x: _this.mouseX, y: _this.mouseY }) && !(stampModule && stampModule.isStampAnnotSelected)) {\n _this.diagramMouseMove(event);\n _this.annotationEvent = event;\n }\n else {\n _this.diagramMouseLeave(event);\n if (_this.isAnnotationDrawn && _this.action !== 'Ink') {\n _this.diagramMouseUp(event);\n _this.isAnnotationAdded = true;\n }\n }\n if (_this.pdfViewer.enableStampAnnotations) {\n if (stampModule && stampModule.isStampAnnotSelected) {\n _this.pdfViewer.tool = 'Stamp';\n _this.tool = new StampTool(_this.pdfViewer, _this);\n _this.isMouseDown = true;\n stampModule.isStampAnnotSelected = false;\n stampModule.isNewStampAnnot = true;\n }\n }\n if (_this.isSignatureAdded && _this.pdfViewer.enableHandwrittenSignature) {\n _this.pdfViewer.tool = 'Stamp';\n _this.tool = new StampTool(_this.pdfViewer, _this);\n _this.isMouseDown = true;\n _this.isSignatureAdded = false;\n _this.isNewSignatureAdded = true;\n }\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.panOnMouseMove = function (event) {\n var isStampMode = false;\n // eslint-disable-next-line max-len\n if (_this.action === 'Ink' || _this.action === \"Line\" || _this.action === 'Perimeter' || _this.action === 'Polygon' || _this.action === 'DrawTool' || _this.action === 'Drag' || _this.action.indexOf('Rotate') !== -1 || _this.action.indexOf('Resize') !== -1) {\n isStampMode = true;\n }\n // eslint-disable-next-line max-len\n if (_this.viewerContainer.contains(event.target) && (event.target !== _this.viewerContainer) && (event.target !== _this.pageContainer) && !isStampMode) {\n if (_this.isViewerMouseDown) {\n var deltaX = _this.dragX - event.pageX;\n var deltaY = _this.dragY - event.pageY;\n _this.viewerContainer.scrollTop = _this.viewerContainer.scrollTop + deltaY;\n _this.viewerContainer.scrollLeft = _this.viewerContainer.scrollLeft + deltaX;\n _this.viewerContainer.style.cursor = 'move';\n _this.viewerContainer.style.cursor = '-webkit-grabbing';\n _this.viewerContainer.style.cursor = '-moz-grabbing';\n _this.viewerContainer.style.cursor = 'grabbing';\n _this.dragX = event.pageX;\n _this.dragY = event.pageY;\n }\n else {\n if (!_this.navigationPane.isNavigationPaneResized) {\n _this.viewerContainer.style.cursor = 'move';\n _this.viewerContainer.style.cursor = '-webkit-grab';\n _this.viewerContainer.style.cursor = '-moz-grab';\n _this.viewerContainer.style.cursor = 'grab';\n }\n }\n }\n else {\n if (!_this.navigationPane.isNavigationPaneResized) {\n _this.viewerContainer.style.cursor = 'auto';\n }\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseLeave = function (event) {\n if (_this.isViewerMouseDown) {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseLeave(event);\n }\n }\n if (_this.pdfViewer.textSelectionModule && _this.pdfViewer.textSelectionModule.isTextSelection) {\n event.preventDefault();\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseEnter = function (event) {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n _this.pdfViewer.textSelectionModule.clear();\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseOver = function (event) {\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (_this.isViewerMouseDown) {\n if (!isIE) {\n event.preventDefault();\n }\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnClick = function (event) {\n if (event.type === 'dblclick') {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled && !_this.getCurrentTextMarkupAnnotation()) {\n if (event.target.classList.contains('e-pv-text')) {\n _this.isViewerContainerDoubleClick = true;\n if (!_this.getTextMarkupAnnotationMode()) {\n var pageNumber = parseFloat(event.target.id.split('_')[2]);\n _this.pdfViewer.fireTextSelectionStart(pageNumber + 1);\n }\n _this.pdfViewer.textSelectionModule.selectAWord(event.target, event.clientX, event.clientY, false);\n if (_this.pdfViewer.contextMenuSettings.contextMenuAction === 'MouseUp') {\n _this.pdfViewer.textSelectionModule.calculateContextMenuPosition(event.clientY, event.clientX);\n }\n if (!_this.getTextMarkupAnnotationMode()) {\n _this.pdfViewer.textSelectionModule.maintainSelectionOnZoom(true, false);\n _this.dblClickTimer = setTimeout(function () {\n _this.applySelection();\n }, 100);\n _this.pdfViewer.textSelectionModule.fireTextSelectEnd();\n }\n else if (_this.isTextMarkupAnnotationModule() && _this.getTextMarkupAnnotationMode()) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations(_this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode);\n }\n }\n }\n else if (_this.getCurrentTextMarkupAnnotation()) {\n // this.pdfViewer.annotationModule.showAnnotationPopup(event);\n }\n if (_this.action && (_this.action === 'Perimeter' || _this.action === 'Polygon') && _this.tool) {\n _this.eventArgs.position = _this.currentPosition;\n _this.getMouseEventArgs(_this.currentPosition, _this.eventArgs, event, _this.eventArgs.source);\n var ctrlKey = _this.isMetaKey(event);\n var info = { ctrlKey: event.ctrlKey, shiftKey: event.shiftKey };\n _this.eventArgs.info = info;\n _this.eventArgs.clickCount = event.detail;\n _this.tool.mouseUp(_this.eventArgs, true);\n }\n if (_this.pdfViewer.selectedItems ||\n (_this.pdfViewer.annotation && _this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation)) {\n if (_this.pdfViewer.selectedItems.annotations.length !== 0) {\n // eslint-disable-next-line\n var currentAnnotation = _this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.annotationModule && !currentAnnotation.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.annotationSelect(currentAnnotation.annotName, currentAnnotation.pageIndex, currentAnnotation, null, true);\n if (_this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus === false) {\n if (_this.isFreeTextAnnotation(_this.pdfViewer.selectedItems.annotations) === true) {\n var elmtPosition = {};\n elmtPosition.x = _this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = _this.pdfViewer.selectedItems.annotations[0].bounds.y;\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotation.freeTextAnnotationModule.addInuptElemet(elmtPosition, _this.pdfViewer.selectedItems.annotations[0]);\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].enableShapeLabel === true) {\n var elmtPosition = {};\n elmtPosition.x = _this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = _this.pdfViewer.selectedItems.annotations[0].bounds.y;\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotation.inputElementModule.editLabel(elmtPosition, _this.pdfViewer.selectedItems.annotations[0]);\n }\n else {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(_this.pdfViewer.element.id + '_accordionContainer' + _this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(_this.pdfViewer.selectedItems.annotations[0].annotName);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n }\n }\n else {\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.annotation && _this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n // eslint-disable-next-line\n var annotation = _this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.annotationSelect(annotation.annotName, _this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage, annotation, null, true);\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(_this.pdfViewer.element.id + '_accordionContainer' + _this.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var comments = document.getElementById(annotation.annotName);\n if (comments) {\n comments.firstChild.click();\n }\n }\n }\n }\n if (_this.pdfViewer.designerMode && _this.pdfViewer.selectedItems.formFields.length > 0) {\n var eventArgs = { name: \"formFieldDoubleClick\", field: _this.pdfViewer.selectedItems.formFields[0], cancel: false };\n _this.pdfViewer.fireFormFieldDoubleClickEvent(eventArgs);\n if (!eventArgs.cancel) {\n _this.pdfViewer.formDesigner.createPropertiesWindow();\n }\n }\n }\n else {\n if (event.detail === 3) {\n if (_this.isViewerContainerDoubleClick) {\n clearTimeout(_this.dblClickTimer);\n _this.isViewerContainerDoubleClick = false;\n }\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled && !_this.getTextMarkupAnnotationMode()) {\n _this.pdfViewer.textSelectionModule.selectEntireLine(event);\n _this.pdfViewer.textSelectionModule.maintainSelectionOnZoom(true, false);\n _this.pdfViewer.textSelectionModule.fireTextSelectEnd();\n _this.applySelection();\n }\n }\n }\n };\n /**\n * @param {DragEvent} event - The DragEvent.\n * @returns {void}\n */\n this.viewerContainerOnDragStart = function (event) {\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (!isIE) {\n event.preventDefault();\n }\n };\n // eslint-disable-next-line\n this.viewerContainerOnContextMenuClick = function (event) {\n _this.isViewerMouseDown = false;\n };\n // eslint-disable-next-line\n this.onWindowMouseUp = function (event) {\n _this.isFreeTextContextMenu = false;\n _this.isNewStamp = false;\n _this.signatureAdded = false;\n // eslint-disable-next-line\n var annotationModule = _this.pdfViewer.annotationModule;\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.isEnableTextMarkupResizer(annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode)) {\n // eslint-disable-next-line\n var modules = annotationModule.textMarkupAnnotationModule;\n modules.isLeftDropletClicked = false;\n modules.isDropletClicked = false;\n modules.isRightDropletClicked = false;\n if (!modules.currentTextMarkupAnnotation && window.getSelection().anchorNode === null) {\n modules.showHideDropletDiv(true);\n }\n else if (!modules.currentTextMarkupAnnotation && modules.currentTextMarkupAddMode === '') {\n modules.isTextMarkupAnnotationMode = false;\n }\n }\n if (!_this.getPopupNoteVisibleStatus()) {\n if (event.button === 0) {\n // eslint-disable-next-line max-len\n if (_this.isNewFreeTextAnnotation()) {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled && !_this.getTextMarkupAnnotationMode()) {\n // eslint-disable-next-line max-len\n if (event.detail === 1 && !_this.viewerContainer.contains(event.target) && !_this.contextMenuModule.contextMenuElement.contains(event.target)) {\n if (window.getSelection().anchorNode !== null) {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseup(event);\n }\n }\n // eslint-disable-next-line\n var target = event.target;\n if (_this.viewerContainer.contains(event.target) && target.className !== 'e-pdfviewer-formFields' && target.className !== 'e-pv-formfield-input') {\n if (!_this.isClickedOnScrollBar(event, true) && !_this.isScrollbarMouseDown) {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseup(event);\n }\n else {\n if (window.getSelection().anchorNode !== null) {\n _this.pdfViewer.textSelectionModule.applySpanForSelection();\n }\n }\n }\n }\n else if (_this.getTextMarkupAnnotationMode()) {\n // eslint-disable-next-line\n var viewerElement = _this.pdfViewer.element;\n // eslint-disable-next-line\n var targetElement = event.target;\n if (viewerElement && targetElement) {\n if (viewerElement.id.split('_')[0] === targetElement.id.split('_')[0]) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations(_this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode);\n }\n }\n }\n }\n }\n else if (event.button === 2) {\n if (_this.viewerContainer.contains(event.target) && _this.skipPreventDefault(event.target)) {\n if (_this.checkIsNormalText()) {\n window.getSelection().removeAllRanges();\n }\n }\n }\n if (_this.isViewerMouseDown) {\n _this.isViewerMouseDown = false;\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n _this.pdfViewer.textSelectionModule.clear();\n _this.pdfViewer.textSelectionModule.selectionStartPage = null;\n }\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n return true;\n }\n }\n };\n /**\n * @param {TouchEvent} event - The DragEvent.\n * @returns {void}\n */\n this.onWindowTouchEnd = function (event) {\n _this.signatureAdded = false;\n // eslint-disable-next-line max-len\n if (!_this.pdfViewer.element.contains(event.target) && !_this.contextMenuModule.contextMenuElement.contains(event.target)) {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n _this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n }\n };\n /**\n * @param {TouchEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnTouchStart = function (event) {\n var touchPoints = event.touches;\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.setTouchPoints(touchPoints[0].clientX, touchPoints[0].clientY);\n }\n var target = event.target;\n // eslint-disable-next-line max-len\n if (touchPoints.length === 1 && !(target.classList.contains('e-pv-hyperlink')) && _this.skipPreventDefault(target)) {\n _this.preventTouchEvent(event);\n }\n if (event.touches.length === 1 && _this.isTextMarkupAnnotationModule() && !_this.getPopupNoteVisibleStatus()) {\n if (!_this.isToolbarInkClicked) {\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.onTextMarkupAnnotationTouchEnd(event);\n }\n }\n _this.touchClientX = touchPoints[0].clientX;\n _this.touchClientY = touchPoints[0].clientY;\n _this.scrollY = touchPoints[0].clientY;\n _this.previousTime = new Date().getTime();\n // eslint-disable-next-line max-len\n if (touchPoints.length === 1 && !(event.target.classList.contains('e-pv-touch-select-drop') || event.target.classList.contains('e-pv-touch-ellipse'))) {\n if ((Browser.isDevice && !_this.pdfViewer.enableDesktopMode) && _this.pageCount > 0 && !_this.isThumb && !(event.target.classList.contains('e-pv-hyperlink'))) {\n _this.handleTaps(touchPoints);\n }\n if (!isBlazor() || !Browser.isDevice || _this.pdfViewer.enableDesktopMode) {\n _this.handleTextBoxTaps(touchPoints);\n }\n var designerMode = _this.isDesignerMode(target);\n if (designerMode) {\n _this.contextMenuModule.close();\n // event.preventDefault();\n if (!_this.isLongTouchPropagated) {\n _this.longTouchTimer = setTimeout(function () {\n if (!_this.isMoving) {\n _this.isTouchDesignerMode = true;\n _this.contextMenuModule.open(_this.touchClientY, _this.touchClientX, _this.viewerContainer);\n }\n }, 1000);\n }\n _this.isLongTouchPropagated = true;\n _this.isMoving = false;\n }\n else if ((_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled)) {\n _this.pdfViewer.textSelectionModule.clearTextSelection();\n _this.contextMenuModule.close();\n // event.preventDefault();\n if (!_this.isLongTouchPropagated) {\n _this.longTouchTimer = setTimeout(function () {\n _this.viewerContainerOnLongTouch(event);\n }, 1000);\n }\n _this.isLongTouchPropagated = true;\n }\n }\n // eslint-disable-next-line\n var toolbarModule = _this.pdfViewer.toolbarModule ? _this.pdfViewer.toolbarModule.annotationToolbarModule : 'null';\n if (target.classList.contains('e-pv-text') && (!toolbarModule || !toolbarModule.textMarkupToolbarElement || toolbarModule.textMarkupToolbarElement.children.length === 0)) {\n target.classList.add('e-pv-text-selection-none');\n }\n _this.diagramMouseDown(event);\n // eslint-disable-next-line max-len\n if (_this.action === 'Perimeter' || _this.action === 'Polygon' || _this.action === 'DrawTool' || _this.action === 'Drag' || _this.action.indexOf('Rotate') !== -1 || _this.action.indexOf('Resize') !== -1) {\n event.preventDefault();\n }\n };\n /**\n * @param {TouchEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnLongTouch = function (event) {\n _this.touchClientX = event.touches[0].clientX;\n _this.touchClientY = event.touches[0].clientY;\n event.preventDefault();\n if (_this.pdfViewer.textSelectionModule) {\n var target = event.target;\n if (target.classList.contains('e-pv-text-selection-none')) {\n target.classList.remove('e-pv-text-selection-none');\n }\n _this.pdfViewer.textSelectionModule.initiateTouchSelection(event, _this.touchClientX, _this.touchClientY);\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n clearTimeout(_this.singleTapTimer);\n _this.tapCount = 0;\n }\n }\n };\n /**\n * @param {PointerEvent} event - The PointerEvent.\n * @returns {void}\n */\n this.viewerContainerOnPointerDown = function (event) {\n if (event.pointerType === 'touch') {\n _this.pointerCount++;\n if (_this.pointerCount <= 2) {\n event.preventDefault();\n _this.pointersForTouch.push(event);\n if (_this.pointerCount === 2) {\n _this.pointerCount = 0;\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.setTouchPoints(event.clientX, event.clientY);\n }\n }\n }\n };\n /**\n * @param {TouchEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnTouchMove = function (event) {\n if (_this.action === 'Drag') {\n _this.isMoving = true;\n }\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n clearTimeout(_this.singleTapTimer);\n _this.tapCount = 0;\n }\n _this.preventTouchEvent(event);\n if (_this.isToolbarInkClicked) {\n event.preventDefault();\n }\n var touchPoints = event.touches;\n if (_this.pdfViewer.magnificationModule) {\n _this.isTouchScrolled = true;\n if (touchPoints.length > 1 && _this.pageCount > 0) {\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n _this.isTouchScrolled = false;\n }\n if (_this.pdfViewer.enablePinchZoom) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.magnificationModule.initiatePinchMove(touchPoints[0].clientX, touchPoints[0].clientY, touchPoints[1].clientX, touchPoints[1].clientY);\n }\n }\n else if (touchPoints.length === 1 && _this.getPagesPinchZoomed()) {\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n _this.isTouchScrolled = false;\n }\n _this.pdfViewer.magnificationModule.pinchMoveScroll();\n }\n }\n _this.mouseX = touchPoints[0].clientX;\n _this.mouseY = touchPoints[0].clientY;\n var canvas;\n // eslint-disable-next-line max-len\n if (event.target && (event.target.id.indexOf('_text') > -1 || event.target.id.indexOf('_annotationCanvas') > -1 || event.target.classList.contains('e-pv-hyperlink')) && _this.pdfViewer.annotation) {\n var pageIndex = _this.pdfViewer.annotation.getEventPageNumber(event);\n var diagram = document.getElementById(_this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n if (diagram) {\n var canvas1 = diagram.getBoundingClientRect();\n var left = canvas1.x ? canvas1.x : canvas1.left;\n var top_3 = canvas1.y ? canvas1.y : canvas1.top;\n canvas = new Rect(left + 10, top_3 + 10, canvas1.width - 10, canvas1.height - 10);\n }\n }\n if (canvas && canvas.containsPoint({ x: _this.mouseX, y: _this.mouseY })) {\n _this.diagramMouseMove(event);\n _this.annotationEvent = event;\n }\n else {\n _this.diagramMouseLeave(event);\n if (_this.isAnnotationDrawn) {\n _this.diagramMouseUp(event);\n _this.isAnnotationAdded = true;\n }\n }\n touchPoints = null;\n };\n /**\n * @param {PointerEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnPointerMove = function (event) {\n if (event.pointerType === 'touch' && _this.pageCount > 0) {\n event.preventDefault();\n if (_this.pointersForTouch.length === 2) {\n for (var i = 0; i < _this.pointersForTouch.length; i++) {\n if (event.pointerId === _this.pointersForTouch[i].pointerId) {\n _this.pointersForTouch[i] = event;\n break;\n }\n }\n if (_this.pdfViewer.magnificationModule && _this.pdfViewer.enablePinchZoom) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.magnificationModule.initiatePinchMove(_this.pointersForTouch[0].clientX, _this.pointersForTouch[0].clientY, _this.pointersForTouch[1].clientX, _this.pointersForTouch[1].clientY);\n }\n }\n }\n };\n /**\n * @param {TouchEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnTouchEnd = function (event) {\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.pinchMoveEnd();\n }\n if (event.cancelable && !event.target.classList.contains('e-pv-touch-ellipse') && _this.pdfViewer.textSelectionModule && _this.pdfViewer.textSelectionModule.isTextSelection) {\n event.preventDefault();\n }\n _this.isLongTouchPropagated = false;\n clearInterval(_this.longTouchTimer);\n _this.longTouchTimer = null;\n if ((Browser.isDevice && !_this.pdfViewer.enableDesktopMode) && _this.isTouchScrolled) {\n _this.currentTime = new Date().getTime();\n var duration = _this.currentTime - _this.previousTime;\n // eslint-disable-next-line\n var difference = _this.scrollY - event.changedTouches[0].pageY;\n // eslint-disable-next-line\n var speed = (difference) / (duration);\n if (Math.abs(speed) > 1.5) {\n // eslint-disable-next-line\n var scrollTop = (difference) + ((duration) * speed);\n _this.viewerContainer.scrollTop += scrollTop;\n _this.updateMobileScrollerPosition();\n }\n }\n _this.diagramMouseUp(event);\n _this.renderStampAnnotation(event);\n };\n /**\n * @param {PointerEvent} event - The PointerEvent.\n * @returns {void}\n */\n this.viewerContainerOnPointerEnd = function (event) {\n if (event.pointerType === 'touch') {\n event.preventDefault();\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.pinchMoveEnd();\n }\n _this.pointersForTouch = [];\n _this.pointerCount = 0;\n }\n };\n // eslint-disable-next-line\n this.viewerContainerOnScroll = function (event) {\n var proxy = null;\n proxy = _this;\n var allowServerDataBind = proxy.pdfViewer.allowServerDataBinding;\n proxy.pdfViewer.enableServerDataBinding(false);\n var scrollposX = 0;\n var scrollposY = 0;\n if (event.touches && (Browser.isDevice && !_this.pdfViewer.enableDesktopMode)) {\n // eslint-disable-next-line\n var ratio = (_this.viewerContainer.scrollHeight - _this.viewerContainer.clientHeight) / (_this.viewerContainer.clientHeight - _this.toolbarHeight);\n if (_this.isThumb) {\n _this.ispageMoved = true;\n event.preventDefault();\n _this.mobilePageNoContainer.style.display = 'block';\n scrollposX = event.touches[0].pageX - _this.scrollX;\n scrollposY = event.touches[0].pageY - _this.viewerContainer.offsetTop;\n _this.viewerContainer.scrollTop = scrollposY * ratio;\n // eslint-disable-next-line\n var containerValue = event.touches[0].pageY;\n // eslint-disable-next-line\n var toolbarHeight = _this.pdfViewer.toolbarModule ? 0 : 50;\n if (_this.viewerContainer.scrollTop !== 0 && ((containerValue) <= (_this.viewerContainer.clientHeight - toolbarHeight))) {\n _this.mobileScrollerContainer.style.top = containerValue + 'px';\n }\n }\n else if (event.touches[0].target.className !== 'e-pv-touch-ellipse') {\n if (!(_this.isWebkitMobile && (Browser.isDevice && !_this.pdfViewer.enableDesktopMode))) {\n _this.mobilePageNoContainer.style.display = 'none';\n scrollposY = _this.touchClientY - event.touches[0].pageY;\n scrollposX = _this.touchClientX - event.touches[0].pageX;\n _this.viewerContainer.scrollTop = _this.viewerContainer.scrollTop + (scrollposY);\n _this.viewerContainer.scrollLeft = _this.viewerContainer.scrollLeft + (scrollposX);\n }\n // eslint-disable-next-line\n _this.updateMobileScrollerPosition();\n _this.touchClientY = event.touches[0].pageY;\n _this.touchClientX = event.touches[0].pageX;\n }\n }\n if (_this.scrollHoldTimer) {\n clearTimeout(_this.scrollHoldTimer);\n }\n var pageIndex = _this.currentPageNumber;\n _this.scrollHoldTimer = null;\n _this.contextMenuModule.close();\n var verticalScrollValue = _this.viewerContainer.scrollTop;\n // eslint-disable-next-line max-len\n for (var i = 0; i < _this.pageCount; i++) {\n if (_this.pageSize[i] != null) {\n var pageHeight = _this.getPageHeight(i);\n if (pageHeight < 150) {\n _this.pageStopValue = 75;\n }\n else if (pageHeight >= 150 && pageHeight < 300) {\n _this.pageStopValue = 125;\n }\n else if (pageHeight >= 300 && pageHeight < 500) {\n _this.pageStopValue = 200;\n }\n else {\n _this.pageStopValue = 300;\n }\n // eslint-disable-next-line max-len\n if ((verticalScrollValue + _this.pageStopValue) <= (_this.getPageTop(i) + pageHeight)) {\n _this.currentPageNumber = i + 1;\n _this.pdfViewer.currentPageNumber = i + 1;\n break;\n }\n }\n }\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.magnificationModule && _this.pdfViewer.magnificationModule.fitType === 'fitToPage' && _this.currentPageNumber > 0) {\n if (_this.pageSize[_this.currentPageNumber - 1]) {\n _this.viewerContainer.scrollTop = _this.pageSize[_this.currentPageNumber - 1].top * _this.getZoomFactor();\n }\n }\n _this.renderElementsVirtualScroll(_this.currentPageNumber);\n // eslint-disable-next-line max-len\n if (!_this.isViewerMouseDown && !_this.getPinchZoomed() && !_this.getPinchScrolled() && !_this.getPagesPinchZoomed() || _this.isViewerMouseWheel) {\n _this.pageViewScrollChanged(_this.currentPageNumber);\n _this.isViewerMouseWheel = false;\n }\n else {\n _this.showPageLoadingIndicator(_this.currentPageNumber - 1, false);\n }\n if (_this.pdfViewer.toolbarModule) {\n if (!isBlazor()) {\n _this.pdfViewer.toolbarModule.updateCurrentPage(_this.currentPageNumber);\n }\n _this.viewerContainer.setAttribute('aria-labelledby', _this.pdfViewer.element.id + '_pageDiv_' + (_this.currentPageNumber - 1));\n if (!isBlazor()) {\n if (!Browser.isDevice || _this.pdfViewer.enableDesktopMode) {\n _this.pdfViewer.toolbarModule.updateNavigationButtons();\n }\n }\n }\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n _this.mobileSpanContainer.innerHTML = _this.currentPageNumber.toString();\n _this.mobilecurrentPageContainer.innerHTML = _this.currentPageNumber.toString();\n }\n if (pageIndex !== _this.currentPageNumber) {\n if (proxy.pdfViewer.thumbnailViewModule && (!Browser.isDevice || _this.pdfViewer.enableDesktopMode)) {\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.currentPageNumber - 1);\n proxy.pdfViewer.thumbnailViewModule.isThumbnailClicked = false;\n }\n _this.pdfViewer.firePageChange(pageIndex);\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.updatePagesForFitPage(_this.currentPageNumber - 1);\n }\n var currentPage = _this.getElement('_pageDiv_' + (_this.currentPageNumber - 1));\n if (currentPage) {\n currentPage.style.visibility = 'visible';\n }\n if (_this.isViewerMouseDown) {\n if (_this.getRerenderCanvasCreated() && !_this.isPanMode) {\n _this.pdfViewer.magnificationModule.clearIntervalTimer();\n }\n // eslint-disable-next-line\n var data = _this.getStoredData(_this.currentPageNumber);\n if (data) {\n _this.isDataExits = true;\n _this.initiatePageViewScrollChanged();\n _this.isDataExits = false;\n }\n else {\n // eslint-disable-next-line max-len\n var timer = _this.pdfViewer.scrollSettings.delayPageRequestTimeOnScroll ? _this.pdfViewer.scrollSettings.delayPageRequestTimeOnScroll : 100;\n _this.scrollHoldTimer = setTimeout(function () {\n _this.initiatePageViewScrollChanged();\n }, timer);\n }\n }\n if (_this.pdfViewer.annotation && _this.navigationPane.commentPanelContainer) {\n _this.pdfViewer.annotation.stickyNotesAnnotationModule.updateCommentPanelScrollTop(_this.currentPageNumber);\n }\n // eslint-disable-next-line max-len\n if ((Browser.isDevice && !_this.pdfViewer.enableDesktopMode) && event.touches && event.touches[0].target.className !== 'e-pv-touch-ellipse') {\n setTimeout(function () {\n _this.updateMobileScrollerPosition();\n }, 500);\n }\n proxy.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n this.pdfViewer = viewer;\n this.navigationPane = new NavigationPane(this.pdfViewer, this);\n this.textLayer = new TextLayer(this.pdfViewer, this);\n this.signatureModule = new Signature(this.pdfViewer, this);\n this.isWebkitMobile = /Chrome/.test(navigator.userAgent) || /Google Inc/.test(navigator.vendor) || (navigator.userAgent.indexOf('Safari') !== -1);\n }\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.initializeComponent = function () {\n var element = document.getElementById(this.pdfViewer.element.id);\n if (element) {\n this.blazorUIAdaptor = isBlazor() ? new BlazorUiAdaptor(this.pdfViewer, this) : null;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewer.element.classList.add('e-pv-mobile-view');\n }\n var controlWidth = '100%';\n var toolbarDiv = void 0;\n this.viewerMainContainer = isBlazor() ? element.querySelector('.e-pv-viewer-main-container') : createElement('div', { id: this.pdfViewer.element.id + '_viewerMainContainer', className: 'e-pv-viewer-main-container' });\n this.viewerContainer = isBlazor() ? element.querySelector('.e-pv-viewer-container') : createElement('div', { id: this.pdfViewer.element.id + '_viewerContainer', className: 'e-pv-viewer-container', attrs: { 'aria-label': 'pdfviewer scroll view' } });\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.createMobilePageNumberContainer();\n }\n // eslint-disable-next-line\n this.viewerContainer.tabIndex = 0;\n if (this.pdfViewer.enableRtl) {\n this.viewerContainer.style.direction = 'rtl';\n }\n element.style.touchAction = 'pan-x pan-y';\n this.setMaximumHeight(element);\n this.mainContainer = isBlazor() ? element.querySelector('.e-pv-main-container') : createElement('div', { id: this.pdfViewer.element.id + '_mainContainer', className: 'e-pv-main-container' });\n this.mainContainer.appendChild(this.viewerMainContainer);\n element.appendChild(this.mainContainer);\n this.applyViewerHeight(this.mainContainer);\n if (this.pdfViewer.toolbarModule) {\n this.navigationPane.initializeNavigationPane();\n toolbarDiv = this.pdfViewer.toolbarModule.intializeToolbar(controlWidth);\n }\n else {\n if (isBlazor()) {\n this.navigationPane.initializeNavigationPane();\n toolbarDiv = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n if (!this.pdfViewer.enableToolbar) {\n this.toolbarHeight = 0;\n toolbarDiv.style.display = 'none';\n }\n if (!this.pdfViewer.enableNavigationToolbar && ((Browser.isDevice && this.pdfViewer.enableDesktopMode) || (!Browser.isDevice))) {\n this.navigationPane.sideBarToolbar.style.display = 'none';\n this.navigationPane.sideBarToolbarSplitter.style.display = 'none';\n if (this.navigationPane.isBookmarkOpen || this.navigationPane.isThumbnailOpen) {\n this.navigationPane.updateViewerContainerOnClose();\n }\n }\n }\n }\n if (toolbarDiv) {\n this.viewerContainer.style.height = this.updatePageHeight(this.pdfViewer.element.getBoundingClientRect().height, 56);\n }\n else {\n this.viewerContainer.style.height = this.updatePageHeight(this.pdfViewer.element.getBoundingClientRect().height, 0);\n }\n var viewerWidth = this.pdfViewer.element.clientWidth;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n viewerWidth = viewerWidth - (this.navigationPane.sideBarToolbar ? this.navigationPane.getViewerContainerLeft() : 0) -\n (this.navigationPane.commentPanelContainer ? this.navigationPane.getViewerContainerRight() : 0);\n }\n this.viewerContainer.style.width = viewerWidth + 'px';\n this.viewerMainContainer.appendChild(this.viewerContainer);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.mobileScrollerContainer.style.left = (viewerWidth - parseFloat(this.mobileScrollerContainer.style.width)) + 'px';\n this.mobilePageNoContainer.style.left = (viewerWidth / 2) - (parseFloat(this.mobilePageNoContainer.style.width) / 2) + 'px';\n this.mobilePageNoContainer.style.top = (this.pdfViewer.element.clientHeight / 2) + 'px';\n this.mobilePageNoContainer.style.display = 'none';\n this.mobilePageNoContainer.appendChild(this.mobilecurrentPageContainer);\n this.mobilePageNoContainer.appendChild(this.mobilenumberContainer);\n this.mobilePageNoContainer.appendChild(this.mobiletotalPageContainer);\n this.viewerContainer.appendChild(this.mobilePageNoContainer);\n this.viewerMainContainer.appendChild(this.mobileScrollerContainer);\n this.mobileScrollerContainer.appendChild(this.mobileSpanContainer);\n }\n this.pageContainer = createElement('div', { id: this.pdfViewer.element.id + '_pageViewContainer', className: 'e-pv-page-container', attrs: { 'tabindex': '0', 'aria-label': 'pdfviewer Page View' } });\n if (this.pdfViewer.enableRtl) {\n this.pageContainer.style.direction = 'ltr';\n }\n this.viewerContainer.appendChild(this.pageContainer);\n this.pageContainer.style.width = this.viewerContainer.clientWidth + 'px';\n if (toolbarDiv && this.pdfViewer.thumbnailViewModule && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n this.pdfViewer.thumbnailViewModule.createThumbnailContainer();\n }\n this.createPrintPopup();\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.createGoToPagePopup();\n }\n var waitingPopup = createElement('div', { id: this.pdfViewer.element.id + '_loadingIndicator' });\n this.viewerContainer.appendChild(waitingPopup);\n createSpinner({ target: waitingPopup, cssClass: 'e-spin-center' });\n this.setLoaderProperties(waitingPopup);\n if (isBlazor()) {\n this.contextMenuModule = new BlazorContextMenu(this.pdfViewer, this);\n // eslint-disable-next-line\n var spinnerElement = document.getElementsByClassName(this.pdfViewer.element.id + '_spinner');\n if (spinnerElement && spinnerElement[0] && (!spinnerElement[0].classList.contains('e-spin-hide'))) {\n spinnerElement[0].classList.remove('e-spin-show');\n spinnerElement[0].classList.add('e-spin-hide');\n }\n }\n else {\n this.contextMenuModule = new ContextMenu(this.pdfViewer, this);\n }\n this.contextMenuModule.createContextMenu();\n this.createFileInputElement();\n this.wireEvents();\n if (this.pdfViewer.textSearchModule && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n this.pdfViewer.textSearchModule.createTextSearchBox();\n }\n if (this.pdfViewer.documentPath) {\n if (isBlazor()) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('LoadDocumentFromClient', this.pdfViewer.documentPath);\n }\n else {\n this.pdfViewer.load(this.pdfViewer.documentPath, null);\n }\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.initializeCollection();\n }\n }\n };\n PdfViewerBase.prototype.createMobilePageNumberContainer = function () {\n this.mobilePageNoContainer = createElement('div', { id: this.pdfViewer.element.id + '_mobilepagenoContainer', className: 'e-pv-mobilepagenoscroll-container' });\n this.mobilecurrentPageContainer = createElement('span', { id: this.pdfViewer.element.id + '_mobilecurrentpageContainer', className: 'e-pv-mobilecurrentpage-container' });\n this.mobilenumberContainer = createElement('span', { id: this.pdfViewer.element.id + '_mobiledashedlineContainer', className: 'e-pv-mobiledashedline-container' });\n this.mobiletotalPageContainer = createElement('span', { id: this.pdfViewer.element.id + '_mobiletotalpageContainer', className: 'e-pv-mobiletotalpage-container' });\n this.mobileScrollerContainer = createElement('div', { id: this.pdfViewer.element.id + '_mobilescrollContainer', className: 'e-pv-mobilescroll-container' });\n this.mobileSpanContainer = createElement('span', { id: this.pdfViewer.element.id + '_mobilespanContainer', className: 'e-pv-mobilespanscroll-container' });\n this.mobileSpanContainer.innerHTML = '1';\n this.mobilecurrentPageContainer.innerHTML = '1';\n this.mobilenumberContainer.innerHTML = '―――――';\n this.mobileScrollerContainer.style.cssFloat = 'right';\n this.mobileScrollerContainer.style.width = '40px';\n this.mobileScrollerContainer.style.height = '32px';\n this.mobileScrollerContainer.style.zIndex = '100';\n this.mobilePageNoContainer.style.width = '120px';\n this.mobilePageNoContainer.style.height = '100px';\n this.mobilePageNoContainer.style.zIndex = '100';\n this.mobilePageNoContainer.style.position = 'fixed';\n this.mobileScrollerContainer.addEventListener('touchstart', this.mobileScrollContainerDown.bind(this));\n this.mobileScrollerContainer.addEventListener('touchend', this.mobileScrollContainerEnd.bind(this));\n this.mobileScrollerContainer.style.display = 'none';\n };\n /**\n * @private\n * @param {string} documentData - file name or base64 string.\n * @param {string} password - password of the PDF document.\n * @returns {void}\n */\n PdfViewerBase.prototype.initiatePageRender = function (documentData, password) {\n this.loadedData = documentData;\n this.documentId = this.createGUID();\n if (this.viewerContainer) {\n this.viewerContainer.scrollTop = 0;\n }\n this.showLoadingIndicator(true);\n this.hashId = ' ';\n this.isFileName = false;\n this.saveDocumentInfo();\n if (this.pdfViewer.interactionMode === 'Pan') {\n this.initiatePanning();\n }\n documentData = this.checkDocumentData(documentData);\n this.setFileName();\n if (this.pdfViewer.downloadFileName) {\n this.downloadFileName = this.pdfViewer.downloadFileName;\n }\n else {\n this.downloadFileName = this.pdfViewer.fileName;\n }\n var jsonObject = this.constructJsonObject(documentData, password);\n this.createAjaxRequest(jsonObject, documentData, password);\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.initiateLoadDocument = function (documentId, isFileName, fileName) {\n if (documentId) {\n this.documentId = documentId;\n }\n if (this.viewerContainer) {\n this.viewerContainer.scrollTop = 0;\n }\n this.showLoadingIndicator(true);\n this.hashId = ' ';\n this.isFileName = isFileName;\n this.saveDocumentInfo();\n if (this.pdfViewer.interactionMode === 'Pan') {\n this.initiatePanning();\n }\n this.setFileName();\n if (this.pdfViewer.fileName === null) {\n if (isFileName && fileName) {\n this.pdfViewer.fileName = fileName;\n this.jsonDocumentId = this.pdfViewer.fileName;\n }\n else {\n this.pdfViewer.fileName = 'undefined.pdf';\n this.jsonDocumentId = null;\n }\n }\n if (this.pdfViewer.downloadFileName) {\n this.downloadFileName = this.pdfViewer.downloadFileName;\n }\n else {\n this.downloadFileName = this.pdfViewer.fileName;\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.loadSuccess = function (documentDetails, password) {\n // eslint-disable-next-line\n var data = documentDetails;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n this.onControlError(500, data, this.pdfViewer.serverActionSettings.load);\n data = null;\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n // eslint-disable-next-line\n if (typeof parseInt(data) === 'number' && !isNaN(parseInt(data))) {\n // eslint-disable-next-line\n data = parseInt(data);\n break;\n }\n }\n if (data.StatusText && (data.StatusText === 'File Does not Exist')) {\n this.showLoadingIndicator(false);\n }\n // eslint-disable-next-line\n if (data.uniqueId === this.documentId || (typeof parseInt(data) === 'number' && !isNaN(parseInt(data)))) {\n this.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.load, data);\n this.requestSuccess(data, null, password);\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.mobileScrollContainerDown = function (event) {\n this.ispageMoved = false;\n this.isThumb = true;\n if (this.isTextMarkupAnnotationModule()) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage != null && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n var pageNumber = this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage = null;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.clearAnnotationSelection(pageNumber);\n this.pdfViewer.toolbar.showToolbar(true);\n }\n }\n this.mobileScrollerContainer.addEventListener('touchmove', this.viewerContainerOnScroll.bind(this), true);\n };\n /**\n * @private\n * @param {MouseEvent} e - default mouse event.\n * @returns {PointModel} - retuns the bounds.\n */\n PdfViewerBase.prototype.relativePosition = function (e) {\n // eslint-disable-next-line\n var currentRect = this.viewerContainer.getBoundingClientRect();\n var left = e.clientX - currentRect.left;\n var top = e.clientY - currentRect.top;\n return { x: left, y: top };\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.setMaximumHeight = function (element) {\n // eslint-disable-next-line\n var currentRect = element.getBoundingClientRect();\n if ((!Browser.isDevice || this.pdfViewer.enableDesktopMode) || (currentRect && currentRect.height === 0)) {\n element.style.minHeight = '500px';\n }\n this.updateWidth();\n this.updateHeight();\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.applyViewerHeight = function (element) {\n // eslint-disable-next-line\n var currentRect = element.getBoundingClientRect();\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && currentRect && currentRect.height === 0) {\n element.style.minHeight = '500px';\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateWidth = function () {\n if (this.pdfViewer.width.toString() !== 'auto') {\n // eslint-disable-next-line\n this.pdfViewer.element.style.width = this.pdfViewer.width;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateHeight = function () {\n if (this.pdfViewer.height.toString() !== 'auto') {\n // eslint-disable-next-line\n this.pdfViewer.element.style.height = this.pdfViewer.height;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateViewerContainer = function () {\n var sideBarContentContainer = this.getElement('_sideBarContentContainer');\n if (sideBarContentContainer && sideBarContentContainer.style.display === 'none') {\n this.navigationPane.updateViewerContainerOnClose();\n }\n else if (sideBarContentContainer && sideBarContentContainer.style.display === 'block') {\n this.navigationPane.updateViewerContainerOnExpand();\n }\n else {\n this.updateViewerContainerSize();\n }\n // eslint-disable-next-line\n var toolbarModule = this.pdfViewer.toolbarModule;\n if (toolbarModule) {\n if (isBlazor()) {\n if (this.pdfViewer.enableToolbar || this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('RefreshToolbarItems');\n }\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n toolbarModule.toolbar.refreshOverflow();\n }\n if (this.pdfViewer.enableAnnotationToolbar && toolbarModule.annotationToolbarModule) {\n toolbarModule.annotationToolbarModule.toolbar.refreshOverflow();\n }\n }\n }\n };\n PdfViewerBase.prototype.updateViewerContainerSize = function () {\n this.viewerContainer.style.width = this.pdfViewer.element.clientWidth + 'px';\n this.pageContainer.style.width = this.viewerContainer.offsetWidth + 'px';\n this.updateZoomValue();\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.mobileScrollContainerEnd = function (event) {\n if (!this.ispageMoved) {\n this.goToPagePopup.show();\n }\n this.isThumb = false;\n this.ispageMoved = false;\n this.mobileScrollerContainer.removeEventListener('touchmove', this.viewerContainerOnScroll.bind(this), true);\n this.mobilePageNoContainer.style.display = 'none';\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.createAjaxRequest = function (jsonObject, documentData, password) {\n var proxy = null;\n proxy = this;\n if (this.pdfViewer.serverActionSettings) {\n this.loadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.loadRequestHandler.url = this.pdfViewer.serviceUrl + '/' + this.pdfViewer.serverActionSettings.load;\n this.loadRequestHandler.responseType = 'json';\n this.loadRequestHandler.mode = true;\n // eslint-disable-next-line\n jsonObject['action'] = 'Load';\n // eslint-disable-next-line\n jsonObject['elementId'] = this.pdfViewer.element.id;\n this.loadRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.loadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, this.pdfViewer.serverActionSettings.load);\n data = null;\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n // eslint-disable-next-line\n if (typeof parseInt(data) === 'number' && !isNaN(parseInt(data))) {\n // eslint-disable-next-line\n data = parseInt(data);\n break;\n }\n }\n // eslint-disable-next-line\n if (data.uniqueId === proxy.documentId || (typeof parseInt(data) === 'number' && !isNaN(parseInt(data)))) {\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.load, data);\n proxy.requestSuccess(data, documentData, password);\n }\n }\n }\n else {\n proxy.showLoadingIndicator(false);\n }\n };\n // eslint-disable-next-line\n this.loadRequestHandler.onFailure = function (result) {\n var statusString = result.status.toString().split('')[0];\n if (statusString === '4') {\n proxy.openNotificationPopup('Client error');\n }\n else {\n proxy.openNotificationPopup();\n }\n proxy.showLoadingIndicator(false);\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.load);\n };\n // eslint-disable-next-line\n this.loadRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n proxy.showLoadingIndicator(false);\n // eslint-disable-next-line\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.load);\n };\n }\n };\n /**\n * @private\n * @param {string} errorString - The message to be displayed.\n * @returns {void}\n */\n PdfViewerBase.prototype.openNotificationPopup = function (errorString) {\n var _this = this;\n if (this.pdfViewer.showNotificationDialog) {\n if (errorString === 'Client error') {\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Clienterror');\n promise.then(function (value) {\n _this.textLayer.createNotificationPopup(value);\n });\n }\n else {\n this.textLayer.createNotificationPopup(this.pdfViewer.localeObj.getConstant('Client error'));\n }\n }\n else {\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Servererror');\n promise.then(function (value) {\n _this.textLayer.createNotificationPopup(value);\n });\n }\n else {\n this.textLayer.createNotificationPopup(this.pdfViewer.localeObj.getConstant('Server error'));\n }\n }\n if (this.getElement('_notify')) {\n this.getElement('_notify').classList.add('e-pv-notification-large-content');\n }\n }\n };\n /**\n * @private\n * @param {string} errorString - The message to be shown.\n * @returns {void}\n */\n PdfViewerBase.prototype.showNotificationPopup = function (errorString) {\n if (!this.pdfViewer.showNotificationDialog && errorString !== '') {\n this.textLayer.createNotificationPopup(errorString);\n if (this.getElement('_notify')) {\n this.getElement('_notify').classList.add('e-pv-notification-large-content');\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.requestSuccess = function (data, documentData, password) {\n if (data && data.pageCount !== undefined) {\n if (isBlazor() && this.isPassword) {\n this.isPassword = false;\n this.isPasswordAvailable = false;\n this.pdfViewer._dotnetInstance.invokeMethodAsync('ClosePasswordDialog');\n }\n if (password && password != '') {\n this.passwordData = password;\n }\n this.pdfViewer.allowServerDataBinding = false;\n this.pageCount = data.pageCount;\n this.pdfViewer.pageCount = data.pageCount;\n this.hashId = data.hashId;\n this.documentLiveCount = data.documentLiveCount;\n this.isAnnotationCollectionRemoved = false;\n this.saveDocumentHashData();\n this.saveFormfieldsData(data);\n this.pdfViewer.allowServerDataBinding = true;\n this.pageRender(data);\n // eslint-disable-next-line\n var pageData = { pageCount: data.pageCount, pageSizes: data.pageSizes };\n window.sessionStorage.setItem(this.documentId + '_pagedata', JSON.stringify(pageData));\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.mobileScrollerContainer.style.display = '';\n // eslint-disable-next-line\n var toolbarHeight = this.pdfViewer.toolbarModule ? this.toolbarHeight : 0;\n this.mobileScrollerContainer.style.top = (toolbarHeight) + 'px';\n }\n this.restrictionList = data.RestrictionSummary;\n this.RestrictionEnabled(this.restrictionList, false);\n }\n else {\n this.pageCount = 0;\n this.currentPageNumber = 0;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.mobileScrollerContainer.style.display = 'none';\n }\n if (data === 4) {\n if (!isBlazor()) {\n // 4 is error code for encrypted document.\n this.renderPasswordPopup(documentData, password);\n }\n }\n else if (data === 3) {\n if (!isBlazor()) {\n // 3 is error code for corrupted document.\n this.renderCorruptPopup();\n }\n }\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateToolbarItems();\n }\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotationModule;\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.isEnableTextMarkupResizer(annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode)) {\n annotationModule.textMarkupAnnotationModule.createAnnotationSelectElement();\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.RestrictionEnabled = function (restrictionSummary, isEnable) {\n if (restrictionSummary) {\n for (var i = 0; i < restrictionSummary.length; i++) {\n this.EnableRestriction(restrictionSummary[i], isEnable);\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.DisableToolbarItems(restrictionSummary[i], isEnable);\n }\n }\n else {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('RestrictToolbarItems', restrictionSummary, isEnable);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.EnableRestriction = function (restrictionSummary, isEnable) {\n switch (restrictionSummary) {\n case 'Print':\n this.pdfViewer.enablePrint = isEnable;\n break;\n case 'CopyContent':\n this.pdfViewer.enableTextSelection = isEnable;\n break;\n case 'FillFields':\n this.pdfViewer.enableFormFields = isEnable;\n this.enableFormFieldButton(isEnable);\n break;\n case 'EditAnnotations':\n this.pdfViewer.enableAnnotation = isEnable;\n break;\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.pageRender = function (data) {\n this.document = null;\n this.passwordDialogReset();\n if (this.passwordPopup) {\n this.passwordPopup.hide();\n }\n var pageIndex = 0;\n this.initPageDiv(data);\n this.currentPageNumber = pageIndex + 1;\n this.pdfViewer.currentPageNumber = pageIndex + 1;\n this.previousZoomValue = this.pdfViewer.zoomValue;\n var isZoomMode = false;\n if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.isAutoZoom = true;\n if (this.pdfViewer.zoomValue && this.pdfViewer.zoomValue > 0) {\n if (this.pdfViewer.zoomValue !== 100) {\n isZoomMode = true;\n }\n this.isInitialPageMode = true;\n this.pdfViewer.magnification.zoomTo(this.pdfViewer.zoomValue);\n }\n if (this.pdfViewer.zoomMode === 'FitToWidth') {\n this.isInitialPageMode = true;\n this.pdfViewer.magnificationModule.fitToWidth();\n }\n else if (this.pdfViewer.zoomMode === 'FitToPage') {\n this.isInitialPageMode = true;\n this.pdfViewer.magnificationModule.fitToPage();\n }\n this.documentLoaded = true;\n this.pdfViewer.magnificationModule.isInitialLoading = true;\n this.onWindowResize();\n this.documentLoaded = false;\n this.pdfViewer.magnificationModule.isInitialLoading = false;\n }\n this.isDocumentLoaded = true;\n // eslint-disable-next-line\n var viewPortWidth = 816;\n // eslint-disable-next-line radix\n viewPortWidth = parseInt(viewPortWidth);\n var pageWidth = this.pageSize[pageIndex].width;\n if (this.renderedPagesList.indexOf(pageIndex) === -1 && !isZoomMode) {\n this.createRequestForRender(pageIndex);\n var pageNumber = pageIndex + 1;\n if (pageNumber < this.pageCount) {\n this.createRequestForRender(pageNumber);\n pageNumber = pageNumber + 1;\n }\n if (this.pageSize[pageNumber]) {\n var pageTop = this.getPageTop(pageNumber);\n var viewerHeight = this.viewerContainer.clientHeight;\n while (viewerHeight > pageTop) {\n if (this.pageSize[pageNumber]) {\n this.renderPageElement(pageNumber);\n this.createRequestForRender(pageNumber);\n pageTop = this.getPageTop(pageNumber);\n pageNumber = pageNumber + 1;\n }\n else {\n break;\n }\n }\n }\n }\n this.showLoadingIndicator(false);\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.uploadedDocumentName = null;\n this.pdfViewer.toolbarModule.updateCurrentPage(this.currentPageNumber);\n this.pdfViewer.toolbarModule.updateToolbarItems();\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n this.pdfViewer.toolbar.annotationToolbarModule.enableAnnotationAddTools(true);\n }\n // eslint-disable-next-line max-len\n this.viewerContainer.setAttribute('aria-labelledby', this.pdfViewer.element.id + '_pageDiv_' + (this.currentPageNumber - 1));\n }\n }\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.mobileSpanContainer.innerHTML = this.currentPageNumber.toString();\n this.mobilecurrentPageContainer.innerHTML = this.currentPageNumber.toString();\n }\n };\n PdfViewerBase.prototype.renderPasswordPopup = function (documentData, password) {\n var _this = this;\n if (!isBlazor()) {\n if (!this.isPasswordAvailable) {\n if (this.isFileName) {\n this.document = documentData;\n }\n else {\n this.document = 'data:application/pdf;base64,' + documentData;\n }\n this.isPasswordAvailable = true;\n this.createPasswordPopup();\n this.pdfViewer.fireDocumentLoadFailed(true, null);\n this.passwordPopup.show();\n }\n else {\n this.pdfViewer.fireDocumentLoadFailed(true, password);\n this.promptElement.classList.add('e-pv-password-error');\n this.promptElement.textContent = this.pdfViewer.localeObj.getConstant('Invalid Password');\n this.promptElement.focus();\n if (this.isFileName) {\n this.document = documentData;\n }\n else {\n this.document = 'data:application/pdf;base64,' + documentData;\n }\n this.passwordPopup.show();\n }\n }\n else {\n // eslint-disable-next-line\n var promptElement_1 = document.getElementById(this.pdfViewer.element.id + '_prompt');\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_EnterPassword');\n promise.then(function (value) {\n promptElement_1.textContent = value;\n });\n // eslint-disable-next-line\n var passwordInput_1 = document.querySelector('#' + this.pdfViewer.element.id + '_password_input');\n passwordInput_1.addEventListener('keyup', function () {\n if (passwordInput_1.value === '') {\n _this.passwordDialogReset();\n }\n });\n passwordInput_1.addEventListener('focus', function () {\n passwordInput_1.parentElement.classList.add('e-input-focus');\n });\n passwordInput_1.addEventListener('blur', function () {\n passwordInput_1.parentElement.classList.remove('e-input-focus');\n });\n if (!this.isPasswordAvailable) {\n if (this.isFileName) {\n this.document = documentData;\n }\n else {\n this.document = 'data:application/pdf;base64,' + documentData;\n }\n this.isPasswordAvailable = true;\n this.pdfViewer.fireDocumentLoadFailed(true, null);\n }\n else {\n this.pdfViewer.fireDocumentLoadFailed(true, password);\n promptElement_1.classList.add('e-pv-password-error');\n var promise_1 = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_InvalidPassword');\n promise_1.then(function (value) {\n promptElement_1.textContent = value;\n });\n promptElement_1.focus();\n if (this.isFileName) {\n this.document = documentData;\n }\n else {\n this.document = 'data:application/pdf;base64,' + documentData;\n }\n }\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenPasswordDialog');\n }\n };\n PdfViewerBase.prototype.renderCorruptPopup = function () {\n this.pdfViewer.fireDocumentLoadFailed(false, null);\n this.documentId = null;\n if (this.pdfViewer.showNotificationDialog) {\n if (!isBlazor()) {\n this.createCorruptedPopup();\n this.corruptPopup.show();\n }\n else {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenCorruptedDialog');\n }\n }\n };\n PdfViewerBase.prototype.constructJsonObject = function (documentData, password) {\n var jsonObject;\n if (password) {\n this.isPasswordAvailable = true;\n this.passwordData = password;\n // eslint-disable-next-line max-len\n jsonObject = { document: documentData, password: password, zoomFactor: 1, isFileName: this.isFileName, uniqueId: this.documentId };\n }\n else {\n this.isPasswordAvailable = false;\n this.passwordData = '';\n jsonObject = { document: documentData, zoomFactor: 1, isFileName: this.isFileName, uniqueId: this.documentId };\n }\n return jsonObject;\n };\n PdfViewerBase.prototype.checkDocumentData = function (documentData) {\n var base64String = documentData.split('base64,')[1];\n if (base64String === undefined) {\n this.isFileName = true;\n this.jsonDocumentId = documentData;\n if (this.pdfViewer.fileName === null) {\n // eslint-disable-next-line max-len\n var documentStringArray = (documentData.indexOf('\\\\') !== -1) ? documentData.split('\\\\') : documentData.split('/');\n this.pdfViewer.fileName = documentStringArray[documentStringArray.length - 1];\n this.jsonDocumentId = this.pdfViewer.fileName;\n base64String = documentData;\n }\n }\n else {\n this.jsonDocumentId = null;\n }\n return base64String;\n };\n PdfViewerBase.prototype.setFileName = function () {\n if (this.pdfViewer.fileName === null) {\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.uploadedDocumentName) {\n this.pdfViewer.fileName = this.pdfViewer.toolbarModule.uploadedDocumentName;\n this.jsonDocumentId = this.pdfViewer.fileName;\n }\n else {\n this.pdfViewer.fileName = 'undefined.pdf';\n this.jsonDocumentId = null;\n }\n }\n };\n PdfViewerBase.prototype.saveDocumentInfo = function () {\n window.sessionStorage.setItem('currentDocument', this.documentId);\n window.sessionStorage.setItem('serviceURL', this.pdfViewer.serviceUrl);\n if (this.pdfViewer.serverActionSettings) {\n window.sessionStorage.setItem('unload', this.pdfViewer.serverActionSettings.unload);\n }\n };\n PdfViewerBase.prototype.saveDocumentHashData = function () {\n var hashId = '';\n if (Browser.isIE || Browser.info.name === 'edge') {\n hashId = encodeURI(this.hashId);\n }\n else {\n hashId = this.hashId;\n }\n window.sessionStorage.setItem('hashId', hashId);\n if (this.documentLiveCount) {\n window.sessionStorage.setItem('documentLiveCount', this.documentLiveCount.toString());\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.saveFormfieldsData = function (data) {\n this.pdfViewer.isFormFieldDocument = false;\n this.enableFormFieldButton(false);\n if (data && data.PdfRenderedFormFields && data.PdfRenderedFormFields.length > 0) {\n if (this.formfieldvalue) {\n if (this.pdfViewer.formFieldsModule) {\n this.setItemInSessionStorage(this.formfieldvalue, '_formfields');\n }\n this.formfieldvalue = null;\n }\n else if (this.pdfViewer.formFieldsModule) {\n for (var i = 0; i < data.PdfRenderedFormFields.length; i++) {\n if (data.PdfRenderedFormFields[i].FieldName == '') {\n data.PdfRenderedFormFields.splice(i, 1);\n }\n }\n this.setItemInSessionStorage(data.PdfRenderedFormFields, '_formfields');\n }\n if (this.pdfViewer.enableFormFields && this.pdfViewer.formFieldsModule) {\n this.pdfViewer.formFieldsModule.formFieldCollections();\n }\n if (this.pdfViewer.formFieldCollections.length > 0) {\n this.pdfViewer.isFormFieldDocument = true;\n this.enableFormFieldButton(true);\n }\n }\n };\n /**\n * @param {boolean} isEnable - Enable or disable the toolbar itema.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.enableFormFieldButton = function (isEnable) {\n if (isEnable) {\n this.pdfViewer.isFormFieldDocument = true;\n }\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.submitItem) {\n this.pdfViewer.toolbarModule.toolbar.enableItems(this.pdfViewer.toolbarModule.submitItem.parentElement, isEnable);\n }\n };\n PdfViewerBase.prototype.updateWaitingPopup = function (pageNumber) {\n if (this.pageSize[pageNumber].top != null) {\n // eslint-disable-next-line max-len\n var pageCurrentRect = this.getElement('_pageDiv_' + pageNumber).getBoundingClientRect();\n var waitingPopup = this.getElement('_pageDiv_' + pageNumber).firstChild.firstChild;\n if (pageCurrentRect.top < 0) {\n if (this.toolbarHeight + (this.viewerContainer.clientHeight / 2) - pageCurrentRect.top < pageCurrentRect.height) {\n waitingPopup.style.top = ((this.viewerContainer.clientHeight / 2) - pageCurrentRect.top) - this.toolbarHeight + 'px';\n }\n else {\n if (this.toolbarHeight + (pageCurrentRect.bottom / 2) - pageCurrentRect.top < pageCurrentRect.height) {\n waitingPopup.style.top = ((pageCurrentRect.bottom / 2) - pageCurrentRect.top) - this.toolbarHeight + 'px';\n }\n }\n }\n else {\n waitingPopup.style.top = this.viewerContainer.clientHeight / 2 + 'px';\n }\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && pageCurrentRect.width > this.viewerContainer.clientWidth) {\n waitingPopup.style.left = (this.viewerContainer.clientWidth / 2) + (this.viewerContainer.scrollLeft) + 'px';\n }\n else if (this.getZoomFactor() > 1.25 && pageCurrentRect.width > this.viewerContainer.clientWidth) {\n waitingPopup.style.left = this.viewerContainer.clientWidth / 2 + 'px';\n }\n else {\n waitingPopup.style.left = pageCurrentRect.width / 2 + 'px';\n }\n }\n };\n /**\n * @private\n * @returns {number} - returned the page value.\n */\n PdfViewerBase.prototype.getActivePage = function (isPageNumber) {\n if (this.activeElements && !isNullOrUndefined(this.activeElements.activePageID)) {\n if (isPageNumber) {\n return this.activeElements.activePageID + 1;\n }\n else {\n return this.activeElements.activePageID;\n }\n }\n else {\n if (isPageNumber) {\n return this.currentPageNumber;\n }\n else {\n return this.currentPageNumber - 1;\n }\n }\n };\n PdfViewerBase.prototype.createWaitingPopup = function (pageNumber) {\n // eslint-disable-next-line max-len\n var waitingPopup = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageNumber);\n if (waitingPopup) {\n createSpinner({ target: waitingPopup });\n this.setLoaderProperties(waitingPopup);\n }\n };\n PdfViewerBase.prototype.showLoadingIndicator = function (isShow) {\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup) {\n if (isShow) {\n waitingPopup.style.display = 'block';\n showSpinner(waitingPopup);\n }\n else {\n waitingPopup.style.display = 'none';\n hideSpinner(waitingPopup);\n }\n }\n };\n PdfViewerBase.prototype.showPageLoadingIndicator = function (pageIndex, isShow) {\n var waitingPopup = this.getElement('_pageDiv_' + pageIndex);\n if (waitingPopup != null) {\n if (isShow) {\n showSpinner(waitingPopup);\n }\n else {\n hideSpinner(waitingPopup);\n }\n this.updateWaitingPopup(pageIndex);\n }\n };\n /**\n * @param {boolean} isShow - Show or hide print loading indicator.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.showPrintLoadingIndicator = function (isShow) {\n var printWaitingPopup = this.getElement('_printLoadingIndicator');\n if (printWaitingPopup != null) {\n if (isShow) {\n this.printMainContainer.style.display = 'block';\n showSpinner(printWaitingPopup);\n }\n else {\n this.printMainContainer.style.display = 'none';\n hideSpinner(printWaitingPopup);\n }\n }\n };\n PdfViewerBase.prototype.setLoaderProperties = function (element) {\n var spinnerElement = element.firstChild.firstChild.firstChild;\n if (spinnerElement) {\n spinnerElement.style.height = '48px';\n spinnerElement.style.width = '48px';\n spinnerElement.style.transformOrigin = '24px 24px 24px';\n }\n };\n /**\n * @param {number} pageNumber - Specify the pageNumber.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.updateScrollTop = function (pageNumber) {\n var _this = this;\n // eslint-disable-next-line\n if (this.pageSize[pageNumber] != null) {\n this.renderElementsVirtualScroll(pageNumber);\n this.viewerContainer.scrollTop = this.getPageTop(pageNumber);\n if (this.renderedPagesList.indexOf(pageNumber) === -1) {\n this.createRequestForRender(pageNumber);\n }\n setTimeout(function () {\n var currentPageNumber = pageNumber + 1;\n if (currentPageNumber !== _this.currentPageNumber) {\n _this.pdfViewer.currentPageNumber = currentPageNumber;\n _this.currentPageNumber = currentPageNumber;\n if (_this.pdfViewer.toolbarModule) {\n _this.pdfViewer.toolbarModule.updateCurrentPage(currentPageNumber);\n }\n }\n }, 100);\n }\n };\n /**\n * @private\n * @returns {number} - Returns the zoom factor value.\n */\n PdfViewerBase.prototype.getZoomFactor = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.zoomFactor;\n }\n else {\n // default value\n return 1;\n }\n };\n /**\n * @private\n * @returns {boolean} - Returns whether the pinch zoom is performed or not.\n */\n PdfViewerBase.prototype.getPinchZoomed = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isPinchZoomed;\n }\n else {\n // default value\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} -Returns whether the zoom is performed or not.\n */\n PdfViewerBase.prototype.getMagnified = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isMagnified;\n }\n else {\n // default value\n return false;\n }\n };\n PdfViewerBase.prototype.getPinchScrolled = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isPinchScrolled;\n }\n else {\n // default value\n return false;\n }\n };\n PdfViewerBase.prototype.getPagesPinchZoomed = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isPagePinchZoomed;\n }\n else {\n // default value\n return false;\n }\n };\n PdfViewerBase.prototype.getPagesZoomed = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isPagesZoomed;\n }\n else {\n // default value\n return false;\n }\n };\n PdfViewerBase.prototype.getRerenderCanvasCreated = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isRerenderCanvasCreated;\n }\n else {\n // default value\n return false;\n }\n };\n /**\n * @private\n * @returns {string} - retrun the docuumentid.\n */\n PdfViewerBase.prototype.getDocumentId = function () {\n return this.documentId;\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.download = function () {\n if (this.pageCount > 0) {\n this.createRequestForDownload();\n }\n };\n /**\n * @private\n * @returns {promise} - Returns the blob object.\n */\n PdfViewerBase.prototype.saveAsBlob = function () {\n var _this = this;\n if (this.pageCount > 0) {\n return new Promise(function (resolve, reject) {\n _this.saveAsBlobRequest().then(function (value) {\n resolve(value);\n });\n });\n }\n return null;\n };\n PdfViewerBase.prototype.saveAsBlobRequest = function () {\n var _this = this;\n var proxy = null;\n proxy = this;\n var promise = new Promise(function (resolve, reject) {\n // eslint-disable-next-line\n var jsonObject = proxy.constructJsonDownload();\n _this.dowonloadRequestHandler = new AjaxHandler(_this.pdfViewer);\n _this.dowonloadRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.download;\n _this.dowonloadRequestHandler.responseType = 'text';\n _this.dowonloadRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n _this.dowonloadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data === 'object') {\n data = JSON.parse(data);\n }\n if (typeof data !== 'object' && data.indexOf('data:application/pdf') === -1) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.download);\n data = null;\n }\n if (data) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.download, data);\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/pdf');\n resolve(blobUrl);\n }\n }\n };\n // eslint-disable-next-line\n _this.dowonloadRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.download);\n };\n // eslint-disable-next-line\n _this.dowonloadRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.download);\n };\n });\n return promise;\n };\n /**\n * @param {boolean} isTriggerEvent - check to trigger the event.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.clear = function (isTriggerEvent) {\n var proxy = this;\n var pdfViewer = proxy.pdfViewer;\n var printModule = pdfViewer.printModule;\n var textSearchModule = pdfViewer.textSearchModule;\n var bookmarkViewModule = pdfViewer.bookmarkViewModule;\n var thumbnailViewModule = pdfViewer.thumbnailView;\n var annotationModule = pdfViewer.annotation;\n var magnificationModule = pdfViewer.magnificationModule;\n var textSelectionModule = pdfViewer.textSelectionModule;\n var formFieldsModule = pdfViewer.formFieldsModule;\n var signatureModule = proxy.signatureModule;\n proxy.isPasswordAvailable = false;\n proxy.isDocumentLoaded = false;\n proxy.isInitialLoaded = false;\n proxy.isImportAction = false;\n proxy.annotationPageList = [];\n proxy.annotationComments = null;\n pdfViewer.annotationCollection = [];\n pdfViewer.signatureCollection = [];\n pdfViewer.formFieldCollection = [];\n proxy.isAnnotationCollectionRemoved = false;\n proxy.documentAnnotationCollections = null;\n proxy.isDrawnCompletely = false;\n proxy.annotationRenderredList = [];\n proxy.isImportAction = false;\n proxy.isImportedAnnotation = false;\n proxy.importedAnnotation = [];\n proxy.isStorageExceed = false;\n proxy.annotationStorage = {};\n proxy.formFieldStorage = {};\n proxy.downloadCollections = {};\n proxy.annotationEvent = null;\n proxy.highestWidth = 0;\n proxy.highestHeight = 0;\n proxy.requestLists = [];\n proxy.tilerequestLists = [];\n proxy.isToolbarInkClicked = false;\n pdfViewer.formFieldCollections = [];\n proxy.passwordData = '';\n proxy.isFocusField = false;\n proxy.focusField = [];\n proxy.updateDocumentEditedProperty(false);\n if (pdfViewer.formDesignerModule) {\n pdfViewer.formDesignerModule.formFieldIndex = 0;\n if (proxy.activeElements) {\n pdfViewer.clearSelection(proxy.activeElements.activePageID);\n }\n pdfViewer.zIndexTable = [];\n }\n proxy.initiateTextSelectMode();\n proxy.RestrictionEnabled(proxy.restrictionList, true);\n proxy.restrictionList = null;\n if (!Browser.isDevice || pdfViewer.enableDesktopMode) {\n if (proxy.navigationPane.sideBarToolbar) {\n proxy.navigationPane.clear();\n }\n }\n if (!isBlazor() && Browser.isDevice || !pdfViewer.enableDesktopMode) {\n proxy.navigationPane.clear();\n }\n if (thumbnailViewModule) {\n thumbnailViewModule.clear();\n }\n if (bookmarkViewModule) {\n bookmarkViewModule.clear();\n }\n if (magnificationModule) {\n magnificationModule.isMagnified = false;\n magnificationModule.clearIntervalTimer();\n }\n if (textSelectionModule) {\n textSelectionModule.clearTextSelection();\n }\n if (textSearchModule) {\n textSearchModule.resetTextSearch();\n }\n if (annotationModule) {\n annotationModule.clear();\n annotationModule.initializeCollection();\n }\n if (formFieldsModule) {\n formFieldsModule.readOnlyCollection = [];\n formFieldsModule.signatureFieldCollection = [];\n formFieldsModule.currentTarget = null;\n }\n if (signatureModule) {\n signatureModule.signaturecollection = [];\n signatureModule.outputcollection = [];\n }\n if (proxy.pageSize) {\n proxy.pageSize = [];\n }\n if (proxy.renderedPagesList) {\n proxy.renderedPagesList = [];\n }\n if (proxy.pageContainer) {\n while (proxy.pageContainer.hasChildNodes()) {\n proxy.pageContainer.removeChild(proxy.pageContainer.lastChild);\n }\n }\n if (proxy.pageCount > 0) {\n proxy.unloadDocument(proxy);\n // eslint-disable-next-line\n proxy.textLayer.characterBound = new Array();\n proxy.loadRequestHandler && proxy.loadRequestHandler.clear();\n proxy.virtualLoadRequestHandler && proxy.virtualLoadRequestHandler.clear();\n proxy.pageRequestHandler && proxy.pageRequestHandler.clear();\n proxy.dowonloadRequestHandler && proxy.dowonloadRequestHandler.clear();\n proxy.importAnnotationRequestHandler && proxy.importAnnotationRequestHandler.clear();\n proxy.exportAnnotationRequestHandler && proxy.exportAnnotationRequestHandler.clear();\n proxy.importFormFieldsRequestHandler && proxy.importFormFieldsRequestHandler.clear();\n proxy.exportFormFieldsRequestHandler && proxy.exportFormFieldsRequestHandler.clear();\n if (printModule && printModule.printRequestHandler) {\n printModule.printRequestHandler.clear();\n }\n }\n proxy.windowSessionStorageClear();\n if (proxy.pinchZoomStorage) {\n proxy.pinchZoomStorage = [];\n }\n if ((proxy.previousZoomValue || proxy.previousZoomValue === 0) && proxy.previousZoomValue !== pdfViewer.zoomValue) {\n pdfViewer.zoomValue = proxy.previousZoomValue;\n }\n if (isTriggerEvent && proxy.pageCount > 0) {\n pdfViewer.fireDocumentUnload(this.pdfViewer.fileName);\n }\n this.pdfViewer.fileName = null;\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.destroy = function () {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewer.element.classList.remove('e-pv-mobile-view');\n }\n this.unWireEvents();\n this.clear(false);\n this.pageContainer.parentNode ? this.pageContainer.parentNode.removeChild(this.pageContainer) : null;\n this.viewerContainer.parentNode ? this.viewerContainer.parentNode.removeChild(this.viewerContainer) : null;\n if (this.contextMenuModule) {\n var contextMenuElement = this.contextMenuModule.contextMenuElement;\n contextMenuElement && contextMenuElement.ej2_instances && contextMenuElement.ej2_instances.length > 0 ? this.contextMenuModule.destroy() : null;\n }\n if (this.pdfViewer.toolbarModule) {\n this.navigationPane.destroy();\n }\n var measureElement = document.getElementById('measureElement');\n if (measureElement) {\n measureElement = undefined;\n }\n };\n /**\n * @param {PdfViewerBase} proxy - PdfviewerBase class.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.unloadDocument = function (proxy) {\n var documentId = '';\n if (Browser.isIE || Browser.info.name === 'edge') {\n documentId = decodeURI(window.sessionStorage.getItem('hashId'));\n }\n else {\n documentId = window.sessionStorage.getItem('hashId');\n }\n var documentLiveCount = window.sessionStorage.getItem('documentLiveCount');\n if (documentId !== null) {\n // eslint-disable-next-line max-len\n var jsonObject = { hashId: documentId, documentLiveCount: documentLiveCount, action: 'Unload', elementId: proxy.pdfViewer.element.id };\n var actionName = window.sessionStorage.getItem('unload');\n if (window.sessionStorage.getItem('serviceURL') && window.sessionStorage.getItem('serviceURL') !== 'undefined') {\n try {\n // eslint-disable-next-line\n var browserSupportsKeepalive = 'keepalive' in new Request('');\n if (browserSupportsKeepalive) {\n // eslint-disable-next-line\n var headerValue = this.setUnloadRequestHeaders();\n var credentialsData = this.pdfViewer.ajaxRequestSettings.withCredentials ? 'include' : 'omit';\n fetch(window.sessionStorage.getItem('serviceURL') + '/' + actionName, {\n method: 'POST',\n credentials: credentialsData,\n headers: headerValue,\n body: JSON.stringify(jsonObject)\n });\n }\n }\n catch (error) {\n this.unloadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.unloadRequestHandler.send(jsonObject);\n }\n }\n else if (isBlazor()) {\n this.clearCache(actionName, jsonObject, proxy);\n }\n }\n if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.zoomFactor = 1;\n }\n this.formFieldCollection = [];\n window.sessionStorage.removeItem('hashId');\n window.sessionStorage.removeItem('documentLiveCount');\n if (this.documentId) {\n window.sessionStorage.removeItem(this.documentId + '_formfields');\n window.sessionStorage.removeItem(this.documentId + '_formDesigner');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(this.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sticky');\n window.sessionStorage.removeItem(this.documentId + '_annotations_textMarkup');\n window.sessionStorage.removeItem(this.documentId + '_annotations_freetext');\n window.sessionStorage.removeItem(this.documentId + '_formfields');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sign');\n window.sessionStorage.removeItem(this.documentId + '_annotations_ink');\n }\n };\n PdfViewerBase.prototype.clearCache = function (actionName, jsonObject, proxy) {\n this.unloadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.unloadRequestHandler.url = window.sessionStorage.getItem('serviceURL') + '/' + actionName;\n this.unloadRequestHandler.mode = false;\n this.unloadRequestHandler.responseType = null;\n this.unloadRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.unloadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n if (data.indexOf('Document') === -1) {\n proxy.onControlError(500, data, actionName);\n data = null;\n }\n }\n if (data) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.unload, data);\n }\n }\n };\n // eslint-disable-next-line\n this.unloadRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, actionName);\n };\n // eslint-disable-next-line\n this.unloadRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, actionName);\n };\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.setUnloadRequestHeaders = function () {\n // eslint-disable-next-line\n var myHeaders = new Headers();\n myHeaders.append('Content-Type', 'application/json;charset=UTF-8');\n for (var i = 0; i < this.pdfViewer.ajaxRequestSettings.ajaxHeaders.length; i++) {\n // eslint-disable-next-line max-len\n myHeaders.append(this.pdfViewer.ajaxRequestSettings.ajaxHeaders[i].headerName, this.pdfViewer.ajaxRequestSettings.ajaxHeaders[i].headerValue);\n }\n return myHeaders;\n };\n PdfViewerBase.prototype.windowSessionStorageClear = function () {\n window.sessionStorage.removeItem('currentDocument');\n window.sessionStorage.removeItem('serviceURL');\n window.sessionStorage.removeItem('unload');\n for (var i = 0; i < this.sessionStorage.length; i++) {\n window.sessionStorage.removeItem(this.sessionStorage[i]);\n }\n };\n PdfViewerBase.prototype.updateCommentPanel = function () {\n // eslint-disable-next-line\n var moreOptionsButton = document.querySelectorAll('#' + this.pdfViewer.element.id + '_more-options');\n for (var i = 0; i < moreOptionsButton.length; i++) {\n moreOptionsButton[i].style.visibility = 'hidden';\n }\n // eslint-disable-next-line\n var commentTextBox = document.querySelectorAll('.e-pv-new-comments-div');\n for (var j = 0; j < commentTextBox.length; j++) {\n commentTextBox[j].style.display = 'none';\n }\n // eslint-disable-next-line\n var commentContainer = document.querySelectorAll('.e-pv-comments-border');\n for (var j = 0; j < commentContainer.length; j++) {\n commentContainer[j].classList.remove('e-pv-comments-border');\n }\n // eslint-disable-next-line\n var editableElement = document.querySelectorAll('.e-editable-inline');\n for (var j = 0; j < editableElement.length; j++) {\n editableElement[j].style.display = 'none';\n }\n // eslint-disable-next-line\n var commentSelect = document.querySelectorAll('.e-pv-comments-select');\n for (var z = 0; z < commentSelect.length; z++) {\n commentSelect[z].classList.remove('e-pv-comments-select');\n }\n // eslint-disable-next-line\n var commentsDiv = document.querySelectorAll('.e-pv-comments-div');\n for (var j = 0; j < commentsDiv.length; j++) {\n commentsDiv[j].style.minHeight = 60 + 'px';\n }\n };\n /**\n * @param {boolean} isMouseDown - check whether the mouse down is triggered.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.focusViewerContainer = function (isMouseDown) {\n var scrollX = window.scrollX;\n var scrollY = window.scrollY;\n // eslint-disable-next-line\n var parentNode = this.getScrollParent(this.viewerContainer);\n var scrollNodeX = 0;\n var scrollNodeY = 0;\n if (parentNode !== null) {\n scrollNodeX = parentNode.scrollLeft;\n scrollNodeY = parentNode.scrollTop;\n }\n this.viewerContainer.focus();\n if (this.currentPageNumber > 0) {\n this.viewerContainer.setAttribute('aria-labelledby', this.pdfViewer.element.id + '_pageDiv_' + (this.currentPageNumber - 1));\n }\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stickyNotesAnnotationModule.accordionContainer) {\n this.updateCommentPanel();\n }\n // eslint-disable-next-line max-len\n if ((navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > -1 || navigator.userAgent.indexOf('Edge') !== -1) && parentNode !== null) {\n parentNode.scrollLeft = scrollNodeX;\n parentNode.scrollTop = scrollNodeY;\n }\n else if (parentNode !== null) {\n parentNode.scrollTo(scrollNodeX, scrollNodeY);\n }\n window.scrollTo(scrollX, scrollY);\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.getScrollParent = function (node) {\n if (node === null || node.nodeName === 'HTML') {\n return null;\n }\n var style = getComputedStyle(node);\n if (this.viewerContainer.id !== node.id && (style.overflowY === 'scroll' || style.overflowY === 'auto')) {\n return node;\n }\n else {\n return this.getScrollParent(node.parentNode);\n }\n };\n PdfViewerBase.prototype.createCorruptedPopup = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n var popupElement = createElement('div', { id: this.pdfViewer.element.id + '_corrupted_popup', className: 'e-pv-corrupted-popup' });\n this.pageContainer.appendChild(popupElement);\n this.corruptPopup = new Dialog({\n showCloseIcon: true, closeOnEscape: true, isModal: true,\n // eslint-disable-next-line max-len\n header: '
    ' + this.pdfViewer.localeObj.getConstant('File Corrupted') + '
    ', visible: false,\n // eslint-disable-next-line max-len\n buttons: [{ buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.closeCorruptPopup.bind(this) }],\n target: this.pdfViewer.element, beforeClose: function () {\n _this.corruptPopup.destroy();\n _this.getElement('_corrupted_popup').remove();\n _this.corruptPopup = null;\n var waitingPopup = _this.getElement('_loadingIndicator');\n if (waitingPopup != null) {\n hideSpinner(waitingPopup);\n }\n }\n });\n if (this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n this.corruptPopup.content = '
    ' + this.pdfViewer.localeObj.getConstant('File Corrupted Content') + '
    ';\n this.corruptPopup.enableRtl = true;\n }\n else {\n // eslint-disable-next-line max-len\n this.corruptPopup.content = '
    ' + this.pdfViewer.localeObj.getConstant('File Corrupted Content') + '
    ';\n }\n this.corruptPopup.appendTo(popupElement);\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.hideLoadingIndicator = function () {\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup !== null) {\n hideSpinner(waitingPopup);\n }\n };\n PdfViewerBase.prototype.closeCorruptPopup = function () {\n this.corruptPopup.hide();\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup !== null) {\n hideSpinner(waitingPopup);\n }\n };\n PdfViewerBase.prototype.createPrintPopup = function () {\n var element = document.getElementById(this.pdfViewer.element.id);\n this.printMainContainer = createElement('div', {\n id: this.pdfViewer.element.id + '_printcontainer',\n className: 'e-pv-print-popup-container'\n });\n element.appendChild(this.printMainContainer);\n this.printMainContainer.style.display = 'none';\n var printWaitingPopup = createElement('div', {\n id: this.pdfViewer.element.id + '_printLoadingIndicator',\n className: 'e-pv-print-loading-container'\n });\n this.printMainContainer.appendChild(printWaitingPopup);\n createSpinner({ target: printWaitingPopup, cssClass: 'e-spin-center' });\n this.setLoaderProperties(printWaitingPopup);\n };\n PdfViewerBase.prototype.createGoToPagePopup = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n var popupElement = createElement('div', { id: this.pdfViewer.element.id + '_goTopage_popup', className: 'e-pv-gotopage-popup' });\n this.goToPageElement = createElement('span', { id: this.pdfViewer.element.id + '_prompt' });\n this.goToPageElement.textContent = this.pdfViewer.localeObj.getConstant('Enter pagenumber');\n popupElement.appendChild(this.goToPageElement);\n var inputContainer = createElement('span', { className: 'e-pv-text-input' });\n // eslint-disable-next-line max-len\n this.goToPageInput = createElement('input', { id: this.pdfViewer.element.id + '_page_input', className: 'e-input' });\n this.goToPageInput.type = 'text';\n this.goToPageInput.style.maxWidth = '80%';\n this.pageNoContainer = createElement('span', { className: '.e-pv-number-ofpages' });\n inputContainer.appendChild(this.goToPageInput);\n inputContainer.appendChild(this.pageNoContainer);\n popupElement.appendChild(inputContainer);\n this.pageContainer.appendChild(popupElement);\n this.goToPagePopup = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true,\n header: this.pdfViewer.localeObj.getConstant('GoToPage'), visible: false, buttons: [\n {\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') },\n click: this.GoToPageCancelClick.bind(this)\n },\n // eslint-disable-next-line max-len\n {\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('Apply'), disabled: true, cssClass: 'e-pv-gotopage-apply-btn', isPrimary: true },\n click: this.GoToPageApplyClick.bind(this)\n }\n ], close: this.closeGoToPagePopUp.bind(this)\n });\n if (this.pdfViewer.enableRtl) {\n this.goToPagePopup.enableRtl = true;\n }\n this.goToPagePopup.appendTo(popupElement);\n if (!isBlazor()) {\n var goToPageTextBox = new NumericTextBox({ format: '##', showSpinButton: false });\n goToPageTextBox.appendTo(this.goToPageInput);\n }\n this.goToPageInput.addEventListener('keyup', function () {\n // eslint-disable-next-line\n var inputValue = _this.goToPageInput.value;\n if (inputValue !== '' && parseFloat(inputValue) > 0 && (_this.pdfViewer.pageCount + 1) > parseFloat(inputValue)) {\n _this.EnableApplyButton();\n }\n else {\n _this.DisableApplyButton();\n }\n });\n };\n PdfViewerBase.prototype.closeGoToPagePopUp = function () {\n this.goToPageInput.value = '';\n this.DisableApplyButton();\n };\n PdfViewerBase.prototype.EnableApplyButton = function () {\n // eslint-disable-next-line\n var popupElements = document.getElementsByClassName('e-pv-gotopage-apply-btn')[0];\n popupElements.removeAttribute('disabled');\n };\n PdfViewerBase.prototype.DisableApplyButton = function () {\n // eslint-disable-next-line\n var popupElements = document.getElementsByClassName('e-pv-gotopage-apply-btn')[0];\n popupElements.setAttribute('disabled', true);\n };\n PdfViewerBase.prototype.GoToPageCancelClick = function () {\n this.goToPagePopup.hide();\n };\n PdfViewerBase.prototype.GoToPageApplyClick = function () {\n this.goToPagePopup.hide();\n // eslint-disable-next-line\n var pageNumber = this.goToPageInput.value;\n this.pdfViewer.navigation.goToPage(pageNumber);\n this.updateMobileScrollerPosition();\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateMobileScrollerPosition = function () {\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.mobileScrollerContainer) {\n // eslint-disable-next-line\n var ratio = (this.viewerContainer.scrollHeight - this.viewerContainer.clientHeight) / (this.viewerContainer.clientHeight - 56);\n // eslint-disable-next-line\n var differenceRatio = (this.viewerContainer.scrollTop) / ratio;\n // eslint-disable-next-line\n var toolbarHeight = this.pdfViewer.toolbarModule ? this.toolbarHeight : 0;\n this.mobileScrollerContainer.style.top = (toolbarHeight + differenceRatio) + 'px';\n }\n };\n PdfViewerBase.prototype.createPasswordPopup = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n var popupElement = createElement('div', { id: this.pdfViewer.element.id + '_password_popup', className: 'e-pv-password-popup', attrs: { 'tabindex': '-1' } });\n this.promptElement = createElement('span', { id: this.pdfViewer.element.id + '_prompt', attrs: { 'tabindex': '-1' } });\n this.promptElement.textContent = this.pdfViewer.localeObj.getConstant('Enter Password');\n popupElement.appendChild(this.promptElement);\n var inputContainer = createElement('span', { className: 'e-input-group e-pv-password-input' });\n // eslint-disable-next-line max-len\n this.passwordInput = createElement('input', { id: this.pdfViewer.element.id + '_password_input', className: 'e-input' });\n this.passwordInput.type = 'password';\n this.passwordInput.name = 'Required';\n inputContainer.appendChild(this.passwordInput);\n popupElement.appendChild(inputContainer);\n this.pageContainer.appendChild(popupElement);\n this.passwordPopup = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true,\n header: this.pdfViewer.localeObj.getConstant('Password Protected'), visible: false,\n close: this.passwordCancel.bind(this), target: this.pdfViewer.element, beforeClose: function () {\n _this.passwordPopup.destroy();\n _this.getElement('_password_popup').remove();\n _this.passwordPopup = null;\n var waitingPopup = _this.getElement('_loadingIndicator');\n if (waitingPopup != null) {\n hideSpinner(waitingPopup);\n }\n }\n });\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.passwordPopup.buttons = [\n {\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true },\n click: this.applyPassword.bind(this)\n },\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.passwordCancelClick.bind(this) }\n ];\n }\n else {\n this.passwordPopup.buttons = [\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.passwordCancelClick.bind(this) },\n {\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true },\n click: this.applyPassword.bind(this)\n }\n ];\n }\n if (this.pdfViewer.enableRtl) {\n this.passwordPopup.enableRtl = true;\n }\n this.passwordPopup.appendTo(popupElement);\n this.passwordInput.addEventListener('keyup', function () {\n if (_this.passwordInput.value === '') {\n _this.passwordDialogReset();\n }\n });\n this.passwordInput.addEventListener('focus', function () {\n _this.passwordInput.parentElement.classList.add('e-input-focus');\n });\n this.passwordInput.addEventListener('blur', function () {\n _this.passwordInput.parentElement.classList.remove('e-input-focus');\n });\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.passwordCancel = function (args) {\n if (args.isInteraction) {\n this.clear(false);\n this.passwordDialogReset();\n this.passwordInput.value = '';\n }\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup !== null) {\n hideSpinner(waitingPopup);\n }\n };\n PdfViewerBase.prototype.passwordCancelClick = function () {\n this.clear(false);\n this.passwordDialogReset();\n this.passwordPopup.hide();\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup !== null) {\n hideSpinner(waitingPopup);\n }\n };\n PdfViewerBase.prototype.passwordDialogReset = function () {\n if (!isBlazor()) {\n if (this.promptElement) {\n this.promptElement.classList.remove('e-pv-password-error');\n this.promptElement.textContent = this.pdfViewer.localeObj.getConstant('Enter Password');\n this.passwordInput.value = '';\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.applyPassword = function () {\n if (!isBlazor()) {\n var password = this.passwordInput.value;\n if (password !== '') {\n this.pdfViewer.load(this.document, password);\n }\n }\n this.focusViewerContainer();\n };\n PdfViewerBase.prototype.createFileInputElement = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.enableAnnotationToolbar && this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createCustomStampElement();\n }\n if (this.signatureModule) {\n this.signatureModule.createSignatureFileElement();\n }\n }\n };\n PdfViewerBase.prototype.wireEvents = function () {\n var _this = this;\n this.viewerContainer.addEventListener('scroll', this.viewerContainerOnScroll, true);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.viewerContainer.addEventListener('touchmove', this.viewerContainerOnScroll, true);\n }\n this.viewerContainer.addEventListener('mousedown', this.viewerContainerOnMousedown);\n this.viewerContainer.addEventListener('mouseup', this.viewerContainerOnMouseup);\n this.viewerContainer.addEventListener('wheel', this.viewerContainerOnMouseWheel);\n this.viewerContainer.addEventListener('mousemove', this.viewerContainerOnMousemove);\n this.viewerContainer.addEventListener('mouseleave', this.viewerContainerOnMouseLeave);\n this.viewerContainer.addEventListener('mouseenter', this.viewerContainerOnMouseEnter);\n this.viewerContainer.addEventListener('mouseover', this.viewerContainerOnMouseOver);\n this.viewerContainer.addEventListener('click', this.viewerContainerOnClick);\n this.viewerContainer.addEventListener('dblclick', this.viewerContainerOnClick);\n this.viewerContainer.addEventListener('dragstart', this.viewerContainerOnDragStart);\n this.pdfViewer.element.addEventListener('keydown', this.viewerContainerOnKeyDown);\n window.addEventListener('keydown', this.onWindowKeyDown);\n window.addEventListener('mouseup', this.onWindowMouseUp);\n window.addEventListener('touchend', this.onWindowTouchEnd);\n this.unload = function () { return _this.unloadDocument(_this); };\n window.addEventListener('unload', this.unload);\n window.addEventListener('beforeunload', this.clearSessionStorage);\n window.addEventListener('resize', this.onWindowResize);\n // eslint-disable-next-line max-len\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.userAgent.indexOf('Edge') !== -1 || navigator.userAgent.indexOf('Trident') !== -1) {\n this.viewerContainer.addEventListener('pointerdown', this.viewerContainerOnPointerDown);\n this.viewerContainer.addEventListener('pointermove', this.viewerContainerOnPointerMove);\n this.viewerContainer.addEventListener('pointerup', this.viewerContainerOnPointerEnd);\n this.viewerContainer.addEventListener('pointerleave', this.viewerContainerOnPointerEnd);\n }\n else {\n this.viewerContainer.addEventListener('touchstart', this.viewerContainerOnTouchStart);\n this.viewerContainer.addEventListener('touchmove', this.viewerContainerOnTouchMove);\n this.viewerContainer.addEventListener('touchend', this.viewerContainerOnTouchEnd);\n this.viewerContainer.addEventListener('touchleave', this.viewerContainerOnTouchEnd);\n this.viewerContainer.addEventListener('touchcancel', this.viewerContainerOnTouchEnd);\n }\n };\n PdfViewerBase.prototype.unWireEvents = function () {\n this.viewerContainer.removeEventListener('scroll', this.viewerContainerOnScroll, true);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.viewerContainer.removeEventListener('touchmove', this.viewerContainerOnScroll, true);\n }\n this.viewerContainer.removeEventListener('mousedown', this.viewerContainerOnMousedown);\n this.viewerContainer.removeEventListener('mouseup', this.viewerContainerOnMouseup);\n this.viewerContainer.removeEventListener('wheel', this.viewerContainerOnMouseWheel);\n this.viewerContainer.removeEventListener('mousemove', this.viewerContainerOnMousemove);\n this.viewerContainer.removeEventListener('mouseleave', this.viewerContainerOnMouseLeave);\n this.viewerContainer.removeEventListener('mouseenter', this.viewerContainerOnMouseEnter);\n this.viewerContainer.removeEventListener('mouseover', this.viewerContainerOnMouseOver);\n this.viewerContainer.removeEventListener('click', this.viewerContainerOnClick);\n this.viewerContainer.removeEventListener('dragstart', this.viewerContainerOnDragStart);\n this.viewerContainer.removeEventListener('contextmenu', this.viewerContainerOnContextMenuClick);\n this.pdfViewer.element.removeEventListener('keydown', this.viewerContainerOnKeyDown);\n window.addEventListener('keydown', this.onWindowKeyDown);\n window.removeEventListener('mouseup', this.onWindowMouseUp);\n window.removeEventListener('unload', this.unload);\n window.removeEventListener('resize', this.onWindowResize);\n // eslint-disable-next-line max-len\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.userAgent.indexOf('Edge') !== -1 || navigator.userAgent.indexOf('Trident') !== -1) {\n this.viewerContainer.removeEventListener('pointerdown', this.viewerContainerOnPointerDown);\n this.viewerContainer.removeEventListener('pointermove', this.viewerContainerOnPointerMove);\n this.viewerContainer.removeEventListener('pointerup', this.viewerContainerOnPointerEnd);\n this.viewerContainer.removeEventListener('pointerleave', this.viewerContainerOnPointerEnd);\n }\n else {\n this.viewerContainer.removeEventListener('touchstart', this.viewerContainerOnTouchStart);\n this.viewerContainer.removeEventListener('touchmove', this.viewerContainerOnTouchMove);\n this.viewerContainer.removeEventListener('touchend', this.viewerContainerOnTouchEnd);\n this.viewerContainer.removeEventListener('touchleave', this.viewerContainerOnTouchEnd);\n this.viewerContainer.removeEventListener('touchcancel', this.viewerContainerOnTouchEnd);\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateZoomValue = function () {\n if (this.pdfViewer.magnificationModule) {\n if (this.pdfViewer.magnificationModule.isAutoZoom) {\n this.pdfViewer.magnificationModule.fitToAuto();\n }\n else if (this.pdfViewer.zoomMode !== 'FitToWidth' && this.pdfViewer.magnificationModule.fitType === 'fitToWidth') {\n this.pdfViewer.magnificationModule.fitToWidth();\n }\n else if (this.pdfViewer.magnificationModule.fitType === 'fitToPage') {\n this.pdfViewer.magnificationModule.fitToPage();\n }\n }\n for (var i = 0; i < this.pageCount; i++) {\n this.applyLeftPosition(i);\n }\n };\n /**\n * @private\n * @param {any} annotation - The annotation type of any.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateFreeTextProperties = function (annotation) {\n if (this.pdfViewer.enableShapeLabel) {\n if (this.pdfViewer.shapeLabelSettings.fillColor) {\n annotation.labelFillColor = this.pdfViewer.shapeLabelSettings.fillColor;\n }\n if (this.pdfViewer.shapeLabelSettings.fontColor) {\n annotation.fontColor = this.pdfViewer.shapeLabelSettings.fontColor;\n }\n if (this.pdfViewer.shapeLabelSettings.fontSize) {\n annotation.fontSize = this.pdfViewer.shapeLabelSettings.fontSize;\n }\n if (this.pdfViewer.shapeLabelSettings.fontFamily) {\n annotation.fontFamily = this.pdfViewer.shapeLabelSettings.fontFamily;\n }\n if (this.pdfViewer.shapeLabelSettings.opacity) {\n annotation.labelOpacity = this.pdfViewer.shapeLabelSettings.opacity;\n }\n if (this.pdfViewer.shapeLabelSettings.labelContent) {\n annotation.labelContent = this.pdfViewer.shapeLabelSettings.labelContent;\n }\n }\n };\n /**\n * @private\n * @param {MouseEvent} event - The mouse event.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.mouseDownHandler = function (event) {\n var isEnableDelete = false;\n var isCancel;\n var hidenItems = [];\n var disabledItems = [];\n if (event && event.target) {\n this.mouseDownEvent = event;\n this.contextMenuModule.currentTarget = event.target;\n }\n if (this.pdfViewer.annotationModule) {\n isEnableDelete = this.pdfViewer.annotationModule.isEnableDelete();\n }\n if (!isEnableDelete) {\n disabledItems.push('DeleteContext');\n }\n if (this.pdfViewer.contextMenuOption === 'None') {\n isCancel = true;\n }\n else if (this.pdfViewer.textSelectionModule || this.isShapeBasedAnnotationsEnabled()) {\n if (event) {\n var isClickWithinSelectionBounds = this.isClickWithinSelectionBounds(event);\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus) {\n this.isFreeTextContextMenu = true;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && !this.pdfViewer.annotation.freeTextAnnotationModule.isTextSelected) {\n disabledItems.push('Cut');\n disabledItems.push('Copy');\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && this.pdfViewer.annotation.freeTextAnnotationModule.selectedText === '') {\n disabledItems.push('Paste');\n }\n hidenItems.push('HighlightContext');\n hidenItems.push('UnderlineContext');\n hidenItems.push('StrikethroughContext');\n hidenItems.push('ScaleRatio');\n hidenItems.push('Properties');\n hidenItems.push('Comment');\n hidenItems.push('DeleteContext');\n }\n else if (isClickWithinSelectionBounds && this.pdfViewer.textSelectionModule) {\n // eslint-disable-next-line max-len\n if ((!event.target.classList.contains('e-pv-maintaincontent') && event.target.classList.contains('e-pv-text') || event.target.classList.contains('e-pv-text-layer'))) {\n if (this.checkIsNormalText()) {\n isCancel = true;\n }\n // eslint-disable-next-line max-len\n }\n else if ((Browser.isIE || Browser.info.name === 'edge') && event.target.classList.contains('e-pv-page-container')) {\n isCancel = true;\n }\n hidenItems.push('Cut');\n hidenItems.push('Paste');\n hidenItems.push('DeleteContext');\n hidenItems.push('ScaleRatio');\n hidenItems.push('Comment');\n hidenItems.push('Properties');\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) {\n this.shapeMenuItems(hidenItems, disabledItems, false, true);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType !== 'Path') {\n this.shapeMenuItems(hidenItems, disabledItems, true);\n }\n else {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.isShapeCopied && (event.target.classList.contains('e-pv-text-layer') ||\n event.target.classList.contains('e-pv-text')) && !this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n hidenItems.push('Properties');\n this.shapeMenuItems(hidenItems, disabledItems, false);\n // eslint-disable-next-line max-len\n }\n else if (this.isCalibrateAnnotationModule() && this.pdfViewer.annotationModule.measureAnnotationModule.currentAnnotationMode) {\n hidenItems.push('HighlightContext');\n hidenItems.push('UnderlineContext');\n hidenItems.push('StrikethroughContext');\n hidenItems.push('Properties');\n disabledItems.push('Cut');\n disabledItems.push('Copy');\n disabledItems.push('Paste');\n disabledItems.push('DeleteContext');\n disabledItems.push('Comment');\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n hidenItems.push('HighlightContext');\n hidenItems.push('UnderlineContext');\n hidenItems.push('StrikethroughContext');\n hidenItems.push('Properties');\n hidenItems.push('Cut');\n hidenItems.push('Copy');\n hidenItems.push('Paste');\n hidenItems.push('ScaleRatio');\n }\n else {\n isCancel = true;\n }\n }\n }\n else if (this.pdfViewer.textSelectionModule && (this.pdfViewer.contextMenuOption === 'MouseUp')) {\n hidenItems.push('Cut');\n hidenItems.push('Paste');\n hidenItems.push('DeleteContext');\n hidenItems.push('ScaleRatio');\n hidenItems.push('Comment');\n hidenItems.push('Properties');\n }\n else if (this.pdfViewer.selectedItems.annotations.length === 0) {\n hidenItems.push('Cut');\n hidenItems.push('Paste');\n hidenItems.push('DeleteContext');\n hidenItems.push('ScaleRatio');\n hidenItems.push('Properties');\n }\n if (!this.pdfViewer.enableCommentPanel) {\n disabledItems.push('Comment');\n }\n }\n else {\n isCancel = true;\n }\n var eventArgs = { hidenItems: hidenItems, disabledItems: disabledItems, isCancel: isCancel };\n this.pdfViewer._dotnetInstance.invokeMethodAsync('MouseDownHandler', eventArgs);\n };\n /**\n * @private\n * @param {string} selectedMenu - The selected menu.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.OnItemSelected = function (selectedMenu) {\n // eslint-disable-next-line\n var target = this.contextMenuModule.currentTarget;\n switch (selectedMenu) {\n case this.pdfViewer.localeObj.getConstant('Copy'):\n this.CopyItemSelected();\n break;\n case this.pdfViewer.localeObj.getConstant('Highlight context'):\n this.TextMarkUpSelected('Highlight');\n break;\n case this.pdfViewer.localeObj.getConstant('Underline context'):\n this.TextMarkUpSelected('Underline');\n break;\n case this.pdfViewer.localeObj.getConstant('Strikethrough context'):\n this.TextMarkUpSelected('Strikethrough');\n break;\n case this.pdfViewer.localeObj.getConstant('Properties'):\n this.PropertiesItemSelected();\n break;\n case this.pdfViewer.localeObj.getConstant('Cut'):\n this.CutItemSelected(target);\n break;\n case this.pdfViewer.localeObj.getConstant('Paste'):\n this.pasteItemSelected(target);\n break;\n case this.pdfViewer.localeObj.getConstant('Delete Context'):\n this.DeleteItemSelected();\n break;\n case this.pdfViewer.localeObj.getConstant('Scale Ratio'):\n this.ScaleRatioSelected();\n break;\n case this.pdfViewer.localeObj.getConstant('Comment'):\n this.CommentItemSelected();\n break;\n default:\n break;\n }\n };\n PdfViewerBase.prototype.CommentItemSelected = function () {\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.showCommentsPanel();\n if (this.pdfViewer.selectedItems.annotations.length !== 0 ||\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n // eslint-disable-next-line\n var currentAnnotation = void 0;\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n currentAnnotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n else {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(currentAnnotation.annotName);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n };\n PdfViewerBase.prototype.ScaleRatioSelected = function () {\n if (this.isCalibrateAnnotationModule()) {\n this.pdfViewer.annotation.measureAnnotationModule.createScaleRatioWindow();\n }\n };\n PdfViewerBase.prototype.DeleteItemSelected = function () {\n if (this.pdfViewer.formDesignerModule && this.pdfViewer.selectedItems.formFields.length !== 0) {\n this.pdfViewer.formDesignerModule.deleteFormField(this.pdfViewer.selectedItems.formFields[0].id);\n }\n else if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.deleteAnnotation();\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.pasteItemSelected = function (target) {\n // eslint-disable-next-line max-len\n if (this.isFreeTextContextMenu || (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus) && (target && target.className === 'free-text-input' && target.tagName === 'TEXTAREA')) {\n this.pdfViewer.annotation.freeTextAnnotationModule.pasteSelectedText(target);\n this.contextMenuModule.close();\n }\n else {\n this.pdfViewer.paste();\n this.contextMenuModule.previousAction = 'Paste';\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.CutItemSelected = function (target) {\n // eslint-disable-next-line max-len\n if (this.isFreeTextContextMenu || (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus) && (target && target.className === 'free-text-input' && target.tagName === 'TEXTAREA')) {\n this.pdfViewer.annotation.freeTextAnnotationModule.cutSelectedText(target);\n this.contextMenuModule.close();\n }\n else if (this.pdfViewer.selectedItems.annotations.length === 1) {\n var pageIndex = this.pdfViewer.selectedItems.annotations[0].pageIndex;\n this.pdfViewer.cut();\n this.contextMenuModule.previousAction = 'Cut';\n }\n else if (this.pdfViewer.selectedItems.formFields.length === 1) {\n this.pdfViewer.cut();\n this.contextMenuModule.previousAction = 'Cut';\n }\n };\n PdfViewerBase.prototype.CopyItemSelected = function () {\n var isSkip = false;\n // eslint-disable-next-line max-len\n if (this.isFreeTextContextMenu || (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus)) {\n this.pdfViewer.annotation.freeTextAnnotationModule.copySelectedText();\n this.contextMenuModule.close();\n isSkip = true;\n }\n else if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.copyText();\n this.contextMenuModule.close();\n }\n if (this.pdfViewer.selectedItems.annotations.length && !isSkip) {\n this.pdfViewer.copy();\n this.contextMenuModule.previousAction = 'Copy';\n }\n else if (this.pdfViewer.selectedItems.formFields.length > 0) {\n this.pdfViewer.copy();\n this.contextMenuModule.previousAction = 'Copy';\n }\n };\n PdfViewerBase.prototype.PropertiesItemSelected = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'LineWidthArrowHead' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance')) {\n this.pdfViewer.annotation.createPropertiesWindow();\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.formFields.length !== 0 && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType) {\n this.pdfViewer.formDesigner.createPropertiesWindow();\n }\n };\n PdfViewerBase.prototype.TextMarkUpSelected = function (type) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.isSelectionMaintained = false;\n this.pdfViewer.annotation.textMarkupAnnotationModule.drawTextMarkupAnnotations(type);\n this.pdfViewer.annotation.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAddMode = '';\n this.pdfViewer.annotation.textMarkupAnnotationModule.isSelectionMaintained = true;\n }\n };\n PdfViewerBase.prototype.shapeMenuItems = function (hidenItems, disabledItems, enableProperties, isSignature) {\n if (this.pdfViewer.annotation && !this.pdfViewer.annotation.isShapeCopied) {\n disabledItems.push('Paste');\n }\n hidenItems.push('HighlightContext');\n hidenItems.push('UnderlineContext');\n hidenItems.push('StrikethroughContext');\n hidenItems.push('ScaleRatio');\n if (enableProperties) {\n // eslint-disable-next-line max-len\n if (!(this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'LineWidthArrowHead' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance')) {\n hidenItems.push('Properties');\n }\n }\n else if (isSignature) {\n hidenItems.push('Properties');\n hidenItems.push('Comment');\n }\n else {\n hidenItems.push('Cut');\n hidenItems.push('Copy');\n hidenItems.push('DeleteContext');\n hidenItems.push('Comment');\n }\n };\n PdfViewerBase.prototype.checkIsRtlText = function (text) {\n // eslint-disable-next-line max-len\n var ltrChars = 'A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02B8\\\\u0300-\\\\u0590\\\\u0800-\\\\u1FFF' + '\\\\u2C00-\\\\uFB1C\\\\uFDFE-\\\\uFE6F\\\\uFEFD-\\\\uFFFF';\n var rtlChars = '\\\\u0591-\\\\u07FF\\\\uFB1D-\\\\uFDFD\\\\uFE70-\\\\uFEFC';\n // eslint-disable-next-line\n var rtlDirCheck = new RegExp('^[^' + ltrChars + ']*[' + rtlChars + ']');\n return rtlDirCheck.test(text);\n };\n /**\n * @private\n * @param {any} event - Specifies the event.\n * @returns {boolean} - retruned the beolean value.\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.isClickWithinSelectionBounds = function (event) {\n var isWithin = false;\n if (this.pdfViewer.textSelectionModule) {\n var bounds = this.pdfViewer.textSelectionModule.getCurrentSelectionBounds(this.currentPageNumber - 1);\n if (bounds) {\n var currentBound = bounds;\n if (this.getHorizontalValue(currentBound.left) < event.clientX && this.getHorizontalValue(currentBound.right) >\n event.clientX && this.getVerticalValue(currentBound.top) < event.clientY &&\n this.getVerticalValue(currentBound.bottom) > event.clientY) {\n isWithin = true;\n }\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && bounds) {\n isWithin = true;\n }\n }\n return isWithin;\n };\n PdfViewerBase.prototype.getHorizontalClientValue = function (value) {\n var pageDiv = this.getElement('_pageDiv_' + (this.currentPageNumber - 1));\n var pageBounds = pageDiv.getBoundingClientRect();\n return (value - pageBounds.left);\n };\n PdfViewerBase.prototype.getVerticalClientValue = function (value) {\n var pageDiv = this.getElement('_pageDiv_' + (this.currentPageNumber - 1));\n var pageBounds = pageDiv.getBoundingClientRect();\n return (value - pageBounds.top);\n };\n PdfViewerBase.prototype.getHorizontalValue = function (value) {\n var pageDiv = this.getElement('_pageDiv_' + (this.currentPageNumber - 1));\n var pageBounds = pageDiv.getBoundingClientRect();\n return (value * this.getZoomFactor()) + pageBounds.left;\n };\n PdfViewerBase.prototype.getVerticalValue = function (value) {\n var pageDiv = this.getElement('_pageDiv_' + (this.currentPageNumber - 1));\n var pageBounds = pageDiv.getBoundingClientRect();\n return (value * this.getZoomFactor()) + pageBounds.top;\n };\n /**\n * @private\n * @returns {boolean} - retruned the beolean value.\n */\n PdfViewerBase.prototype.checkIsNormalText = function () {\n var isText = true;\n var currentText = '';\n // eslint-disable-next-line\n var textSelectionModule = this.pdfViewer.textSelectionModule;\n if (textSelectionModule && textSelectionModule.selectionRangeArray && textSelectionModule.selectionRangeArray.length === 1) {\n currentText = textSelectionModule.selectionRangeArray[0].textContent;\n }\n else if (window.getSelection() && window.getSelection().anchorNode) {\n currentText = window.getSelection().toString();\n }\n if (currentText !== '' && this.checkIsRtlText(currentText)) {\n isText = false;\n }\n return isText;\n };\n PdfViewerBase.prototype.DeleteKeyPressed = function (event) {\n if (this.pdfViewer.formDesignerModule && this.pdfViewer.designerMode && this.pdfViewer.selectedItems.formFields.length !== 0) {\n this.pdfViewer.formDesignerModule.deleteFormField(this.pdfViewer.selectedItems.formFields[0].id);\n }\n else if (this.pdfViewer.annotation && !this.pdfViewer.designerMode) {\n if (this.isTextMarkupAnnotationModule() && !this.getPopupNoteVisibleStatus()) {\n this.pdfViewer.annotationModule.deleteAnnotation();\n }\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n var isReadOnly = true;\n var type = annotation.shapeAnnotationType;\n if (type === 'Path' || annotation.formFieldAnnotationType === 'SignatureField' || annotation.formFieldAnnotationType === 'InitialField' || type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') {\n var inputFields = document.getElementById(annotation.id);\n if (inputFields && inputFields.disabled) {\n isReadOnly = true;\n }\n }\n if (!isReadOnly) {\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', annotation)) {\n this.pdfViewer.remove(annotation);\n this.pdfViewer.renderSelector(this.pdfViewer.annotation.getEventPageNumber(event));\n }\n }\n else {\n this.pdfViewer.remove(annotation);\n this.pdfViewer.renderSelector(this.pdfViewer.annotation.getEventPageNumber(event));\n }\n }\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.initiatePanning = function () {\n this.isPanMode = true;\n this.textLayer.modifyTextCursor(false);\n this.disableTextSelectionMode();\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n this.pdfViewer.toolbar.annotationToolbarModule.deselectAllItems();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.initiateTextSelectMode = function () {\n this.isPanMode = false;\n if (this.viewerContainer) {\n this.viewerContainer.style.cursor = 'auto';\n if (this.pdfViewer.textSelectionModule) {\n this.textLayer.modifyTextCursor(true);\n this.pdfViewer.textSelectionModule.enableTextSelectionMode();\n }\n if ((!Browser.isDevice || this.pdfViewer.enableDesktopMode) && !isBlazor()) {\n this.enableAnnotationAddTools(true);\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.initiateTextSelection = function () {\n if (this.pdfViewer.toolbar && !this.pdfViewer.toolbar.isSelectionToolDisabled) {\n this.initiateTextSelectMode();\n this.pdfViewer.toolbar.updateInteractionTools(true);\n }\n };\n PdfViewerBase.prototype.enableAnnotationAddTools = function (isEnable) {\n if (this.pdfViewer.toolbarModule) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableAnnotationAddTools(isEnable);\n }\n }\n };\n PdfViewerBase.prototype.applySelection = function () {\n if (window.getSelection().anchorNode !== null) {\n this.pdfViewer.textSelectionModule.applySpanForSelection();\n }\n this.isViewerContainerDoubleClick = false;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.isDesignerMode = function (target) {\n var isDesignerMode = false;\n if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) {\n isDesignerMode = true;\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType !== 'Path') {\n isDesignerMode = true;\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.formFields.length !== 0 && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType && this.pdfViewer.designerMode) {\n isDesignerMode = true;\n }\n else {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.isShapeCopied && (target.classList.contains('e-pv-text-layer') ||\n // eslint-disable-next-line max-len\n target.classList.contains('e-pv-text')) && !this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n isDesignerMode = true;\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isShapeCopied && (target.classList.contains('e-pv-text-layer') ||\n target.classList.contains('e-pv-text'))) {\n isDesignerMode = true;\n }\n }\n this.designerModetarget = target;\n return isDesignerMode;\n };\n PdfViewerBase.prototype.handleTaps = function (touchPoints) {\n var _this = this;\n if (!this.singleTapTimer) {\n this.singleTapTimer = setTimeout(function () {\n _this.onSingleTap(touchPoints);\n // eslint-disable-next-line\n }, 300);\n this.tapCount++;\n }\n else {\n if (this.pdfViewer.enablePinchZoom) {\n this.tapCount++;\n clearTimeout(this.singleTapTimer);\n this.singleTapTimer = null;\n this.onDoubleTap(touchPoints);\n }\n }\n };\n PdfViewerBase.prototype.handleTextBoxTaps = function (touchPoints) {\n var _this = this;\n setTimeout(function () {\n _this.inputTapCount = 0;\n }, 300);\n this.inputTapCount++;\n // eslint-disable-next-line\n var timer = setTimeout(function () {\n _this.onTextBoxDoubleTap(touchPoints);\n }, 200);\n if (this.inputTapCount > 2) {\n this.inputTapCount = 0;\n }\n };\n PdfViewerBase.prototype.onTextBoxDoubleTap = function (touches) {\n var target = touches[0].target;\n if (this.inputTapCount === 2) {\n if (this.pdfViewer.selectedItems.annotations.length !== 0) {\n if (this.pdfViewer.annotationModule) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n this.pdfViewer.annotationModule.annotationSelect(currentAnnotation.annotName, currentAnnotation.pageIndex, currentAnnotation, null, true);\n }\n if (this.isFreeTextAnnotation(this.pdfViewer.selectedItems.annotations) === true) {\n var elmtPosition = {};\n elmtPosition.x = this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = this.pdfViewer.selectedItems.annotations[0].bounds.y;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.freeTextAnnotationModule.addInuptElemet(elmtPosition, this.pdfViewer.selectedItems.annotations[0]);\n }\n else if (this.pdfViewer.selectedItems.annotations[0].enableShapeLabel === true) {\n var elmtPosition = {};\n elmtPosition.x = this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = this.pdfViewer.selectedItems.annotations[0].bounds.y;\n this.pdfViewer.annotation.inputElementModule.editLabel(elmtPosition, this.pdfViewer.selectedItems.annotations[0]);\n }\n }\n }\n };\n PdfViewerBase.prototype.onSingleTap = function (touches) {\n var target = touches[0].target;\n var isFormfields = false;\n this.singleTapTimer = null;\n if (target && (target.classList.contains('e-pdfviewer-formFields')\n || target.classList.contains('e-pdfviewer-ListBox') || target.classList.contains('e-pdfviewer-signatureformfields'))) {\n isFormfields = true;\n }\n if (!this.isLongTouchPropagated && !this.navigationPane.isNavigationToolbarVisible && !isFormfields) {\n if (this.pdfViewer.toolbarModule) {\n if ((this.touchClientX >= touches[0].clientX - 10) && (this.touchClientX <= touches[0].clientX + 10) &&\n (this.touchClientY >= touches[0].clientY - 10) && (this.touchClientY <= touches[0].clientY + 10)) {\n if (!this.isTapHidden) {\n if (isBlazor()) {\n // eslint-disable-next-line max-len\n this.viewerContainer.scrollTop -= this.pdfViewer.element.querySelector('.e-pv-mobile-toolbar').clientHeight * this.getZoomFactor();\n }\n if (this.pdfViewer.toolbar.moreDropDown) {\n var dropDown = this.getElement('_more_option-popup');\n if (dropDown.firstElementChild) {\n dropDown.classList.remove('e-popup-open');\n dropDown.classList.add('e-popup-close');\n dropDown.removeChild(dropDown.firstElementChild);\n }\n }\n }\n else {\n if (isBlazor()) {\n // eslint-disable-next-line max-len\n this.viewerContainer.scrollTop += this.pdfViewer.element.querySelector('.e-pv-mobile-toolbar').clientHeight * this.getZoomFactor();\n }\n }\n if (this.isTapHidden && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n this.mobileScrollerContainer.style.display = '';\n this.updateMobileScrollerPosition();\n // eslint-disable-next-line max-len\n }\n else if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.getSelectTextMarkupCurrentPage() == null) {\n this.mobileScrollerContainer.style.display = 'none';\n }\n if (this.getSelectTextMarkupCurrentPage() == null) {\n if (!isBlazor()) {\n if (this.pdfViewer.enableToolbar) {\n this.pdfViewer.toolbarModule.showToolbar(true);\n }\n }\n else {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('TapOnMobileDevice', this.isTapHidden);\n this.blazorUIAdaptor.tapOnMobileDevice(this.isTapHidden);\n }\n this.isTapHidden = !this.isTapHidden;\n }\n }\n this.tapCount = 0;\n }\n }\n };\n PdfViewerBase.prototype.onDoubleTap = function (touches) {\n var target = touches[0].target;\n var isFormfields = false;\n if (target && (target.classList.contains('e-pdfviewer-formFields')\n || target.classList.contains('e-pdfviewer-ListBox') || target.classList.contains('e-pdfviewer-signatureformfields'))) {\n isFormfields = true;\n }\n if (this.tapCount === 2 && !isFormfields) {\n this.tapCount = 0;\n /**\n * Sometimes the values gets differ by some decimal points. So converted the decimal points values to Integer values.\n */\n // eslint-disable-next-line\n if ((this.touchClientX >= parseInt((touches[0].clientX - 10).toString())) && (this.touchClientX <= touches[0].clientX + 10) &&\n (this.touchClientY >= touches[0].clientY - 10) && (this.touchClientY <= touches[0].clientY + 30)) {\n if (this.pdfViewer.magnification && this.pdfViewer.selectedItems.annotations.length !== 1) {\n this.pdfViewer.magnification.onDoubleTapMagnification();\n }\n this.viewerContainer.style.height = this.updatePageHeight(this.pdfViewer.element.getBoundingClientRect().height, 0);\n this.isTapHidden = false;\n clearTimeout(this.singleTapTimer);\n }\n }\n };\n PdfViewerBase.prototype.preventTouchEvent = function (event) {\n if (this.pdfViewer.textSelectionModule) {\n // eslint-disable-next-line max-len\n if (!this.isPanMode && this.pdfViewer.enableTextSelection && !this.isTextSelectionDisabled && this.getSelectTextMarkupCurrentPage() == null) {\n if (!(this.isWebkitMobile && (Browser.isDevice && !this.pdfViewer.enableDesktopMode))) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n };\n PdfViewerBase.prototype.renderStampAnnotation = function (event) {\n if (this.pdfViewer.annotation) {\n var zoomFactor = this.getZoomFactor();\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n var pageDiv = this.getElement('_pageDiv_' + pageIndex);\n if (this.pdfViewer.enableStampAnnotations) {\n var stampModule = this.pdfViewer.annotationModule.stampAnnotationModule;\n if (stampModule && stampModule.isStampAnnotSelected) {\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n // eslint-disable-next-line max-len\n if (Browser.isDevice && event.type === 'touchend' && this.pdfViewer.annotationModule.stampAnnotationModule.currentStampAnnotation.shapeAnnotationType === 'Image') {\n var currentStampObj = this.pdfViewer.annotationModule.stampAnnotationModule.currentStampAnnotation;\n currentStampObj.pageIndex = pageIndex;\n currentStampObj.bounds.x = (event.changedTouches[0].clientX - pageCurrentRect.left) / zoomFactor;\n currentStampObj.bounds.y = (event.changedTouches[0].clientY - pageCurrentRect.top) / zoomFactor;\n stampModule.updateDeleteItems(pageIndex, currentStampObj, currentStampObj.opacity);\n this.pdfViewer.add(currentStampObj);\n }\n else {\n // eslint-disable-next-line max-len\n stampModule.renderStamp((event.changedTouches[0].clientX - pageCurrentRect.left) / zoomFactor, (event.changedTouches[0].clientY - pageCurrentRect.top) / zoomFactor, null, null, pageIndex, null, null, null, null);\n }\n stampModule.isStampAnnotSelected = false;\n }\n }\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n if (this.pdfViewer.enableHandwrittenSignature && this.isSignatureAdded && pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n this.currentSignatureAnnot.pageIndex = pageIndex;\n // eslint-disable-next-line max-len\n this.signatureModule.renderSignature((event.changedTouches[0].clientX - pageCurrentRect.left) / zoomFactor, (event.changedTouches[0].clientY - pageCurrentRect.top) / zoomFactor);\n this.isSignatureAdded = false;\n }\n if (event.touches.length === 1 && this.isTextMarkupAnnotationModule() && !this.getPopupNoteVisibleStatus()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.onTextMarkupAnnotationTouchEnd(event);\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.initPageDiv = function (pageValues) {\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateTotalPage();\n }\n }\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.mobiletotalPageContainer) {\n this.mobiletotalPageContainer.innerHTML = this.pageCount.toString();\n this.pageNoContainer.innerHTML = '(1-' + this.pageCount.toString() + ')';\n }\n if (this.pageCount > 0) {\n var topValue = 0;\n var pageLimit = 0;\n this.isMixedSizeDocument = false;\n if (this.pageCount > 100) {\n // to render 100 pages intially.\n pageLimit = 100;\n this.pageLimit = pageLimit;\n }\n else {\n pageLimit = this.pageCount;\n }\n var isPortrait = false;\n var isLandscape = false;\n var differentPageSize = false;\n for (var i = 0; i < pageLimit; i++) {\n if (typeof pageValues.pageSizes[i] !== 'object') {\n var pageSize = pageValues.pageSizes[i].split(',');\n if (pageValues.pageSizes[i - 1] !== null && i !== 0) {\n var previousPageHeight = pageValues.pageSizes[i - 1].split(',');\n topValue = this.pageGap + parseFloat(previousPageHeight[1]) + topValue;\n }\n else {\n topValue = this.pageGap;\n }\n var size = { width: parseFloat(pageSize[0]), height: parseFloat(pageSize[1]), top: topValue };\n this.pageSize.push(size);\n }\n else {\n if (pageValues.pageSizes[i - 1] !== null && i !== 0) {\n // eslint-disable-next-line\n var previousPageHeight = pageValues.pageSizes[i - 1];\n topValue = this.pageGap + parseFloat(previousPageHeight.Height) + topValue;\n }\n else {\n topValue = this.pageGap;\n }\n var size = { width: pageValues.pageSizes[i].Width, height: pageValues.pageSizes[i].Height, top: topValue };\n this.pageSize.push(size);\n }\n if (this.pageSize[i].height > this.pageSize[i].width) {\n isPortrait = true;\n }\n if (this.pageSize[i].width > this.pageSize[i].height) {\n isLandscape = true;\n }\n if (i > 0 && this.pageSize[i].width !== this.pageSize[i - 1].width) {\n differentPageSize = true;\n }\n var pageWidth = this.pageSize[i].width;\n if (pageWidth > this.highestWidth) {\n this.highestWidth = pageWidth;\n }\n var pageHeight = this.pageSize[i].height;\n if (pageHeight > this.highestHeight) {\n this.highestHeight = pageHeight;\n }\n }\n if ((isPortrait && isLandscape) || differentPageSize) {\n this.isMixedSizeDocument = true;\n }\n var limit = this.pageCount < 10 ? this.pageCount : 10;\n for (var i = 0; i < limit; i++) {\n this.renderPageContainer(i, this.getPageWidth(i), this.getPageHeight(i), this.getPageTop(i));\n }\n // eslint-disable-next-line max-len\n this.pageContainer.style.height = this.getPageTop(this.pageSize.length - 1) + this.getPageHeight(this.pageSize.length - 1) + 'px';\n this.pageContainer.style.position = 'relative';\n if (this.pageLimit === 100) {\n var pageDiv = this.getElement('_pageDiv_' + this.pageLimit);\n if (pageDiv === null && this.pageLimit < this.pageCount) {\n Promise.all([this.renderPagesVirtually()]);\n }\n }\n }\n };\n PdfViewerBase.prototype.renderElementsVirtualScroll = function (pageNumber) {\n var lowerLimit = 1;\n var higherLimit = 3;\n if (this.pageStopValue <= 200) {\n lowerLimit = 4;\n higherLimit = 4;\n }\n else {\n lowerLimit = 2;\n higherLimit = 3;\n }\n var pageValue = pageNumber + lowerLimit;\n if (pageValue > this.pageCount) {\n pageValue = this.pageCount;\n }\n for (var i = pageNumber - 1; i <= pageValue; i++) {\n if (i !== -1) {\n this.renderPageElement(i);\n }\n }\n var lowerPageValue = pageNumber - 3;\n if (lowerPageValue < 0) {\n lowerPageValue = 0;\n }\n for (var i = pageNumber - 1; i >= lowerPageValue; i--) {\n if (i !== -1) {\n this.renderPageElement(i);\n }\n }\n for (var j = 0; j < this.pageCount; j++) {\n if (!((lowerPageValue <= j) && (j <= pageValue))) {\n var pageDiv = this.getElement('_pageDiv_' + j);\n var pageCanvas = this.getElement('_pageCanvas_' + j);\n var textLayer = this.getElement('_textLayer_' + j);\n if (pageCanvas) {\n pageCanvas.parentNode.removeChild(pageCanvas);\n if (textLayer) {\n if (this.pdfViewer.textSelectionModule && textLayer.childNodes.length !== 0 && !this.isTextSelectionDisabled) {\n this.pdfViewer.textSelectionModule.maintainSelectionOnScroll(j, true);\n }\n textLayer.parentNode.removeChild(textLayer);\n }\n var indexInArray = this.renderedPagesList.indexOf(j);\n if (indexInArray !== -1) {\n this.renderedPagesList.splice(indexInArray, 1);\n }\n }\n if (pageDiv) {\n pageDiv.parentNode.removeChild(pageDiv);\n var indexInArray = this.renderedPagesList.indexOf(j);\n if (indexInArray !== -1) {\n this.renderedPagesList.splice(indexInArray, 1);\n }\n }\n }\n }\n if (isBlazor())\n this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateCurrentPageNumber', this.currentPageNumber);\n };\n PdfViewerBase.prototype.renderPageElement = function (i) {\n var pageDiv = this.getElement('_pageDiv_' + i);\n var canvas = this.getElement('_pageCanvas_' + i);\n if (canvas == null && pageDiv == null && i < this.pageSize.length) {\n // eslint-disable-next-line\n this.renderPageContainer(i, this.getPageWidth(i), this.getPageHeight(i), this.getPageTop(i));\n }\n };\n PdfViewerBase.prototype.renderPagesVirtually = function () {\n return __awaiter(this, void 0, void 0, function () {\n var proxy;\n var _this = this;\n return __generator(this, function (_a) {\n proxy = this;\n setTimeout(function () {\n _this.initiateRenderPagesVirtually(proxy);\n }, 500);\n return [2 /*return*/];\n });\n });\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.initiateRenderPagesVirtually = function (proxy) {\n var jsonObject = { hashId: proxy.hashId, isCompletePageSizeNotReceived: true, action: 'VirtualLoad', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.documentId, password: proxy.passwordData };\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = proxy.jsonDocumentId;\n }\n this.virtualLoadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.virtualLoadRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.load;\n this.virtualLoadRequestHandler.responseType = 'json';\n this.virtualLoadRequestHandler.mode = true;\n this.virtualLoadRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.virtualLoadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, 'VirtualLoad');\n }\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n }\n if (proxy.documentId === data.uniqueId) {\n proxy.pdfViewer.fireAjaxRequestSuccess('VirtualLoad', data);\n // eslint-disable-next-line\n var pageValues = data;\n if (proxy.pageSize[proxy.pageLimit - 1]) {\n var topValue = proxy.pageSize[proxy.pageLimit - 1].top;\n for (var i = proxy.pageLimit; i < proxy.pageCount; i++) {\n if (typeof (pageValues.pageSizes[i]) !== 'object') {\n var pageSize = pageValues.pageSizes[i].split(',');\n if (proxy.pageSize[i - 1] !== null && i !== 0) {\n var previousPageHeight = proxy.pageSize[i - 1].height;\n topValue = proxy.pageGap + parseFloat(previousPageHeight) + topValue;\n }\n var size = { width: parseFloat(pageSize[0]), height: parseFloat(pageSize[1]), top: topValue };\n proxy.pageSize.push(size);\n }\n else {\n if (proxy.pageSize[i - 1] !== null && i !== 0) {\n var previousPageHeight = proxy.pageSize[i - 1].height;\n topValue = proxy.pageGap + parseFloat(previousPageHeight) + topValue;\n }\n var size = { width: parseFloat(pageValues.pageSizes[i].Width), height: parseFloat(pageValues.pageSizes[i].Height), top: topValue };\n proxy.pageSize.push(size);\n }\n }\n // eslint-disable-next-line max-len\n proxy.pageContainer.style.height = proxy.getPageTop(proxy.pageSize.length - 1) + proxy.getPageHeight(proxy.pageSize.length - 1) + 'px';\n // eslint-disable-next-line\n var pageData = window.sessionStorage.getItem(proxy.documentId + '_pagedata');\n if (proxy.pageCount > 100) {\n proxy.pdfViewer.fireDocumentLoad(pageData);\n var linkAnnotationModule = proxy.pdfViewer.linkAnnotationModule;\n if (linkAnnotationModule && linkAnnotationModule.linkAnnotation && linkAnnotationModule.linkAnnotation.length > 0 && linkAnnotationModule.linkPage.length > 0) {\n linkAnnotationModule.renderDocumentLink(linkAnnotationModule.linkAnnotation, linkAnnotationModule.linkPage, linkAnnotationModule.annotationY, proxy.currentPageNumber - 1);\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n this.virtualLoadRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText);\n };\n // eslint-disable-next-line\n this.virtualLoadRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText);\n };\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.tileRenderPage = function (data, pageIndex) {\n var _this = this;\n var proxy = null;\n proxy = this;\n if (data && this.pageSize[pageIndex]) {\n var pageWidth = this.getPageWidth(pageIndex);\n var pageHeight = this.getPageHeight(pageIndex);\n // eslint-disable-next-line max-len\n var canvas_1 = this.getElement('_pageCanvas_' + pageIndex);\n var pageDiv_1 = this.getElement('_pageDiv_' + pageIndex);\n var tileX = data.tileX ? data.tileX : 0;\n var tileY = data.tileY ? data.tileY : 0;\n if (pageDiv_1) {\n pageDiv_1.style.width = pageWidth + 'px';\n pageDiv_1.style.height = pageHeight + 'px';\n pageDiv_1.style.background = '#fff';\n pageDiv_1.style.top = this.getPageTop(pageIndex) + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv_1.style.right = this.updateLeftPosition(pageIndex) + 'px';\n }\n else {\n pageDiv_1.style.left = this.updateLeftPosition(pageIndex) + 'px';\n }\n }\n if (canvas_1) {\n canvas_1.style.background = '#fff';\n }\n var imageData = data['image'];\n var zoomFactor = this.retrieveCurrentZoomFactor();\n if (this.isReRenderRequired) {\n if (data.zoomFactor) {\n zoomFactor = data.zoomFactor;\n }\n var currentString = this.documentId + '_' + pageIndex + '_' + zoomFactor + '_' + data.tileX + '_' + data.tileY;\n // eslint-disable-next-line max-len\n this.tilerequestLists.push(currentString);\n // eslint-disable-next-line\n var matrix = data['transformationMatrix'];\n // eslint-disable-next-line\n var width = data['width'];\n if (imageData) {\n var tileX_1 = data.tileX ? data.tileX : 0;\n var tileY_1 = data.tileY ? data.tileY : 0;\n var scaleFactor = (!isNullOrUndefined(data.scaleFactor)) ? data.scaleFactor : 1.5;\n var image = document.getElementById(this.pdfViewer.element.id + '_tileimg_' + pageIndex + '_' + this.getZoomFactor() + '_' + tileX_1 + '_' + tileY_1);\n if (!image) {\n image = new Image();\n image.id = this.pdfViewer.element.id + '_tileimg_' + pageIndex + '_' + this.getZoomFactor() + '_' + tileX_1 + '_' + tileY_1;\n if (pageDiv_1) {\n pageDiv_1.append(image);\n }\n }\n image.src = imageData;\n image.onload = function () {\n proxy.showPageLoadingIndicator(pageIndex, false);\n proxy.tileRenderCount = proxy.tileRenderCount + 1;\n if ((tileX_1 === 0) && (tileY_1 === 0)) {\n if (pageIndex === 0 && _this.isDocumentLoaded) {\n proxy.renderPDFInformations();\n proxy.isInitialLoaded = true;\n // eslint-disable-next-line\n var pageData = window.sessionStorage.getItem(proxy.documentId + '_pagedata');\n if (proxy.pageCount <= 100) {\n proxy.pdfViewer.fireDocumentLoad(pageData);\n }\n proxy.isDocumentLoaded = false;\n if (proxy.pdfViewer.textSearch && proxy.pdfViewer.isExtractText) {\n proxy.pdfViewer.textSearchModule.getPDFDocumentTexts();\n }\n }\n }\n if (proxy.tileRenderCount === proxy.tileRequestCount) {\n if (proxy.isTextMarkupAnnotationModule()) {\n proxy.pdfViewer.annotationModule.textMarkupAnnotationModule.rerenderAnnotations(pageIndex);\n }\n if (canvas_1) {\n canvas_1.style.display = 'none';\n canvas_1.src = '#';\n }\n var oldPageDiv = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_oldCanvas\"]');\n for (var i = 0; i < oldPageDiv.length; i++) {\n pageDiv_1.removeChild(oldPageDiv[i]);\n }\n proxy.isTileImageRendered = false;\n proxy.tileRenderCount = 0;\n if (proxy.pdfViewer.magnificationModule) {\n proxy.pdfViewer.magnificationModule.rerenderCountIncrement();\n }\n proxy.isDrawnCompletely = true;\n }\n };\n var currentImageWidth = (((width * this.getZoomFactor()) / zoomFactor) / scaleFactor);\n var currentImageTop = (((matrix.Elements[5] * this.getZoomFactor()) / zoomFactor) / scaleFactor);\n var currentImageLeft = (((matrix.Elements[4] * this.getZoomFactor()) / zoomFactor) / scaleFactor);\n image.width = currentImageWidth;\n image.style.width = currentImageWidth + 'px';\n image.style.top = currentImageTop + 'px';\n image.style.left = currentImageLeft + 'px';\n image.style.position = 'absolute';\n }\n if ((tileX === 0) && (tileY === 0)) {\n this.onPageRender(data, pageIndex, pageDiv_1);\n }\n }\n else {\n var oldCanvases = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_tileimg_' + pageIndex + '_\"]');\n for (var l = 0; l < oldCanvases.length; l++) {\n var tileImgId = oldCanvases[l].id.split('_');\n var zoomFactor_1 = proxy.retrieveCurrentZoomFactor();\n // eslint-disable-next-line\n var tileData = JSON.parse(proxy.getWindowSessionStorageTile(pageIndex, parseFloat(tileImgId[tileImgId.length - 2]), parseFloat(tileImgId[tileImgId.length - 1]), zoomFactor_1));\n if (tileData && tileData.zoomFactor) {\n zoomFactor_1 = tileData.zoomFactor;\n }\n if (parseFloat(tileImgId[tileImgId.length - 4]) === pageIndex) {\n var node = oldCanvases[l];\n // Make sure it's really an Element\n if (node.nodeType == Node.ELEMENT_NODE) {\n node.onload = function () {\n proxy.showPageLoadingIndicator(pageIndex, false);\n proxy.tileRenderCount = proxy.tileRenderCount + 1;\n if ((tileX_2 === 0) && (tileY_2 === 0)) {\n if (pageIndex === 0 && _this.isDocumentLoaded) {\n _this.renderPDFInformations();\n _this.isInitialLoaded = true;\n // eslint-disable-next-line\n var pageData = window.sessionStorage.getItem(proxy.documentId + '_pagedata');\n if (proxy.pageCount <= 100) {\n proxy.pdfViewer.fireDocumentLoad(pageData);\n }\n proxy.isDocumentLoaded = false;\n if (proxy.pdfViewer.textSearch && proxy.pdfViewer.isExtractText) {\n proxy.pdfViewer.textSearchModule.getPDFDocumentTexts();\n }\n }\n }\n if (proxy.tileRenderCount === proxy.tileRequestCount) {\n canvas_1.style.display = 'none';\n canvas_1.src = '#';\n if (proxy.isTextMarkupAnnotationModule()) {\n proxy.pdfViewer.annotationModule.textMarkupAnnotationModule.rerenderAnnotations(pageIndex);\n }\n var oldPageDiv = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_oldCanvas\"]');\n for (var i = 0; i < oldPageDiv.length; i++) {\n pageDiv_1.removeChild(oldPageDiv[i]);\n }\n proxy.isTileImageRendered = false;\n proxy.tileRenderCount = 0;\n if (proxy.pdfViewer.magnificationModule) {\n proxy.pdfViewer.magnificationModule.rerenderCountIncrement();\n }\n proxy.isDrawnCompletely = true;\n }\n };\n if (tileData)\n node.src = tileData.image;\n }\n }\n }\n var tileX_2 = data.tileX ? data.tileX : 0;\n var tileY_2 = data.tileY ? data.tileY : 0;\n if ((tileX_2 === 0) && (tileY_2 === 0)) {\n this.onPageRender(data, pageIndex, pageDiv_1);\n }\n }\n }\n };\n PdfViewerBase.prototype.renderTileCanvas = function (pageWidth, pageHeight, pageIndex, pageDiv, zoomFactor, scaleFactor) {\n var pageCanvas = this.getElement('_pageTileCanvas_' + pageIndex);\n if (!pageCanvas) {\n pageCanvas = createElement('canvas', { id: this.pdfViewer.element.id + '_pageTileCanvas_' + pageIndex, className: 'e-pv-pageTile-canvas' });\n pageCanvas.style.width = pageWidth + 'px';\n pageCanvas.style.height = pageHeight + 'px';\n pageCanvas.style.display = 'none';\n pageCanvas.style.backgroundColor = '#fff';\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n pageCanvas.style.marginLeft = 'auto';\n pageCanvas.style.marginRight = 'auto';\n }\n pageDiv.appendChild(pageCanvas);\n }\n return pageCanvas;\n };\n PdfViewerBase.prototype.calculateImageWidth = function (pageWidth, zoomFactor, scaleFactor, imageWidth) {\n var width = (pageWidth / this.getZoomFactor()) * zoomFactor * scaleFactor;\n // eslint-disable-next-line\n if ((parseInt(imageWidth.toString())) === (parseInt(width.toString()))) {\n imageWidth = width;\n }\n imageWidth = ((imageWidth * this.getZoomFactor()) / zoomFactor);\n return imageWidth;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.renderPage = function (data, pageIndex) {\n var _this = this;\n var proxy = this;\n if (data && this.pageSize[pageIndex]) {\n var pageWidth = this.getPageWidth(pageIndex);\n var pageHeight = this.getPageHeight(pageIndex);\n // eslint-disable-next-line max-len\n var canvas_2 = this.getElement('_pageCanvas_' + pageIndex);\n var pageDiv_2 = this.getElement('_pageDiv_' + pageIndex);\n if (pageDiv_2) {\n pageDiv_2.style.width = pageWidth + 'px';\n pageDiv_2.style.height = pageHeight + 'px';\n pageDiv_2.style.top = this.getPageTop(pageIndex) + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv_2.style.right = this.updateLeftPosition(pageIndex) + 'px';\n }\n else {\n pageDiv_2.style.left = this.updateLeftPosition(pageIndex) + 'px';\n }\n }\n if (canvas_2) {\n canvas_2.style.background = '#fff';\n canvas_2.style.display = 'block';\n canvas_2.style.width = pageWidth + 'px';\n canvas_2.style.height = pageHeight + 'px';\n if (pageWidth < parseFloat(pageDiv_2.style.width)) {\n pageDiv_2.style.boxShadow = 'none';\n }\n // eslint-disable-next-line\n var imageData = data['image'];\n if (imageData) {\n canvas_2.onload = function () {\n var oldCanvases = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_tileimg_' + pageIndex + '_\"]');\n var pageCanvas = proxy.getElement('_pageDiv_' + pageIndex);\n for (var i = 0; i < oldCanvases.length; i++) {\n var tileImgId = oldCanvases[i].id.split('_');\n if (parseFloat(tileImgId[tileImgId.length - 3]) != proxy.getZoomFactor())\n pageCanvas.removeChild(oldCanvases[i]);\n }\n var oldPageDiv = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_oldCanvas\"]');\n for (var i = 0; i < oldPageDiv.length; i++) {\n pageDiv_2.removeChild(oldPageDiv[i]);\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.rerenderCountIncrement();\n }\n _this.showPageLoadingIndicator(pageIndex, false);\n if (pageIndex === 0 && _this.isDocumentLoaded) {\n _this.renderPDFInformations();\n _this.isInitialLoaded = true;\n // eslint-disable-next-line\n var pageData = window.sessionStorage.getItem(_this.documentId + '_pagedata');\n if (_this.pageCount <= 100) {\n _this.pdfViewer.fireDocumentLoad(pageData);\n }\n _this.isDocumentLoaded = false;\n if (_this.pdfViewer.textSearch && _this.pdfViewer.isExtractText) {\n _this.pdfViewer.textSearchModule.getPDFDocumentTexts();\n }\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.pushImageObjects(canvas_2);\n }\n };\n canvas_2.src = imageData;\n }\n this.onPageRender(data, pageIndex, pageDiv_2);\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.onPageRender = function (data, pageIndex, pageDiv) {\n // eslint-disable-next-line\n var aElement = pageDiv && pageDiv.getElementsByTagName('a');\n var isAnnotationRendered = false;\n if (aElement && aElement.length !== 0) {\n for (var index = aElement.length - 1; index >= 0; index--) {\n aElement[index].parentNode.removeChild(aElement[index]);\n }\n }\n if (this.pdfViewer.textSearchModule || this.pdfViewer.textSelectionModule || this.pdfViewer.annotationModule) {\n this.renderTextContent(data, pageIndex);\n }\n if (this.pdfViewer.formFieldsModule && !this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n this.pdfViewer.formFieldsModule.renderFormFields(pageIndex);\n }\n if (this.pdfViewer.formDesignerModule && !this.isDocumentLoaded) {\n this.pdfViewer.formDesignerModule.rerenderFormFields(pageIndex);\n }\n if (this.pdfViewer.formDesignerModule && this.isDocumentLoaded && this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n this.pdfViewer.formFieldsModule.renderFormFields(pageIndex);\n this.pdfViewer.magnificationModule.isFormFieldPageZoomed = false;\n }\n if (this.pdfViewer.enableHyperlink && this.pdfViewer.linkAnnotationModule) {\n this.pdfViewer.linkAnnotationModule.renderHyperlinkContent(data, pageIndex);\n }\n if (this.pdfViewer.textSelectionModule && !this.isTextSelectionDisabled) {\n this.pdfViewer.textSelectionModule.applySelectionRangeOnScroll(pageIndex);\n }\n if (this.documentAnnotationCollections) {\n var isAnnotationAdded = false;\n for (var i = 0; i < this.annotationRenderredList.length; i++) {\n if (this.annotationRenderredList[i] === pageIndex) {\n isAnnotationAdded = true;\n }\n }\n // eslint-disable-next-line\n var pageAnnotations = this.documentAnnotationCollections[pageIndex];\n if (pageAnnotations && !isAnnotationAdded) {\n data.shapeAnnotation = pageAnnotations.shapeAnnotation;\n data.measureShapeAnnotation = pageAnnotations.measureShapeAnnotation;\n data.textMarkupAnnotation = pageAnnotations.textMarkupAnnotation;\n data.freeTextAnnotation = pageAnnotations.freeTextAnnotation;\n data.stampAnnotations = pageAnnotations.stampAnnotations;\n data.stickyNotesAnnotation = pageAnnotations.stickyNotesAnnotation;\n data.signatureInkAnnotation = pageAnnotations.signatureInkAnnotation;\n this.annotationRenderredList.push(pageIndex);\n }\n }\n if (this.isImportAction) {\n // eslint-disable-next-line\n var pageAnnotations = this.checkDocumentCollectionData(pageIndex);\n if (pageAnnotations) {\n data.shapeAnnotation = pageAnnotations.shapeAnnotation;\n data.measureShapeAnnotation = pageAnnotations.measureShapeAnnotation;\n data.textMarkupAnnotation = pageAnnotations.textMarkupAnnotation;\n data.freeTextAnnotation = pageAnnotations.freeTextAnnotation;\n data.stampAnnotations = pageAnnotations.stampAnnotations;\n data.stickyNotesAnnotation = pageAnnotations.stickyNotesAnnotation;\n data.signatureInkAnnotation = pageAnnotations.signatureInkAnnotation;\n isAnnotationRendered = true;\n }\n }\n if (this.pdfViewer.annotationModule && (this.isTextMarkupAnnotationModule() || this.isShapeBasedAnnotationsEnabled())) {\n if (this.isStampAnnotationModule()) {\n // eslint-disable-next-line\n var stampData = data['stampAnnotations'];\n if (isAnnotationRendered) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(stampData, pageIndex, null, true);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(stampData, pageIndex);\n }\n }\n if (isAnnotationRendered) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, data.shapeAnnotation, data.measureShapeAnnotation, data.textMarkupAnnotation, null, true);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, data.shapeAnnotation, data.measureShapeAnnotation, data.textMarkupAnnotation);\n }\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderStickyNotesAnnotations(data.stickyNotesAnnotation, pageIndex);\n }\n if (this.pdfViewer.formDesignerModule && !this.pdfViewer.annotationModule) {\n this.pdfViewer.formDesignerModule.updateCanvas(pageIndex);\n }\n if (this.pdfViewer.textSearchModule) {\n if (this.pdfViewer.textSearchModule.isTextSearch) {\n this.pdfViewer.textSearchModule.highlightOtherOccurrences(pageIndex);\n }\n }\n if (this.isShapeBasedAnnotationsEnabled()) {\n var canvas1 = this.getElement('_annotationCanvas_' + pageIndex);\n var commonStyle = 'position:absolute;top:0px;left:0px;overflow:hidden;pointer-events:none;z-index:1000';\n if (canvas1) {\n var bounds = canvas1.getBoundingClientRect();\n renderAdornerLayer(bounds, commonStyle, canvas1, pageIndex, this.pdfViewer);\n this.pdfViewer.renderSelector(pageIndex, this.pdfViewer.annotationSelectorSettings);\n }\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.selectCommentsAnnotation(pageIndex);\n }\n if (this.isFreeTextAnnotationModule() && data.freeTextAnnotation) {\n if (isAnnotationRendered) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(data.freeTextAnnotation, pageIndex, true);\n }\n else {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(data.freeTextAnnotation, pageIndex);\n }\n }\n if (this.isInkAnnotationModule() && data && data.signatureInkAnnotation) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.inkAnnotationModule.renderExistingInkSignature(data.signatureInkAnnotation, pageIndex, isAnnotationRendered);\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.isAnnotationSelected && this.pdfViewer.annotationModule.annotationPageIndex === pageIndex) {\n this.pdfViewer.annotationModule.selectAnnotationFromCodeBehind();\n }\n this.isLoadedFormFieldAdded = false;\n };\n /**\n * @private\n * @param {number} pageIndex - page index for rendering the annotation.\n * @returns {void}\n */\n PdfViewerBase.prototype.renderAnnotations = function (pageIndex) {\n // eslint-disable-next-line\n var data = {};\n if (this.documentAnnotationCollections) {\n var isAnnotationAdded = false;\n for (var i = 0; i < this.annotationRenderredList.length; i++) {\n if (this.annotationRenderredList[i] === pageIndex) {\n isAnnotationAdded = true;\n }\n }\n // eslint-disable-next-line\n var pageAnnotations = this.documentAnnotationCollections[pageIndex];\n if (pageAnnotations && !isAnnotationAdded) {\n data.shapeAnnotation = pageAnnotations.shapeAnnotation;\n data.measureShapeAnnotation = pageAnnotations.measureShapeAnnotation;\n data.textMarkupAnnotation = pageAnnotations.textMarkupAnnotation;\n data.freeTextAnnotation = pageAnnotations.freeTextAnnotation;\n data.stampAnnotations = pageAnnotations.stampAnnotations;\n data.stickyNotesAnnotation = pageAnnotations.stickyNotesAnnotation;\n data.signatureAnnotation = pageAnnotations.signatureAnnotation;\n data.signatureInkAnnotation = pageAnnotations.signatureInkAnnotation;\n this.annotationRenderredList.push(pageIndex);\n }\n }\n if (this.isAnnotationCollectionRemoved) {\n data.shapeAnnotation = [];\n data.measureShapeAnnotation = [];\n data.textMarkupAnnotation = [];\n data.freeTextAnnotation = [];\n data.stampAnnotations = [];\n data.stickyNotesAnnotation = [];\n data.signatureInkAnnotation = [];\n }\n if (this.isTextMarkupAnnotationModule() || this.isShapeBasedAnnotationsEnabled()) {\n if (this.isStampAnnotationModule()) {\n // eslint-disable-next-line\n var stampData = data['stampAnnotations'];\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(stampData, pageIndex);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, data.shapeAnnotation, data.measureShapeAnnotation, data.textMarkupAnnotation);\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderStickyNotesAnnotations(data.stickyNotesAnnotation, pageIndex);\n }\n if (this.pdfViewer.textSearchModule) {\n if (this.pdfViewer.textSearchModule.isTextSearch) {\n this.pdfViewer.textSearchModule.highlightOtherOccurrences(pageIndex);\n }\n }\n if (this.isImportAction) {\n var isAnnotationAdded = false;\n for (var i = 0; i < this.annotationPageList.length; i++) {\n if (this.annotationPageList[i] === pageIndex) {\n isAnnotationAdded = true;\n }\n }\n if (!isAnnotationAdded) {\n if (this.importedAnnotation) {\n this.drawPageAnnotations(this.importedAnnotation, pageIndex, true);\n this.annotationPageList[this.annotationPageList.length] = pageIndex;\n }\n }\n }\n if (this.isShapeBasedAnnotationsEnabled()) {\n var canvas1 = this.getElement('_annotationCanvas_' + pageIndex);\n var commonStyle = 'position:absolute;top:0px;left:0px;overflow:hidden;pointer-events:none;z-index:1000';\n if (canvas1) {\n var bounds = canvas1.getBoundingClientRect();\n renderAdornerLayer(bounds, commonStyle, canvas1, pageIndex, this.pdfViewer);\n this.pdfViewer.renderSelector(pageIndex);\n }\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.selectCommentsAnnotation(pageIndex);\n }\n if (this.isFreeTextAnnotationModule() && data.freeTextAnnotation) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(data.freeTextAnnotation, pageIndex);\n }\n if (data && data.signatureAnnotation) {\n this.signatureModule.renderExistingSignature(data.signatureAnnotation, pageIndex, false);\n }\n if (this.isInkAnnotationModule() && data && data.signatureInkAnnotation) {\n this.pdfViewer.annotationModule.inkAnnotationModule.renderExistingInkSignature(data.signatureInkAnnotation, pageIndex, false);\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.isAnnotationSelected) {\n this.pdfViewer.annotationModule.selectAnnotationFromCodeBehind();\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.renderTextContent = function (data, pageIndex) {\n // eslint-disable-next-line\n var texts = data['textContent'];\n // eslint-disable-next-line\n var bounds = data['textBounds'];\n // eslint-disable-next-line\n var rotation = data['rotation'];\n var textLayer = this.getElement('_textLayer_' + pageIndex);\n if (!textLayer) {\n // eslint-disable-next-line max-len\n textLayer = this.textLayer.addTextLayer(pageIndex, this.getPageWidth(pageIndex), this.getPageHeight(pageIndex), this.getElement('_pageDiv_' + pageIndex));\n }\n if (textLayer && texts && bounds) {\n textLayer.style.display = 'block';\n if (textLayer.childNodes.length === 0) {\n this.textLayer.renderTextContents(pageIndex, texts, bounds, rotation);\n }\n else {\n this.textLayer.resizeTextContents(pageIndex, texts, bounds, rotation, true);\n }\n }\n };\n PdfViewerBase.prototype.renderPageContainer = function (pageNumber, pageWidth, pageHeight, topValue) {\n // eslint-disable-next-line max-len\n var pageDiv = createElement('div', { id: this.pdfViewer.element.id + '_pageDiv_' + pageNumber, className: 'e-pv-page-div', attrs: { 'tabindex': '0' } });\n pageDiv.style.width = pageWidth + 'px';\n pageDiv.style.height = pageHeight + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv.style.right = this.updateLeftPosition(pageNumber) + 'px';\n }\n else {\n pageDiv.style.left = this.updateLeftPosition(pageNumber) + 'px';\n }\n pageDiv.style.top = topValue + 'px';\n this.pageContainer.appendChild(pageDiv);\n this.pageContainer.style.width = this.viewerContainer.clientWidth + 'px';\n this.createWaitingPopup(pageNumber);\n this.orderPageDivElements(pageDiv, pageNumber);\n this.renderPageCanvas(pageDiv, pageWidth, pageHeight, pageNumber, 'block');\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && !this.isThumb) {\n this.updateMobileScrollerPosition();\n }\n };\n PdfViewerBase.prototype.renderPDFInformations = function () {\n if (this.pdfViewer.thumbnailViewModule && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n this.pdfViewer.thumbnailViewModule.createRequestForThumbnails();\n }\n if (this.pdfViewer.bookmarkViewModule) {\n this.pdfViewer.bookmarkViewModule.createRequestForBookmarks();\n }\n if (this.pdfViewer.annotationModule) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.initializeAcccordionContainer();\n }\n if (this.pdfViewer.isCommandPanelOpen) {\n this.pdfViewer.annotation.showCommentsPanel();\n }\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.createRequestForComments();\n }\n };\n PdfViewerBase.prototype.orderPageDivElements = function (pageDiv, pageIndex) {\n var nextElement = this.getElement('_pageDiv_' + (pageIndex + 1));\n if (nextElement) {\n this.pageContainer.insertBefore(pageDiv, nextElement);\n }\n else {\n this.pageContainer.appendChild(pageDiv);\n }\n };\n /**\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.renderPageCanvas = function (pageDiv, pageWidth, pageHeight, pageNumber, displayMode) {\n if (pageDiv) {\n // eslint-disable-next-line\n var pageCanvas = this.getElement('_pageCanvas_' + pageNumber);\n if (pageCanvas) {\n pageCanvas.width = pageWidth;\n pageCanvas.height = pageHeight;\n pageCanvas.style.display = 'block';\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n pageCanvas.style.marginLeft = 'auto';\n pageCanvas.style.marginRight = 'auto';\n }\n }\n else {\n // eslint-disable-next-line max-len\n pageCanvas = createElement('img', { id: this.pdfViewer.element.id + '_pageCanvas_' + pageNumber, className: 'e-pv-page-canvas' });\n pageCanvas.width = pageWidth;\n pageCanvas.height = pageHeight;\n pageCanvas.style.display = displayMode;\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n pageCanvas.style.marginLeft = 'auto';\n pageCanvas.style.marginRight = 'auto';\n }\n pageDiv.appendChild(pageCanvas);\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotation) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.createAnnotationLayer(pageDiv, pageWidth, pageHeight, pageNumber, displayMode);\n }\n if (this.pdfViewer.textSearchModule || this.pdfViewer.textSelectionModule || this.pdfViewer.annotationModule) {\n this.textLayer.addTextLayer(pageNumber, pageWidth, pageHeight, pageDiv);\n }\n if (this.pdfViewer.formDesignerModule && !this.pdfViewer.annotationModule) {\n this.pdfViewer.formDesignerModule.createAnnotationLayer(pageDiv, pageWidth, pageHeight, pageNumber, displayMode);\n }\n return pageCanvas;\n }\n };\n /**\n * @private\n * @param {any} pageCanvas - The canvas for rendering the page.\n * @param {any} pageNumber - The page number for adding styles.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.applyElementStyles = function (pageCanvas, pageNumber) {\n if (this.isMixedSizeDocument && pageCanvas) {\n var canvasElement = document.getElementById(this.pdfViewer.element.id + '_pageCanvas_' + pageNumber);\n var oldCanvas = document.getElementById(this.pdfViewer.element.id + '_oldCanvas_' + pageNumber);\n if (pageCanvas && canvasElement && canvasElement.offsetLeft > 0) {\n pageCanvas.style.marginLeft = canvasElement.offsetLeft + 'px';\n pageCanvas.style.marginRight = canvasElement.offsetLeft + 'px';\n }\n else if (oldCanvas && oldCanvas.offsetLeft > 0) {\n pageCanvas.style.marginLeft = oldCanvas.offsetLeft + 'px';\n pageCanvas.style.marginRight = oldCanvas.offsetLeft + 'px';\n }\n else {\n pageCanvas.style.marginLeft = 'auto';\n pageCanvas.style.marginRight = 'auto';\n }\n }\n };\n /**\n * @private\n * @param {number} pageIndex - page index for updating positon.\n * @returns {void}\n */\n PdfViewerBase.prototype.updateLeftPosition = function (pageIndex) {\n var leftPosition;\n var width = this.viewerContainer.getBoundingClientRect().width;\n if (width === 0) {\n width = parseFloat(this.pdfViewer.width.toString());\n }\n // eslint-disable-next-line max-len\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n if (this.viewerContainer.clientWidth > 0) {\n leftPosition = (this.viewerContainer.clientWidth - (this.highestWidth * this.getZoomFactor())) / 2;\n }\n else {\n leftPosition = (width - (this.highestWidth * this.getZoomFactor())) / 2;\n }\n var pageDiff = (this.highestWidth * this.getZoomFactor() - this.getPageWidth(pageIndex)) / 2;\n if (leftPosition > 0) {\n leftPosition += pageDiff;\n }\n else {\n leftPosition = pageDiff;\n }\n }\n else {\n if (this.viewerContainer.clientWidth > 0) {\n leftPosition = (this.viewerContainer.clientWidth - this.getPageWidth(pageIndex)) / 2;\n }\n else {\n leftPosition = (width - this.getPageWidth(pageIndex)) / 2;\n }\n }\n var isLandscape = false;\n if (this.pageSize[pageIndex].width > this.pageSize[pageIndex].height) {\n isLandscape = true;\n }\n // eslint-disable-next-line max-len\n if (leftPosition < 0 || (this.pdfViewer.magnificationModule ? ((this.pdfViewer.magnificationModule.isAutoZoom && this.getZoomFactor() < 1) || this.pdfViewer.magnificationModule.fitType === 'fitToWidth') : false)) {\n var leftValue = leftPosition;\n if (leftPosition > 0 && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n // eslint-disable-next-line\n leftPosition = leftValue;\n }\n else {\n leftPosition = this.pageLeft;\n }\n if ((leftPosition > 0) && this.isMixedSizeDocument) {\n if (leftValue > 0) {\n leftPosition = leftValue;\n }\n }\n }\n return leftPosition;\n };\n /**\n * @private\n * @param {number} pageIndex - The page index for positon.\n * @returns {void}\n */\n PdfViewerBase.prototype.applyLeftPosition = function (pageIndex) {\n var leftPosition;\n if (this.pageSize[pageIndex]) {\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n if (this.viewerContainer.clientWidth > 0) {\n // eslint-disable-next-line max-len\n leftPosition = (this.viewerContainer.clientWidth - (this.highestWidth * this.getZoomFactor())) / 2;\n }\n else {\n // eslint-disable-next-line max-len\n leftPosition = (this.viewerContainer.getBoundingClientRect().width - (this.highestWidth * this.getZoomFactor())) / 2;\n }\n var pageDiff = (this.highestWidth * this.getZoomFactor() - this.getPageWidth(pageIndex)) / 2;\n if (leftPosition > 0) {\n leftPosition += pageDiff;\n }\n else {\n leftPosition = pageDiff;\n }\n }\n else {\n if (this.viewerContainer.clientWidth > 0) {\n // eslint-disable-next-line max-len\n leftPosition = (this.viewerContainer.clientWidth - this.pageSize[pageIndex].width * this.getZoomFactor()) / 2;\n }\n else {\n // eslint-disable-next-line max-len\n leftPosition = (this.viewerContainer.getBoundingClientRect().width - this.pageSize[pageIndex].width * this.getZoomFactor()) / 2;\n }\n }\n var isLandscape = false;\n if (this.pageSize[pageIndex].width > this.pageSize[pageIndex].height) {\n isLandscape = true;\n }\n // eslint-disable-next-line max-len\n if (leftPosition < 0 || (this.pdfViewer.magnificationModule ? ((this.pdfViewer.magnificationModule.isAutoZoom && this.getZoomFactor() < 1) || this.pdfViewer.magnificationModule.fitType === 'fitToWidth') : false)) {\n var leftValue = leftPosition;\n leftPosition = this.pageLeft;\n // eslint-disable-next-line max-len\n if ((leftValue > 0) && this.isMixedSizeDocument) {\n leftPosition = leftValue;\n }\n }\n // eslint-disable-next-line max-len\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n if (pageDiv) {\n if (!this.pdfViewer.enableRtl) {\n pageDiv.style.left = leftPosition + 'px';\n }\n else {\n pageDiv.style.right = leftPosition + 'px';\n }\n }\n }\n };\n PdfViewerBase.prototype.updatePageHeight = function (viewerHeight, toolbarHeight) {\n return ((viewerHeight - toolbarHeight) / viewerHeight) * 100 + '%';\n };\n PdfViewerBase.prototype.initiatePageViewScrollChanged = function () {\n if (this.scrollHoldTimer) {\n clearTimeout(this.scrollHoldTimer);\n }\n this.scrollHoldTimer = null;\n if ((this.scrollPosition * this.getZoomFactor()) !== this.viewerContainer.scrollTop) {\n this.scrollPosition = this.viewerContainer.scrollTop;\n this.pageViewScrollChanged(this.currentPageNumber);\n }\n };\n PdfViewerBase.prototype.renderCountIncrement = function () {\n if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.renderCountIncrement();\n }\n };\n /**\n * @private\n * @param {number} currentPageNumber - The current pagenumber.\n * @returns {void}\n */\n PdfViewerBase.prototype.pageViewScrollChanged = function (currentPageNumber) {\n if (this.isPanMode) {\n if (this.renderedPagesList.indexOf(currentPageNumber - 1) === -1) {\n this.reRenderedCount = 0;\n }\n }\n else {\n this.reRenderedCount = 0;\n }\n var currentPageIndex = currentPageNumber - 1;\n if (currentPageNumber !== this.previousPage && currentPageNumber <= this.pageCount) {\n var isSkip = false;\n if (this.isDataExits && !this.getStoredData(currentPageIndex)) {\n isSkip = true;\n }\n if (this.renderedPagesList.indexOf(currentPageIndex) === -1 && !this.getMagnified() && !isSkip) {\n this.renderCountIncrement();\n this.createRequestForRender(currentPageIndex);\n }\n }\n if (!(this.getMagnified() || this.getPagesPinchZoomed())) {\n var previous = currentPageIndex - 1;\n var isSkip = false;\n var canvas = this.getElement('_pageCanvas_' + previous);\n if (this.isDataExits && !this.getStoredData(previous)) {\n isSkip = true;\n }\n if (canvas !== null && !isSkip) {\n if (this.renderedPagesList.indexOf(previous) === -1 && !this.getMagnified()) {\n this.renderCountIncrement();\n this.createRequestForRender(previous);\n }\n }\n if (this.isMinimumZoom) {\n this.renderPreviousPagesInScroll(previous);\n }\n var next = currentPageIndex + 1;\n var pageHeight = 0;\n if (next < this.pageCount) {\n pageHeight = this.getPageHeight(next);\n if (this.renderedPagesList.indexOf(next) === -1 && !this.getMagnified() && pageHeight) {\n this.createRequestForRender(next);\n this.renderCountIncrement();\n while (this.viewerContainer.clientHeight > pageHeight) {\n next = next + 1;\n if (next < this.pageCount) {\n this.renderPageElement(next);\n this.createRequestForRender(next);\n pageHeight += this.getPageHeight(next);\n this.renderCountIncrement();\n }\n else {\n break;\n }\n }\n }\n }\n }\n };\n PdfViewerBase.prototype.renderPreviousPagesInScroll = function (pageIndex) {\n var next = pageIndex - 1;\n var pageNumber = next - 1;\n if (next > 0) {\n if (this.renderedPagesList.indexOf(next) === -1 && !this.getMagnified()) {\n this.createRequestForRender(next);\n this.renderCountIncrement();\n }\n if (pageNumber > 0) {\n if (this.renderedPagesList.indexOf(pageNumber) === -1 && !this.getMagnified()) {\n this.createRequestForRender(pageNumber);\n this.renderCountIncrement();\n }\n }\n }\n };\n PdfViewerBase.prototype.downloadDocument = function (blobUrl) {\n // eslint-disable-next-line\n var Url = URL || webkitURL;\n blobUrl = Url.createObjectURL(blobUrl);\n var anchorElement = createElement('a');\n if (anchorElement.click) {\n anchorElement.href = blobUrl;\n anchorElement.target = '_parent';\n if ('download' in anchorElement) {\n anchorElement.download = this.downloadFileName;\n }\n (document.body || document.documentElement).appendChild(anchorElement);\n anchorElement.click();\n anchorElement.parentNode.removeChild(anchorElement);\n }\n else {\n if (window.top === window &&\n blobUrl.split('#')[0] === window.location.href.split('#')[0]) {\n var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&';\n blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&');\n }\n window.open(blobUrl, '_parent');\n }\n };\n PdfViewerBase.prototype.downloadExportAnnotationJson = function (blobUrl, isForm) {\n // eslint-disable-next-line\n var Url = URL || webkitURL;\n blobUrl = Url.createObjectURL(blobUrl);\n var anchorElement = createElement('a');\n if (anchorElement.click) {\n anchorElement.href = blobUrl;\n anchorElement.target = '_parent';\n if ('download' in anchorElement) {\n if (this.pdfViewer.exportAnnotationFileName !== null) {\n anchorElement.download = this.pdfViewer.exportAnnotationFileName.split('.')[0] + '.json';\n }\n else {\n anchorElement.download = this.pdfViewer.fileName.split('.')[0] + '.json';\n }\n }\n (document.body || document.documentElement).appendChild(anchorElement);\n anchorElement.click();\n anchorElement.parentNode.removeChild(anchorElement);\n if (isForm) {\n this.pdfViewer.fireFormExportSuccess(blobUrl, anchorElement.download);\n }\n else {\n this.pdfViewer.fireExportSuccess(blobUrl, anchorElement.download);\n }\n }\n else {\n if (window.top === window &&\n blobUrl.split('#')[0] === window.location.href.split('#')[0]) {\n var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&';\n blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&');\n }\n window.open(blobUrl, '_parent');\n if (isForm) {\n this.pdfViewer.fireFormExportSuccess(blobUrl, this.pdfViewer.fileName.split('.')[0] + '.json');\n }\n else {\n this.pdfViewer.fireExportSuccess(blobUrl, this.pdfViewer.fileName.split('.')[0] + '.json');\n }\n }\n };\n PdfViewerBase.prototype.downloadExportedXFdfAnnotation = function (blobUrl) {\n // eslint-disable-next-line\n var Url = URL || webkitURL;\n blobUrl = Url.createObjectURL(blobUrl);\n var anchorElement = createElement('a');\n if (anchorElement.click) {\n anchorElement.href = blobUrl;\n anchorElement.target = '_parent';\n if ('download' in anchorElement) {\n if (this.pdfViewer.exportAnnotationFileName !== null) {\n anchorElement.download = this.pdfViewer.exportAnnotationFileName.split('.')[0] + '.xfdf';\n }\n else {\n anchorElement.download = this.pdfViewer.fileName.split('.')[0] + '.xfdf';\n }\n }\n (document.body || document.documentElement).appendChild(anchorElement);\n anchorElement.click();\n anchorElement.parentNode.removeChild(anchorElement);\n this.pdfViewer.fireExportSuccess(blobUrl, anchorElement.download);\n }\n };\n /**\n * @private\n * @param {string} path - The path for exporting the fields.\n * @returns {void}\n */\n PdfViewerBase.prototype.exportFormFields = function (path) {\n this.createRequestForExportFormfields(false, path);\n };\n /**\n * @param source\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.importFormFields = function (source) {\n this.createRequestForImportingFormfields(source);\n };\n /**\n * @param isObject\n * @param path\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForExportFormfields = function (isObject, path) {\n var _this = this;\n var proxy = null;\n proxy = this;\n var promise = new Promise(function (resolve, reject) {\n // eslint-disable-next-line\n var jsonObject = proxy.createFormfieldsJsonData();\n proxy.pdfViewer.fireFormExportStarted(jsonObject.pdfAnnotation);\n jsonObject.action = 'ExportFormFields';\n // eslint-disable-next-line\n jsonObject['hashId'] = proxy.hashId;\n // eslint-disable-next-line\n jsonObject['fileName'] = proxy.pdfViewer.fileName;\n if (path && path !== '' && !isObject) {\n // eslint-disable-next-line\n jsonObject['filePath'] = path;\n }\n // eslint-disable-next-line\n jsonObject['elementId'] = _this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.document = proxy.jsonDocumentId;\n }\n var url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.exportFormFields;\n proxy.exportFormFieldsRequestHandler = new AjaxHandler(_this.pdfViewer);\n proxy.exportFormFieldsRequestHandler.url = url;\n proxy.exportFormFieldsRequestHandler.mode = true;\n proxy.exportFormFieldsRequestHandler.responseType = 'text';\n proxy.exportFormFieldsRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n proxy.exportFormFieldsRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (data) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.exportFormFields, data);\n if (isObject) {\n // eslint-disable-next-line\n var annotationJson = decodeURIComponent(escape(atob(data.split(',')[1])));\n resolve(annotationJson);\n proxy.pdfViewer.fireFormExportSuccess(annotationJson, proxy.pdfViewer.fileName);\n }\n else if (data.split('base64,')[1]) {\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/json');\n if (Browser.isIE || Browser.info.name === 'edge') {\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.pdfViewer.fileName.split('.')[0] + '.json');\n }\n else {\n proxy.downloadExportAnnotationJson(blobUrl, true);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n proxy.exportFormFieldsRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireFormExportFailed(jsonObject.pdfAnnotation, result.statusText);\n };\n // eslint-disable-next-line\n proxy.exportFormFieldsRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireFormExportFailed(jsonObject.pdfAnnotation, result.statusText);\n };\n });\n if (isObject) {\n return promise;\n }\n else {\n return true;\n }\n };\n /**\n * @param source\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForImportingFormfields = function (source) {\n var proxy = null;\n proxy = this;\n // eslint-disable-next-line\n var jsonObject = {};\n if (typeof source === 'object') {\n jsonObject.data = JSON.stringify(source);\n }\n else {\n jsonObject.data = source;\n if (source.split('.')[1] === 'json') {\n // eslint-disable-next-line\n jsonObject['fileName'] = proxy.pdfViewer.fileName;\n }\n }\n proxy.pdfViewer.fireFormImportStarted(source);\n // eslint-disable-next-line\n jsonObject.action = 'ImportFormFields';\n // eslint-disable-next-line\n jsonObject['hashId'] = proxy.hashId;\n // eslint-disable-next-line\n jsonObject['elementId'] = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.document = proxy.jsonDocumentId;\n }\n var url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.importFormFields;\n proxy.importFormFieldsRequestHandler = new AjaxHandler(this.pdfViewer);\n proxy.importFormFieldsRequestHandler.url = url;\n proxy.importFormFieldsRequestHandler.mode = true;\n proxy.importFormFieldsRequestHandler.responseType = 'text';\n proxy.importFormFieldsRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n proxy.importFormFieldsRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data && data !== 'null') {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n if (typeof data !== 'object') {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.importFormFields);\n proxy.pdfViewer.fireFormImportFailed(source, result.statusText);\n data = null;\n }\n }\n catch (error) {\n proxy.pdfViewer.fireFormImportFailed(source, proxy.pdfViewer.localeObj.getConstant('File not found'));\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_FileNotFound');\n promise.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('File not found'));\n }\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.importFormFields);\n data = null;\n }\n }\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.importFormFields, data);\n proxy.pdfViewer.fireFormImportSuccess(source);\n window.sessionStorage.removeItem(this.documentId + '_formfields');\n this.pdfViewer.formFieldsModule.removeExistingFormFields();\n window.sessionStorage.removeItem(this.documentId + '_formDesigner');\n proxy.saveFormfieldsData(data);\n for (var i = 0; i < proxy.renderedPagesList.length; i++) {\n this.pdfViewer.formFieldsModule.renderFormFields(i);\n }\n }\n else {\n proxy.pdfViewer.fireFormImportFailed(source, result.statusText);\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_FileNotFound');\n promise.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('File not found'));\n }\n }\n };\n // eslint-disable-next-line\n proxy.importFormFieldsRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireFormImportFailed(source, result.statusText);\n };\n // eslint-disable-next-line\n proxy.importFormFieldsRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireFormImportFailed(source, result.statusText);\n };\n };\n /**\n * @public\n * @returns {any} - Returns the Json data.\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createFormfieldsJsonData = function () {\n // eslint-disable-next-line\n var jsonObject = {};\n if (this.pdfViewer.formDesignerModule) {\n var fieldsData = this.pdfViewer.formDesignerModule.downloadFormDesigner();\n // eslint-disable-next-line\n jsonObject['formDesigner'] = fieldsData;\n }\n else if (this.pdfViewer.formFieldsModule) {\n var fieldsData = this.pdfViewer.formFieldsModule.downloadFormFieldsData();\n // eslint-disable-next-line\n jsonObject['fieldsData'] = fieldsData;\n }\n return jsonObject;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.constructJsonDownload = function () {\n // eslint-disable-next-line\n var jsonObject = { hashId: this.hashId };\n if (this.jsonDocumentId) {\n jsonObject.documentId = this.jsonDocumentId;\n }\n jsonObject.uniqueId = this.documentId;\n this.importPageList = [];\n if (this.pdfViewer.annotationModule) {\n this.saveImportedAnnotations();\n }\n if (this.isTextMarkupAnnotationModule()) {\n // eslint-disable-next-line max-len\n var textMarkupAnnotationCollection = this.pdfViewer.annotationModule.textMarkupAnnotationModule.saveTextMarkupAnnotations();\n // eslint-disable-next-line\n jsonObject['textMarkupAnnotations'] = textMarkupAnnotationCollection;\n }\n if (this.isShapeAnnotationModule()) {\n // eslint-disable-next-line max-len\n var shapeAnnotations = this.pdfViewer.annotationModule.shapeAnnotationModule.saveShapeAnnotations();\n // eslint-disable-next-line\n jsonObject['shapeAnnotations'] = shapeAnnotations;\n }\n if (this.isCalibrateAnnotationModule()) {\n // eslint-disable-next-line max-len\n var calibrateAnnotations = this.pdfViewer.annotationModule.measureAnnotationModule.saveMeasureShapeAnnotations();\n // eslint-disable-next-line\n jsonObject['measureShapeAnnotations'] = calibrateAnnotations;\n }\n if (this.isStampAnnotationModule()) {\n // eslint-disable-next-line max-len\n var stampAnnotationCollection = this.pdfViewer.annotationModule.stampAnnotationModule.saveStampAnnotations();\n // eslint-disable-next-line\n jsonObject['stampAnnotations'] = stampAnnotationCollection;\n }\n if (this.isCommentAnnotationModule()) {\n // eslint-disable-next-line max-len\n var stickyAnnotationCollection = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveStickyAnnotations();\n // eslint-disable-next-line\n jsonObject['stickyNotesAnnotation'] = stickyAnnotationCollection;\n }\n if (this.isImportAction) {\n var importList = JSON.stringify(this.importPageList);\n // eslint-disable-next-line\n jsonObject['importPageList'] = importList;\n }\n if (this.pdfViewer.formDesignerModule) {\n var fieldsData = this.pdfViewer.formDesignerModule.downloadFormDesigner();\n // eslint-disable-next-line\n jsonObject['formDesigner'] = fieldsData;\n }\n else if (this.pdfViewer.formFieldsModule) {\n var fieldsData = this.pdfViewer.formFieldsModule.downloadFormFieldsData();\n // eslint-disable-next-line\n jsonObject['fieldsData'] = fieldsData;\n }\n var signatureData = this.signatureModule.saveSignature();\n // eslint-disable-next-line\n jsonObject['signatureData'] = signatureData;\n if (this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line\n jsonObject['isSignatureEdited'] = this.pdfViewer.isSignatureEditable;\n }\n if (this.isFreeTextAnnotationModule()) {\n // eslint-disable-next-line max-len\n var freeTextAnnotationCollection = this.pdfViewer.annotationModule.freeTextAnnotationModule.saveFreeTextAnnotations();\n // eslint-disable-next-line\n jsonObject['freeTextAnnotation'] = freeTextAnnotationCollection;\n }\n if (this.isInkAnnotationModule()) {\n var inkSignatureData = this.pdfViewer.annotationModule.inkAnnotationModule.saveInkSignature();\n // eslint-disable-next-line\n jsonObject['inkSignatureData'] = inkSignatureData;\n }\n // eslint-disable-next-line\n jsonObject['action'] = 'Download';\n // eslint-disable-next-line\n jsonObject['elementId'] = this.pdfViewer.element.id;\n return jsonObject;\n };\n /**\n * @private\n * @param {string} annotationID - The annotationID.\n * @returns {any} - Returns collection of type.\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkFormFieldCollection = function (annotationID) {\n var isFormFieldAnnotation = false;\n // eslint-disable-next-line\n var formDesignerData = null;\n formDesignerData = this.getItemFromSessionStorage('_formDesigner');\n if (formDesignerData) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(formDesignerData);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].FormField.formFieldAnnotationType === 'RadioButton') {\n for (var j = 0; j < formFieldsData[i].FormField.radiobuttonItem.length; j++) {\n if (annotationID === formFieldsData[i].FormField.radiobuttonItem[j].id.split('_')[0]) {\n isFormFieldAnnotation = true;\n break;\n }\n }\n }\n else if (formFieldsData[i].Key.split('_')[0] === annotationID) {\n isFormFieldAnnotation = true;\n break;\n }\n }\n }\n return isFormFieldAnnotation;\n };\n /**\n * @private\n * @returns {boolean} - Returns whether freetext module is enabled.\n */\n PdfViewerBase.prototype.isFreeTextAnnotationModule = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.freeTextAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForDownload = function () {\n var proxy = null;\n proxy = this;\n proxy.pdfViewer.fireDownloadStart(proxy.downloadFileName);\n // eslint-disable-next-line\n var jsonObject = this.constructJsonDownload();\n this.dowonloadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.dowonloadRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.download;\n this.dowonloadRequestHandler.responseType = 'text';\n if (this.validateForm && this.pdfViewer.enableFormFieldsValidation) {\n this.pdfViewer.fireValidatedFailed(proxy.pdfViewer.serverActionSettings.download);\n this.validateForm = false;\n }\n else {\n this.dowonloadRequestHandler.send(jsonObject);\n }\n // eslint-disable-next-line\n this.dowonloadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object' && data.indexOf('data:application/pdf') === -1) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.download);\n data = null;\n }\n if (typeof data === 'object') {\n data = JSON.parse(data);\n }\n if (data) {\n if (proxy.pdfViewer.downloadFileName && (proxy.pdfViewer.downloadFileName !== proxy.downloadFileName)) {\n proxy.downloadFileName = proxy.pdfViewer.downloadFileName;\n }\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.download, data);\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/pdf');\n if (Browser.isIE || Browser.info.name === 'edge') {\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.downloadFileName);\n }\n else {\n proxy.downloadDocument(blobUrl);\n }\n proxy.pdfViewer.fireDownloadEnd(proxy.downloadFileName, data);\n }\n proxy.updateDocumentAnnotationCollections();\n }\n else {\n proxy.pdfViewer.fireDownloadEnd(proxy.downloadFileName, 'PDF Document saved in server side successfully');\n }\n };\n // eslint-disable-next-line\n this.dowonloadRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.download);\n };\n // eslint-disable-next-line\n this.dowonloadRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.download);\n };\n };\n /**\n * @param pageWidth\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.getTileCount = function (pageWidth) {\n if (pageWidth && typeof pageWidth === 'number') {\n var defaultWidth = 816;\n var tileCount = 1;\n if (this.getZoomFactor() > 2 && pageWidth <= 1200) {\n tileCount = 2;\n }\n else {\n tileCount = pageWidth / defaultWidth;\n }\n // eslint-disable-next-line radix\n var tileValue = parseInt(tileCount.toFixed());\n if (tileValue <= 0) {\n return 1;\n }\n else {\n if (this.pdfViewer.tileRenderingSettings.enableTileRendering) {\n return tileValue;\n }\n else {\n return 1;\n }\n }\n }\n else {\n return 1;\n }\n };\n PdfViewerBase.prototype.createRequestForRender = function (pageIndex) {\n var proxy = null;\n proxy = this;\n var canvas = proxy.getElement('_pageCanvas_' + pageIndex);\n var oldCanvas = proxy.getElement('_oldCanvas_' + pageIndex);\n if (this.pageSize && this.pageSize[pageIndex]) {\n var pageWidth_1 = this.pageSize[pageIndex].width;\n var pageHeight = this.pageSize[pageIndex].height;\n var tilecanvas = this.getElement('_pageCanvas_' + pageIndex);\n // eslint-disable-next-line\n var viewPortWidth_1 = 1200; // On diving the value greater than 1200 we will get the tile count as 2.\n // eslint-disable-next-line\n var viewPortHeight = proxy.pdfViewer.element.clientHeight > 0 ? proxy.pdfViewer.element.clientHeight : proxy.pdfViewer.element.style.height;\n // eslint-disable-next-line radix\n viewPortWidth_1 = parseInt(viewPortWidth_1);\n // eslint-disable-next-line radix\n viewPortHeight = parseInt(viewPortHeight) ? parseInt(viewPortHeight) : 500; //we have applied minimum-height as 500.\n var noTileX = void 0;\n var noTileY = void 0;\n var tileCount = this.getTileCount(pageWidth_1);\n if (canvas) {\n if (!isNaN(parseFloat(canvas.style.width)) || oldCanvas) {\n if (proxy.isInitialLoaded) {\n proxy.showPageLoadingIndicator(pageIndex, false);\n }\n }\n // eslint-disable-next-line\n var data = proxy.getStoredData(pageIndex);\n noTileX = noTileY = tileCount;\n var tileSettings = proxy.pdfViewer.tileRenderingSettings;\n if (tileSettings.enableTileRendering && tileSettings.x > 0 && tileSettings.y > 0) {\n if ((viewPortWidth_1 < pageWidth_1 || this.getZoomFactor() > 2)) {\n noTileX = tileSettings.x;\n noTileY = tileSettings.y;\n }\n }\n proxy.tileRequestCount = noTileX * noTileY;\n var zoomFactor = this.retrieveCurrentZoomFactor();\n var isPageRequestSent = void 0;\n if (tileCount === 1) {\n data = proxy.getStoredData(pageIndex);\n isPageRequestSent = proxy.pageRequestSent(pageIndex, 0, 0);\n }\n else {\n // eslint-disable-next-line\n var tileData = JSON.parse(proxy.getWindowSessionStorageTile(pageIndex, 0, 0, zoomFactor));\n if (tileData) {\n data = tileData;\n }\n }\n if (data && data.uniqueId === proxy.documentId) {\n canvas.style.backgroundColor = '#fff';\n if ((proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) || !this.pageSize[pageIndex]) {\n return;\n }\n var zoomFactor_2 = this.retrieveCurrentZoomFactor();\n if (zoomFactor_2 > 2 && pageWidth_1 <= 1200) {\n viewPortWidth_1 = 700;\n }\n else {\n viewPortWidth_1 = 1200;\n }\n if (!proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n viewPortWidth_1 = 1200;\n }\n if ((viewPortWidth_1 >= pageWidth_1) || !proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n proxy.renderPage(data, pageIndex);\n }\n else {\n proxy.isTileImageRendered = true;\n proxy.tileRenderCount = 0;\n proxy.tileRenderPage(data, pageIndex);\n for (var k = 0; k < noTileX; k++) {\n for (var l = 0; l < noTileY; l++) {\n if (k === 0 && l === 0) {\n continue;\n }\n data = JSON.parse(this.getWindowSessionStorageTile(pageIndex, k, l, zoomFactor_2));\n if (data) {\n proxy.tileRenderPage(data, pageIndex);\n }\n }\n }\n }\n data = null;\n }\n else if (data === null || !isPageRequestSent) {\n if (this.getPagesPinchZoomed()) {\n proxy.showPageLoadingIndicator(pageIndex, false);\n }\n else {\n proxy.showPageLoadingIndicator(pageIndex, true);\n }\n if (proxy.getPagesZoomed()) {\n if (proxy.isInitialLoaded) {\n proxy.showPageLoadingIndicator(pageIndex, false);\n }\n }\n if (proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) {\n return;\n }\n if (!proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n noTileX = 1;\n noTileY = 1;\n }\n proxy.tileRenderCount = 0;\n proxy.isTileImageRendered = true;\n for (var x = 0; x < noTileX; x++) {\n for (var y = 0; y < noTileY; y++) {\n var jsonObject = null;\n var zoomFactor_3 = this.retrieveCurrentZoomFactor();\n if (zoomFactor_3 > 2 && pageWidth_1 <= 1200) {\n viewPortWidth_1 = 700;\n }\n else {\n viewPortWidth_1 = 1200;\n }\n if (!proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n viewPortWidth_1 = 1200;\n }\n // eslint-disable-next-line max-len\n jsonObject = {\n xCoordinate: x, yCoordinate: y, viewPortWidth: viewPortWidth_1, viewPortHeight: viewPortHeight,\n pageNumber: pageIndex, hashId: proxy.hashId, tilecount: tileCount, tileXCount: noTileX, tileYCount: noTileY,\n // eslint-disable-next-line max-len\n zoomFactor: zoomFactor_3, action: 'RenderPdfPages', uniqueId: this.documentId, elementId: proxy.pdfViewer.element.id\n };\n if (this.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.jsonDocumentId;\n }\n proxy.pageRequestHandler = new AjaxHandler(this.pdfViewer);\n // eslint-disable-next-line max-len\n proxy.pageRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.renderPages;\n proxy.pageRequestHandler.responseType = 'json';\n proxy.pageRequestHandler.send(jsonObject);\n proxy.requestLists.push(proxy.documentId + '_' + pageIndex + '_' + x + '_' + y + '_' + zoomFactor_3);\n // eslint-disable-next-line\n proxy.pageRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line max-len\n if ((proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) || !proxy.pageSize[pageIndex]) {\n return;\n }\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.renderPages);\n data = null;\n }\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n }\n if (data.image && data.uniqueId === proxy.documentId) {\n var currentPageWidth = (data.pageWidth && data.pageWidth > 0) ? data.pageWidth : pageWidth_1;\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderPages, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n if ((viewPortWidth_1 >= currentPageWidth) || !proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n proxy.storeWinData(data, pageNumber);\n }\n else {\n proxy.storeWinData(data, pageNumber, data.tileX, data.tileY);\n }\n if ((viewPortWidth_1 >= currentPageWidth) || !proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n proxy.renderPage(data, pageNumber);\n }\n else {\n proxy.tileRenderPage(data, pageNumber);\n }\n }\n }\n };\n // eslint-disable-next-line\n this.pageRequestHandler.onFailure = function (result) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderPages);\n };\n // eslint-disable-next-line\n this.pageRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderPages);\n };\n }\n }\n }\n proxy.renderedPagesList.push(pageIndex);\n }\n }\n };\n PdfViewerBase.prototype.pageRequestSent = function (pageIndex, tileX, tileY) {\n var zoomFactor = this.retrieveCurrentZoomFactor();\n var currentString = this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor;\n if (this.requestLists && this.requestLists.indexOf(currentString) > -1) {\n return true;\n }\n return false;\n };\n /**\n * @private\n * @param {string} status - The status message.\n * @param {string} errorMessage - The error message.\n * @param {string} action - The action.\n * @returns {void}\n */\n PdfViewerBase.prototype.onControlError = function (status, errorMessage, action) {\n this.openNotificationPopup();\n this.pdfViewer.fireAjaxRequestFailed(status, errorMessage, action);\n };\n /**\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.getStoredData = function (pageIndex, isTextSearch) {\n var zoomFactor = this.retrieveCurrentZoomFactor();\n if (this.pdfViewer.restrictZoomRequest && !this.pdfViewer.tileRenderingSettings.enableTileRendering) {\n zoomFactor = 1;\n }\n // eslint-disable-next-line\n var storedData = this.getWindowSessionStorage(pageIndex, zoomFactor) ? this.getWindowSessionStorage(pageIndex, zoomFactor) : this.getPinchZoomPage(pageIndex);\n if (!storedData && isTextSearch) {\n // eslint-disable-next-line\n var storedTileData = this.getWindowSessionStorageTile(pageIndex, 0, 0, zoomFactor);\n if (storedTileData) {\n storedData = storedTileData;\n }\n }\n // eslint-disable-next-line\n var data = null;\n if (storedData) {\n // eslint-disable-next-line\n data = storedData;\n if (!this.isPinchZoomStorage) {\n data = JSON.parse(storedData);\n }\n this.isPinchZoomStorage = false;\n }\n return data;\n };\n /**\n * @private\n * @param {any} data - The data.\n * @param {number} pageIndex - The pageIndex.\n * @param {number} tileX - The tileX.\n * @param {number} tileY - The tileY.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.storeWinData = function (data, pageIndex, tileX, tileY) {\n // eslint-disable-next-line\n var blobObj = this.createBlobUrl(data['image'].split('base64,')[1], 'image/png');\n // eslint-disable-next-line\n var Url = URL || webkitURL;\n var blobUrl = Url.createObjectURL(blobObj);\n // eslint-disable-next-line\n var storeObject;\n if ((isNaN(tileX) && isNaN(tileY)) || (tileX === 0 && tileY === 0)) {\n storeObject = {\n // eslint-disable-next-line\n image: blobUrl, transformationMatrix: data['transformationMatrix'], hyperlinks: data['hyperlinks'], hyperlinkBounds: data['hyperlinkBounds'], linkAnnotation: data['linkAnnotation'], linkPage: data['linkPage'], annotationLocation: data['annotationLocation'],\n // eslint-disable-next-line\n textContent: data['textContent'], width: data['width'], textBounds: data['textBounds'], pageText: data['pageText'], rotation: data['rotation'], scaleFactor: data['scaleFactor'], uniqueId: data['uniqueId'], zoomFactor: data['zoomFactor'], tileX: tileX, tileY: tileY\n };\n if (this.pageSize[pageIndex]) {\n // eslint-disable-next-line\n this.pageSize[pageIndex].rotation = parseFloat(data['rotation']);\n }\n // eslint-disable-next-line\n this.textLayer.characterBound[pageIndex] = data['characterBounds'];\n }\n else {\n storeObject = {\n // eslint-disable-next-line\n image: blobUrl, transformationMatrix: data['transformationMatrix'], tileX: tileX, tileY: tileY, width: data['width'], zoomFactor: data['zoomFactor']\n };\n }\n // eslint-disable-next-line\n var viewPortWidth = 816;\n var pageWidth = 0;\n if (this.pageSize[pageIndex]) {\n pageWidth = this.pageSize[pageIndex].width;\n }\n this.manageSessionStorage(pageIndex, storeObject, tileX, tileY);\n };\n /**\n * @private\n * @param {XMLHttpRequest} request - The Xml request.\n * @returns {void}\n */\n PdfViewerBase.prototype.setCustomAjaxHeaders = function (request) {\n for (var i = 0; i < this.pdfViewer.ajaxRequestSettings.ajaxHeaders.length; i++) {\n // eslint-disable-next-line max-len\n request.setRequestHeader(this.pdfViewer.ajaxRequestSettings.ajaxHeaders[i].headerName, this.pdfViewer.ajaxRequestSettings.ajaxHeaders[i].headerValue);\n }\n };\n /**\n * @private\n * @param {number} pageIndex - Page index.\n * @returns {object}\n */\n PdfViewerBase.prototype.getPinchZoomPage = function (pageIndex) {\n // eslint-disable-next-line\n for (var key in this.pinchZoomStorage) {\n // eslint-disable-next-line\n if (this.pinchZoomStorage.hasOwnProperty(key)) {\n if (this.pinchZoomStorage[key].index === pageIndex) {\n this.isPinchZoomStorage = true;\n return this.pinchZoomStorage[key].pinchZoomStorage;\n }\n }\n }\n return null;\n };\n /**\n * @private\n * @param {number} pageIndex - current page index.\n * @param {number} zoomFactor - cuurent zoom factor\n * @returns {string}\n */\n PdfViewerBase.prototype.getWindowSessionStorage = function (pageIndex, zoomFactor) {\n return window.sessionStorage.getItem(this.documentId + '_' + pageIndex + '_' + zoomFactor);\n };\n /**\n * @private\n * @param {number} pageIndex - current page index.\n * @param {number} tileX - cuurent tile x\n * @param {number} tileY - cuurent tile y\n * @param {number} zoomFactor - cuurent zoom factor\n * @returns {string}\n */\n PdfViewerBase.prototype.getWindowSessionStorageTile = function (pageIndex, tileX, tileY, zoomFactor) {\n return window.sessionStorage.getItem(this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor);\n };\n /**\n * @private\n * @returns {number}\n */\n PdfViewerBase.prototype.retrieveCurrentZoomFactor = function () {\n var zoomFactor = this.getZoomFactor();\n if (this.pdfViewer.enableZoomOptimization) {\n if ((zoomFactor) <= 1) {\n zoomFactor = 1;\n }\n else if ((zoomFactor) > 1 && zoomFactor <= 2) {\n zoomFactor = 2;\n }\n else if ((zoomFactor) > 2 && zoomFactor <= 3) {\n zoomFactor = 3;\n }\n else if ((zoomFactor) > 3 && zoomFactor <= 4) {\n zoomFactor = 4;\n }\n return zoomFactor;\n }\n else {\n if (zoomFactor <= 0) {\n zoomFactor = 1;\n }\n return zoomFactor;\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.manageSessionStorage = function (pageIndex, storeObject, tileX, tileY) {\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n var maxSessionSize = 5000;\n if (sessionSize >= maxSessionSize) {\n if (!this.isStorageExceed) {\n // eslint-disable-next-line\n var annotationList = [];\n for (var i = 0; i < window.sessionStorage.length; i++) {\n if (window.sessionStorage.key(i) && window.sessionStorage.key(i).split('_')[3]) {\n if (window.sessionStorage.key(i).split('_')[3] === 'annotations') {\n // eslint-disable-next-line max-len\n this.annotationStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n annotationList.push(window.sessionStorage.key(i));\n }\n }\n }\n if (annotationList) {\n for (var i = 0; i < annotationList.length; i++) {\n window.sessionStorage.removeItem(annotationList[i]);\n }\n }\n }\n this.isStorageExceed = true;\n sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n if (sessionSize >= 5000) {\n var storageLength = window.sessionStorage.length;\n if (storageLength > 200) {\n storageLength = 200;\n }\n for (var i = 0; i < storageLength; i++) {\n if (window.sessionStorage.key(i) && window.sessionStorage.key(i).split('_')[3]) {\n if (window.sessionStorage.key(i).split('_')[3] !== 'annotations') {\n window.sessionStorage.removeItem(window.sessionStorage.key(i));\n }\n }\n }\n }\n }\n var zoomFactor = this.retrieveCurrentZoomFactor();\n if (isNaN(tileX) && isNaN(tileY)) {\n // eslint-disable-next-line max-len\n window.sessionStorage.setItem(this.documentId + '_' + pageIndex + '_' + zoomFactor, JSON.stringify(storeObject));\n this.sessionStorage.push(this.documentId + '_' + pageIndex + '_' + zoomFactor);\n }\n else {\n this.sessionStorage.push(this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor);\n // eslint-disable-next-line max-len\n window.sessionStorage.setItem(this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor, JSON.stringify(storeObject));\n }\n };\n PdfViewerBase.prototype.createBlobUrl = function (base64String, contentType) {\n var sliceSize = 512;\n var byteCharacters = atob(base64String);\n // eslint-disable-next-line\n var byteArrays = [];\n for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n var slice = byteCharacters.slice(offset, offset + sliceSize);\n // eslint-disable-next-line\n var byteNumbers = new Array(slice.length);\n for (var i = 0; i < slice.length; i++) {\n byteNumbers[i] = slice.charCodeAt(i);\n }\n // eslint-disable-next-line\n var byteArray = new Uint8Array(byteNumbers);\n byteArrays.push(byteArray);\n }\n // eslint-disable-next-line\n var blob = new Blob(byteArrays, { type: contentType });\n return blob;\n };\n PdfViewerBase.prototype.getRandomNumber = function () {\n // eslint-disable-next-line\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n // eslint-disable-next-line\n var random = Math.random() * 16 | 0, v = c == 'x' ? random : (random & 0x3 | 0x8);\n return random.toString(16);\n });\n };\n PdfViewerBase.prototype.createGUID = function () {\n // eslint-disable-next-line max-len\n return 'Sync_PdfViewer_' + this.getRandomNumber();\n };\n /**\n * @private\n * @param {MouseEvent} event - The mouse event.\n * @param {boolean} isNeedToSet - Is need to test.\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.isClickedOnScrollBar = function (event, isNeedToSet) {\n var isScrollBar = false;\n if (isNeedToSet) {\n this.setScrollDownValue(event.type, false);\n }\n // eslint-disable-next-line max-len\n if ((this.viewerContainer.clientWidth + this.viewerContainer.offsetLeft) < event.clientX && event.clientX < (this.viewerContainer.offsetWidth + this.viewerContainer.offsetLeft)) {\n isScrollBar = true;\n if (isNeedToSet) {\n this.setScrollDownValue(event.type, true);\n }\n }\n // eslint-disable-next-line max-len\n if ((this.viewerContainer.clientHeight + this.viewerContainer.offsetTop) < event.clientY && event.clientY < (this.viewerContainer.offsetHeight + this.viewerContainer.offsetTop)) {\n isScrollBar = true;\n if (isNeedToSet) {\n this.setScrollDownValue(event.type, true);\n }\n }\n return isScrollBar;\n };\n PdfViewerBase.prototype.setScrollDownValue = function (eventType, boolValue) {\n if (eventType === 'mousedown') {\n this.isScrollbarMouseDown = boolValue;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.disableTextSelectionMode = function () {\n this.isTextSelectionDisabled = true;\n this.viewerContainer.classList.remove('e-enable-text-selection');\n if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n this.viewerContainer.classList.add('e-disable-text-selection');\n this.viewerContainer.addEventListener('selectstart', function () {\n return false;\n });\n };\n /**\n * @private\n * @param {string} idString - The Id string.\n * @returns {HTMLElement} - The html element.\n */\n PdfViewerBase.prototype.getElement = function (idString) {\n return document.getElementById(this.pdfViewer.element.id + idString);\n };\n /**\n * @private\n * @param {number} pageIndex - The pageIndex\n * @returns {number} - Returns number\n */\n PdfViewerBase.prototype.getPageWidth = function (pageIndex) {\n if (this.pageSize[pageIndex]) {\n return this.pageSize[pageIndex].width * this.getZoomFactor();\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @param {number} pageIndex - The pageIndex\n * @returns {number} - Returns number\n */\n PdfViewerBase.prototype.getPageHeight = function (pageIndex) {\n if (this.pageSize[pageIndex]) {\n return this.pageSize[pageIndex].height * this.getZoomFactor();\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @param {number} pageIndex - The pageIndex.\n * @returns {number} - Returns number\n */\n PdfViewerBase.prototype.getPageTop = function (pageIndex) {\n if (this.pageSize[pageIndex]) {\n return this.pageSize[pageIndex].top * this.getZoomFactor();\n }\n else {\n return 0;\n }\n };\n PdfViewerBase.prototype.isAnnotationToolbarHidden = function () {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule) {\n return this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden;\n }\n else {\n return true;\n }\n };\n PdfViewerBase.prototype.isFormDesignerToolbarHidded = function () {\n var formDesignerToolbar = this.pdfViewer.toolbarModule.formDesignerToolbarModule;\n if (formDesignerToolbar) {\n return formDesignerToolbar.isToolbarHidden;\n }\n else {\n return true;\n }\n };\n /**\n * @private\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.getTextMarkupAnnotationMode = function () {\n if (this.isTextMarkupAnnotationModule()) {\n return this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode;\n }\n else {\n return false;\n }\n };\n PdfViewerBase.prototype.isNewFreeTextAnnotation = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule) {\n if (!this.pdfViewer.annotationModule.freeTextAnnotationModule.isNewFreeTextAnnot) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return true;\n }\n };\n PdfViewerBase.prototype.getCurrentTextMarkupAnnotation = function () {\n if (this.isTextMarkupAnnotationModule()) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {number} - Returns page number.\n */\n PdfViewerBase.prototype.getSelectTextMarkupCurrentPage = function () {\n if (this.isTextMarkupAnnotationModule()) {\n return this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage;\n }\n else {\n return null;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.getAnnotationToolStatus = function () {\n if (this.pdfViewer.toolbarModule) {\n return this.pdfViewer.toolbarModule.annotationToolbarModule.isAnnotationButtonsEnabled();\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.getPopupNoteVisibleStatus = function () {\n if (this.pdfViewer.annotationModule) {\n return this.pdfViewer.annotationModule.isPopupNoteVisible;\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {TextMarkupAnnotation} - TextMarkupAnnotation.\n */\n PdfViewerBase.prototype.isTextMarkupAnnotationModule = function () {\n if (this.pdfViewer.annotationModule) {\n return this.pdfViewer.annotationModule.textMarkupAnnotationModule;\n }\n else {\n return null;\n }\n };\n /**\n * @private\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.isShapeAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.shapeAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isFormDesignerModule = function () {\n if (this.pdfViewer.formDesignerModule) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isCalibrateAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.measureAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isStampAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stampAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isInkAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.inkAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isCommentAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stickyNotesAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isShapeBasedAnnotationsEnabled = function () {\n // eslint-disable-next-line max-len\n if (this.isShapeAnnotationModule() || this.isCalibrateAnnotationModule() || this.isStampAnnotationModule() || this.isCommentAnnotationModule() || this.isFormDesignerModule()) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @param {MouseEvent | PointerEvent | TouchEvent} e - Returns event.\n * @returns {PointModel} - Returns points.\n */\n PdfViewerBase.prototype.getMousePosition = function (e) {\n var touchArg;\n var offsetX;\n var offsetY;\n if (e.type.indexOf('touch') !== -1) {\n touchArg = e;\n if (this.pdfViewer.annotation) {\n var pageDiv = this.getElement('_pageDiv_' + this.pdfViewer.annotation.getEventPageNumber(e));\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n offsetX = touchArg.changedTouches[0].clientX - pageCurrentRect.left;\n offsetY = touchArg.changedTouches[0].clientY - pageCurrentRect.top;\n }\n }\n }\n else {\n if (e.target.classList.contains('e-pv-hyperlink')) {\n offsetX = e.offsetX + e.target.offsetLeft;\n offsetY = e.offsetY + e.target.offsetTop;\n }\n else if (e.target.classList.contains('e-pv-text') && e.target.parentElement) {\n var targetParentRect = e.target.parentElement.getBoundingClientRect();\n offsetX = e.clientX - targetParentRect.left;\n offsetY = e.clientY - targetParentRect.top;\n // eslint-disable-next-line\n }\n else if (e.target && (e && e.path) && e.target.parentElement && e.target.parentElement.classList.contains('foreign-object')) {\n // eslint-disable-next-line\n var targetParentRect = e.path[4].getBoundingClientRect();\n offsetX = e.clientX - targetParentRect.left;\n offsetY = e.clientY - targetParentRect.top;\n // eslint-disable-next-line\n }\n else if (e.target && (e && e.path) && e.target.parentElement && e.target.parentElement.parentElement.classList.contains('foreign-object')) {\n // eslint-disable-next-line\n var targetParentRect = e.path[4].getBoundingClientRect();\n offsetX = e.clientX - targetParentRect.left;\n offsetY = e.clientY - targetParentRect.top;\n }\n else if (e.target && e.target.parentElement && e.target.parentElement.classList.contains('foreign-object')) {\n // eslint-disable-next-line\n var targetParentRect = e.target.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n offsetX = e.clientX - targetParentRect.left;\n offsetY = e.clientY - targetParentRect.top;\n // eslint-disable-next-line\n }\n else {\n offsetX = e.offsetX;\n offsetY = e.offsetY;\n }\n }\n return { x: offsetX, y: offsetY };\n };\n PdfViewerBase.prototype.getMouseEventArgs = function (position, args, evt, source) {\n args.position = position;\n var obj;\n var objects;\n if (!source) {\n if (this.action === 'Drag' || this.action === 'ConnectorSourceEnd' || this.action === 'SegmentEnd' ||\n this.action === 'OrthoThumb' || this.action === 'BezierSourceThumb' || this.action === 'BezierTargetThumb' ||\n this.action === 'ConnectorTargetEnd' || this.action.indexOf('Rotate') !== -1 || this.action.indexOf('Resize') !== -1) {\n obj = this.pdfViewer.selectedItems;\n if (this.action === 'Drag' && obj && this.pdfViewer.selectedItems.annotations.length > 0) {\n obj = findActiveElement(evt, this, this.pdfViewer);\n }\n else if (this.action === 'Drag' && obj && this.pdfViewer.selectedItems.formFields.length > 0) {\n obj = findActiveElement(evt, this, this.pdfViewer);\n }\n }\n else {\n obj = findActiveElement(evt, this, this.pdfViewer);\n }\n }\n else {\n // objects = this.diagram.findObjectsUnderMouse(this.currentPosition, source);\n obj = findActiveElement(evt, this, this.pdfViewer);\n }\n var wrapper;\n if (obj) {\n wrapper = obj.wrapper;\n }\n if (!source) {\n args.source = obj;\n args.sourceWrapper = wrapper;\n }\n else {\n args.target = obj;\n args.targetWrapper = wrapper;\n }\n args.actualObject = this.eventArgs.actualObject;\n //args.startTouches = this.touchStartList;\n //args.moveTouches = this.touchMoveList;\n return args;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - The object.\n * @param {PointModel} position - The position.\n * @returns {Actions | string} - Returns the string.\n */\n PdfViewerBase.prototype.findToolToActivate = function (obj, position) {\n position = { x: position.x / this.getZoomFactor(), y: position.y / this.getZoomFactor() };\n var element = this.pdfViewer.selectedItems.wrapper;\n if (element && obj) {\n var selectorBnds = element.bounds; //let handle: SelectorModel = diagram.selectedItems;\n var paddedBounds = new Rect(selectorBnds.x, selectorBnds.y, selectorBnds.width, selectorBnds.height);\n if (obj.shapeAnnotationType === 'Line' || obj.shapeAnnotationType === 'LineWidthArrowHead' ||\n obj.shapeAnnotationType === 'Distance' || obj.shapeAnnotationType === 'Polygon') {\n var conn = this.pdfViewer.selectedItems.annotations[0];\n if (conn) {\n for (var i = 0; i < conn.vertexPoints.length; i++) {\n if (contains(position, conn.vertexPoints[i], 10) && conn.leaderHeight !== 0) {\n return 'ConnectorSegmentPoint_' + i;\n }\n }\n }\n }\n if (obj.shapeAnnotationType === 'Distance') {\n var leaderCount = 0;\n var newPoint1 = void 0;\n if (obj && obj.wrapper) {\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var elementAngle = Point.findAngle(obj.sourcePoint, obj.targetPoint);\n // eslint-disable-next-line\n var segment = obj.wrapper.children[i];\n if (segment.id.indexOf('leader') > -1) {\n var centerPoint = obj.wrapper.children[0].bounds.center;\n if (leaderCount === 0) {\n newPoint1 = { x: obj.sourcePoint.x, y: obj.sourcePoint.y - obj.leaderHeight };\n centerPoint = obj.sourcePoint;\n }\n else {\n newPoint1 = { x: obj.targetPoint.x, y: obj.targetPoint.y - obj.leaderHeight };\n centerPoint = obj.targetPoint;\n }\n var matrix_1 = identityMatrix();\n rotateMatrix(matrix_1, elementAngle, centerPoint.x, centerPoint.y);\n var rotatedPoint = transformPointByMatrix(matrix_1, { x: newPoint1.x, y: newPoint1.y });\n if (contains(position, rotatedPoint, 10)) {\n return 'Leader' + leaderCount;\n }\n leaderCount++;\n }\n }\n }\n }\n var ten = 10 / this.getZoomFactor();\n var matrix = identityMatrix();\n rotateMatrix(matrix, obj.rotateAngle + element.parentTransform, element.offsetX, element.offsetY);\n //check for resizing tool\n var x = element.offsetX - element.pivot.x * element.actualSize.width;\n var y = element.offsetY - element.pivot.y * element.actualSize.height;\n var rotateThumb = {\n x: x + ((element.pivot.x === 0.5 ? element.pivot.x * 2 : element.pivot.x) * element.actualSize.width / 2),\n y: y - 30 / this.getZoomFactor()\n };\n rotateThumb = transformPointByMatrix(matrix, rotateThumb);\n if (obj.shapeAnnotationType === 'Stamp' && contains(position, rotateThumb, ten)) {\n return 'Rotate';\n }\n paddedBounds = this.inflate(ten, paddedBounds);\n if (paddedBounds.containsPoint(position, 0)) {\n var action = this.checkResizeHandles(this.pdfViewer, element, position, matrix, x, y);\n if (action) {\n return action;\n }\n }\n if (this.pdfViewer.selectedItems.annotations.indexOf(obj) > -1) {\n return 'Drag';\n }\n else if (this.pdfViewer.selectedItems.formFields.indexOf(obj) > -1 && this.pdfViewer.designerMode) {\n return 'Drag';\n }\n return 'Select';\n }\n return this.pdfViewer.tool || 'Select';\n };\n PdfViewerBase.prototype.inflate = function (padding, bound) {\n bound.x -= padding;\n bound.y -= padding;\n bound.width += padding * 2;\n bound.height += padding * 2;\n return bound;\n };\n PdfViewerBase.prototype.checkResizeHandles = function (diagram, element, position, matrix, x, y) {\n var action;\n if (!action) {\n action = this.checkForResizeHandles(diagram, element, position, matrix, x, y);\n }\n if (action) {\n return action;\n }\n return null;\n };\n PdfViewerBase.prototype.checkForResizeHandles = function (diagram, element, position, matrix, x, y) {\n var forty = 40 / 1;\n var ten = 10 / 1;\n if (element.actualSize.width < 40 || element.actualSize.height < 40) {\n ten = 5 * this.getZoomFactor() / 1;\n }\n var selectedItems = diagram.selectedItems;\n var isStamp = false;\n var isSticky = false;\n var isNodeShape = false;\n var isInk = false;\n var resizerLocation = this.pdfViewer.annotationSelectorSettings.resizerLocation;\n if (resizerLocation < 1 || resizerLocation > 3) {\n resizerLocation = 3;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Stamp'\n || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Image' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature'\n || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) {\n isStamp = true;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'StickyNotes') {\n isSticky = true;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink') {\n isInk = true;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ellipse' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Radius' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Rectangle')) {\n isNodeShape = true;\n }\n if (!isSticky) {\n // eslint-disable-next-line max-len\n if ((isInk || isStamp || (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) || ((element.actualSize.width >= forty && element.actualSize.height >= forty) && isNodeShape && (resizerLocation === 1 || resizerLocation === 3)))) {\n if (contains(position, transformPointByMatrix(matrix, { x: x + element.actualSize.width, y: y + element.actualSize.height }), ten)) {\n return 'ResizeSouthEast';\n }\n if (contains(position, transformPointByMatrix(matrix, { x: x, y: y + element.actualSize.height }), ten)) {\n return 'ResizeSouthWest';\n }\n if (contains(position, transformPointByMatrix(matrix, { x: x + element.actualSize.width, y: y }), ten)) {\n return 'ResizeNorthEast';\n }\n if (contains(position, transformPointByMatrix(matrix, { x: x, y: y }), ten)) {\n return 'ResizeNorthWest';\n }\n }\n // eslint-disable-next-line max-len\n if (isInk || !isNodeShape || (isNodeShape && (resizerLocation === 2 || resizerLocation === 3 || (!(element.actualSize.width >= forty && element.actualSize.height >= forty) && resizerLocation === 1)))) {\n if (contains(\n // eslint-disable-next-line max-len\n position, transformPointByMatrix(matrix, { x: x + element.actualSize.width, y: y + element.actualSize.height / 2 }), ten) && !isStamp) {\n return 'ResizeEast';\n }\n // eslint-disable-next-line max-len\n if (contains(position, transformPointByMatrix(matrix, { x: x, y: y + element.actualSize.height / 2 }), ten) && !isStamp) {\n return 'ResizeWest';\n }\n if (contains(\n // eslint-disable-next-line max-len\n position, transformPointByMatrix(matrix, { x: x + element.actualSize.width / 2, y: y + element.actualSize.height }), ten) && !isStamp) {\n return 'ResizeSouth';\n }\n // eslint-disable-next-line max-len\n if (contains(position, transformPointByMatrix(matrix, { x: x + element.actualSize.width / 2, y: y }), ten) && !isStamp) {\n return 'ResizeNorth';\n }\n }\n }\n return null;\n };\n /**\n * @private\n * @param {string} fieldID - The fieldID\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.checkSignatureFormField = function (fieldID) {\n var isFormFieldSign = false;\n // eslint-disable-next-line\n var formField = this.pdfViewer.nameTable[fieldID];\n if (formField) {\n if (formField.formFieldAnnotationType === 'SignatureField' || formField.formFieldAnnotationType === 'InitialField') {\n isFormFieldSign = true;\n }\n }\n return isFormFieldSign;\n };\n /**\n * @private\n * @param {MouseEvent | TouchEvent} evt - The event.\n * @returns {void}\n */\n PdfViewerBase.prototype.diagramMouseMove = function (evt) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n this.currentPosition = this.getMousePosition(evt);\n this.pdfViewer.firePageMouseover(this.currentPosition.x, this.currentPosition.y);\n if (this.pdfViewer.annotation) {\n this.activeElements.activePageID = this.pdfViewer.annotation.getEventPageNumber(evt);\n }\n else if (this.pdfViewer.formDesignerModule) {\n this.activeElements.activePageID = this.pdfViewer.formDesignerModule.getEventPageNumber(evt);\n }\n var obj = findActiveElement(evt, this, this.pdfViewer);\n if ((this.tool instanceof NodeDrawingTool) || (this.tool instanceof LineTool)) {\n obj = this.pdfViewer.drawingObject;\n }\n var target;\n var isFormFieldSign = this.pdfViewer.selectedItems.annotations.length > 0 ? this.checkSignatureFormField(this.pdfViewer.selectedItems.annotations[0].id.split('_')[0]) : false;\n if ((Point.equals(this.currentPosition, this.prevPosition) === false || this.inAction)) {\n if (this.isMouseDown === false) {\n this.eventArgs = {};\n var sourceDrawingElement = null;\n if (obj) {\n this.tool = this.getTool(this.action);\n if (obj.wrapper) {\n sourceDrawingElement = obj.wrapper.children[0];\n if (sourceDrawingElement) {\n target = obj;\n }\n }\n }\n var eventTarget = evt.target;\n this.action = this.findToolToActivate(obj, this.currentPosition);\n // eslint-disable-next-line\n if (obj && obj.annotationSettings && obj.annotationSettings.isLock) {\n if (this.action === 'Select') {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Select', obj)) {\n this.action = '';\n }\n }\n if (this.action === 'Drag') {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Move', obj)) {\n this.action = 'Select';\n }\n }\n // eslint-disable-next-line max-len\n if (this.action === 'ResizeSouthEast' || this.action === 'ResizeNorthEast' || this.action === 'ResizeNorthWest' || this.action === 'ResizeSouthWest' ||\n // eslint-disable-next-line max-len\n this.action === 'ResizeNorth' || this.action === 'ResizeWest' || this.action === 'ResizeEast' || this.action === 'ResizeSouth' || this.action.includes('ConnectorSegmentPoint') || this.action.includes('Leader')) {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Resize', obj)) {\n this.action = 'Select';\n }\n }\n }\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.designerMode && ((!isNullOrUndefined(target) && (!isNullOrUndefined(target.formFieldAnnotationType))) || isFormFieldSign)) {\n if (this.action === 'ResizeSouthEast' || this.action === 'ResizeNorthEast' || this.action === 'ResizeNorthWest' || this.action === 'ResizeSouthWest' ||\n // eslint-disable-next-line max-len\n this.action === 'ResizeNorth' || this.action === 'Drag' || this.action === 'ResizeWest' || this.action === 'ResizeEast' || this.action === 'ResizeSouth' || this.action.includes('ConnectorSegmentPoint') || this.action.includes('Leader')) {\n this.action = '';\n }\n }\n this.tool = this.getTool(this.action);\n this.setCursor(eventTarget, evt);\n if (this.pdfViewer.linkAnnotationModule) {\n this.pdfViewer.linkAnnotationModule.disableHyperlinkNavigationUnderObjects(eventTarget, evt, this);\n }\n }\n else {\n if (!this.tool && this.action && this.action === 'Rotate') {\n this.tool = this.getTool(this.action);\n if (evt.target) {\n this.setCursor(evt.target, evt);\n }\n }\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.designerMode && ((!isNullOrUndefined(target) && (!isNullOrUndefined(target.formFieldAnnotationType))) || isFormFieldSign)) {\n if (this.action === 'ResizeSouthEast' || this.action === 'ResizeNorthEast' || this.action === 'ResizeNorthWest' || this.action === 'ResizeSouthWest' ||\n // eslint-disable-next-line max-len\n this.action === 'ResizeNorth' || this.action === 'Drag' || this.action === 'ResizeWest' || this.action === 'ResizeEast' || this.action === 'ResizeSouth' || this.action.includes('ConnectorSegmentPoint') || this.action.includes('Leader')) {\n this.action = '';\n this.tool = null;\n }\n }\n if (this.eventArgs && this.eventArgs.source) {\n var eventTarget = evt.target;\n this.updateDefaultCursor(this.eventArgs.source, eventTarget, evt);\n }\n else {\n this.setCursor(evt.target, evt);\n }\n this.diagramMouseActionHelper(evt);\n if (this.tool) {\n var currentObject = obj;\n if (currentObject && currentObject.shapeAnnotationType === 'FreeText') {\n if (this.pdfViewer.freeTextSettings.allowEditTextOnly && this.action !== \"Ink\" &&\n (this.eventArgs.source && this.eventArgs.source.shapeAnnotationType === \"FreeText\")) {\n var eventTarget = event.target;\n eventTarget.style.cursor = 'default';\n this.tool = null;\n }\n }\n if (this.tool != null) {\n this.tool.mouseMove(this.eventArgs);\n }\n }\n }\n if (this.pdfViewer.drawingObject && this.pdfViewer.drawingObject.formFieldAnnotationType && this.action !== 'Drag') {\n if (!(this.tool instanceof ResizeTool)) {\n this.tool = this.getTool(this.action);\n if (this.tool instanceof NodeDrawingTool) {\n var obj_1 = this.pdfViewer.drawingObject;\n // eslint-disable-next-line\n var bounds = this.pdfViewer.formDesignerModule.updateFormFieldInitialSize(obj_1, obj_1.formFieldAnnotationType);\n var pageWidth = this.pageContainer.firstElementChild.clientWidth - bounds.width;\n var pageHeight = this.pageContainer.firstElementChild.clientHeight - bounds.height;\n if (this.pdfViewer.formDesignerModule && obj_1.formFieldAnnotationType\n && this.currentPosition.x < pageWidth && this.currentPosition.y < pageHeight) {\n // eslint-disable-next-line\n var formFieldElement = document.getElementById('FormField_helper_html_element');\n if (!formFieldElement) {\n // eslint-disable-next-line max-len\n this.pdfViewer.formDesignerModule.drawHelper(obj_1.formFieldAnnotationType, obj_1, evt);\n }\n else if (formFieldElement) {\n // eslint-disable-next-line\n var point = this.getMousePosition(event);\n if (obj_1.formFieldAnnotationType === 'Checkbox') {\n formFieldElement.firstElementChild.firstElementChild.lastElementChild.style.visibility = 'visible';\n }\n else if (obj_1.formFieldAnnotationType === 'SignatureField' || obj_1.formFieldAnnotationType === 'InitialField') {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'visible';\n formFieldElement.firstElementChild.lastElementChild.style.visibility = 'visible';\n }\n else {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'visible';\n }\n formFieldElement.setAttribute('style', 'height:' + bounds.height + 'px; width:' + bounds.width + 'px;left:' + point.x + 'px; top:' + point.y + 'px;' +\n 'position:absolute;opacity: 0.5;');\n }\n }\n else if (this.currentPosition.x > pageWidth || this.currentPosition.y > pageHeight) {\n // eslint-disable-next-line\n var formFieldElement = document.getElementById('FormField_helper_html_element');\n if (!formFieldElement) {\n // eslint-disable-next-line max-len\n this.pdfViewer.formDesignerModule.drawHelper(obj_1.formFieldAnnotationType, obj_1, evt);\n }\n else if (formFieldElement) {\n // eslint-disable-next-line\n var point = this.getMousePosition(event);\n formFieldElement.setAttribute('style', 'height:' + bounds.height + 'px; width:' + bounds.width + 'px;left:' + point.x + 'px; top:' + point.y + 'px;' +\n 'position:absolute;opacity: 0.5;');\n if (obj_1.formFieldAnnotationType === 'Checkbox') {\n formFieldElement.firstElementChild.firstElementChild.lastElementChild.style.visibility = 'hidden';\n }\n else if (obj_1.formFieldAnnotationType === 'SignatureField' || obj_1.formFieldAnnotationType === 'InitialField') {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'hidden';\n formFieldElement.firstElementChild.lastElementChild.style.visibility = 'hidden';\n }\n else {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'hidden';\n }\n }\n }\n }\n }\n }\n this.prevPosition = this.currentPosition;\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateDefaultCursor = function (source, target, event) {\n // eslint-disable-next-line max-len\n if (source && source.pageIndex !== undefined && source.pageIndex !== this.activeElements.activePageID && target) {\n // eslint-disable-next-line\n this.isPanMode ? target.style.cursor = 'grab' : target.style.cursor = 'default';\n }\n else {\n this.setCursor(target, event);\n }\n };\n /**\n * @private\n * @param {MouseEvent | TouchEvent} evt - The event.\n * @returns {void}\n */\n PdfViewerBase.prototype.diagramMouseLeave = function (evt) {\n this.currentPosition = this.getMousePosition(evt);\n if (this.pdfViewer.annotation) {\n this.activeElements.activePageID = this.pdfViewer.annotation.getEventPageNumber(evt);\n }\n var shapeElement = findActiveElement(evt, this, this.pdfViewer);\n var mouseMoveforce = false;\n var target;\n if (Point.equals(this.currentPosition, this.prevPosition) === false || this.inAction) {\n if (this.isMouseDown === false || mouseMoveforce) {\n this.eventArgs = {};\n var sourceElement = null;\n if (shapeElement) {\n sourceElement = shapeElement.wrapper.children[0];\n if (sourceElement) {\n target = shapeElement;\n }\n mouseMoveforce = false;\n }\n }\n else {\n this.diagramMouseActionHelper(evt);\n // eslint-disable-next-line max-len\n if (this.tool && this.action !== 'Drag' && this.pdfViewer.tool !== 'Stamp' && this.tool.currentElement && this.tool.currentElement.shapeAnnotationType !== 'Stamp') {\n this.tool.mouseLeave(this.eventArgs);\n this.tool = null;\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotationModule.renderAnnotations(this.previousPage, null, null, null);\n }\n }\n }\n this.prevPosition = this.currentPosition;\n }\n };\n PdfViewerBase.prototype.diagramMouseActionHelper = function (evt) {\n this.eventArgs.position = this.currentPosition;\n if (this.action === 'Drag' &&\n this.eventArgs.source instanceof Selector) {\n this.getMouseEventArgs(this.currentPosition, this.eventArgs, evt);\n }\n this.getMouseEventArgs(this.currentPosition, this.eventArgs, evt, this.eventArgs.source);\n this.inAction = true;\n this.initialEventArgs = null;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.setCursor = function (eventTarget, event) {\n // eslint-disable-next-line max-len\n var freeTextAnnotModule = this.pdfViewer.annotationModule ? this.pdfViewer.annotationModule.freeTextAnnotationModule : null;\n var cursorType;\n if (this.tool instanceof ResizeTool) {\n if (this.tool.corner === 'ResizeNorthWest') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'nw-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeNorthEast') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'ne-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeSouthWest') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'sw-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeSouthEast') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'se-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeNorth') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'n-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeWest') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'w-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeEast') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'e-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeSouth') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 's-resize' : cursorType;\n }\n }\n else if (this.isCommentIconAdded && this.isAddComment) {\n eventTarget.style.cursor = 'crosshair';\n }\n else if (this.pdfViewer.enableHandwrittenSignature && this.isNewSignatureAdded && this.tool instanceof StampTool) {\n eventTarget.style.cursor = 'crosshair';\n }\n else if (this.tool instanceof MoveTool) {\n eventTarget.style.cursor = 'move';\n // eslint-disable-next-line max-len\n }\n else if (this.tool instanceof NodeDrawingTool || this.tool instanceof LineTool || this.tool instanceof PolygonDrawingTool || (freeTextAnnotModule && freeTextAnnotModule.isNewAddedAnnot) || this.tool instanceof InkDrawingTool) {\n eventTarget.style.cursor = 'crosshair';\n }\n else if (this.tool instanceof ConnectTool) {\n if (this.tool.endPoint && this.tool.endPoint.indexOf('Leader0')) {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'nw-resize' : cursorType;\n }\n else if (this.tool.endPoint && this.tool.endPoint.indexOf('Leader1')) {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'ne-resize' : cursorType;\n }\n else if (this.tool.endPoint && this.tool.endPoint.indexOf('ConnectorSegmentPoint')) {\n eventTarget.style.cursor = 'sw-resize';\n }\n }\n else {\n if (eventTarget.classList.contains('e-pv-text')) {\n eventTarget.style.cursor = 'text';\n }\n else if (eventTarget.classList.contains('e-pv-hyperlink')) {\n eventTarget.style.cursor = 'pointer';\n }\n else if (this.isPanMode) {\n if (this.isViewerMouseDown && event.type === 'mousemove') {\n eventTarget.style.cursor = 'grabbing';\n }\n else {\n var obj = findActiveElement(event, this, this.pdfViewer);\n if (obj && event.type === 'mousemove') {\n eventTarget.style.cursor = 'pointer';\n // eslint-disable-next-line max-len\n var currentObject = obj;\n // eslint-disable-next-line\n var currentPosition = this.getMousePosition(event);\n // eslint-disable-next-line\n var relativePosition = this.relativePosition(event);\n // eslint-disable-next-line\n var viewerPositions = { left: relativePosition.x, top: relativePosition.y };\n // eslint-disable-next-line\n var mousePositions = { left: currentPosition.x, top: currentPosition.y };\n // eslint-disable-next-line\n var annotationSettings = { opacity: currentObject.opacity, fillColor: currentObject.fillColor, strokeColor: currentObject.strokeColor, thicknes: currentObject.thickness, author: currentObject.author, subject: currentObject.subject, modifiedDate: currentObject.modifiedDate };\n // eslint-disable-next-line max-len\n this.isMousedOver = true;\n var isFormField = this.checkSignatureFormField(currentObject.id.split('_')[0]);\n if (currentObject.formFieldAnnotationType) {\n this.isFormFieldMousedOver = true;\n var field = {\n // eslint-disable-next-line\n value: currentObject.value, fontFamily: currentObject.fontFamily, fontSize: currentObject.fontSize, fontStyle: currentObject.fontStyle,\n // eslint-disable-next-line max-len\n color: currentObject.color, backgroundColor: currentObject.backgroundColor, borderColor: currentObject.borderColor,\n // eslint-disable-next-line\n thickness: currentObject.thickness, alignment: currentObject.alignment, isReadonly: currentObject.isReadonly, visibility: currentObject.visibility,\n // eslint-disable-next-line\n maxLength: currentObject.maxLength, isRequired: currentObject.isRequired, isPrint: currentObject.isPrint, rotation: currentObject.rotateAngle, tooltip: currentObject.tooltip, options: currentObject.options,\n // eslint-disable-next-line\n isChecked: currentObject.isChecked, isSelected: currentObject.isSelected\n };\n this.pdfViewer.fireFormFieldMouseoverEvent('formFieldMouseover', field, currentObject.pageIndex, relativePosition.x, relativePosition.y, currentPosition.x, currentPosition.y);\n }\n else {\n if (!isFormField)\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationMouseover(currentObject.annotName, currentObject.pageIndex, currentObject.shapeAnnotationType, currentObject.bounds, annotationSettings, mousePositions, viewerPositions);\n }\n }\n else {\n eventTarget.style.cursor = 'grab';\n if (this.isMousedOver) {\n var pageIndex = void 0;\n if (this.pdfViewer.formDesignerModule) {\n pageIndex = this.pdfViewer.formDesignerModule.getEventPageNumber(event);\n }\n else {\n pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n }\n if (this.isFormFieldMousedOver) {\n this.pdfViewer.fireFormFieldMouseLeaveEvent('formFieldMouseLeave', null, pageIndex);\n }\n else {\n this.pdfViewer.fireAnnotationMouseLeave(pageIndex);\n }\n this.isMousedOver = false;\n this.isFormFieldMousedOver = false;\n }\n }\n }\n }\n else {\n var obj = findActiveElement(event, this, this.pdfViewer);\n if (obj && this.pdfViewer.selectedItems.annotations.length === 0 && event.type === 'mousemove') {\n var currentObject = obj;\n // eslint-disable-next-line\n var annotationObject = this.pdfViewer.nameTable[currentObject.id];\n // eslint-disable-next-line max-len\n if (annotationObject.shapeAnnotationType !== 'HandWrittenSignature' && annotationObject.shapeAnnotationType !== 'Ink' && annotationObject.annotationSettings && annotationObject.annotationSettings.isLock !== undefined) {\n annotationObject.annotationSettings.isLock = JSON.parse(annotationObject.annotationSettings.isLock);\n }\n if (annotationObject.annotationSettings && annotationObject.annotationSettings.isLock) {\n eventTarget.style.cursor = 'default';\n }\n else {\n eventTarget.style.cursor = 'pointer';\n }\n // eslint-disable-next-line\n var currentPosition = this.getMousePosition(event);\n // eslint-disable-next-line\n var relativePosition = this.relativePosition(event);\n // eslint-disable-next-line\n var viewerPositions = { left: relativePosition.x, top: relativePosition.y };\n // eslint-disable-next-line\n var mousePositions = { left: currentPosition.x, top: currentPosition.y };\n // eslint-disable-next-line\n var annotationSettings = { opacity: currentObject.opacity, fillColor: currentObject.fillColor, strokeColor: currentObject.strokeColor, thicknes: currentObject.thickness, author: currentObject.author, subject: currentObject.subject, modifiedDate: currentObject.modifiedDate };\n // eslint-disable-next-line max-len\n this.isMousedOver = true;\n var isFormField = this.checkSignatureFormField(currentObject.id.split('_')[0]);\n if (currentObject.formFieldAnnotationType) {\n this.isFormFieldMousedOver = true;\n var field = {\n // eslint-disable-next-line\n value: currentObject.value, fontFamily: currentObject.fontFamily, fontSize: currentObject.fontSize, fontStyle: currentObject.fontStyle,\n // eslint-disable-next-line max-len\n color: currentObject.color, backgroundColor: currentObject.backgroundColor, borderColor: currentObject.borderColor,\n // eslint-disable-next-line\n thickness: currentObject.thickness, alignment: currentObject.alignment, isReadonly: currentObject.isReadonly, visibility: currentObject.visibility,\n // eslint-disable-next-line\n maxLength: currentObject.maxLength, isRequired: currentObject.isRequired, isPrint: currentObject.isPrint, rotation: currentObject.rotateAngle, tooltip: currentObject.tooltip, options: currentObject.options,\n // eslint-disable-next-line\n isChecked: currentObject.isChecked, isSelected: currentObject.isSelected\n };\n this.pdfViewer.fireFormFieldMouseoverEvent('formFieldMouseover', field, currentObject.pageIndex, relativePosition.x, relativePosition.y, currentPosition.x, currentPosition.y);\n }\n else {\n if (!isFormField)\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationMouseover(currentObject.annotName, currentObject.pageIndex, currentObject.shapeAnnotationType, currentObject.bounds, annotationSettings, mousePositions, viewerPositions);\n }\n }\n else {\n if (this.isMousedOver) {\n var pageIndex = void 0;\n if (this.pdfViewer.formDesignerModule) {\n pageIndex = this.pdfViewer.formDesignerModule.getEventPageNumber(event);\n }\n else {\n pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n }\n if (this.isFormFieldMousedOver) {\n this.pdfViewer.fireFormFieldMouseLeaveEvent('formFieldMouseLeave', null, pageIndex);\n }\n else {\n this.pdfViewer.fireAnnotationMouseLeave(pageIndex);\n }\n this.isMousedOver = false;\n this.isFormFieldMousedOver = false;\n eventTarget.style.cursor = 'default';\n }\n if (obj && this.pdfViewer.selectedItems.annotations.length === 1 && event.type === 'mousemove') {\n eventTarget.style.cursor = 'pointer';\n }\n else {\n eventTarget.style.cursor = 'default';\n }\n }\n }\n }\n };\n PdfViewerBase.prototype.setResizerCursorType = function () {\n var cursorType;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && isNullOrUndefined(this.pdfViewer.selectedItems.annotations[0].annotationSelectorSettings.resizerCursorType)) {\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings) ? this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Stamp') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings) ? this.pdfViewer.stampSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) ? this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) ? this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (!this.pdfViewer.selectedItems.annotations[0].measureType) {\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings) ? this.pdfViewer.lineSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'LineWidthArrowHead') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings) ? this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Rectangle') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings) ? this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ellipse') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings) ? this.pdfViewer.circleSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Polygon') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings) ? this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n }\n else if (this.pdfViewer.selectedItems.annotations[0].measureType) {\n if (this.pdfViewer.selectedItems.annotations[0].subject === 'Distance calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings) ? this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].subject === 'Perimeter calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings) ? this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].subject === 'Area calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings) ? this.pdfViewer.areaSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].subject === 'Radius calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings) ? this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].subject === 'Volume calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings) ? this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n }\n }\n else {\n if (this.pdfViewer.selectedItems.annotations[0]) {\n cursorType = this.pdfViewer.selectedItems.annotations[0].annotationSelectorSettings.resizerCursorType;\n }\n }\n if (!cursorType) {\n cursorType = this.pdfViewer.annotationSelectorSettings.resizerCursorType;\n }\n return cursorType;\n };\n /**\n * @private\n * @param {Actions | string} action - The actions.\n * @returns {ToolBase} - Returns tools.\n */\n PdfViewerBase.prototype.getTool = function (action) {\n switch (action) {\n case 'Select':\n return new SelectTool(this.pdfViewer, this);\n case 'Drag':\n return new MoveTool(this.pdfViewer, this);\n case 'ResizeSouthEast':\n case 'ResizeSouthWest':\n case 'ResizeNorthEast':\n case 'ResizeNorthWest':\n case 'ResizeSouth':\n case 'ResizeNorth':\n case 'ResizeWest':\n case 'ResizeEast':\n return new ResizeTool(this.pdfViewer, this, action);\n case 'ConnectorSourceEnd':\n case 'ConnectorTargetEnd':\n case 'Leader':\n case 'ConnectorSegmentPoint':\n return new ConnectTool(this.pdfViewer, this, action);\n case 'DrawTool':\n return new NodeDrawingTool(this.pdfViewer, this, this.pdfViewer.drawingObject);\n case 'Polygon':\n return new PolygonDrawingTool(this.pdfViewer, this, 'Polygon');\n case 'Distance':\n return new LineTool(this.pdfViewer, this, 'Leader1', undefined);\n case 'Line':\n return new LineTool(this.pdfViewer, this, 'ConnectorSegmentPoint_1', this.pdfViewer.drawingObject);\n case 'Perimeter':\n return new PolygonDrawingTool(this.pdfViewer, this, 'Perimeter');\n case 'Rotate':\n return new RotateTool(this.pdfViewer, this);\n case 'Stamp':\n return new StampTool(this.pdfViewer, this);\n case 'Ink':\n return new InkDrawingTool(this.pdfViewer, this, this.pdfViewer.drawingObject);\n }\n if (action.indexOf('ConnectorSegmentPoint') > -1 || action.indexOf('Leader') > -1) {\n return new ConnectTool(this.pdfViewer, this, action);\n }\n return null;\n };\n /**\n * @private\n * @param {MouseEvent | TouchEvent} evt - The events.\n * @returns {void}\n */\n PdfViewerBase.prototype.diagramMouseUp = function (evt) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n var touches;\n if (this.tool) {\n if (!this.inAction && evt.which !== 3) {\n if (this.action === 'Drag') {\n this.action = 'Select';\n var obj = findActiveElement(evt, this, this.pdfViewer);\n var isMultipleSelect = true;\n }\n }\n var isGroupAction = void 0;\n if (!(this.tool instanceof PolygonDrawingTool) && !(this.tool instanceof LineTool) && !(this.tool instanceof NodeDrawingTool)) {\n this.inAction = false;\n this.isMouseDown = false;\n }\n this.currentPosition = this.getMousePosition(evt);\n if (this.tool) {\n this.eventArgs.position = this.currentPosition;\n this.getMouseEventArgs(this.currentPosition, this.eventArgs, evt, this.eventArgs.source);\n var ctrlKey = this.isMetaKey(evt);\n var info = { ctrlKey: evt.ctrlKey, shiftKey: evt.shiftKey };\n this.eventArgs.info = info;\n this.eventArgs.clickCount = evt.detail;\n this.tool.mouseUp(this.eventArgs);\n this.isAnnotationMouseDown = false;\n this.isFormFieldMouseDown = false;\n // eslint-disable-next-line max-len\n if ((this.tool instanceof NodeDrawingTool || this.tool instanceof LineTool || this.tool instanceof PolygonDrawingTool) && !this.tool.dragging) {\n this.inAction = false;\n this.isMouseDown = false;\n }\n var obj = findActiveElement(evt, this, this.pdfViewer);\n // eslint-disable-next-line max-len\n if ((this.isShapeAnnotationModule() && this.isCalibrateAnnotationModule())) {\n this.pdfViewer.annotation.onShapesMouseup(obj, evt);\n }\n this.isAnnotationDrawn = false;\n }\n }\n var target = evt.target;\n // eslint-disable-next-line max-len\n if (!touches && evt.cancelable && this.skipPreventDefault(target) && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n evt.preventDefault();\n }\n this.eventArgs = {};\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @private\n * @param {HTMLElement} target - The target.\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.skipPreventDefault = function (target) {\n var isSkipped = false;\n var isSkip = false;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus) {\n isSkip = true;\n }\n // eslint-disable-next-line max-len\n if (target.parentElement && target.parentElement.className !== 'foreign-object' && !target.classList.contains('e-pv-radio-btn') && !target.classList.contains('e-pv-radiobtn-span') && !target.classList.contains('e-pv-checkbox-div') && !target.classList.contains('e-pdfviewer-formFields')\n && !target.classList.contains('e-pdfviewer-ListBox') && !target.classList.contains('e-pdfviewer-signatureformfields')\n && !((target).className === 'free-text-input' && (target).tagName === 'TEXTAREA')\n && !isSkip && !((target).className === 'e-pv-hyperlink')) {\n isSkipped = true;\n }\n return isSkipped;\n };\n PdfViewerBase.prototype.isMetaKey = function (evt) {\n return navigator.platform.match('Mac') ? evt.metaKey : evt.ctrlKey;\n };\n /**\n * @private\n * @param {MouseEvent | TouchEvent} evt - The events.\n * @returns {void}\n */\n PdfViewerBase.prototype.diagramMouseDown = function (evt) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n var touches = null;\n touches = evt.touches;\n this.isMouseDown = true;\n this.isAnnotationAdded = false;\n this.currentPosition = this.prevPosition = this.getMousePosition(evt);\n this.eventArgs = {};\n var isStamp = false;\n if (this.pdfViewer.tool === 'Stamp') {\n this.pdfViewer.tool = '';\n isStamp = true;\n }\n var target;\n if (Browser.isDevice && this.pdfViewer.annotation) {\n this.activeElements.activePageID = this.pdfViewer.annotation.getEventPageNumber(evt);\n }\n var obj = findActiveElement(evt, this, this.pdfViewer);\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && (obj && !(obj instanceof PdfFormFieldBase))) {\n evt.preventDefault();\n }\n if (this.pdfViewer.annotation && this.pdfViewer.enableStampAnnotations) {\n var stampModule = this.pdfViewer.annotationModule.stampAnnotationModule;\n if (stampModule && stampModule.isNewStampAnnot) {\n var stampObj = obj;\n if (!stampObj && this.pdfViewer.selectedItems.annotations[0]) {\n stampObj = this.pdfViewer.selectedItems.annotations[0];\n }\n if (stampObj) {\n this.isViewerMouseDown = false;\n stampObj.opacity = this.pdfViewer.stampSettings.opacity;\n this.isNewStamp = true;\n var opacity = void 0;\n if (stampObj.shapeAnnotationType === 'Image') {\n opacity = this.pdfViewer.customStampSettings.opacity;\n }\n else {\n opacity = this.pdfViewer.stampSettings.opacity;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(stampObj, { opacity: opacity });\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = false;\n if (stampObj.shapeAnnotationType === 'Image' && !this.isAlreadyAdded) {\n this.stampAdded = true;\n var stampName = stampObj.id;\n if (stampModule.currentStampAnnotation && stampModule.currentStampAnnotation.signatureName) {\n stampName = stampModule.currentStampAnnotation.signatureName;\n }\n var isSkip = false;\n for (var i = 0; i < this.customStampCollection.length; i++) {\n if (this.customStampCollection[i].customStampName === stampName) {\n isSkip = true;\n break;\n }\n }\n if (isSkip) {\n stampName = stampObj.id;\n }\n stampName = stampModule.customStampName ? stampModule.customStampName : stampModule.currentStampAnnotation.signatureName;\n this.customStampCollection.push({ customStampName: stampName, customStampImageSource: stampObj.data });\n if (isBlazor()) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync(\"UpdateCustomStampCollection\", stampName, stampObj.data);\n }\n }\n if (this.pdfViewer.customStampSettings.enableCustomStamp && this.pdfViewer.customStampSettings.isAddToMenu) {\n this.stampAdded = true;\n }\n this.isAlreadyAdded = false;\n stampModule.updateDeleteItems(stampObj.pageIndex, stampObj, stampObj.opacity);\n stampModule.resetAnnotation();\n stampModule.isNewStampAnnot = false;\n }\n }\n }\n if (this.isNewSignatureAdded) {\n this.signatureCount++;\n this.currentSignatureAnnot = null;\n var signObject = obj;\n if (isNullOrUndefined(signObject) && this.pdfViewer.selectedItems.annotations[0]) {\n signObject = this.pdfViewer.selectedItems.annotations[0];\n }\n if (signObject) {\n this.signatureAdded = true;\n this.signatureModule.storeSignatureData(signObject.pageIndex, signObject);\n // eslint-disable-next-line\n var bounds = { left: signObject.bounds.x, top: signObject.bounds.y, width: signObject.bounds.width, height: signObject.bounds.height };\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignatureAdd(signObject.pageIndex, signObject.signatureName, signObject.shapeAnnotationType, bounds, signObject.opacity, signObject.strokeColor, signObject.thickness, this.signatureModule.saveImageString);\n }\n this.isNewSignatureAdded = false;\n }\n if (this.pdfViewer.annotationModule) {\n var freeTextAnnotModule = this.pdfViewer.annotationModule.freeTextAnnotationModule;\n var canvasPaddingLeft = 5, canvasPaddingWidth = 10;\n // eslint-disable-next-line\n if (freeTextAnnotModule.isNewFreeTextAnnot === true) {\n var canvas = void 0;\n // eslint-disable-next-line max-len\n if (evt.target && (evt.target.id.indexOf('_text') > -1 || evt.target.id.indexOf('_annotationCanvas') > -1 || evt.target.classList.contains('e-pv-hyperlink')) && this.pdfViewer.annotation) {\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(evt);\n var diagram = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n if (diagram) {\n var canvas1 = diagram.getBoundingClientRect();\n var left = canvas1.x ? canvas1.x : canvas1.left;\n var top_4 = canvas1.y ? canvas1.y : canvas1.top;\n canvas = new Rect(left + canvasPaddingLeft, top_4 + canvasPaddingLeft, canvas1.width - canvasPaddingWidth, canvas1.height - canvasPaddingWidth);\n }\n }\n if (touches) {\n this.mouseX = touches[0].clientX;\n this.mouseY = touches[0].clientY;\n }\n if (canvas && canvas.containsPoint({ x: this.mouseX, y: this.mouseY }) && freeTextAnnotModule.isNewAddedAnnot) {\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(evt);\n if (!this.pdfViewer.freeTextSettings.enableAutoFit) {\n var zoomFactor = this.getZoomFactor();\n var width = this.currentPosition.x + (freeTextAnnotModule.defautWidth * zoomFactor);\n var pageWidth = this.getPageWidth(pageIndex);\n if (width >= pageWidth) {\n this.currentPosition.x = pageWidth - (freeTextAnnotModule.defautWidth * zoomFactor);\n this.currentPosition.x <= 0 ? this.currentPosition.x = canvasPaddingLeft : this.currentPosition.x;\n freeTextAnnotModule.defautWidth = (freeTextAnnotModule.defautWidth * zoomFactor) >= pageWidth ? pageWidth - canvasPaddingWidth : freeTextAnnotModule.defautWidth;\n }\n }\n freeTextAnnotModule.addInuptElemet(this.currentPosition, null, pageIndex);\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n // eslint-disable-next-line\n var annotModule = this.pdfViewer.toolbar.annotationToolbarModule;\n if (!isBlazor()) {\n annotModule.primaryToolbar.deSelectItem(annotModule.freeTextEditItem);\n }\n }\n evt.preventDefault();\n freeTextAnnotModule.isNewAddedAnnot = false;\n }\n }\n }\n var sourceElement = null;\n if (obj) {\n sourceElement = obj.wrapper.children[0];\n if (sourceElement) {\n target = obj;\n }\n }\n if (!this.tool || (this.tool && !this.tool.drawingObject)) {\n if (!isStamp) {\n this.action = this.findToolToActivate(obj, this.currentPosition);\n // eslint-disable-next-line\n if (obj && obj.annotationSettings && obj.annotationSettings.isLock) {\n if (this.action === 'Select') {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Select', obj)) {\n this.action = '';\n }\n }\n if (this.action === 'Drag') {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Move', obj)) {\n this.action = 'Select';\n }\n }\n if (this.action === 'Rotate') {\n this.action = 'Select';\n }\n // eslint-disable-next-line max-len\n if (this.action === 'ResizeSouthEast' || this.action === 'ResizeNorthEast' || this.action === 'ResizeNorthWest' || this.action === 'ResizeSouthWest' || this.action === 'ResizeSouth' || // eslint-disable-next-line max-len\n this.action === 'ResizeNorth' || this.action === 'ResizeWest' || this.action === 'ResizeEast' || this.action.includes('ConnectorSegmentPoint') || this.action.includes('Leader')) {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Resize', obj)) {\n this.action = 'Select';\n }\n }\n }\n this.tool = this.getTool(this.action);\n if (!this.tool) {\n this.action = this.pdfViewer.tool || 'Select';\n this.tool = this.getTool(this.action);\n }\n }\n else {\n this.action = 'Select';\n this.tool = this.getTool(this.action);\n }\n }\n this.getMouseEventArgs(this.currentPosition, this.eventArgs, evt);\n this.eventArgs.position = this.currentPosition;\n if (this.tool) {\n this.isAnnotationMouseDown = false;\n this.isFormFieldMouseDown = false;\n this.isAnnotationMouseMove = false;\n this.isFormFieldMouseMove = false;\n this.tool.mouseDown(this.eventArgs);\n this.isAnnotationDrawn = true;\n this.signatureAdded = true;\n }\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n if (this.pdfViewer.selectedItems && this.pdfViewer.selectedItems.formFields.length === 1) {\n if (!isNullOrUndefined(this.pdfViewer.toolbar) && !isNullOrUndefined(this.pdfViewer.toolbar.formDesignerToolbarModule)) {\n this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(true);\n }\n }\n var signatureFieldAnnotation = this.pdfViewer.selectedItems.annotations.length === 1 ? this.pdfViewer.nameTable[this.pdfViewer.selectedItems.annotations[0].id.split('_')[0] + '_content'] : null;\n if (!signatureFieldAnnotation) {\n signatureFieldAnnotation = this.pdfViewer.selectedItems.annotations.length === 1 ? this.pdfViewer.nameTable[this.pdfViewer.selectedItems.annotations[0].id] : null;\n }\n // eslint-disable-next-line max-len\n if (this.eventArgs && this.eventArgs.source && (this.eventArgs.source.formFieldAnnotationType || signatureFieldAnnotation) && !this.pdfViewer.designerMode) {\n var currentObject = void 0;\n if (signatureFieldAnnotation) {\n currentObject = this.pdfViewer.nameTable[this.pdfViewer.selectedItems.annotations[0].id.split('_')[0]];\n }\n else {\n currentObject = this.eventArgs.source;\n }\n if (!currentObject) {\n currentObject = this.pdfViewer.formFieldCollections[this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === signatureFieldAnnotation.id; })];\n }\n if (currentObject) {\n // eslint-disable-next-line\n var field = {\n // eslint-disable-next-line max-len\n id: currentObject.id, fontFamily: currentObject.fontFamily, fontSize: currentObject.fontSize, fontStyle: currentObject.fontStyle,\n // eslint-disable-next-line\n color: currentObject.color, value: currentObject.value, type: currentObject.formFieldAnnotationType ? currentObject.formFieldAnnotationType : currentObject.type, backgroundColor: currentObject.backgroundColor, alignment: currentObject.alignment\n };\n var target_1 = document.getElementById(currentObject.id);\n target_1 = target_1 ? target_1 : (document.getElementById(currentObject.id + '_content_html_element') ? document.getElementById(currentObject.id + '_content_html_element').children[0].children[0] : null);\n if (target_1) {\n this.currentTarget = target_1;\n this.pdfViewer.fireFormFieldClickEvent('formFieldClicked', field, false, evt.button === 0);\n }\n }\n }\n this.initialEventArgs = { source: this.eventArgs.source, sourceWrapper: this.eventArgs.sourceWrapper };\n this.initialEventArgs.position = this.currentPosition;\n this.initialEventArgs.info = this.eventArgs.info;\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.exportAnnotationsAsObject = function () {\n var _this = this;\n if (this.pdfViewer.annotationModule) {\n var isAnnotations = this.updateExportItem();\n if (isAnnotations) {\n return new Promise(function (resolve, reject) {\n _this.createRequestForExportAnnotations(true, AnnotationDataFormat.Json).then(function (value) {\n resolve(value);\n });\n });\n }\n }\n };\n /**\n * @private\n * @param {string} type - The type.\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.getItemFromSessionStorage = function (type) {\n if (this.isStorageExceed) {\n return this.formFieldStorage[this.documentId + type];\n }\n else {\n return window.sessionStorage.getItem(this.documentId + type);\n }\n };\n /**\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewerBase.prototype.setStyleToTextDiv = function (textDiv, left, top, fontHeight, width, height, isPrint) {\n var zoomvalue = this.getZoomFactor();\n if (isPrint) {\n zoomvalue = 1;\n textDiv.style.position = 'absolute';\n }\n textDiv.style.left = left * zoomvalue + 'px';\n textDiv.style.top = top * zoomvalue + 'px';\n textDiv.style.height = height * zoomvalue + 'px';\n textDiv.style.width = width * zoomvalue + 'px';\n textDiv.style.margin = '0px';\n if (fontHeight > 0) {\n textDiv.style.fontSize = fontHeight * zoomvalue + 'px';\n }\n };\n /**\n * @param number\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.setItemInSessionStorage = function (formFieldsData, type) {\n // eslint-disable-next-line\n var formFieldsSize = Math.round(JSON.stringify(formFieldsData).length / 1024);\n if (formFieldsSize > 4500) {\n this.isStorageExceed = true;\n if (this.pdfViewer.formFieldsModule) {\n this.pdfViewer.formFieldsModule.clearFormFieldStorage();\n }\n }\n if (this.isStorageExceed) {\n this.formFieldStorage[this.documentId + type] = JSON.stringify(formFieldsData);\n }\n else {\n window.sessionStorage.setItem(this.documentId + type, JSON.stringify(formFieldsData));\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.exportFormFieldsAsObject = function () {\n var _this = this;\n if (this.pdfViewer.formFieldsModule) {\n return new Promise(function (resolve, reject) {\n _this.createRequestForExportFormfields(true).then(function (value) {\n resolve(value);\n });\n });\n }\n };\n /**\n * @param importData\n * @param annotationDataFormat\n * @param isXfdf\n * @param importData\n * @param annotationDataFormat\n * @param isXfdf\n * @param importData\n * @param annotationDataFormat\n * @param isXfdf\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.importAnnotations = function (importData, annotationDataFormat, isXfdf) {\n if (this.pdfViewer.annotationModule) {\n this.createRequestForImportAnnotations(importData, annotationDataFormat, isXfdf);\n }\n };\n /**\n * @private\n * @param {AnnotationDataFormat} annotationDataFormat - The annotationDataFormat.\n * @returns {void}\n */\n PdfViewerBase.prototype.exportAnnotations = function (annotationDataFormat) {\n if (this.pdfViewer.annotationModule) {\n var isAnnotations = this.updateExportItem();\n if (isAnnotations) {\n this.createRequestForExportAnnotations(false, annotationDataFormat);\n }\n }\n };\n /**\n * @param isObject\n * @param annotationDataFormat\n * @param isBase64String\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForExportAnnotations = function (isObject, annotationDataFormat, isBase64String) {\n var _this = this;\n var proxy = null;\n proxy = this;\n var promise = new Promise(function (resolve, reject) {\n // eslint-disable-next-line\n var jsonObject;\n if (annotationDataFormat === 'Json') {\n // eslint-disable-next-line max-len\n jsonObject = { hashId: proxy.hashId, action: 'ExportAnnotations', pdfAnnotation: proxy.createAnnotationJsonData(), elementId: proxy.pdfViewer.element.id, annotationDataFormat: annotationDataFormat, uniqueId: proxy.documentId };\n proxy.pdfViewer.fireExportStart(jsonObject.pdfAnnotation);\n }\n else {\n jsonObject = _this.constructJsonDownload();\n jsonObject.annotationDataFormat = annotationDataFormat;\n // eslint-disable-next-line\n jsonObject['action'] = 'ExportAnnotations';\n proxy.pdfViewer.fireExportStart(jsonObject);\n }\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.document = proxy.jsonDocumentId;\n }\n var url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.exportAnnotations;\n proxy.exportAnnotationRequestHandler = new AjaxHandler(_this.pdfViewer);\n proxy.exportAnnotationRequestHandler.url = url;\n proxy.exportAnnotationRequestHandler.mode = true;\n proxy.exportAnnotationRequestHandler.responseType = 'text';\n proxy.exportAnnotationRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n proxy.exportAnnotationRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data === 'object') {\n data = JSON.parse(data);\n }\n if (data) {\n var isCancel = proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.exportAnnotations, data);\n if (isObject || (isBase64String && !isBlazor())) {\n if (data.split('base64,')[1]) {\n var exportObject = data;\n // eslint-disable-next-line \n var annotationJson = atob(data.split(',')[1]);\n if (isObject) {\n if (jsonObject.annotationDataFormat === 'Json') {\n exportObject = JSON.parse(annotationJson);\n }\n else {\n exportObject = annotationJson;\n }\n }\n if (proxy.pdfViewer.exportAnnotationFileName !== null) {\n proxy.pdfViewer.fireExportSuccess(exportObject, proxy.pdfViewer.exportAnnotationFileName);\n }\n else {\n proxy.pdfViewer.fireExportSuccess(exportObject, proxy.pdfViewer.fileName);\n }\n proxy.updateDocumentAnnotationCollections();\n if (isBase64String) {\n resolve(data);\n }\n else {\n resolve(annotationJson);\n }\n }\n else {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n }\n else {\n if (annotationDataFormat === 'Json') {\n if (data.split('base64,')[1]) {\n if (!isCancel) {\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/json');\n if (Browser.isIE || Browser.info.name === 'edge') {\n if (proxy.pdfViewer.exportAnnotationFileName !== null) {\n // eslint-disable-next-line max-len\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.pdfViewer.exportAnnotationFileName.split('.')[0] + '.json');\n }\n else {\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.pdfViewer.fileName.split('.')[0] + '.json');\n }\n }\n else {\n proxy.downloadExportAnnotationJson(blobUrl);\n }\n proxy.updateDocumentAnnotationCollections();\n }\n else {\n return data;\n }\n }\n else {\n if (isBlazor()) {\n var promise_2 = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_ExportFailed');\n promise_2.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n }\n else {\n if (data.split('base64,')[1]) {\n if (!isCancel) {\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/vnd.adobe.xfdf');\n if (Browser.isIE || Browser.info.name === 'edge') {\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.pdfViewer.fileName.split('.')[0] + '.xfdf');\n }\n else {\n proxy.downloadExportedXFdfAnnotation(blobUrl);\n }\n }\n else {\n return data;\n }\n }\n else {\n if (isBlazor()) {\n var promise_3 = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_ExportFailed');\n promise_3.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireExportFailed(jsonObject, proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n }\n }\n }\n if (typeof data !== 'string') {\n try {\n if (typeof data === 'string') {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.exportAnnotations);\n data = null;\n }\n }\n catch (error) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.exportAnnotations);\n data = null;\n }\n }\n }\n else {\n var fileName = void 0;\n if (proxy.pdfViewer.exportAnnotationFileName !== null) {\n fileName = proxy.pdfViewer.exportAnnotationFileName;\n }\n else {\n fileName = proxy.pdfViewer.fileName;\n }\n proxy.pdfViewer.fireExportSuccess('Exported data saved in server side successfully', fileName);\n }\n };\n // eslint-disable-next-line\n proxy.exportAnnotationRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, result.statusText);\n };\n // eslint-disable-next-line\n proxy.exportAnnotationRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, result.statusText);\n };\n });\n if (isObject || isBase64String) {\n return promise;\n }\n else {\n return true;\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForImportAnnotations = function (importData, annotationDataFormat, isXfdf) {\n var jsonObject;\n var proxy = null;\n proxy = this;\n if (typeof importData === 'string' && annotationDataFormat === 'Json' && importData.indexOf(\".json\") === -1) {\n importData = importData.split(',')[1] ? importData.split(',')[1] : importData.split(',')[0];\n importData = JSON.parse(decodeURIComponent(escape(atob(importData))));\n }\n if (typeof importData === 'object') {\n proxy.reRenderAnnotations(importData.pdfAnnotation);\n proxy.isImportedAnnotation = true;\n proxy.updateDocumentEditedProperty(true);\n if (!this.isAddAnnotation) {\n proxy.pdfViewer.fireImportSuccess(importData.pdfAnnotation);\n }\n }\n else {\n proxy.pdfViewer.fireImportStart(importData);\n if (annotationDataFormat === 'Json') {\n // eslint-disable-next-line max-len\n jsonObject = { fileName: importData, action: 'ImportAnnotations', elementId: proxy.pdfViewer.element.id, hashId: proxy.hashId, uniqueId: proxy.documentId };\n }\n else {\n if (!isXfdf) {\n importData = btoa(importData);\n }\n importData = importData.split(',')[1] ? importData.split(',')[1] : importData.split(',')[0];\n // eslint-disable-next-line max-len\n jsonObject = { importedData: importData, action: 'ImportAnnotations', elementId: proxy.pdfViewer.element.id, hashId: proxy.hashId, uniqueId: proxy.documentId };\n }\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.document = proxy.jsonDocumentId;\n }\n var url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.importAnnotations;\n proxy.importAnnotationRequestHandler = new AjaxHandler(proxy.pdfViewer);\n proxy.importAnnotationRequestHandler.url = url;\n proxy.importAnnotationRequestHandler.mode = true;\n proxy.importAnnotationRequestHandler.responseType = 'text';\n proxy.importAnnotationRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n proxy.importAnnotationRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n if (typeof data !== 'object') {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.importAnnotations);\n data = null;\n }\n }\n catch (error) {\n proxy.pdfViewer.fireImportFailed(importData, proxy.pdfViewer.localeObj.getConstant('File not found'));\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_FileNotFound');\n promise.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('File not found'));\n }\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.importAnnotations);\n data = null;\n }\n }\n if (data) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.importAnnotations, data);\n if (data.pdfAnnotation) {\n proxy.reRenderAnnotations(data.pdfAnnotation);\n proxy.isImportedAnnotation = true;\n proxy.updateDocumentEditedProperty(true);\n proxy.pdfViewer.fireImportSuccess(data.pdfAnnotation);\n }\n }\n }\n };\n // eslint-disable-next-line\n proxy.importAnnotationRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireImportFailed(importData, result.statusText);\n };\n // eslint-disable-next-line\n proxy.importAnnotationRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireImportFailed(importData, result.statusText);\n };\n }\n };\n /**\n * @private\n * @param {string} errorDetails - The error details.\n * @returns {void}\n */\n PdfViewerBase.prototype.openImportExportNotificationPopup = function (errorDetails) {\n if (this.pdfViewer.showNotificationDialog) {\n this.textLayer.createNotificationPopup(errorDetails);\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.reRenderAnnotations = function (annotation) {\n if (annotation) {\n this.isImportAction = true;\n var count = void 0;\n if (this.isImportedAnnotation) {\n this.importedAnnotation = this.combineImportedData(this.importedAnnotation, annotation);\n }\n else {\n if (this.pageCount > 0) {\n this.importedAnnotation = annotation;\n }\n }\n if (!this.isImportedAnnotation) {\n count = 0;\n }\n for (var i = 0; i < this.pageCount; i++) {\n if (annotation[i]) {\n // eslint-disable-next-line\n var importPageCollections = [];\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n // eslint-disable-next-line\n var measureShapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n // eslint-disable-next-line\n var signatureObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n // eslint-disable-next-line\n var inkObject = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n if (this.isStorageExceed) {\n textMarkupObject = this.annotationStorage[this.documentId + '_annotations_textMarkup'];\n shapeObject = this.annotationStorage[this.documentId + '_annotations_shape'];\n measureShapeObject = this.annotationStorage[this.documentId + '_annotations_shape_measure'];\n stampObject = this.annotationStorage[this.documentId + '_annotations_stamp'];\n stickyObject = this.annotationStorage[this.documentId + '_annotations_sticky'];\n freeTextObject = this.annotationStorage[this.documentId + '_annotations_freetext'];\n inkObject = this.annotationStorage[this.documentId + '_annotations_ink'];\n }\n var annotationCanvas = this.getElement('_annotationCanvas_' + i);\n if (annotationCanvas) {\n this.drawPageAnnotations(annotation[i], i);\n if (this.isImportedAnnotation) {\n var isAdded = false;\n for (var j = 0; j < this.annotationPageList.length; j++) {\n if (this.annotationPageList[j] === i) {\n isAdded = true;\n }\n }\n if (isAdded) {\n this.annotationPageList[count] = i;\n count = count + 1;\n }\n }\n else {\n this.annotationPageList[count] = i;\n count = count + 1;\n }\n }\n if (annotation[i].textMarkupAnnotation && annotation[i].textMarkupAnnotation.length !== 0) {\n if (textMarkupObject) {\n var annotObject = JSON.parse(textMarkupObject);\n // eslint-disable-next-line max-len\n annotation[i].textMarkupAnnotation = this.checkAnnotationCollections(annotObject, annotation[i].textMarkupAnnotation, i);\n }\n annotation[i].textMarkupAnnotation = this.checkAnnotationCommentsCollections(annotation[i].textMarkupAnnotation, i);\n importPageCollections.textMarkupAnnotation = annotation[i].textMarkupAnnotation;\n if (annotation[i].textMarkupAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[i].textMarkupAnnotation, i);\n for (var j = 0; j < annotation[i].textMarkupAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.textMarkupAnnotationModule.updateTextMarkupAnnotationCollections(annotation[i].textMarkupAnnotation[j], i));\n }\n }\n }\n if (annotation[i].shapeAnnotation && annotation[i].shapeAnnotation.length !== 0) {\n if (shapeObject) {\n var annotObject = JSON.parse(shapeObject);\n annotation[i].shapeAnnotation = this.checkAnnotationCollections(annotObject, annotation[i].shapeAnnotation, i);\n }\n annotation[i].shapeAnnotation = this.checkAnnotationCommentsCollections(annotation[i].shapeAnnotation, i);\n importPageCollections.shapeAnnotation = annotation[i].shapeAnnotation;\n if (annotation[i].shapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[i].shapeAnnotation, i);\n for (var j = 0; j < annotation[i].shapeAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.shapeAnnotationModule.updateShapeAnnotationCollections(annotation[i].shapeAnnotation[j], i));\n }\n }\n }\n if (annotation[i].measureShapeAnnotation && annotation[i].measureShapeAnnotation.length !== 0) {\n if (measureShapeObject) {\n var annotObject = JSON.parse(measureShapeObject);\n // eslint-disable-next-line max-len\n annotation[i].measureShapeAnnotation = this.checkAnnotationCollections(annotObject, annotation[i].measureShapeAnnotation, i);\n }\n // eslint-disable-next-line max-len\n annotation[i].measureShapeAnnotation = this.checkAnnotationCommentsCollections(annotation[i].measureShapeAnnotation, i);\n importPageCollections.measureShapeAnnotation = annotation[i].measureShapeAnnotation;\n if (annotation[i].measureShapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[i].measureShapeAnnotation, i);\n for (var j = 0; j < annotation[i].measureShapeAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.measureAnnotationModule.updateMeasureAnnotationCollections(annotation[i].measureShapeAnnotation[j], i));\n }\n }\n }\n if (annotation[i].stampAnnotations && annotation[i].stampAnnotations.length !== 0) {\n if (stampObject) {\n var annotObject = JSON.parse(stampObject);\n // eslint-disable-next-line max-len\n annotation[i].stampAnnotations = this.checkAnnotationCollections(annotObject, annotation[i].stampAnnotations, i);\n }\n annotation[i].stampAnnotations = this.checkAnnotationCommentsCollections(annotation[i].stampAnnotations, i);\n importPageCollections.stampAnnotations = annotation[i].stampAnnotations;\n if (annotation[i].stampAnnotations.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[i].stampAnnotations, i);\n for (var j = 0; j < annotation[i].stampAnnotations.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.stampAnnotationModule.updateStampAnnotationCollections(annotation[i].stampAnnotations[j], i));\n }\n }\n }\n if (annotation[i].stickyNotesAnnotation && annotation[i].stickyNotesAnnotation.length !== 0) {\n if (stickyObject) {\n var annotObject = JSON.parse(stickyObject);\n // eslint-disable-next-line max-len\n annotation[i].stickyNotesAnnotation = this.checkAnnotationCollections(annotObject, annotation[i].stickyNotesAnnotation, i);\n }\n // eslint-disable-next-line max-len\n annotation[i].stickyNotesAnnotation = this.checkAnnotationCommentsCollections(annotation[i].stickyNotesAnnotation, i);\n importPageCollections.stickyNotesAnnotation = annotation[i].stickyNotesAnnotation;\n if (annotation[i].stickyNotesAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[i].stickyNotesAnnotation, i);\n for (var j = 0; j < annotation[i].stickyNotesAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateStickyNotesAnnotationCollections(annotation[i].stickyNotesAnnotation[j], i));\n }\n }\n }\n if (annotation[i].freeTextAnnotation && annotation[i].freeTextAnnotation.length !== 0) {\n if (freeTextObject) {\n var annotObject = JSON.parse(freeTextObject);\n // eslint-disable-next-line max-len\n annotation[i].freeTextAnnotation = this.checkAnnotationCollections(annotObject, annotation[i].freeTextAnnotation, i);\n }\n annotation[i].freeTextAnnotation = this.checkAnnotationCommentsCollections(annotation[i].freeTextAnnotation, i);\n importPageCollections.freeTextAnnotation = annotation[i].freeTextAnnotation;\n if (annotation[i].freeTextAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[i].freeTextAnnotation, i);\n for (var j = 0; j < annotation[i].freeTextAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.freeTextAnnotationModule.updateFreeTextAnnotationCollections(annotation[i].freeTextAnnotation[j], i));\n }\n }\n }\n if (annotation[i].signatureAnnotation && annotation[i].signatureAnnotation.length !== 0) {\n if (signatureObject) {\n var annotObject = JSON.parse(signatureObject);\n // eslint-disable-next-line max-len\n annotation[i].signatureAnnotation = this.checkSignatureCollections(annotObject, annotation[i].signatureAnnotation, i);\n }\n importPageCollections.signatureAnnotation = annotation[i].signatureAnnotation;\n if (annotation[i].signatureAnnotation.length !== 0) {\n for (var j = 0; j < annotation[i].signatureAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.signatureModule.updateSignatureCollections(annotation[i].signatureAnnotation[j], i), true);\n }\n }\n }\n if (annotation[i].signatureInkAnnotation && annotation[i].signatureInkAnnotation.length !== 0) {\n if (inkObject) {\n var annotObject = JSON.parse(inkObject);\n // eslint-disable-next-line max-len\n annotation[i].signatureInkAnnotation = this.checkAnnotationCollections(annotObject, annotation[i].signatureInkAnnotation, i);\n }\n // eslint-disable-next-line max-len\n annotation[i].signatureInkAnnotation = this.checkAnnotationCommentsCollections(annotation[i].signatureInkAnnotation, i);\n importPageCollections.signatureInkAnnotation = annotation[i].signatureInkAnnotation;\n if (annotation[i].signatureInkAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[i].signatureInkAnnotation, i);\n for (var j = 0; j < annotation[i].signatureInkAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n // this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.freeTextAnnotationModule.updateFreeTextAnnotationCollections(annotation[i].freeTextAnnotation[j], i));\n }\n }\n }\n this.updateImportedAnnotationsInDocumentCollections(importPageCollections, i);\n }\n }\n if (this.pageCount > 0) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule.stickyNotesAnnotationModule && !this.pdfViewer.annotationModule.stickyNotesAnnotationModule.isAnnotationRendered) {\n // eslint-disable-next-line\n var annotationCollection = this.createAnnotationsCollection();\n if (annotationCollection) {\n // eslint-disable-next-line max-len\n this.documentAnnotationCollections = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationsInDocumentCollections(this.importedAnnotation, annotationCollection);\n }\n }\n }\n }\n };\n /**\n * @param importedAnnotations\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateImportedAnnotationsInDocumentCollections = function (importedAnnotations, pageNumber) {\n if (this.documentAnnotationCollections) {\n // eslint-disable-next-line\n var documentAnnotationCollection = this.documentAnnotationCollections;\n // eslint-disable-next-line\n var pageCollections = documentAnnotationCollection[pageNumber];\n if (pageCollections) {\n if (importedAnnotations.textMarkupAnnotation && importedAnnotations.textMarkupAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.textMarkupAnnotation.length; i++) {\n pageCollections.textMarkupAnnotation.push(importedAnnotations.textMarkupAnnotation[i]);\n }\n }\n if (importedAnnotations.shapeAnnotation && importedAnnotations.shapeAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.shapeAnnotation.length; i++) {\n pageCollections.shapeAnnotation.push(importedAnnotations.shapeAnnotation[i]);\n }\n }\n if (importedAnnotations.measureShapeAnnotation && importedAnnotations.measureShapeAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.measureShapeAnnotation.length; i++) {\n pageCollections.measureShapeAnnotation.push(importedAnnotations.measureShapeAnnotation[i]);\n }\n }\n if (importedAnnotations.stampAnnotations && importedAnnotations.stampAnnotations.length !== 0) {\n for (var i = 0; i < importedAnnotations.stampAnnotations.length; i++) {\n pageCollections.stampAnnotations.push(importedAnnotations.stampAnnotations[i]);\n }\n }\n if (importedAnnotations.stickyNotesAnnotation && importedAnnotations.stickyNotesAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.stickyNotesAnnotation.length; i++) {\n pageCollections.stickyNotesAnnotation.push(importedAnnotations.stickyNotesAnnotation[i]);\n }\n }\n if (importedAnnotations.freeTextAnnotation && importedAnnotations.freeTextAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.freeTextAnnotation.length; i++) {\n pageCollections.freeTextAnnotation.push(importedAnnotations.freeTextAnnotation[i]);\n }\n }\n if (importedAnnotations.signatureAnnotation && importedAnnotations.signatureAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.signatureAnnotation.length; i++) {\n pageCollections.signatureAnnotation.push(importedAnnotations.signatureAnnotation[i]);\n }\n }\n if (importedAnnotations.signatureInkAnnotation && importedAnnotations.signatureInkAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.signatureInkAnnotation.length; i++) {\n pageCollections.signatureInkAnnotation.push(importedAnnotations.signatureInkAnnotation[i]);\n }\n }\n this.documentAnnotationCollections[pageNumber] = pageCollections;\n }\n }\n };\n /**\n * @param pageIndex\n * @param pageCollections\n * @param pageIndex\n * @param pageCollections\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkDocumentCollectionData = function (pageIndex, pageCollections) {\n // eslint-disable-next-line\n var importPageCollections;\n if (pageCollections) {\n importPageCollections = pageCollections;\n }\n else if (this.documentAnnotationCollections) {\n // eslint-disable-next-line\n var documetCollections = this.documentAnnotationCollections[pageIndex];\n if (documetCollections) {\n importPageCollections = cloneObject(documetCollections);\n }\n }\n if (importPageCollections) {\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n // eslint-disable-next-line\n var measureShapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n // eslint-disable-next-line\n var inkObject = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n // eslint-disable-next-line\n var signatureObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n if (this.isStorageExceed) {\n textMarkupObject = this.annotationStorage[this.documentId + '_annotations_textMarkup'];\n shapeObject = this.annotationStorage[this.documentId + '_annotations_shape'];\n measureShapeObject = this.annotationStorage[this.documentId + '_annotations_shape_measure'];\n stampObject = this.annotationStorage[this.documentId + '_annotations_stamp'];\n stickyObject = this.annotationStorage[this.documentId + '_annotations_sticky'];\n freeTextObject = this.annotationStorage[this.documentId + '_annotations_freetext'];\n inkObject = this.annotationStorage[this.documentId + '_annotations_ink'];\n signatureObject = this.annotationStorage[this.documentId + '_annotations_sign'];\n }\n if (importPageCollections.textMarkupAnnotation && importPageCollections.textMarkupAnnotation.length !== 0) {\n if (textMarkupObject) {\n var annotationObject = JSON.parse(textMarkupObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.textMarkupAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.textMarkupAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.shapeAnnotation && importPageCollections.shapeAnnotation.length !== 0) {\n if (shapeObject) {\n var annotationObject = JSON.parse(shapeObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.shapeAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.shapeAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.measureShapeAnnotation && importPageCollections.measureShapeAnnotation.length !== 0) {\n if (measureShapeObject) {\n var annotationObject = JSON.parse(measureShapeObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.measureShapeAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.measureShapeAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.stampAnnotations && importPageCollections.stampAnnotations.length !== 0) {\n if (stampObject) {\n var annotationObject = JSON.parse(stampObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.stampAnnotations = this.findImportedAnnotations(annotationObject, importPageCollections.stampAnnotations, pageIndex);\n }\n }\n }\n if (importPageCollections.stickyNotesAnnotation && importPageCollections.stickyNotesAnnotation.length !== 0) {\n if (stickyObject) {\n var annotationObject = JSON.parse(stickyObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.stickyNotesAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.stickyNotesAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.freeTextAnnotation && importPageCollections.freeTextAnnotation.length !== 0) {\n if (freeTextObject) {\n var annotationObject = JSON.parse(freeTextObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.freeTextAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.freeTextAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.signatureInkAnnotation && importPageCollections.signatureInkAnnotation.length !== 0) {\n if (inkObject) {\n var annotationObject = JSON.parse(inkObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.signatureInkAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.signatureInkAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.signatureAnnotation && importPageCollections.signatureAnnotation.length !== 0) {\n if (signatureObject) {\n var annotationObject = JSON.parse(inkObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.signatureAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.signatureAnnotation, pageIndex);\n }\n }\n }\n return importPageCollections;\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.findImportedAnnotations = function (annotationCollection, importAnnotations, pageNumber) {\n // eslint-disable-next-line\n var pageCollections = null;\n for (var a = 0; a < annotationCollection.length; a++) {\n if (annotationCollection[a].pageIndex === pageNumber) {\n pageCollections = annotationCollection[a].annotations;\n }\n }\n if (pageCollections) {\n for (var i = 0; i < pageCollections.length; i++) {\n for (var j = 0; j < importAnnotations.length; j++) {\n if (pageCollections[i].annotName === importAnnotations[j].AnnotName) {\n importAnnotations.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n pageCollections = null;\n return importAnnotations;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.drawPageAnnotations = function (annotation, pageIndex, isNewlyAdded) {\n if (isNewlyAdded) {\n annotation = annotation[pageIndex];\n }\n if (annotation) {\n if (annotation.textMarkupAnnotation && annotation.textMarkupAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_textMarkup'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (annotObject) {\n // eslint-disable-next-line max-len\n annotation.textMarkupAnnotation = this.checkAnnotationCollections(annotObject, annotation.textMarkupAnnotation, pageIndex);\n }\n }\n annotation.textMarkupAnnotation = this.checkAnnotationCommentsCollections(annotation.textMarkupAnnotation, pageIndex);\n if (annotation.textMarkupAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, null, null, annotation.textMarkupAnnotation, null, true);\n }\n }\n if (annotation.shapeAnnotation && annotation.shapeAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_shape'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n annotation.shapeAnnotation = this.checkAnnotationCollections(annotObject, annotation.shapeAnnotation, pageIndex);\n }\n annotation.shapeAnnotation = this.checkAnnotationCommentsCollections(annotation.shapeAnnotation, pageIndex);\n if (annotation.shapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, annotation.shapeAnnotation, null, null, null, true);\n }\n }\n if (annotation.measureShapeAnnotation && annotation.measureShapeAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_shape_measure'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n // eslint-disable-next-line max-len\n annotation.measureShapeAnnotation = this.checkAnnotationCollections(annotObject, annotation.measureShapeAnnotation, pageIndex);\n }\n annotation.measureShapeAnnotation = this.checkAnnotationCommentsCollections(annotation.measureShapeAnnotation, pageIndex);\n if (annotation.measureShapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, null, annotation.measureShapeAnnotation, null, null, true);\n }\n }\n if (annotation.stampAnnotations && annotation.stampAnnotations.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_stamp'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n annotation.stampAnnotations = this.checkAnnotationCollections(annotObject, annotation.stampAnnotations, pageIndex);\n }\n annotation.stampAnnotations = this.checkAnnotationCommentsCollections(annotation.stampAnnotations, pageIndex);\n if (annotation.stampAnnotations.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(annotation.stampAnnotations, pageIndex, null, true);\n }\n }\n if (annotation.stickyNotesAnnotation && annotation.stickyNotesAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_sticky'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n // eslint-disable-next-line max-len\n annotation.stickyNotesAnnotation = this.checkAnnotationCollections(annotObject, annotation.stickyNotesAnnotation, pageIndex);\n }\n annotation.stickyNotesAnnotation = this.checkAnnotationCommentsCollections(annotation.stickyNotesAnnotation, pageIndex);\n if (annotation.stickyNotesAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderStickyNotesAnnotations(annotation.stickyNotesAnnotation, pageIndex);\n }\n }\n if (annotation.freeTextAnnotation && annotation.freeTextAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_freetext'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n annotation.freeTextAnnotation = this.checkAnnotationCollections(annotObject, annotation.freeTextAnnotation, pageIndex);\n }\n annotation.freeTextAnnotation = this.checkAnnotationCommentsCollections(annotation.freeTextAnnotation, pageIndex);\n if (annotation.freeTextAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(annotation.freeTextAnnotation, pageIndex, true);\n }\n }\n if (annotation.signatureAnnotation && annotation.signatureAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n var annotObject = JSON.parse(storeObject);\n if (annotObject) {\n annotation.signatureAnnotation = this.checkSignatureCollections(annotObject, annotation.signatureAnnotation, pageIndex);\n }\n this.signatureModule.renderExistingSignature(annotation.signatureAnnotation, pageIndex, true);\n }\n if (annotation.signatureInkAnnotation && annotation.signatureInkAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_ink'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n // eslint-disable-next-line max-len\n annotation.signatureInkAnnotation = this.checkAnnotationCollections(annotObject, annotation.signatureInkAnnotation, pageIndex);\n }\n annotation.signatureInkAnnotation = this.checkAnnotationCommentsCollections(annotation.signatureInkAnnotation, pageIndex);\n if (annotation.signatureInkAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.inkAnnotationModule.renderExistingInkSignature(annotation.signatureInkAnnotation, pageIndex, true);\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkSignatureCollections = function (annotationCollection, annotation, pageNumber) {\n // eslint-disable-next-line\n var pageCollections = null;\n for (var a = 0; a < annotationCollection.length; a++) {\n if (annotationCollection[a].pageIndex === pageNumber) {\n pageCollections = annotationCollection[a].annotations;\n }\n }\n if (pageCollections) {\n for (var i = 0; i < pageCollections.length; i++) {\n for (var j = 0; j < annotation.length; j++) {\n if (pageCollections[i].signatureName === annotation[j].SignatureName) {\n annotation.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n pageCollections = null;\n return annotation;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkAnnotationCollections = function (annotationCollection, annotation, pageNumber) {\n // eslint-disable-next-line\n var pageCollections = null;\n for (var a = 0; a < annotationCollection.length; a++) {\n if (annotationCollection[a].pageIndex === pageNumber) {\n pageCollections = annotationCollection[a].annotations;\n }\n }\n if (pageCollections) {\n for (var i = 0; i < pageCollections.length; i++) {\n for (var j = 0; j < annotation.length; j++) {\n if (pageCollections[i].annotName === annotation[j].AnnotName) {\n annotation.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n pageCollections = null;\n return annotation;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkAnnotationCommentsCollections = function (annotation, pageNumber) {\n if (this.annotationComments) {\n // eslint-disable-next-line\n var annotationCollections = this.annotationComments[pageNumber];\n annotationCollections = this.selectAnnotationCollections(annotationCollections);\n if (annotationCollections) {\n for (var i = 0; i < annotationCollections.length; i++) {\n for (var j = 0; j < annotation.length; j++) {\n if (annotationCollections[i].AnnotName === annotation[j].AnnotName) {\n annotation.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n annotationCollections = null;\n }\n return annotation;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.selectAnnotationCollections = function (pageAnnotations) {\n // eslint-disable-next-line\n var pageCollections = [];\n if (pageAnnotations) {\n if (pageAnnotations.textMarkupAnnotation && pageAnnotations.textMarkupAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.textMarkupAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.textMarkupAnnotation[i]);\n }\n }\n if (pageAnnotations.shapeAnnotation && pageAnnotations.shapeAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.shapeAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.shapeAnnotation[i]);\n }\n }\n if (pageAnnotations.measureShapeAnnotation && pageAnnotations.measureShapeAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.measureShapeAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.measureShapeAnnotation[i]);\n }\n }\n if (pageAnnotations.stampAnnotations && pageAnnotations.stampAnnotations.length !== 0) {\n for (var i = 0; i < pageAnnotations.stampAnnotations.length; i++) {\n pageCollections.push(pageAnnotations.stampAnnotations[i]);\n }\n }\n if (pageAnnotations.stickyNotesAnnotation && pageAnnotations.stickyNotesAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.stickyNotesAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.stickyNotesAnnotation[i]);\n }\n }\n if (pageAnnotations.freeTextAnnotation && pageAnnotations.freeTextAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.freeTextAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.freeTextAnnotation[i]);\n }\n }\n if (pageAnnotations.signatureInkAnnotation && pageAnnotations.signatureInkAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.signatureInkAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.signatureInkAnnotation[i]);\n }\n }\n }\n return pageCollections;\n };\n PdfViewerBase.prototype.saveImportedAnnotations = function () {\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n // eslint-disable-next-line\n var measureShapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n // eslint-disable-next-line\n var inkObject = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n // eslint-disable-next-line\n var signatureObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n if (this.isStorageExceed) {\n textMarkupObject = this.annotationStorage[this.documentId + '_annotations_textMarkup'];\n shapeObject = this.annotationStorage[this.documentId + '_annotations_shape'];\n measureShapeObject = this.annotationStorage[this.documentId + '_annotations_shape_measure'];\n stampObject = this.annotationStorage[this.documentId + '_annotations_stamp'];\n stickyObject = this.annotationStorage[this.documentId + '_annotations_sticky'];\n freeTextObject = this.annotationStorage[this.documentId + '_annotations_freetext'];\n inkObject = this.annotationStorage[this.documentId + '_annotations_ink'];\n signatureObject = this.annotationStorage[this.documentId + '_annotations_sign'];\n }\n // eslint-disable-next-line max-len\n this.downloadCollections = { textMarkupObject: textMarkupObject, shapeObject: shapeObject, measureShapeObject: measureShapeObject, stampObject: stampObject, stickyObject: stickyObject, freeTextObject: freeTextObject, inkObject: inkObject, signatureObject: signatureObject };\n if (this.documentAnnotationCollections) {\n for (var i = 0; i < this.pageCount; i++) {\n if (this.documentAnnotationCollections[i]) {\n // eslint-disable-next-line\n var pageCollections = cloneObject(this.documentAnnotationCollections[i]);\n pageCollections = this.checkDocumentCollectionData(i, pageCollections);\n this.savePageAnnotations(pageCollections, i);\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.savePageAnnotations = function (annotation, pageIndex) {\n if (annotation.textMarkupAnnotation.length !== 0) {\n for (var s = 0; s < annotation.textMarkupAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.saveImportedTextMarkupAnnotations(annotation.textMarkupAnnotation[s], pageIndex);\n }\n }\n if (annotation.shapeAnnotation.length !== 0) {\n for (var s = 0; s < annotation.shapeAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.shapeAnnotationModule.saveImportedShapeAnnotations(annotation.shapeAnnotation[s], pageIndex);\n }\n }\n if (annotation.measureShapeAnnotation.length !== 0) {\n for (var s = 0; s < annotation.measureShapeAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.measureAnnotationModule.saveImportedMeasureAnnotations(annotation.measureShapeAnnotation[s], pageIndex);\n }\n }\n if (annotation.stampAnnotations.length !== 0) {\n for (var s = 0; s < annotation.stampAnnotations.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.saveImportedStampAnnotations(annotation.stampAnnotations[s], pageIndex);\n }\n }\n if (annotation.stickyNotesAnnotation.length !== 0) {\n for (var s = 0; s < annotation.stickyNotesAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveImportedStickyNotesAnnotations(annotation.stickyNotesAnnotation[s], pageIndex);\n }\n }\n if (annotation.freeTextAnnotation.length !== 0) {\n for (var s = 0; s < annotation.freeTextAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.saveImportedFreeTextAnnotations(annotation.freeTextAnnotation[s], pageIndex);\n }\n }\n };\n PdfViewerBase.prototype.updateDocumentAnnotationCollections = function () {\n window.sessionStorage.removeItem(this.documentId + '_annotations_textMarkup');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(this.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sticky');\n window.sessionStorage.removeItem(this.documentId + '_annotations_freetext');\n window.sessionStorage.removeItem(this.documentId + '_annotations_ink');\n if (this.downloadCollections) {\n if (this.isStorageExceed) {\n this.annotationStorage[this.documentId + '_annotations_textMarkup'] = this.downloadCollections.textMarkupObject;\n this.annotationStorage[this.documentId + '_annotations_shape'] = this.downloadCollections.shapeObject;\n this.annotationStorage[this.documentId + '_annotations_shape_measure'] = this.downloadCollections.measureShapeObject;\n this.annotationStorage[this.documentId + '_annotations_stamp'] = this.downloadCollections.stampObject;\n this.annotationStorage[this.documentId + '_annotations_sticky'] = this.downloadCollections.stickyObject;\n this.annotationStorage[this.documentId + '_annotations_freetext'] = this.downloadCollections.freeTextObject;\n this.annotationStorage[this.documentId + '_annotations_ink'] = this.downloadCollections.inkObject;\n }\n else {\n if (this.downloadCollections.textMarkupObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_textMarkup', this.downloadCollections.textMarkupObject);\n }\n if (this.downloadCollections.shapeObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_shape', this.downloadCollections.shapeObject);\n }\n if (this.downloadCollections.measureShapeObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_shape_measure', this.downloadCollections.measureShapeObject);\n }\n if (this.downloadCollections.stampObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_stamp', this.downloadCollections.stampObject);\n }\n if (this.downloadCollections.stickyObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_sticky', this.downloadCollections.stickyObject);\n }\n if (this.downloadCollections.freeTextObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_freetext', this.downloadCollections.freeTextObject);\n }\n if (this.downloadCollections.inkObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_ink', this.downloadCollections.inkObject);\n }\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createAnnotationJsonData = function () {\n // eslint-disable-next-line\n var annotationCollection = {};\n var textMarkupAnnotationCollection;\n var shapeAnnotations;\n var calibrateAnnotations;\n var stampAnnotationCollection;\n var stickyAnnotationCollection;\n var freeTextAnnotationCollection;\n var signaturCollection;\n var signaturInkCollection;\n this.saveImportedAnnotations();\n if (this.isTextMarkupAnnotationModule()) {\n // eslint-disable-next-line max-len\n textMarkupAnnotationCollection = this.pdfViewer.annotationModule.textMarkupAnnotationModule.saveTextMarkupAnnotations();\n }\n if (this.isShapeAnnotationModule()) {\n // eslint-disable-next-line max-len\n shapeAnnotations = this.pdfViewer.annotationModule.shapeAnnotationModule.saveShapeAnnotations();\n }\n if (this.isCalibrateAnnotationModule()) {\n // eslint-disable-next-line max-len\n calibrateAnnotations = this.pdfViewer.annotationModule.measureAnnotationModule.saveMeasureShapeAnnotations();\n }\n if (this.isStampAnnotationModule()) {\n // eslint-disable-next-line max-len\n stampAnnotationCollection = this.pdfViewer.annotationModule.stampAnnotationModule.saveStampAnnotations();\n }\n if (this.isCommentAnnotationModule()) {\n // eslint-disable-next-line max-len\n stickyAnnotationCollection = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveStickyAnnotations();\n }\n if (this.isFreeTextAnnotationModule()) {\n // eslint-disable-next-line max-len\n freeTextAnnotationCollection = this.pdfViewer.annotationModule.freeTextAnnotationModule.saveFreeTextAnnotations();\n }\n if (this.isInkAnnotationModule()) {\n // eslint-disable-next-line\n signaturInkCollection = this.pdfViewer.annotationModule.inkAnnotationModule.saveInkSignature();\n }\n if (this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line\n signaturCollection = this.signatureModule.saveSignature();\n }\n else {\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pageCount; j++) {\n annotations[j] = [];\n }\n signaturCollection = JSON.stringify(annotations);\n }\n for (var s = 0; s < this.pageCount; s++) {\n // eslint-disable-next-line max-len\n var annotation = {\n textMarkupAnnotation: JSON.parse(textMarkupAnnotationCollection)[s], shapeAnnotation: JSON.parse(shapeAnnotations)[s],\n measureShapeAnnotation: JSON.parse(calibrateAnnotations)[s], stampAnnotations: JSON.parse(stampAnnotationCollection)[s],\n // eslint-disable-next-line max-len\n stickyNotesAnnotation: JSON.parse(stickyAnnotationCollection)[s], freeTextAnnotation: JSON.parse(freeTextAnnotationCollection)[s], signatureAnnotation: JSON.parse(signaturCollection)[s], signatureInkAnnotation: JSON.parse(signaturInkCollection)[s]\n };\n annotationCollection[s] = annotation;\n }\n return JSON.stringify(annotationCollection);\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.combineImportedData = function (excistingImportAnnotation, newlyImportAnnotation) {\n for (var i = 0; i < this.pageCount; i++) {\n if (newlyImportAnnotation[i]) {\n if (excistingImportAnnotation[i]) {\n if (newlyImportAnnotation[i].textMarkupAnnotation && newlyImportAnnotation[i].textMarkupAnnotation.length !== 0) {\n if (excistingImportAnnotation[i].textMarkupAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[i].textMarkupAnnotation = this.checkImportedData(excistingImportAnnotation[i].textMarkupAnnotation, newlyImportAnnotation[i].textMarkupAnnotation, i);\n if (newlyImportAnnotation[i].textMarkupAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[i].textMarkupAnnotation = excistingImportAnnotation[i].textMarkupAnnotation.concat(newlyImportAnnotation[i].textMarkupAnnotation);\n }\n }\n else {\n excistingImportAnnotation[i].textMarkupAnnotation = newlyImportAnnotation[i].textMarkupAnnotation;\n }\n }\n if (newlyImportAnnotation[i].shapeAnnotation && newlyImportAnnotation[i].shapeAnnotation.length !== 0) {\n if (excistingImportAnnotation[i].shapeAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[i].shapeAnnotation = this.checkImportedData(excistingImportAnnotation[i].shapeAnnotation, newlyImportAnnotation[i].shapeAnnotation, i);\n if (newlyImportAnnotation[i].shapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[i].shapeAnnotation = excistingImportAnnotation[i].shapeAnnotation.concat(newlyImportAnnotation[i].shapeAnnotation);\n }\n }\n else {\n excistingImportAnnotation[i].shapeAnnotation = newlyImportAnnotation[i].shapeAnnotation;\n }\n }\n if (newlyImportAnnotation[i].measureShapeAnnotation && newlyImportAnnotation[i].measureShapeAnnotation.length !== 0) {\n if (excistingImportAnnotation[i].measureShapeAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[i].measureShapeAnnotation = this.checkImportedData(excistingImportAnnotation[i].measureShapeAnnotation, newlyImportAnnotation[i].measureShapeAnnotation, i);\n if (newlyImportAnnotation[i].measureShapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[i].measureShapeAnnotation = excistingImportAnnotation[i].measureShapeAnnotation.concat(newlyImportAnnotation[i].measureShapeAnnotation);\n }\n }\n else {\n excistingImportAnnotation[i].measureShapeAnnotation = newlyImportAnnotation[i].measureShapeAnnotation;\n }\n }\n if (newlyImportAnnotation[i].stampAnnotations && newlyImportAnnotation[i].stampAnnotations.length !== 0) {\n if (excistingImportAnnotation[i].stampAnnotations) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[i].stampAnnotations = this.checkImportedData(excistingImportAnnotation[i].stampAnnotations, newlyImportAnnotation[i].stampAnnotations, i);\n if (newlyImportAnnotation[i].stampAnnotations.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[i].stampAnnotations = excistingImportAnnotation[i].stampAnnotations.concat(newlyImportAnnotation[i].stampAnnotations);\n }\n }\n else {\n excistingImportAnnotation[i].stampAnnotations = newlyImportAnnotation[i].stampAnnotations;\n }\n }\n if (newlyImportAnnotation[i].stickyNotesAnnotation && newlyImportAnnotation[i].stickyNotesAnnotation.length !== 0) {\n if (excistingImportAnnotation[i].stickyNotesAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[i].stickyNotesAnnotation = this.checkImportedData(excistingImportAnnotation[i].stickyNotesAnnotation, newlyImportAnnotation[i].stickyNotesAnnotation, i);\n if (newlyImportAnnotation[i].stickyNotesAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[i].stickyNotesAnnotation = excistingImportAnnotation[i].stickyNotesAnnotation.concat(newlyImportAnnotation[i].stickyNotesAnnotation);\n }\n }\n else {\n excistingImportAnnotation[i].stickyNotesAnnotation = newlyImportAnnotation[i].stickyNotesAnnotation;\n }\n }\n if (newlyImportAnnotation[i].freeTextAnnotation && newlyImportAnnotation[i].freeTextAnnotation.length !== 0) {\n if (excistingImportAnnotation[i].freeTextAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[i].freeTextAnnotation = this.checkImportedData(excistingImportAnnotation[i].freeTextAnnotation, newlyImportAnnotation[i].freeTextAnnotation, i);\n if (newlyImportAnnotation[i].freeTextAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[i].freeTextAnnotation = excistingImportAnnotation[i].freeTextAnnotation.concat(newlyImportAnnotation[i].freeTextAnnotation);\n }\n }\n else {\n excistingImportAnnotation[i].freeTextAnnotation = newlyImportAnnotation[i].freeTextAnnotation;\n }\n }\n if (newlyImportAnnotation[i].signatureInkAnnotation && newlyImportAnnotation[i].signatureInkAnnotation.length !== 0) {\n if (excistingImportAnnotation[i].signatureInkAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[i].signatureInkAnnotation = this.checkImportedData(excistingImportAnnotation[i].signatureInkAnnotation, newlyImportAnnotation[i].signatureInkAnnotation, i);\n if (newlyImportAnnotation[i].signatureInkAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[i].signatureInkAnnotation = excistingImportAnnotation[i].signatureInkAnnotation.concat(newlyImportAnnotation[i].signatureInkAnnotation);\n }\n }\n else {\n excistingImportAnnotation[i].signatureInkAnnotation = newlyImportAnnotation[i].signatureInkAnnotation;\n }\n }\n }\n else {\n // eslint-disable-next-line max-len\n var annotation = {\n // eslint-disable-next-line max-len\n textMarkupAnnotation: newlyImportAnnotation[i].textMarkupAnnotation, shapeAnnotation: newlyImportAnnotation[i].shapeAnnotation,\n // eslint-disable-next-line max-len\n measureShapeAnnotation: newlyImportAnnotation[i].measureShapeAnnotation, stampAnnotations: newlyImportAnnotation[i].stampAnnotations,\n // eslint-disable-next-line max-len\n stickyNotesAnnotation: newlyImportAnnotation[i].stickyNotesAnnotation, freeTextAnnotation: newlyImportAnnotation[i].freeTextAnnotation,\n signatureInkAnnotation: newlyImportAnnotation[i].signatureInkAnnotation\n };\n excistingImportAnnotation[i] = annotation;\n }\n }\n }\n return excistingImportAnnotation;\n };\n /**\n * @private\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.updateExportItem = function () {\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n // eslint-disable-next-line\n var measureObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n var isSignatureEditable = false;\n // eslint-disable-next-line\n var inkAnnotationObjct = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n if (this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line\n var signatureObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n if (signatureObject) {\n isSignatureEditable = true;\n }\n }\n // eslint-disable-next-line max-len\n if (shapeObject || measureObject || stampObject || stickyObject || textMarkupObject || freeTextObject || this.isImportAction || this.isStorageExceed || isSignatureEditable || inkAnnotationObjct) {\n return true;\n }\n else {\n return false;\n }\n };\n PdfViewerBase.prototype.isFreeTextAnnotation = function (annotations) {\n var resut = false;\n if (annotations && annotations.length > 0) {\n resut = annotations.some(function (s) { return s.shapeAnnotationType === 'FreeText' && s.subject === 'Text Box'; });\n }\n return resut;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkImportedData = function (existingCollection, newCollection, pageIndex) {\n for (var i = 0; i < existingCollection.length; i++) {\n for (var j = 0; j < newCollection.length; j++) {\n if (existingCollection[i].AnnotName === newCollection[j].AnnotName) {\n newCollection.splice(j, 1);\n j = j - 1;\n }\n }\n }\n if (this.annotationComments) {\n // eslint-disable-next-line\n var annotationCollections = this.annotationComments[pageIndex];\n annotationCollections = this.selectAnnotationCollections(annotationCollections);\n if (annotationCollections) {\n for (var i = 0; i < annotationCollections.length; i++) {\n for (var j = 0; j < newCollection.length; j++) {\n if (annotationCollections[i].AnnotName === newCollection[j].AnnotName) {\n newCollection.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n }\n return newCollection;\n };\n /**\n * @param points\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkAnnotationWidth = function (points) {\n var width = 0;\n var height = 0;\n var minWidth;\n var maxWidth;\n var minHeight;\n var maxHeight;\n for (var i = 0; i < points.length; i++) {\n if (!minWidth) {\n minWidth = points[i].x;\n maxWidth = points[i].x;\n minHeight = points[i].y;\n maxHeight = points[i].y;\n }\n else {\n if (minWidth > points[i].x) {\n minWidth = points[i].x;\n }\n else if (maxWidth < points[i].x) {\n maxWidth = points[i].x;\n }\n if (minHeight > points[i].y) {\n minHeight = points[i].y;\n }\n else if (maxHeight < points[i].y) {\n maxHeight = points[i].y;\n }\n }\n }\n width = maxWidth - minWidth;\n height = maxHeight - minHeight;\n return { width: width, height: height };\n };\n PdfViewerBase.prototype.deleteAnnotations = function () {\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotations = [];\n this.pdfViewer.zIndexTable = [];\n this.pdfViewer.annotationCollection = [];\n this.pdfViewer.signatureCollection = [];\n // eslint-disable-next-line\n var annotationCollection = this.createAnnotationsCollection();\n this.annotationComments = annotationCollection;\n this.documentAnnotationCollections = annotationCollection;\n this.annotationRenderredList = [];\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(this.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sticky');\n window.sessionStorage.removeItem(this.documentId + '_annotations_textMarkup');\n window.sessionStorage.removeItem(this.documentId + '_annotations_freetext');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sign');\n window.sessionStorage.removeItem(this.documentId + '_annotations_ink');\n for (var i = 0; i < this.pageCount; i++) {\n this.pdfViewer.annotationModule.renderAnnotations(i, null, null, null);\n this.pdfViewer.renderDrawing(undefined, i);\n this.pdfViewer.clearSelection(i);\n var accordionContent = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + (i + 1));\n if (accordionContent) {\n accordionContent.remove();\n }\n // eslint-disable-next-line max-len\n var accordionContentContainer = document.getElementById(this.pdfViewer.element.id + '_accordionContentContainer');\n if (accordionContentContainer) {\n if (accordionContentContainer.childElementCount === 0) {\n accordionContentContainer.style.display = 'none';\n if (document.getElementById(this.pdfViewer.element.id + '_commentsPanelText')) {\n // eslint-disable-next-line max-len\n this.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], false);\n document.getElementById(this.pdfViewer.element.id + '_commentsPanelText').style.display = 'block';\n }\n }\n }\n }\n this.isImportedAnnotation = false;\n this.isImportAction = false;\n this.importedAnnotation = [];\n this.annotationPageList = [];\n this.pdfViewer.annotationModule.freeTextAnnotationModule.freeTextPageNumbers = [];\n this.pdfViewer.annotationModule.stampAnnotationModule.stampPageNumber = [];\n this.pdfViewer.annotation.inkAnnotationModule.inkAnnotationindex = [];\n this.isAnnotationCollectionRemoved = true;\n }\n };\n /**\n * @param pageNumber\n * @param isObject\n * @param pageNumber\n * @param isObject\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createAnnotationsCollection = function (pageNumber, isObject) {\n // eslint-disable-next-line\n var annotationCollectionList = [];\n if (!isObject) {\n for (var i = 0; i < this.pageCount; i++) {\n var annotation = {\n // eslint-disable-next-line max-len\n textMarkupAnnotation: [], shapeAnnotation: [], measureShapeAnnotation: [], stampAnnotations: [], stickyNotesAnnotation: [], freeTextAnnotation: [], signatureAnnotation: [], signatureInkAnnotation: []\n };\n annotationCollectionList.push(annotation);\n }\n }\n else {\n annotationCollectionList = {};\n var annotation = {\n // eslint-disable-next-line max-len\n textMarkupAnnotation: [], shapeAnnotation: [], measureShapeAnnotation: [], stampAnnotations: [], stickyNotesAnnotation: [], freeTextAnnotation: [], signatureAnnotation: [], signatureInkAnnotation: []\n };\n annotationCollectionList[pageNumber] = annotation;\n }\n return annotationCollectionList;\n };\n /**\n * @param importAnnotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.addAnnotation = function (importAnnotation) {\n // eslint-disable-next-line\n var pdfAnnotation = {};\n // eslint-disable-next-line\n var documentCollections;\n if (importAnnotation) {\n var isAnnotationObject = false;\n var annotationCount = 1;\n if (importAnnotation.shapeAnnotationType || importAnnotation.author) {\n isAnnotationObject = true;\n documentCollections = this.createAnnotationsCollection(importAnnotation.pageNumber, true);\n }\n else {\n if (importAnnotation.length) {\n annotationCount = importAnnotation.length;\n documentCollections = this.createAnnotationsCollection();\n }\n else {\n isAnnotationObject = true;\n documentCollections = this.createAnnotationsCollection(importAnnotation.pageNumber, true);\n }\n }\n for (var a = 0; a < annotationCount; a++) {\n // eslint-disable-next-line\n var annotation = void 0;\n if (isAnnotationObject) {\n annotation = importAnnotation;\n }\n else {\n annotation = importAnnotation[a];\n }\n // eslint-disable-next-line\n var newAnnotation = {};\n newAnnotation.ShapeAnnotationType = annotation.shapeAnnotationType;\n newAnnotation.AnnotationAddMode = annotation.annotationAddMode;\n newAnnotation.Author = annotation.author;\n newAnnotation.AnnotationSelectorSettings = annotation.annotationSelectorSettings;\n newAnnotation.AnnotationSettings = annotation.annotationSettings;\n newAnnotation.PageNumber = annotation.pageNumber;\n newAnnotation.ModifiedDate = annotation.modifiedDate;\n newAnnotation.Subject = annotation.subject;\n newAnnotation.Note = annotation.note;\n newAnnotation.AnnotName = annotation.annotationId;\n newAnnotation.IsCommentLock = annotation.isCommentLock;\n newAnnotation.Comments = annotation.comments;\n if (annotation.comments && annotation.comments.length > 0) {\n // eslint-disable-next-line\n var comments = [];\n for (var i = 0; i < annotation.comments.length; i++) {\n comments.push(this.updateComments(annotation, annotation.comments[i]));\n }\n newAnnotation.Comments = comments;\n }\n if (annotation.review) {\n newAnnotation.State = annotation.review.state;\n newAnnotation.StateModel = annotation.review.stateModel;\n }\n newAnnotation.CustomData = annotation.customData;\n newAnnotation.Opacity = annotation.opacity;\n if (annotation.shapeAnnotationType === 'textMarkup') {\n newAnnotation.AnnotType = 'textMarkup';\n newAnnotation.Color = annotation.color;\n newAnnotation.IsMultiSelect = annotation.isMultiSelect;\n newAnnotation.TextMarkupAnnotationType = annotation.textMarkupAnnotationType;\n newAnnotation.TextMarkupContent = annotation.textMarkupContent;\n newAnnotation.TextMarkupStartIndex = annotation.textMarkupStartIndex;\n newAnnotation.TextMarkupEndIndex = annotation.textMarkupEndIndex;\n if (annotation.rect) {\n newAnnotation.Rect = this.convertBounds(annotation.rect, true);\n }\n if (annotation.bounds && annotation.bounds.length >= 1) {\n // eslint-disable-next-line\n var bounds = new Array();\n for (var i = 0; i < annotation.bounds.length; i++) {\n bounds.push(this.convertBounds(annotation.bounds[i]));\n }\n newAnnotation.Bounds = bounds;\n }\n documentCollections[annotation.pageNumber].textMarkupAnnotation.push(newAnnotation);\n }\n else if (annotation.shapeAnnotationType === 'sticky') {\n newAnnotation.AnnotType = 'sticky';\n newAnnotation.Icon = 'Comment';\n newAnnotation.Bounds = this.convertBounds(annotation.bounds);\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.Color = annotation.color;\n documentCollections[annotation.pageNumber].stickyNotesAnnotation.push(newAnnotation);\n }\n else if (annotation.shapeAnnotationType === 'FreeText') {\n newAnnotation.AnnotType = 'freeText';\n newAnnotation.Name = annotation.annotationId;\n newAnnotation.MarkupText = annotation.dynamicText;\n newAnnotation.Text = annotation.dynamicText;\n newAnnotation.Note = annotation.dynamicText;\n newAnnotation.TextAlign = annotation.textAlign;\n newAnnotation.Thickness = annotation.thicknes;\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.FillColor = annotation.fillColor;\n newAnnotation.FontColor = annotation.fontColor;\n newAnnotation.FontSize = annotation.fontSize;\n newAnnotation.FontFamily = annotation.fontFamily;\n newAnnotation.Rotate = annotation.rotateAngle;\n newAnnotation.Bounds = this.convertBounds(annotation.bounds);\n // eslint-disable-next-line max-len\n newAnnotation.Font = { 'Name': annotation.fontFamily, 'Size': annotation.fontSize, 'Bold': annotation.font.isBold, 'Italic': annotation.font.isItalic, 'Strikeout': annotation.font.isStrikeout, 'Underline': annotation.font.isUnderline };\n documentCollections[annotation.pageNumber].freeTextAnnotation.push(newAnnotation);\n }\n else if (annotation.shapeAnnotationType === 'stamp') {\n newAnnotation.AnnotType = 'stamp';\n newAnnotation.Icon = annotation.icon;\n newAnnotation.isDynamic = false;\n newAnnotation.Rect = this.convertBounds(annotation.bounds, false, true);\n newAnnotation.RotateAngle = annotation.rotateAngle;\n newAnnotation.FillColor = annotation.fillColor;\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.StampAnnotationType = annotation.stampAnnotationType;\n newAnnotation.CreationDate = annotation.creationDate;\n if (annotation.stampAnnotationType === 'image') {\n // eslint-disable-next-line\n var apperarance = [];\n // eslint-disable-next-line\n var imageData = { 'imagedata': annotation.stampAnnotationPath };\n apperarance.push(imageData);\n newAnnotation.Apperarance = apperarance;\n }\n if (annotation.isDynamicStamp) {\n newAnnotation.IsDynamic = true;\n newAnnotation.StrokeColor = annotation.stampFillcolor;\n // eslint-disable-next-line\n var apperarance = [];\n // eslint-disable-next-line\n var imageData = { 'type': 'string', 'text': annotation.dynamicText, 'currentFontname': '95b303ab-d397-438a-83af-e2ff8a9900f1', 'baseFontName': 'Helvetica-BoldOblique', 'fontSize': 10, 'isImport': true };\n apperarance.push(imageData);\n newAnnotation.Apperarance = apperarance;\n }\n documentCollections[annotation.pageNumber].stampAnnotations.push(newAnnotation);\n }\n else if (annotation.shapeAnnotationType === 'Ink' || annotation.shapeAnnotationType === 'Signature') {\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.FillColor = annotation.fillColor;\n newAnnotation.Thickness = annotation.thickness;\n newAnnotation.Bounds = this.convertBounds(annotation.bounds);\n newAnnotation.PathData = annotation.data;\n newAnnotation.pageIndex = annotation.pageNumber;\n if (annotation.shapeAnnotationType === 'Ink') {\n newAnnotation.AnnotType = 'Ink';\n newAnnotation.IsPathData = true;\n documentCollections[annotation.pageNumber].signatureInkAnnotation.push(newAnnotation);\n }\n if (annotation.shapeAnnotationType === 'Signature') {\n newAnnotation.AnnotType = 'Signature';\n newAnnotation.SignatureName = annotation.annotationId;\n newAnnotation.IsSignature = true;\n documentCollections[annotation.pageNumber].signatureAnnotation.push(newAnnotation);\n }\n }\n else {\n // eslint-disable-next-line max-len\n if (annotation.shapeAnnotationType === 'Line' || annotation.shapeAnnotationType === 'LineWidthArrowHead' || annotation.shapeAnnotationType === 'Polyline' || annotation.shapeAnnotationType === 'Polygon' || annotation.shapeAnnotationType === 'Polyline' || annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Oval' || annotation.shapeAnnotationType === 'Rectangle' || annotation.shapeAnnotationType === 'Square' || annotation.shapeAnnotationType === 'Ellipse') {\n newAnnotation.AnnotType = 'shape';\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.FillColor = annotation.fillColor;\n newAnnotation.Thickness = annotation.thickness;\n newAnnotation.BorderStyle = annotation.borderStyle;\n newAnnotation.BorderDashArray = annotation.borderDashArray;\n newAnnotation.RotateAngle = annotation.rotateAngle;\n newAnnotation.IsCloudShape = annotation.isCloudShape;\n newAnnotation.CloudIntensity = annotation.cloudIntensity;\n newAnnotation.RectangleDifference = annotation.rectangleDifference;\n newAnnotation.LineHeadStart = annotation.lineHeadStart;\n newAnnotation.LineHeadEnd = annotation.lineHeadEnd;\n newAnnotation.IsLocked = annotation.isLocked;\n newAnnotation.EnableShapeLabel = annotation.enableShapeLabel;\n newAnnotation.LabelContent = annotation.labelContent;\n newAnnotation.LabelFillColor = annotation.labelFillColor;\n newAnnotation.LabelBorderColor = annotation.labelBorderColor;\n newAnnotation.FontColor = annotation.fontColor;\n newAnnotation.FontSize = annotation.fontSize;\n newAnnotation.LabelBounds = this.convertBounds(annotation.labelBounds);\n newAnnotation.LabelSettings = annotation.labelSettings;\n newAnnotation.Bounds = this.convertBounds(annotation.bounds);\n newAnnotation.LeaderLength = annotation.leaderLength;\n newAnnotation.LeaderLineExtenstion = annotation.leaderLineExtension;\n if (annotation.vertexPoints && annotation.vertexPoints.length >= 1) {\n // eslint-disable-next-line\n var points = new Array();\n for (var i = 0; i < annotation.vertexPoints.length; i++) {\n points.push(this.convertVertexPoints(annotation.vertexPoints[i]));\n }\n newAnnotation.VertexPoints = points;\n }\n newAnnotation.EnableShapeLabel = annotation.enableShapeLabel;\n // eslint-disable-next-line max-len\n if (annotation.subject === 'Distance calculation' || annotation.subject === 'Perimeter calculation' || annotation.subject === 'Area calculation' || annotation.subject === 'Radius calculation' || annotation.subject === 'Volume calculation') {\n newAnnotation.AnnotType = 'shape_measure';\n // eslint-disable-next-line\n var calibrate = annotation.calibrate;\n if (calibrate) {\n // eslint-disable-next-line\n newAnnotation.Calibrate = {\n 'Ratio': calibrate.ratio, 'X': [{ 'Unit': calibrate.x[0].unit, 'ConversionFactor': calibrate.x[0].conversionFactor, 'FractionalType': calibrate.x[0].fractionalType, 'Denominator': calibrate.x[0].denominator, 'FormatDenominator': calibrate.x[0].formatDenominator }],\n // eslint-disable-next-line\n 'Distance': [{ 'Unit': calibrate.distance[0].unit, 'ConversionFactor': calibrate.distance[0].conversionFactor, 'FractionalType': calibrate.distance[0].fractionalType, 'Denominator': calibrate.distance[0].denominator, 'FormatDenominator': calibrate.distance[0].formatDenominator }],\n // eslint-disable-next-line\n 'Area': [{ 'Unit': calibrate.area[0].unit, 'ConversionFactor': calibrate.area[0].conversionFactor, 'FractionalType': calibrate.area[0].fractionalType, 'Denominator': calibrate.area[0].denominator, 'FormatDenominator': calibrate.area[0].formatDenominator }],\n // eslint-disable-next-line\n 'Angle': null, 'Volume': null, 'TargetUnitConversion': calibrate.targetUnitConversion, 'Depth': calibrate.depth\n };\n }\n newAnnotation.Indent = annotation.indent;\n newAnnotation.Caption = annotation.caption;\n newAnnotation.CaptionPosition = annotation.captionPosition;\n newAnnotation.LeaderLineExtension = annotation.leaderLineExtension;\n newAnnotation.LeaderLength = annotation.leaderLength;\n newAnnotation.LeaderLineOffset = annotation.leaderLineOffset;\n documentCollections[annotation.pageNumber].measureShapeAnnotation.push(newAnnotation);\n }\n else {\n documentCollections[annotation.pageNumber].shapeAnnotation.push(newAnnotation);\n }\n }\n }\n }\n pdfAnnotation.pdfAnnotation = documentCollections;\n this.pdfViewer.importAnnotation(pdfAnnotation);\n }\n };\n /**\n * @param bounds\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.convertBounds = function (bounds, isRect, isStamp) {\n if (bounds) {\n if (isRect) {\n var left = bounds.left ? bounds.left : bounds.Left ? bounds.Left : 0;\n var right = bounds.right ? bounds.right : bounds.Right ? bounds.Right : 0;\n var bottom = bounds.bottom ? bounds.bottom : bounds.Bottom ? bounds.Bottom : 0;\n var top_5 = bounds.top ? bounds.top : bounds.Top ? bounds.Top : 0;\n return { left: left, right: right, bottom: bottom, top: top_5 };\n }\n else {\n var x = bounds.x ? bounds.x : bounds.left ? bounds.left : bounds.Left ? bounds.Left : 0;\n var y = bounds.y ? bounds.y : bounds.top ? bounds.top : bounds.Top ? bounds.Top : 0;\n var width = bounds.width ? bounds.width : bounds.Width ? bounds.Width : 0;\n var height = bounds.height ? bounds.height : bounds.Height ? bounds.Height : 0;\n if (isStamp) {\n return { X: this.ConvertPixelToPoint(x), Y: this.ConvertPixelToPoint(y), Left: this.ConvertPixelToPoint(x), Top: this.ConvertPixelToPoint(y), Height: this.ConvertPixelToPoint(height), Width: this.ConvertPixelToPoint(width) };\n }\n else {\n return { X: x, Y: y, Left: x, Top: y, Height: height, Width: width };\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.ConvertPixelToPoint = function (number) {\n return (number * (72 / 96));\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.convertVertexPoints = function (points) {\n if (points) {\n var x = points.x ? points.x : points.X ? points.X : 0;\n var y = points.y ? points.y : points.Y ? points.Y : 0;\n return { X: x, Y: y, Left: x, Top: y };\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateComments = function (annotation, comments) {\n if (annotation && comments) {\n // eslint-disable-next-line\n var newAnnotation = {};\n newAnnotation.ShapeAnnotationType = annotation.shapeAnnotationType;\n newAnnotation.Author = comments.author;\n newAnnotation.AnnotationSelectorSettings = annotation.annotationSelectorSettings;\n newAnnotation.AnnotationSettings = annotation.annotationSettings;\n newAnnotation.PageNumber = annotation.pageNumber;\n newAnnotation.ModifiedDate = comments.modifiedDate;\n newAnnotation.Subject = annotation.subject;\n newAnnotation.Note = comments.note;\n newAnnotation.AnnotName = comments.annotName;\n newAnnotation.Comments = comments.comments;\n newAnnotation.State = comments.review.state;\n newAnnotation.StateModel = comments.review.stateModel;\n newAnnotation.CustomData = annotation.customData;\n newAnnotation.IsLock = comments.isLock;\n return newAnnotation;\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.removeFocus = function () {\n if (isBlazor()) {\n // eslint-disable-next-line\n var currentPageContainer = this.pdfViewer.element.querySelector('#' + this.pdfViewer.element.id + '_totalPage');\n // eslint-disable-next-line max-len\n if (currentPageContainer && currentPageContainer.firstElementChild && currentPageContainer.firstElementChild.firstElementChild) {\n currentPageContainer.firstElementChild.firstElementChild.blur();\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateDocumentEditedProperty = function (isEdited) {\n this.pdfViewer.allowServerDataBinding = true;\n this.pdfViewer.isDocumentEdited = isEdited;\n this.pdfViewer.allowServerDataBinding = false;\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.getWindowDevicePixelRatio = function () {\n var devicePixelRatio = window.devicePixelRatio;\n if (!Browser.isDevice) {\n return devicePixelRatio;\n }\n else {\n return devicePixelRatio = 2;\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.getZoomRatio = function (zoom) {\n var zoomFactor = this.getZoomFactor();\n var zoomValue = zoom ? zoom : 1;\n var ratio;\n var devicePixelRatio = this.getWindowDevicePixelRatio();\n if (!Browser.isDevice || (Browser.isDevice && zoomFactor <= 0.7)) {\n ratio = zoomValue * devicePixelRatio;\n }\n else {\n ratio = zoomValue;\n }\n return ratio;\n };\n return PdfViewerBase;\n}());\nexport { PdfViewerBase };\n","import { Browser, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { splitArrayCollection, processPathData, cornersPointsBeforeRotation } from '@syncfusion/ej2-drawings';\n/**\n * The `FormFields` module is to render formfields in the PDF document.\n *\n * @hidden\n */\nvar FormFields = /** @class */ (function () {\n /**\n * @param viewer\n * @param base\n * @param viewer\n * @param base\n * @private\n */\n function FormFields(viewer, base) {\n // eslint-disable-next-line\n this.maintainTabIndex = {};\n // eslint-disable-next-line\n this.maintanMinTabindex = {};\n this.isSignatureField = false;\n this.isKeyDownCheck = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.readOnlyCollection = [];\n this.isSignatureRendered = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.signatureFieldCollection = [];\n this.selectedIndex = [];\n this.pdfViewer = viewer;\n this.pdfViewerBase = base;\n }\n /**\n * @param pageIndex\n * @private\n */\n FormFields.prototype.renderFormFields = function (pageIndex) {\n this.maxTabIndex = 0;\n this.minTabIndex = -1;\n // eslint-disable-next-line\n this.data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (this.data) {\n // eslint-disable-next-line\n this.formFieldsData = JSON.parse(this.data);\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n var canvasElement = document.getElementById(this.pdfViewer.element.id + '_pageCanvas_' + pageIndex);\n if (this.formFieldsData !== null && canvasElement !== null && textLayer !== null) {\n for (var i = 0; i < this.formFieldsData.length; i++) {\n // eslint-disable-next-line\n var currentData = this.formFieldsData[i];\n if (currentData.FieldName !== '') {\n if (currentData.IsInitialField) {\n currentData.Name = 'InitialField';\n }\n // eslint-disable-next-line\n var font = currentData['Font'];\n if (this.pdfViewer.formDesigner) {\n if (parseFloat(currentData['PageIndex']) == pageIndex) {\n var fontFamily = void 0;\n var fontStyle = void 0;\n var fontSize = void 0;\n if (font !== null && font.Height) {\n fontFamily = font.Name;\n if (font.Italic) {\n fontStyle = 'Italic';\n }\n if (font.Bold) {\n fontStyle = 'Bold';\n }\n if (font.Strikeout) {\n fontStyle = 'Strikethrough';\n }\n if (font.Underline) {\n fontStyle = 'Underline';\n }\n fontSize = this.ConvertPointToPixel(font.Size);\n }\n var textAlignment = currentData.Alignment === 2 ? 'right' : (currentData.Alignment === 1 ? 'center' : 'left');\n var backgroundColor = currentData['BackColor'];\n var bounds = currentData['LineBounds'];\n var backColor = 'rgba(' + backgroundColor.R + ',' + backgroundColor.G + ',' + backgroundColor.B + ',' + 1 + ')';\n if (currentData.IsTransparent === true) {\n backColor = \"rgba(0,0,0,0)\";\n }\n backColor = this.rgbaToHex(backColor);\n // set default color if field have black color as bg.\n if (backColor === '#000000ff') {\n backColor = '#daeaf7ff';\n }\n // eslint-disable-next-line\n var fontColor = currentData['FontColor'];\n var left = this.ConvertPointToPixel(bounds.X);\n var top_1 = this.ConvertPointToPixel(bounds.Y);\n var width = this.ConvertPointToPixel(bounds.Width);\n var height = this.ConvertPointToPixel(bounds.Height);\n var boundArray = { left: left, top: top_1, width: width, height: height };\n boundArray = this.getBounds(boundArray, pageIndex);\n var foreColor = 'rgba(' + fontColor.R + ',' + fontColor.G + ',' + fontColor.B + ',' + 1 + ')';\n foreColor = this.rgbaToHex(foreColor);\n var borderColor = currentData['BorderColor'];\n var borderRGB = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 1 + ')';\n borderRGB = this.rgbaToHex(borderRGB);\n var borderWidth = currentData['BorderWidth'];\n this.selectedIndex = [];\n var fieldProperties = {\n bounds: { X: boundArray.left, Y: boundArray.top, Width: boundArray.width, Height: boundArray.height }, pageNumber: parseFloat(currentData['PageIndex']) + 1, name: currentData['ActualFieldName'], tooltip: currentData['ToolTip'],\n value: currentData['Text'], isChecked: currentData['Selected'], isSelected: currentData['Selected'], fontFamily: fontFamily, fontStyle: fontStyle, backgroundColor: backColor, color: foreColor, borderColor: borderRGB, thickness: borderWidth, fontSize: fontSize, isMultiline: currentData.Multiline,\n isReadOnly: currentData['IsReadonly'], isRequired: currentData['IsRequired'], alignment: textAlignment, options: this.getListValues(currentData), selectedIndex: this.selectedIndex, maxLength: currentData.MaxLength, visibility: currentData.Visible === 1 ? \"hidden\" : \"visible\", font: { isItalic: !isNullOrUndefined(font) ? font.Italic : false, isBold: !isNullOrUndefined(font) ? font.Bold : false, isStrikeout: !isNullOrUndefined(font) ? font.Strikeout : false, isUnderline: !isNullOrUndefined(font) ? font.Underline : false }\n };\n if (!currentData.id && this.pdfViewer.formFieldCollections[i] && this.pdfViewer.formFieldCollections[i].name === currentData['ActualFieldName']) {\n fieldProperties.id = this.pdfViewer.formFieldCollections[i].id;\n }\n if (currentData.Name === 'DropDown' || currentData.Name === 'ListBox') {\n fieldProperties.value = currentData['SelectedValue'];\n }\n // eslint-disable-next-line\n var fieldType = this.getFormFieldType(currentData);\n if (currentData.Name !== 'SignatureText' || currentData.Name !== 'SignatureImage') {\n if (!isNullOrUndefined(this.getFormFieldType(currentData))) {\n if (currentData.IsRequired) {\n var thickness = fieldProperties.thickness;\n thickness = thickness > 0 ? thickness : 1;\n fieldProperties.thickness = thickness;\n }\n var addedElement1 = this.pdfViewer.formDesignerModule.addFormField(fieldType, fieldProperties, false, fieldProperties.id);\n if (addedElement1 && addedElement1.parentElement) {\n currentData.id = addedElement1.parentElement.id.split('_')[0];\n }\n if (addedElement1.style.visibility === \"hidden\") {\n addedElement1.childNodes[0].disabled = true;\n }\n }\n }\n if (fieldType === 'SignatureField' || fieldType === 'InitialField') {\n this.addSignaturePath(currentData);\n if (!isNullOrUndefined(currentData.Value)) {\n this.renderExistingAnnnot(currentData, parseFloat(currentData['PageIndex']) + 1, null);\n this.isSignatureRendered = true;\n }\n }\n this.pdfViewerBase.isLoadedFormFieldAdded = true;\n }\n }\n else {\n // eslint-disable-next-line\n if (parseFloat(currentData['PageIndex']) == pageIndex) {\n // eslint-disable-next-line\n var inputField = this.createFormFields(currentData, pageIndex, i);\n if (inputField) {\n // eslint-disable-next-line\n var divElement = this.createParentElement(currentData, pageIndex);\n // eslint-disable-next-line\n var bounds = currentData['LineBounds'];\n // eslint-disable-next-line\n var font_1 = currentData['Font'];\n // eslint-disable-next-line\n // eslint-disable-next-line\n this.applyPosition(inputField, bounds, font_1, pageIndex, currentData['Rotation']);\n inputField.InsertSpaces = currentData.InsertSpaces;\n if (inputField.InsertSpaces) {\n var browserUserAgent = navigator.userAgent;\n // eslint-disable-next-line\n var font_2 = ((parseInt(inputField.style.width) / inputField.maxLength) - (parseFloat(inputField.style.fontSize) / 2)) - 0.5;\n if ((browserUserAgent.indexOf('Firefox')) !== -1) {\n font_2 = ((parseInt(inputField.style.width) / inputField.maxLength) - (parseFloat(inputField.style.fontSize) / 2)) - 1.2;\n }\n // eslint-disable-next-line\n inputField.style.letterSpacing = '' + font_2 + 'px';\n inputField.style.fontFamily = 'monospace';\n }\n // eslint-disable-next-line\n currentData['uniqueID'] = this.pdfViewer.element.id + 'input_' + pageIndex + '_' + i;\n for (var j = 0; j < this.pdfViewer.formFieldCollections.length; j++) {\n if ((inputField.type === 'text' || inputField.type === 'password' || inputField.type === 'textarea') && currentData.Name !== 'SignatureField') {\n if (currentData['uniqueID'] === this.pdfViewer.formFieldCollections[j].id) {\n this.pdfViewer.formFieldCollections[j].value = currentData['Text'];\n }\n }\n }\n this.applyCommonProperties(inputField, pageIndex, i, currentData);\n this.checkIsReadonly(currentData, inputField);\n this.applyTabIndex(currentData, inputField, pageIndex);\n this.checkIsRequiredField(currentData, inputField);\n this.applyDefaultColor(inputField);\n // eslint-disable-next-line\n if (currentData['Rotation'] === 0) {\n var rotationAngle = this.getAngle(pageIndex);\n if (divElement) {\n divElement.style.transform = 'rotate(' + rotationAngle + 'deg)';\n }\n else {\n inputField.style.transform = 'rotate(' + rotationAngle + 'deg)';\n }\n }\n if (divElement) {\n divElement.appendChild(inputField);\n textLayer.appendChild(divElement);\n }\n else {\n inputField.style.position = 'absolute';\n textLayer.appendChild(inputField);\n }\n inputField.addEventListener('focus', this.focusFormFields.bind(this));\n inputField.addEventListener('blur', this.blurFormFields.bind(this));\n inputField.addEventListener('click', this.updateFormFields.bind(this));\n inputField.addEventListener('change', this.changeFormFields.bind(this));\n inputField.addEventListener('keydown', this.updateFormFieldsValue.bind(this));\n inputField.addEventListener('keyup', this.updateSameFieldsValue.bind(this));\n }\n }\n }\n }\n }\n if (!this.pdfViewer.formDesigner) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_formfields');\n this.pdfViewerBase.setItemInSessionStorage(this.formFieldsData, '_formfields');\n }\n }\n }\n if (this.pdfViewerBase.isFocusField && this.pdfViewerBase.focusField) {\n var currentField = document.getElementById(this.pdfViewerBase.focusField.id);\n if (currentField) {\n if ((this.pdfViewerBase.focusField.type === \"SignatureField\" || this.pdfViewerBase.focusField.type === \"InitialField\") && this.pdfViewer.formDesignerModule) {\n var y = this.pdfViewerBase.focusField.bounds.y;\n var height = this.pdfViewerBase.getPageHeight(this.pdfViewerBase.focusField.pageIndex);\n this.pdfViewer.bookmark.goToBookmark(this.pdfViewerBase.focusField.pageIndex, height - y);\n }\n else {\n currentField.focus();\n }\n this.pdfViewerBase.isFocusField = false;\n this.pdfViewerBase.focusField = [];\n }\n }\n };\n FormFields.prototype.trim = function (str) {\n return str.replace(/^\\s+|\\s+$/gm, '');\n };\n FormFields.prototype.rgbaToHex = function (rgba) {\n var inParts = rgba.substring(rgba.indexOf(\"(\")).split(\",\");\n var r = parseInt(this.trim(inParts[0].substring(1)), 10);\n var g = parseInt(this.trim(inParts[1]), 10);\n var b = parseInt(this.trim(inParts[2]), 10);\n var a = parseFloat(parseFloat(this.trim(inParts[3].substring(0, inParts[3].length - 1))).toFixed(2));\n var outParts = [\n r.toString(16),\n g.toString(16),\n b.toString(16),\n Math.round(a * 255).toString(16).substring(0, 2)\n ];\n // Pad single-digit output values\n outParts.forEach(function (part, i) {\n if (part.length === 1) {\n outParts[i] = '0' + part;\n }\n });\n return ('#' + outParts.join(''));\n };\n FormFields.prototype.getListValues = function (currentData) {\n var listItem = currentData['TextList'];\n var options = [];\n for (var i = 0; i < listItem.length; i++) {\n if (listItem[i] === currentData['SelectedValue'])\n this.selectedIndex.push(i);\n options.push({ itemName: listItem[i], itemValue: listItem[i] });\n }\n if (this.getFormFieldType(currentData) === 'ListBox') {\n this.selectedIndex = currentData['SelectedList'];\n }\n return options;\n };\n // eslint-disable-next-line\n FormFields.prototype.createParentElement = function (data, pageIndex) {\n // eslint-disable-next-line\n var divElement;\n // eslint-disable-next-line\n if (data['Name'] === 'Textbox' || data['Name'] === 'Password') {\n divElement = document.createElement('div');\n divElement.style.background = 'white';\n if (data.InsertSpaces) {\n divElement.style.background = 'transparent';\n }\n // eslint-disable-next-line\n var bounds = data['LineBounds'];\n // eslint-disable-next-line\n var font = data['Font'];\n // eslint-disable-next-line\n divElement.style.position = 'absolute';\n // eslint-disable-next-line\n this.applyPosition(divElement, bounds, font, pageIndex, data['Rotation']);\n }\n return divElement;\n };\n /**\n * @private\n */\n FormFields.prototype.getAngle = function (pageIndex) {\n // eslint-disable-next-line\n var angle = 0;\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails && pageDetails.rotation) {\n switch (pageDetails.rotation) {\n case 0:\n angle = 0;\n break;\n case 1:\n angle = 90;\n break;\n case 2:\n angle = 180;\n break;\n case 3:\n angle = 270;\n break;\n }\n }\n return angle;\n };\n FormFields.prototype.nextField = function () {\n this.signatureFieldNavigate(true);\n };\n FormFields.prototype.previousField = function () {\n this.signatureFieldNavigate(false);\n };\n FormFields.prototype.signatureFieldNavigate = function (nextSign) {\n var isNextSignField = nextSign;\n // eslint-disable-next-line\n var signatureFields = this.signatureFieldCollection;\n if (signatureFields.length === 0) {\n signatureFields = this.getSignField();\n }\n // eslint-disable-next-line\n var currentField;\n if (this.currentTarget) {\n for (var i = 0; i < signatureFields.length; i++) {\n currentField = this.pdfViewer.formDesignerModule ? signatureFields[i].FormField : signatureFields[i];\n if (this.currentTarget.id === currentField.uniqueID) {\n this.currentTarget = document.getElementById(currentField.uniqueID);\n this.getSignatureIndex(i, signatureFields.length, isNextSignField);\n break;\n }\n }\n }\n else {\n if (nextSign) {\n currentField = this.pdfViewer.formDesignerModule ? signatureFields[0].FormField : signatureFields[0];\n if (currentField.uniqueID) {\n this.currentTarget = document.getElementById(currentField.uniqueID);\n this.getSignatureIndex(0, signatureFields.length, isNextSignField, true);\n }\n }\n }\n };\n FormFields.prototype.getSignatureIndex = function (currentSignatureIndex, signatureCount, isNextSign, isFirstNavigate) {\n var signatureIndex = currentSignatureIndex;\n if (!isFirstNavigate) {\n if (isNextSign) {\n signatureIndex++;\n }\n else {\n signatureIndex--;\n }\n }\n if (signatureCount === 1) {\n this.renderSignatureField(0);\n }\n else {\n if (signatureIndex < signatureCount && signatureIndex >= 0) {\n this.renderSignatureField(signatureIndex);\n }\n else {\n if (isNextSign) {\n if (signatureIndex >= signatureCount) {\n this.renderSignatureField(0);\n }\n }\n else {\n if (signatureIndex <= 0) {\n this.renderSignatureField(signatureCount - 1);\n }\n }\n }\n }\n };\n FormFields.prototype.renderSignatureField = function (currentSignIndex) {\n var curSignIndex = currentSignIndex;\n // eslint-disable-next-line\n var signatureFields = this.signatureFieldCollection;\n // eslint-disable-next-line\n var currentField;\n if (curSignIndex < signatureFields.length) {\n for (var i = 0; i < signatureFields.length; i++) {\n var curSignIndexId = this.pdfViewer.formDesignerModule ? signatureFields[curSignIndex].FormField.uniqueID : signatureFields[curSignIndex].uniqueID;\n var signatureFieldData = this.pdfViewer.formDesignerModule ? signatureFields[i].FormField : signatureFields[i];\n if (curSignIndexId === signatureFieldData.uniqueID) {\n var pageIndex = signatureFieldData.PageIndex >= 0 ? signatureFieldData.PageIndex : signatureFieldData.pageNumber;\n var isRender = this.pdfViewer.annotationModule.findRenderPageList(pageIndex);\n if (!isRender) {\n this.pdfViewer.navigation.goToPage(pageIndex);\n }\n this.currentTarget = document.getElementById(signatureFieldData.uniqueID);\n currentField = signatureFieldData;\n break;\n }\n }\n if (this.currentTarget === null) {\n var pageIndex = currentField.PageIndex >= 0 ? currentField.PageIndex : currentField.pageNumber;\n this.pdfViewer.navigation.goToPage(pageIndex);\n this.currentTarget = document.getElementById(currentField.uniqueID);\n }\n if (this.currentTarget) {\n if (this.currentTarget.className === 'e-pdfviewer-signatureformfields-signature') {\n document.getElementById(this.currentTarget.id).focus();\n this.pdfViewer.select([this.currentTarget.id], null);\n }\n else if (this.currentTarget.className === 'e-pdfviewer-signatureformfields') {\n if (this.pdfViewer.formDesignerModule) {\n document.getElementById(this.currentTarget.id).parentElement.focus();\n }\n else {\n document.getElementById(this.currentTarget.id).focus();\n }\n }\n }\n }\n };\n /**\n * @private\n */\n FormFields.prototype.setFocus = function (id) {\n if (!id) {\n if (this.currentTarget) {\n document.getElementById(this.currentTarget.id).focus();\n }\n }\n else {\n this.removeFocus();\n var signatureElement = document.getElementById(id);\n signatureElement.classList.add('e-pv-signature-focus');\n }\n };\n /**\n * @private\n */\n FormFields.prototype.removeFocus = function () {\n if (this.signatureFieldCollection) {\n // eslint-disable-next-line\n var signatureFields = this.signatureFieldCollection;\n if (signatureFields.length === 0) {\n signatureFields = this.getSignField();\n }\n for (var i = 0; i < this.signatureFieldCollection.length; i++) {\n var signatureFieldId = this.pdfViewer.formDesignerModule ? this.signatureFieldCollection[i].FormField.uniqueID : this.signatureFieldCollection[i].uniqueID;\n var signatureElement = document.getElementById(signatureFieldId);\n if (signatureElement) {\n signatureElement.classList.remove('e-pv-signature-focus');\n }\n }\n if (this.pdfViewer.formFieldsModule.currentTarget) {\n this.pdfViewer.formFieldsModule.currentTarget.classList.remove('e-pv-signature-focus');\n }\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.getSignField = function () {\n if (this.pdfViewer.formDesignerModule) {\n this.signatureFieldCollection =\n this.pdfViewer.formDesignerModule.getFormDesignerSignField(this.signatureFieldCollection);\n }\n else {\n this.signatureFieldCollection = this.getFormFieldSignField();\n }\n return this.signatureFieldCollection;\n };\n FormFields.prototype.getFormFieldSignField = function () {\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n // eslint-disable-next-line\n var currentData;\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n currentData = formFieldsData[i];\n if (currentData.Name === 'SignatureField') {\n // eslint-disable-next-line\n currentData['uniqueID'] = this.pdfViewer.element.id + 'input_' + currentData.PageIndex + '_' + i;\n this.signatureFieldCollection.push(formFieldsData[i]);\n }\n }\n }\n return this.signatureFieldCollection;\n };\n /**\n * @private\n */\n FormFields.prototype.formFieldCollections = function () {\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[i];\n // eslint-disable-next-line\n var type = currentData['Name'];\n if (this.pdfViewer.formDesignerModule) {\n if (currentData.Name !== 'ink' && currentData.Name !== 'SignatureImage' && currentData.Name !== 'SignatureText') {\n this.retreiveFormFieldsData(currentData, true);\n }\n }\n else {\n if (currentData.Name !== 'ink') {\n // eslint-disable-next-line\n var formFieldCollection = { name: this.retriveFieldName(currentData), id: this.pdfViewer.element.id + 'input_' + parseFloat(currentData['PageIndex']) + '_' + i, isReadOnly: false, type: currentData.IsInitialField ? 'InitialField' : type, value: this.retriveCurrentValue(currentData), fontName: '', isRequired: currentData.IsRequired };\n this.pdfViewer.formFieldCollections.push(formFieldCollection);\n }\n }\n }\n }\n };\n FormFields.prototype.retreiveFormFieldsData = function (currentData, isCollection) {\n var fontFamily;\n var fontStyle;\n var fontSize;\n if (currentData.FieldName !== '') {\n if (currentData.IsInitialField) {\n currentData.Name = 'InitialField';\n }\n // eslint-disable-next-line\n var font = currentData['Font'];\n if (font !== null && font.Height) {\n fontFamily = font.Name;\n if (font.Italic) {\n fontStyle = 'Italic';\n }\n if (font.Bold) {\n fontStyle = 'Bold';\n }\n if (font.Strikeout) {\n fontStyle = 'Strikethrough';\n }\n if (font.Underline) {\n fontStyle = 'Underline';\n }\n fontSize = this.ConvertPointToPixel(font.Size);\n }\n var textAlignment = currentData.Alignment === 2 ? 'right' : (currentData.Alignment === 1 ? 'center' : 'left');\n var backgroundColor = currentData['BackColor'];\n var bounds = currentData['LineBounds'];\n var backColor = 'rgba(' + backgroundColor.R + ',' + backgroundColor.G + ',' + backgroundColor.B + ',' + 1 + ')';\n backColor = this.rgbaToHex(backColor);\n // set default color if field have black color as bg.\n if (backColor === '#000000ff') {\n backColor = '#daeaf7ff';\n }\n // eslint-disable-next-line\n var fontColor = currentData['FontColor'];\n var left = this.ConvertPointToPixel(bounds.X);\n var top_2 = this.ConvertPointToPixel(bounds.Y);\n var width = this.ConvertPointToPixel(bounds.Width);\n var height = this.ConvertPointToPixel(bounds.Height);\n var boundArray = { left: left, top: top_2, width: width, height: height };\n var foreColor = 'rgba(' + fontColor.R + ',' + fontColor.G + ',' + fontColor.B + ',' + 1 + ')';\n foreColor = this.rgbaToHex(foreColor);\n var borderColor = currentData['BorderColor'];\n var borderRGB = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 1 + ')';\n borderRGB = this.rgbaToHex(borderRGB);\n var borderWidth = currentData['BorderWidth'];\n this.selectedIndex = [];\n var fieldProperties = {\n bounds: { X: boundArray.left, Y: boundArray.top, Width: boundArray.width, Height: boundArray.height }, pageNumber: parseFloat(currentData['PageIndex']) + 1, name: currentData['ActualFieldName'], tooltip: currentData['ToolTip'],\n value: currentData['Text'], isChecked: currentData['Selected'], isSelected: currentData['Selected'], fontFamily: fontFamily, fontStyle: fontStyle, backgroundColor: backColor, color: foreColor, borderColor: borderRGB, thickness: borderWidth, fontSize: fontSize, isMultiline: currentData.Multiline,\n isReadOnly: currentData['IsReadonly'], isRequired: currentData['IsRequired'], alignment: textAlignment, options: this.getListValues(currentData), selectedIndex: this.selectedIndex, maxLength: currentData.MaxLength, visibility: currentData.Visible === 1 ? \"hidden\" : \"visible\", font: { isItalic: !isNullOrUndefined(font) ? font.Italic : false, isBold: !isNullOrUndefined(font) ? font.Bold : false, isStrikeout: !isNullOrUndefined(font) ? font.Strikeout : false, isUnderline: !isNullOrUndefined(font) ? font.Underline : false }\n };\n if (currentData.Name === 'DropDown' || currentData.Name === 'ListBox') {\n fieldProperties.value = currentData['SelectedValue'];\n }\n // eslint-disable-next-line\n var fieldType = this.getFormFieldType(currentData);\n if (fieldType === 'SignatureField' || fieldType === 'InitialField') {\n this.addSignaturePath(currentData);\n if (this.isSignatureField) {\n fieldProperties.value = currentData.Value;\n }\n }\n var addedElement = this.pdfViewer.formDesignerModule.addFormField(fieldType, fieldProperties, isCollection);\n return addedElement;\n }\n return null;\n };\n FormFields.prototype.updateFormFieldsCollection = function (formField) {\n var type = formField['Name'];\n var formFieldCollection = {\n name: this.retriveFieldName(formField), id: formField.uniqueID, isReadOnly: formField.IsReadonly, isRequired: formField.IsRequired, isSelected: type === 'CheckBox' ? false : formField.Selected,\n isChecked: type === 'RadioButton' ? false : formField.Selected, type: type, value: type === 'ListBox' || type === 'DropDown' ? formField.SelectedValue : formField.Value, fontName: formField.FontFamily ? formField.FontFamily : ''\n };\n this.pdfViewer.formFieldCollections[this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === formFieldCollection.id; })] = formFieldCollection;\n };\n // eslint-disable-next-line\n FormFields.prototype.updateFormFieldValues = function (formFields) {\n this.readOnlyCollection.push(formFields.id);\n if (formFields) {\n // eslint-disable-next-line\n var currentElement = document.getElementById(formFields.id);\n if (currentElement) {\n if (formFields.isReadOnly) {\n currentElement.disabled = true;\n currentElement.style.backgroundColor = '';\n currentElement.style.cursor = 'default';\n }\n else {\n if (currentElement.style.backgroundColor === '') {\n currentElement.style.backgroundColor = 'rgba(0, 20, 200, 0.2)';\n }\n currentElement.disabled = false;\n currentElement.style.cursor = '';\n }\n }\n this.updateDataInSession(currentElement);\n }\n };\n /**\n * @param currentData\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.retriveFieldName = function (currentData) {\n // eslint-disable-next-line\n var currentField;\n // eslint-disable-next-line\n switch (currentData['Name']) {\n case 'Textbox':\n case 'Password':\n case 'SignatureField':\n currentField = currentData.FieldName;\n break;\n case 'RadioButton':\n case 'CheckBox':\n currentField = currentData.GroupName;\n break;\n case 'DropDown':\n case 'ListBox':\n currentField = currentData.Text;\n break;\n }\n return currentField;\n };\n // eslint-disable-next-line\n FormFields.prototype.retriveCurrentValue = function (currentData) {\n // eslint-disable-next-line\n var currentField;\n // eslint-disable-next-line\n switch (currentData['Name']) {\n case 'Textbox':\n case 'Password':\n currentField = currentData.Text;\n break;\n case 'SignatureField':\n currentField = currentData.Value;\n break;\n case 'RadioButton':\n case 'CheckBox':\n currentField = currentData.Selected;\n break;\n case 'DropDown':\n currentField = currentData.SelectedValue;\n break;\n case 'ListBox':\n currentField = currentData.SelectedList;\n break;\n }\n return currentField;\n };\n // eslint-disable-next-line\n FormFields.prototype.getSignatureBounds = function (LineBounds, bounds, pageIndex) {\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n // eslint-disable-next-line\n var bound = 0;\n switch (pageDetails.rotation) {\n case 0:\n bound = bounds;\n break;\n case 1:\n bound = { x: bounds.x + LineBounds.Width + (bounds.width / 3.5), y: pageDetails.width - LineBounds.X + (bounds.height / 4) };\n break;\n case 2:\n bound = { x: pageDetails.width - bounds.x - bounds.width, y: pageDetails.height - bounds.y - bounds.height };\n break;\n case 3:\n bound = { x: bounds.y - (bounds.width / 2) + bounds.height, y: bounds.x + (bounds.width / 3) };\n break;\n }\n return bound;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.downloadFormFieldsData = function () {\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n // eslint-disable-next-line\n var datas = {};\n var fieldDatas = [];\n for (var m = 0; m < formFieldsData.length; m++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[m];\n var isRequired = currentData.IsRequired;\n if (currentData.Name === 'Textbox' || currentData.Name === 'Password' || currentData.Multiline) {\n if (isRequired && (currentData.Text === '' || currentData.Text === null)) {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.FieldName] = currentData.Text;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.FieldName]);\n }\n fieldDatas = { fieldValue: currentData.Text, isReadOnly: currentData.IsReadonly };\n datas[currentData.FieldName] = fieldDatas;\n }\n else if (currentData.Name === 'RadioButton' && currentData.Selected) {\n if (isRequired && currentData.Selected === false) {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.GroupName] = currentData.Value;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.GroupName]);\n }\n fieldDatas = { fieldValue: currentData.Value, isReadOnly: currentData.IsReadonly };\n datas[currentData.GroupName] = fieldDatas;\n }\n else if (currentData.Name === 'CheckBox') {\n if (isRequired && currentData.Selected === false) {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.GroupName] = currentData.Selected;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.GroupName]);\n }\n if (currentData.CheckboxIndex && currentData.Selected) {\n fieldDatas = { fieldValue: currentData.CheckboxIndex, isReadOnly: currentData.IsReadonly };\n datas[currentData.GroupName] = fieldDatas;\n }\n else if (datas[currentData.GroupName] === undefined || datas[currentData.GroupName] === null) {\n fieldDatas = { fieldValue: currentData.Selected, isReadOnly: currentData.IsReadonly };\n datas[currentData.GroupName] = fieldDatas;\n }\n }\n else if (currentData.Name === 'DropDown') {\n if (isRequired && currentData.SelectedValue === '') {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.Text] = currentData.SelectedValue;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.Text]);\n }\n fieldDatas = { fieldValue: currentData.SelectedValue, isReadOnly: currentData.IsReadonly };\n datas[currentData.Text] = fieldDatas;\n }\n else if (currentData.Name === 'ListBox') {\n // eslint-disable-next-line\n var childItems = currentData['TextList'];\n var childItemsText = [];\n for (var m_1 = 0; m_1 < currentData.SelectedList.length; m_1++) {\n // eslint-disable-next-line\n var currentElement = currentData.SelectedList[m_1];\n childItemsText.push(childItems[currentElement]);\n }\n fieldDatas = { fieldValue: JSON.stringify(childItemsText), isReadOnly: currentData.IsReadonly };\n datas[currentData.Text] = fieldDatas;\n }\n else if (currentData.Name === 'SignatureField' || currentData.Name === 'InitialField') {\n // eslint-disable-next-line\n var csData = void 0;\n if (currentData.Value === null || currentData.Value === '') {\n this.addSignaturePath(currentData);\n }\n if (currentData.Value && currentData.Value !== '') {\n csData = currentData.Value;\n var fontFamily = currentData.fontFamily ? currentData.fontFamily : currentData.FontFamily;\n if (fontFamily) {\n datas[currentData.FieldName + 'fontName'] = fontFamily;\n datas[currentData.FieldName + 'fontSize'] = currentData.fontSize ? currentData.fontSize : currentData.FontSize;\n }\n else if (currentData.Value.split('base64,')[1]) {\n datas[currentData.FieldName + 'ImageData'] = true;\n }\n else {\n // eslint-disable-next-line\n var collectionData = processPathData(currentData.Value);\n csData = splitArrayCollection(collectionData);\n }\n }\n if (isRequired && currentData.Value === null || currentData.Value === '') {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.FieldName] = JSON.stringify(csData);\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.FieldName]);\n }\n datas[currentData.FieldName] = JSON.stringify(csData);\n if (currentData.Bounds) {\n // eslint-disable-next-line\n var bounds = this.getSignatureBounds(currentData.LineBounds, currentData.Bounds, currentData.PageIndex);\n currentData.Bounds.x = bounds.x;\n currentData.Bounds.y = bounds.y;\n datas[currentData.FieldName + 'bounds'] = JSON.stringify(currentData.Bounds);\n }\n else {\n // eslint-disable-next-line\n var lineBounds = currentData.LineBounds;\n // eslint-disable-next-line\n var bounds = { x: this.ConvertPointToPixel(lineBounds.X), y: this.ConvertPointToPixel(lineBounds.Y), width: this.ConvertPointToPixel(lineBounds.Width), height: this.ConvertPointToPixel(lineBounds.Height) };\n datas[currentData.FieldName + 'bounds'] = JSON.stringify(bounds);\n }\n datas[currentData.FieldName + 'isReadOnly'] = currentData.IsReadonly;\n }\n }\n return (JSON.stringify(datas));\n }\n };\n FormFields.prototype.focusFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n // eslint-disable-next-line\n if (currentTarget && (currentTarget.className !== 'e-pdfviewer-signatureformfields' && currentTarget.className !== 'e-pdfviewer-signatureformfields e-pv-signature-focus')) {\n // eslint-disable-next-line\n var backgroundcolor = currentTarget.style.backgroundColor;\n // eslint-disable-next-line\n var currentIndex = backgroundcolor.lastIndexOf(',');\n // eslint-disable-next-line\n var currentColor = backgroundcolor.slice(0, currentIndex + 1) + 0 + ')';\n if (currentTarget.type === 'checkbox') {\n currentTarget.style.webkitAppearance = '';\n }\n currentTarget.style.backgroundColor = currentColor;\n }\n else if (currentTarget) {\n // eslint-disable-next-line\n if (currentTarget.className === 'e-pdfviewer-signatureformfields' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature' || currentTarget.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature e-pv-signature-focus') {\n this.setFocus(currentTarget.id);\n }\n }\n };\n FormFields.prototype.blurFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n if (currentTarget.InsertSpaces && this.isKeyDownCheck) {\n // eslint-disable-next-line\n var font = parseInt(currentTarget.style.width) - (parseInt(currentTarget.style.height) / 2);\n currentTarget.style.width = '' + font + 'px';\n this.isKeyDownCheck = false;\n }\n if (currentTarget.type === 'checkbox') {\n this.pdfViewer.fireFocusOutFormField(currentTarget.name, currentTarget.checked);\n }\n else {\n this.pdfViewer.fireFocusOutFormField(currentTarget.name, currentTarget.value);\n }\n // eslint-disable-next-line\n var backgroundcolor = currentTarget.style.backgroundColor;\n // eslint-disable-next-line\n var currentIndex = backgroundcolor.lastIndexOf(',');\n // eslint-disable-next-line\n var currentColor = backgroundcolor.slice(0, currentIndex + 1) + 0.2 + ')';\n if ((currentTarget.type === 'checkbox') && !currentTarget.checked) {\n currentTarget.style.webkitAppearance = 'none';\n }\n else {\n currentTarget.style.webkitAppearance = '';\n }\n currentTarget.style.backgroundColor = currentColor;\n };\n FormFields.prototype.updateFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n if (currentTarget.className === 'e-pdfviewer-ListBox') {\n currentTarget = currentTarget.parentElement;\n this.updateDataInSession(currentTarget);\n }\n else if (currentTarget.className === 'e-pdfviewer-signatureformfields' || currentTarget.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus') {\n this.currentTarget = currentTarget;\n }\n else if (currentTarget.className === 'e-pv-buttonItem' || currentTarget.type === 'button') {\n this.pdfViewer.fireButtonFieldClickEvent(currentTarget.value, currentTarget.name, currentTarget.id);\n }\n for (var m = 0; m < this.pdfViewer.formFieldCollections.length; m++) {\n if (currentTarget.id === this.pdfViewer.formFieldCollections[m].id) {\n if (this.pdfViewer.formDesignerModule || this.pdfViewer.annotationModule) {\n this.pdfViewer.fireFormFieldClickEvent('formFieldClicked', this.pdfViewer.formFieldCollections[m]);\n }\n // eslint-disable-next-line\n if (currentTarget.className === 'e-pdfviewer-signatureformfields' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature' || currentTarget.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature e-pv-signature-focus') {\n this.setFocus(currentTarget.id);\n }\n }\n }\n };\n /**\n * @param signatureType\n * @param value\n * @param target\n * @param fontname\n * @param signatureType\n * @param value\n * @param target\n * @param fontname\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.drawSignature = function (signatureType, value, target, fontname) {\n var annot;\n // eslint-disable-next-line\n var bounds;\n var targetBounds;\n var parentElementBounds;\n // eslint-disable-next-line\n var currentField = this.currentTarget ? this.currentTarget : target;\n currentField = currentField ? currentField : this.pdfViewerBase.currentTarget;\n var elementId = currentField.offsetParent.offsetParent.id.split(\"_\")[0];\n var signatureField = this.pdfViewer.nameTable[elementId];\n if (target && target.offsetParent && signatureField) {\n targetBounds = target.getBoundingClientRect();\n parentElementBounds = target.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n this.pdfViewerBase.drawSignatureWithTool = true;\n if (target.nextSibling && target.nextSibling.id.indexOf(\"initial\") !== -1) {\n this.pdfViewer.isInitialFieldToolbarSelection = true;\n }\n }\n var currentValue = value ? value : this.pdfViewerBase.signatureModule.outputString;\n var currentFont = fontname ? fontname : this.pdfViewerBase.signatureModule.fontName;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n var currentWidth = this.pdfViewerBase.drawSignatureWithTool ? targetBounds.width / zoomvalue : parseFloat(currentField.style.width) / zoomvalue;\n var currentHeight = this.pdfViewerBase.drawSignatureWithTool ? targetBounds.height / zoomvalue : parseFloat(currentField.style.height) / zoomvalue;\n var currentLeft = this.pdfViewerBase.drawSignatureWithTool ? ((targetBounds.left - parentElementBounds.left)) / zoomvalue : parseFloat(currentField.style.left) / zoomvalue;\n var currentTop = this.pdfViewerBase.drawSignatureWithTool ? ((targetBounds.top - parentElementBounds.top)) / zoomvalue : parseFloat(currentField.style.top) / zoomvalue;\n var currentPage = this.pdfViewerBase.drawSignatureWithTool ? this.pdfViewerBase.getActivePage() : parseFloat(currentField.id.split('_')[1]);\n var currentIndex = this.pdfViewerBase.drawSignatureWithTool ? target.nextElementSibling ? parseFloat(target.nextElementSibling.id.split('_')[1]) : parseFloat(currentField.id.split('_')[2]) : parseFloat(currentField.id.split('_')[2]);\n var signString = this.pdfViewerBase.signatureModule.saveImageString;\n var signatureFontFamily;\n var signatureFontSize;\n var rotateAngle = this.getAngle(currentPage);\n if (signatureType === 'Type') {\n if (!currentFont) {\n currentFont = 'Helvetica';\n }\n // eslint-disable-next-line\n bounds = this.getSignBounds(currentIndex, rotateAngle, currentPage, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight);\n if (this.pdfViewer.signatureFitMode === 'Default') {\n bounds = this.getDefaultBoundsforSign(bounds);\n }\n annot = {\n // eslint-disable-next-line max-len\n id: currentField.id, bounds: { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }, pageIndex: currentPage, data: currentValue, modifiedDate: '',\n shapeAnnotationType: 'SignatureText', opacity: 1, rotateAngle: this.rotateAngle, annotName: '', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }, fontFamily: currentFont, fontSize: (bounds.height / 2)\n };\n signString = annot.data;\n signatureFontFamily = annot.fontFamily;\n signatureFontSize = annot.fontSize;\n }\n else if (signatureType === 'Image') {\n // eslint-disable-next-line\n bounds = this.getSignBounds(currentIndex, rotateAngle, currentPage, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight);\n var image = new Image();\n image.src = currentValue;\n if (this.pdfViewer.signatureFitMode === 'Default') {\n // To check whether the image shape is square or rectangle\n var difference = 20;\n var hightDifference = 4;\n var heightRatio = 2;\n if (Math.abs(image.height - image.width) < difference) {\n if (bounds.width > bounds.height) {\n bounds.x = bounds.x + (bounds.width / heightRatio) - (bounds.height / heightRatio);\n bounds.width = bounds.height;\n }\n else {\n bounds.y = bounds.y + (bounds.height / heightRatio) - (bounds.width / heightRatio);\n bounds.height = bounds.width;\n }\n }\n else {\n if (bounds.width > bounds.height) {\n bounds.y = bounds.y + (bounds.height / hightDifference);\n bounds.x = bounds.x + (bounds.height / hightDifference);\n var height = bounds.height / heightRatio;\n bounds = { x: bounds.x, y: bounds.y, width: bounds.width - height, height: bounds.height - height };\n }\n else {\n bounds.y = bounds.y + (bounds.height / hightDifference);\n bounds.height = bounds.height / heightRatio;\n }\n }\n }\n annot = {\n // eslint-disable-next-line max-len\n id: currentField.id, bounds: { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }, pageIndex: currentPage, data: currentValue, modifiedDate: '',\n shapeAnnotationType: 'SignatureImage', opacity: 1, rotateAngle: this.rotateAngle, annotName: '', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n signString = annot.data;\n }\n else {\n if ((currentValue.indexOf('base64')) !== -1) {\n // eslint-disable-next-line\n bounds = this.getSignBounds(currentIndex, rotateAngle, currentPage, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight);\n if (this.pdfViewer.signatureFitMode === 'Default') {\n bounds = this.getDefaultBoundsforSign(bounds);\n }\n annot = {\n // eslint-disable-next-line max-len\n id: currentField.id, bounds: { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }, pageIndex: currentPage, data: currentValue, modifiedDate: '',\n shapeAnnotationType: 'SignatureImage', opacity: 1, rotateAngle: this.rotateAngle, annotName: '', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n signString = annot.data;\n }\n else {\n // eslint-disable-next-line\n if (this.pdfViewer.signatureFitMode === 'Default') {\n // eslint-disable-next-line\n var signatureBounds = this.updateSignatureAspectRatio(currentValue, false, currentField);\n // eslint-disable-next-line\n bounds = this.getSignBounds(currentIndex, rotateAngle, currentPage, zoomvalue, currentLeft, currentTop, signatureBounds.width, signatureBounds.height, true);\n bounds.x = bounds.x + signatureBounds.left;\n bounds.y = bounds.y + signatureBounds.top;\n }\n else {\n bounds = this.getSignBounds(currentIndex, rotateAngle, currentPage, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight);\n }\n annot = {\n // eslint-disable-next-line max-len\n id: currentField.id, bounds: { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }, pageIndex: currentPage, data: currentValue, modifiedDate: '',\n shapeAnnotationType: 'Path', opacity: 1, rotateAngle: this.rotateAngle, annotName: '', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n }\n }\n if (this.pdfViewerBase.drawSignatureWithTool && signatureField) {\n annot.id = signatureField.id + \"_content\";\n var obj = this.pdfViewer.add(annot);\n signatureField.wrapper.children.push(obj.wrapper);\n }\n else {\n this.pdfViewer.add(annot);\n }\n if (annot && annot.shapeAnnotationType === 'Path' && currentValue !== '') {\n this.pdfViewerBase.currentSignatureAnnot = annot;\n // eslint-disable-next-line\n var position = { currentHeight: currentHeight, currentWidth: currentWidth, currentLeft: currentLeft, currentTop: currentTop };\n this.pdfViewerBase.signatureModule.addSignatureCollection(bounds, position);\n signString = this.pdfViewerBase.signatureModule.saveImageString;\n this.pdfViewerBase.currentSignatureAnnot = null;\n }\n // eslint-disable-next-line\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentPage);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, currentPage);\n this.pdfViewerBase.signatureModule.showSignatureDialog(false);\n if (currentField.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus') {\n currentField.className = 'e-pdfviewer-signatureformfields-signature e-pv-signature-focus';\n }\n else {\n currentField.className = 'e-pdfviewer-signatureformfields-signature';\n }\n if (this.pdfViewerBase.drawSignatureWithTool && signatureField) {\n var key = target.offsetParent.offsetParent.id.split('_')[0] + '_content';\n this.updateSignatureDataInSession(annot, key);\n }\n else {\n this.updateDataInSession(currentField, annot.data, annot.bounds, signatureFontFamily, signatureFontSize);\n }\n currentField.style.pointerEvents = 'none';\n this.pdfViewerBase.signatureModule.hideSignaturePanel();\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.addAction(annot.pageIndex, null, annot, 'FormField Value Change', '', annot, annot);\n }\n // eslint-disable-next-line\n this.pdfViewer.fireSignatureAdd(annot.pageIndex, annot.id, 'HandWrittenSignature', annot.bounds, annot.opacity, null, null, signString);\n this.pdfViewer.fireFocusOutFormField(currentField.name, currentValue);\n this.pdfViewerBase.drawSignatureWithTool = false;\n this.pdfViewer.isInitialFieldToolbarSelection = false;\n };\n FormFields.prototype.updateSignatureDataInSession = function (annot, key) {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key === key) {\n if (annot.shapeAnnotationType === \"SignatureText\") {\n formFieldsData[i].FormField.signatureType = \"Text\";\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Text\";\n this.pdfViewer.nameTable[key].signatureType = \"Text\";\n formFieldsData[i].FormField.fontFamily = annot.fontFamily;\n this.pdfViewerBase.formFieldCollection[i].FormField.fontFamily = annot.fontFamily;\n this.pdfViewer.nameTable[key].fontFamily = annot.fontFamily;\n }\n else if (annot.shapeAnnotationType === \"SignatureImage\") {\n formFieldsData[i].FormField.signatureType = \"Image\";\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Image\";\n this.pdfViewer.nameTable[key].signatureType = \"Image\";\n }\n else {\n formFieldsData[i].FormField.signatureType = \"Path\";\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Path\";\n this.pdfViewer.nameTable[key].signatureType = \"Path\";\n }\n formFieldsData[i].FormField.signatureBound = annot.bounds;\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureBound = annot.bounds;\n this.pdfViewer.nameTable[key].signatureBound = annot.bounds;\n if (annot.shapeAnnotationType === \"Path\") {\n var collectionData = processPathData(annot.data);\n var csData = splitArrayCollection(collectionData);\n formFieldsData[i].FormField.value = JSON.stringify(csData);\n this.pdfViewer.nameTable[key].value = annot.data;\n this.pdfViewer.nameTable[key.split('_')[0]].value = annot.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = JSON.stringify(csData);\n }\n else {\n formFieldsData[i].FormField.value = annot.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = annot.data;\n this.pdfViewer.nameTable[key.split('_')[0]].value = annot.data;\n this.pdfViewer.nameTable[key].value = annot.data;\n }\n this.pdfViewer.formDesigner.updateFormFieldCollections(formFieldsData[i].FormField);\n this.pdfViewer.formDesigner.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldsData[i].FormField, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, \"\", formFieldsData[i].FormField.value);\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(formFieldsData, '_formDesigner');\n };\n /**\n * @private\n */\n FormFields.prototype.getDefaultBoundsforSign = function (bounds) {\n return { x: bounds.x + 10, y: bounds.y + 10, width: bounds.width - 23, height: bounds.height - 23 };\n };\n // eslint-disable-next-line\n FormFields.prototype.getSignBounds = function (currentIndex, rotateAngle, currentPage, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight, isDraw) {\n // eslint-disable-next-line\n var bounds;\n var signatureId = this.pdfViewer.isInitialFieldToolbarSelection ? 'initialIcon' : 'signIcon';\n var signIcon = document.getElementById(signatureId + currentPage + '_' + currentIndex);\n var signLeft = parseFloat(signIcon.style.left) * zoomvalue;\n var difference = (currentLeft * zoomvalue) - (signLeft / zoomvalue);\n if (rotateAngle === 90 || rotateAngle === 270) {\n this.rotateAngle = 0;\n if (isDraw) {\n return bounds = { x: currentLeft - (difference / zoomvalue) - zoomvalue, y: currentTop + (difference / zoomvalue) + zoomvalue, width: currentWidth, height: currentHeight };\n }\n else {\n return bounds = { x: currentLeft - (difference / zoomvalue) - zoomvalue, y: currentTop + (difference / zoomvalue) + zoomvalue, width: currentHeight, height: currentWidth };\n }\n }\n else {\n this.rotateAngle = 0;\n return bounds = { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight };\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.updateSameFieldsValue = function (event) {\n if (this.formFieldsData) {\n for (var i = 0; i < this.formFieldsData.length; i++) {\n // eslint-disable-next-line\n var currentField = this.formFieldsData[i];\n if (event.target.name === currentField.FieldName && event.target.id !== currentField.uniqueID) {\n // eslint-disable-next-line\n var currentTarget = document.getElementById(this.formFieldsData[i].uniqueID);\n if (currentTarget) {\n currentTarget.value = event.target.value;\n }\n else {\n currentField.Text = event.target.value;\n this.pdfViewerBase.setItemInSessionStorage(this.formFieldsData, '_formfields');\n }\n }\n }\n }\n };\n FormFields.prototype.updateFormFieldsValue = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n if (currentTarget.InsertSpaces && !this.isKeyDownCheck) {\n // eslint-disable-next-line\n var font = parseInt(currentTarget.style.width) + (parseInt(currentTarget.style.height) / 2);\n currentTarget.style.width = '' + font + 'px';\n this.isKeyDownCheck = true;\n }\n if (event.which === 9 && currentTarget && currentTarget.className === 'e-pdfviewer-formFields') {\n // eslint-disable-next-line\n var id = currentTarget.id.split('input_')[1].split('_')[0];\n if (this.maintainTabIndex[id] === currentTarget.tabIndex) {\n // eslint-disable-next-line\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (parseInt(id) + 1));\n if (textLayer) {\n // eslint-disable-next-line\n var currentFields = textLayer.getElementsByClassName('e-pdfviewer-formFields');\n if (currentFields && currentFields.length > 0) {\n currentFields[0].focus();\n event.preventDefault();\n }\n }\n else {\n var textLayer_1 = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + 0);\n // eslint-disable-next-line\n var currentFields = textLayer_1.getElementsByClassName('e-pdfviewer-formFields');\n for (var m = 0; m < currentFields.length; m++) {\n if (currentFields[m].tabIndex === this.maintanMinTabindex['0']) {\n currentFields[m].focus();\n event.preventDefault();\n break;\n }\n }\n }\n }\n else {\n // eslint-disable-next-line\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + parseInt(id));\n // eslint-disable-next-line\n var currentFields = textLayer.getElementsByClassName('e-pdfviewer-formFields');\n var istabindexed = true;\n for (var m = 0; m < currentFields.length; m++) {\n istabindexed = false;\n if (currentFields[m].tabIndex === (currentTarget.tabIndex + 1)) {\n currentFields[m].focus();\n istabindexed = true;\n event.preventDefault();\n break;\n }\n }\n var tabindex = currentTarget.tabIndex + 1;\n while (!istabindexed) {\n for (var l = 0; l < currentFields.length; l++) {\n istabindexed = false;\n if (currentFields[l].tabIndex === (tabindex)) {\n currentFields[l].focus();\n istabindexed = true;\n event.preventDefault();\n break;\n }\n }\n if (this.maintainTabIndex[id] === tabindex) {\n istabindexed = true;\n }\n tabindex = tabindex + 1;\n }\n }\n }\n if (event.currentTarget.classList.contains('e-pdfviewer-signatureformfields') ||\n event.currentTarget.classList.contains('e-pdfviewer-signatureformfields-signature')) {\n if (event.key === 'Enter') {\n // eslint-disable-next-line\n var currentTarget_1 = event.target;\n for (var m = 0; m < this.pdfViewer.formFieldCollections.length; m++) {\n if (currentTarget_1.id === this.pdfViewer.formFieldCollections[m].id) {\n this.setFocus(currentTarget_1.id);\n this.pdfViewer.fireFormFieldClickEvent('formFieldClicked', this.pdfViewer.formFieldCollections[m]);\n }\n }\n }\n else {\n event.preventDefault();\n }\n }\n };\n FormFields.prototype.changeFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n this.updateDataInSession(currentTarget);\n };\n FormFields.prototype.calculateSignatureBounds = function (signatureCavasWidth, signatureCavasHeight, newdifferenceX, newdifferenceY, isSignature, currentField) {\n var ratioX = newdifferenceX / signatureCavasWidth;\n var ratioY = newdifferenceY / signatureCavasHeight;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n var currentWidth = 0;\n var currentHeight = 0;\n var isSignatureStretched = false;\n var isHeightStretched = false;\n var leftDifference = 0;\n var topDifference = 0;\n if (isSignature) {\n currentWidth = this.pdfViewer.handWrittenSignatureSettings.width ? this.pdfViewer.handWrittenSignatureSettings.width : 150;\n currentHeight = this.pdfViewer.handWrittenSignatureSettings.height ? this.pdfViewer.handWrittenSignatureSettings.height : 100;\n }\n else {\n var fieldWidth = currentField.style.width === '100%' ? currentField.clientWidth : parseFloat(currentField.style.width);\n var fieldHeight = currentField.style.height === '100%' ? currentField.clientHeight : parseFloat(currentField.style.height);\n var fieldWidthRatio = fieldWidth / fieldHeight;\n var fieldHeightRatio = fieldHeight / fieldWidth;\n var canvasWidthRatio = signatureCavasWidth / signatureCavasHeight;\n var canvasHeightRatio = signatureCavasHeight / signatureCavasWidth;\n if ((fieldWidthRatio > canvasWidthRatio) || (fieldHeightRatio > canvasWidthRatio) || ((Math.abs(fieldWidthRatio - fieldHeightRatio)) <= 1)) {\n var ratioDifference = 0;\n if ((fieldHeightRatio > canvasWidthRatio) || ((Math.abs(fieldWidthRatio - fieldHeightRatio)) <= 1)) {\n isHeightStretched = true;\n ratioDifference = fieldHeightRatio / canvasHeightRatio;\n }\n else {\n isSignatureStretched = true;\n ratioDifference = fieldWidthRatio / canvasWidthRatio;\n }\n if (currentField.style.transform === 'rotate(90deg)' || currentField.style.transform === 'rotate(270deg)') {\n // eslint-disable-next-line\n currentWidth = fieldHeight / zoomvalue;\n // eslint-disable-next-line\n currentHeight = fieldWidth / zoomvalue;\n }\n else {\n if (isSignatureStretched) {\n // eslint-disable-next-line\n leftDifference = fieldWidth / zoomvalue;\n // eslint-disable-next-line\n currentWidth = (fieldWidth / ratioDifference) / zoomvalue;\n // eslint-disable-next-line\n currentHeight = fieldHeight / zoomvalue;\n }\n if (isHeightStretched) {\n // eslint-disable-next-line\n topDifference = fieldHeight / zoomvalue;\n // eslint-disable-next-line\n currentWidth = fieldWidth / zoomvalue;\n // eslint-disable-next-line\n currentHeight = (fieldHeight / ratioDifference) / zoomvalue;\n }\n }\n }\n else {\n if (currentField.style.transform === 'rotate(90deg)' || currentField.style.transform === 'rotate(270deg)') {\n // eslint-disable-next-line\n currentWidth = fieldHeight / zoomvalue;\n // eslint-disable-next-line\n currentHeight = fieldWidth / zoomvalue;\n }\n else {\n // eslint-disable-next-line\n currentWidth = fieldWidth / zoomvalue;\n // eslint-disable-next-line\n currentHeight = fieldHeight / zoomvalue;\n }\n }\n }\n var currentLeftDiff = (signatureCavasWidth - newdifferenceX) / 2;\n var currentTopDiff = (signatureCavasHeight - newdifferenceY) / 2;\n if (isSignatureStretched) {\n currentLeftDiff = (currentLeftDiff / signatureCavasWidth) * leftDifference;\n var leftValueDiff = ((leftDifference * ratioX) - (currentWidth * ratioX)) / 2;\n currentLeftDiff = currentLeftDiff + leftValueDiff;\n currentTopDiff = (currentTopDiff / signatureCavasHeight) * currentHeight;\n }\n else if (isHeightStretched) {\n currentLeftDiff = (currentLeftDiff / signatureCavasWidth) * currentWidth;\n currentTopDiff = (currentTopDiff / signatureCavasHeight) * topDifference;\n var topValueDiff = ((topDifference * ratioY) - (currentHeight * ratioY)) / 2;\n currentTopDiff = currentTopDiff + topValueDiff;\n }\n else {\n currentLeftDiff = (currentLeftDiff / signatureCavasWidth) * currentWidth;\n currentTopDiff = (currentTopDiff / signatureCavasHeight) * currentHeight;\n }\n currentWidth = currentWidth * ratioX;\n currentHeight = currentHeight * ratioY;\n return { currentLeftDiff: currentLeftDiff, currentTopDiff: currentTopDiff, currentWidth: currentWidth, currentHeight: currentHeight };\n };\n /**\n * @param data\n * @param isSignature\n * @param currentField\n * @param data\n * @param isSignature\n * @param currentField\n * @param data\n * @param isSignature\n * @param currentField\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.updateSignatureAspectRatio = function (data, isSignature, currentField) {\n // eslint-disable-next-line\n var collectionData = processPathData(data);\n // eslint-disable-next-line\n var csData = splitArrayCollection(collectionData);\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n var signatureCanvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n var signatureCavasWidth = 0;\n var signatureCavasHeight = 0;\n for (var m = 0; m < csData.length; m++) {\n // eslint-disable-next-line\n var val = csData[m];\n if (minimumX === -1) {\n // eslint-disable-next-line\n minimumX = parseFloat(val['x'].toString());\n // eslint-disable-next-line\n maximumX = parseFloat(val['x'].toString());\n // eslint-disable-next-line\n minimumY = parseFloat(val['y'].toString());\n // eslint-disable-next-line\n maximumY = parseFloat(val['y'].toString());\n }\n else {\n // eslint-disable-next-line\n var point1 = parseFloat(val['x'].toString());\n // eslint-disable-next-line\n var point2 = parseFloat(val['y'].toString());\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n signatureCavasWidth = signatureCanvas ? signatureCanvas.clientWidth : 650;\n signatureCavasHeight = signatureCanvas ? signatureCanvas.clientHeight : 300;\n var newdifferenceX = maximumX - minimumX;\n var newdifferenceY = maximumY - minimumY;\n var signBounds = this.calculateSignatureBounds(signatureCavasWidth, signatureCavasHeight, newdifferenceX, newdifferenceY, isSignature, currentField);\n if (isSignature) {\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var currentLeft = ((parseFloat(pageDiv.style.width) / 2) - (signBounds.currentWidth / 2)) / zoomvalue;\n // eslint-disable-next-line max-len\n var currentTop = ((parseFloat(pageDiv.style.height) / 2) - (signBounds.currentHeight / 2)) / zoomvalue;\n return { x: currentLeft, y: currentTop, width: signBounds.currentWidth, height: signBounds.currentHeight };\n }\n else {\n return { left: signBounds.currentLeftDiff, top: signBounds.currentTopDiff, width: signBounds.currentWidth, height: signBounds.currentHeight };\n }\n };\n /**\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.updateDataInSession = function (target, signaturePath, signatureBounds, signatureFontFamily, signatureFontSize) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var FormFieldsData = JSON.parse(data);\n for (var m = 0; m < FormFieldsData.length; m++) {\n // eslint-disable-next-line\n var currentData = FormFieldsData[m];\n if (currentData.uniqueID === target.id) {\n if (target && target.type === 'text' || target.type === 'password' || target.type === 'textarea') {\n var signField = target;\n if (signField.classList.contains('e-pdfviewer-signatureformfields') || signField.classList.contains('e-pdfviewer-signatureformfields-signature')) {\n if (signaturePath) {\n currentData.Value = signaturePath;\n }\n if (signatureBounds) {\n currentData.Bounds = signatureBounds;\n }\n if (signatureFontFamily) {\n currentData.FontFamily = signatureFontFamily;\n currentData.FontSize = signatureFontSize;\n }\n }\n else {\n currentData.Text = target.value;\n currentData.Value = target.value;\n }\n }\n else if (target.type === 'radio') {\n for (var l = 0; l < FormFieldsData.length; l++) {\n // eslint-disable-next-line\n var currentType = FormFieldsData[l];\n if (FormFieldsData[l].GroupName === target.name) {\n FormFieldsData[l].Selected = false;\n }\n }\n currentData.Selected = true;\n }\n else if (target.type === 'checkbox') {\n for (var l = 0; l < FormFieldsData.length; l++) {\n // eslint-disable-next-line\n var currentType = FormFieldsData[l];\n if (FormFieldsData[l].GroupName === target.name) {\n FormFieldsData[l].Selected = false;\n // eslint-disable-next-line\n var currentTarget = document.getElementById(FormFieldsData[l].uniqueID);\n if (currentTarget) {\n if ((currentData.GroupName === target.name) && (currentData.uniqueID !== currentTarget.id)) {\n currentData.Selected = false;\n currentTarget.checked = false;\n currentTarget.style.webkitAppearance = 'none';\n }\n }\n }\n }\n if (target.checked) {\n currentData.Selected = true;\n }\n else {\n currentData.Selected = false;\n }\n }\n else if (target.type === 'select-one' && target.size === 0) {\n // eslint-disable-next-line\n var currentValue = target.options[target.selectedIndex].text;\n // eslint-disable-next-line\n var childrens = target.children;\n var isChildElements = false;\n for (var k = 0; k < childrens.length; k++) {\n if (childrens[k].text === currentValue) {\n currentData.SelectedValue = currentValue;\n }\n }\n }\n else if (target.type === 'select-multiple' || target.size > 0) {\n // eslint-disable-next-line\n var currentValue = target.selectedOptions;\n currentData.SelectedList = [];\n for (var z = 0; z < currentValue.length; z++) {\n // eslint-disable-next-line\n var childrens = target.children;\n for (var k = 0; k < childrens.length; k++) {\n if (childrens[k] === currentValue[z]) {\n currentData.SelectedList.push(k);\n }\n }\n }\n }\n if (target.disabled) {\n currentData.IsReadonly = true;\n }\n this.updateFormFieldsCollection(currentData);\n break;\n }\n else if (target && target.getAttribute('list') != null && target.type === 'text' && currentData.uniqueID === target.list.id) {\n currentData.SelectedValue = target.value;\n }\n this.updateFormFieldsCollection(currentData);\n }\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_formfields');\n this.pdfViewerBase.setItemInSessionStorage(FormFieldsData, '_formfields');\n }\n if (this.pdfViewer.formDesignerModule && target && target.id) {\n var selectedItem = this.pdfViewer.nameTable[target.id.split('_')[0]];\n if (selectedItem && selectedItem.wrapper && selectedItem.wrapper.children[0]) {\n selectedItem.value = target.value;\n var point = cornersPointsBeforeRotation(selectedItem.wrapper.children[0]).topLeft;\n this.pdfViewer.formDesignerModule.updateFormDesignerFieldInSessionStorage(point, selectedItem.wrapper.children[0], selectedItem.formFieldAnnotationType, selectedItem);\n }\n }\n };\n /**\n * @private\n */\n FormFields.prototype.removeExistingFormFields = function () {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n if (formFieldsData) {\n for (var i = 0; i < formFieldsData.length; i++) {\n this.pdfViewer.formDesignerModule.deleteFormField(formFieldsData[i].Key.split('_')[0]);\n }\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.applyCommonProperties = function (inputdiv, pageIndex, index, currentData) {\n // eslint-disable-next-line\n var inputField = document.getElementById(this.pdfViewer.element.id + 'input_' + pageIndex + '_' + index);\n if (inputField) {\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n if (inputdiv.type === 'text' && inputField.parentElement !== textLayer) {\n inputField.parentElement.remove();\n }\n inputField.remove();\n }\n // eslint-disable-next-line\n var signIcon = document.getElementById('signIcon' + pageIndex + '_' + pageIndex);\n var left = parseFloat(inputdiv.style.left);\n var top = parseInt(inputdiv.style.top);\n var width = parseFloat(inputdiv.style.width);\n var height = parseFloat(inputdiv.style.height);\n var signIconWidth;\n var signIconHeght;\n var hightDifference;\n var widthDifference;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n if (signIcon) {\n signIconWidth = parseFloat(signIcon.style.width);\n signIconHeght = parseFloat(signIcon.style.height);\n if (signIcon.style.transform == 'rotate(90deg)') {\n signIcon.style.transform = 'rotate(0deg)';\n hightDifference = height / 2;\n widthDifference = signIconWidth * zoomvalue;\n signIcon.style.left = ((left - (hightDifference - (signIconWidth * zoomvalue))) + (widthDifference / 2)) + 'px';\n }\n if (signIcon.style.transform == 'rotate(180deg)') {\n signIcon.style.transform = 'rotate(0deg)';\n signIcon.style.left = left + 'px';\n signIcon.style.top = (top) + 'px';\n }\n if (signIcon.style.transform == 'rotate(270deg)') {\n signIcon.style.transform = 'rotate(0deg)';\n hightDifference = height / 2;\n widthDifference = signIconWidth * zoomvalue;\n signIcon.style.left = ((left - (hightDifference - widthDifference)) + (widthDifference / 2)) + 'px';\n signIcon.style.top = ((top + (width + (signIconHeght * zoomvalue)) + ((signIconHeght * zoomvalue) / 2))) + 'px';\n }\n }\n if (currentData.IsSignatureField && this.isSignatureField) {\n inputdiv.className = 'e-pdfviewer-signatureformfields-signature';\n inputdiv.style.pointerEvents = 'none';\n }\n else if (currentData.IsSignatureField) {\n inputdiv.className = 'e-pdfviewer-signatureformfields';\n }\n else if (currentData.Name !== 'Button') {\n inputdiv.className = 'e-pdfviewer-formFields';\n }\n inputdiv.id = this.pdfViewer.element.id + 'input_' + pageIndex + '_' + index;\n inputdiv.style.zIndex = 1000;\n };\n /**\n * @param currentData\n * @param pageIndex\n * @param index\n * @param printContainer\n * @param currentData\n * @param pageIndex\n * @param index\n * @param printContainer\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.createFormFields = function (currentData, pageIndex, index, printContainer) {\n // eslint-disable-next-line\n var currentField;\n // eslint-disable-next-line\n switch (currentData['Name']) {\n case 'Textbox':\n currentField = this.createTextBoxField(currentData, pageIndex, 'text');\n break;\n case 'Password':\n currentField = this.createTextBoxField(currentData, pageIndex, 'password');\n break;\n case 'RadioButton':\n currentField = this.createRadioBoxField(currentData, pageIndex, 'radio');\n break;\n case 'CheckBox':\n currentField = this.createRadioBoxField(currentData, pageIndex, 'checkbox', printContainer);\n break;\n case 'DropDown':\n currentField = this.createDropDownField(currentData, pageIndex, index, printContainer);\n break;\n case 'ListBox':\n currentField = this.createListBoxField(currentData, pageIndex);\n break;\n case 'InitialField':\n case 'SignatureField':\n currentField = this.createSignatureField(currentData, pageIndex, index, printContainer);\n if (currentData.Value && currentData.Value !== '') {\n this.renderExistingAnnnot(currentData, index, printContainer);\n this.isSignatureRendered = true;\n }\n break;\n case 'Button':\n currentField = this.createButtonField(currentData, pageIndex);\n break;\n case 'ink':\n case 'SignatureText':\n case 'SignatureImage':\n if (currentData.Value && currentData.Value !== '' && !this.isSignatureRendered) {\n this.renderExistingAnnnot(currentData, index, printContainer);\n }\n break;\n }\n return currentField;\n };\n FormFields.prototype.getFormFieldType = function (currentData) {\n // eslint-disable-next-line\n var currentField;\n // eslint-disable-next-line\n switch (currentData['Name']) {\n case 'Textbox':\n currentField = 'Textbox';\n break;\n case 'Password':\n currentField = 'Password';\n break;\n case 'RadioButton':\n currentField = 'RadioButton';\n break;\n case 'CheckBox':\n currentField = 'CheckBox';\n break;\n case 'DropDown':\n currentField = 'DropDown';\n break;\n case 'ListBox':\n currentField = 'ListBox';\n break;\n case 'SignatureField':\n currentField = 'SignatureField';\n if (currentData.IsInitialField) {\n currentField = 'InitialField';\n }\n break;\n case 'InitialField':\n currentField = 'InitialField';\n break;\n }\n return currentField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createButtonField = function (data, pageIndex) {\n // eslint-disable-next-line\n var inputField = document.createElement('input');\n if (data.Value) {\n inputField.type = 'image';\n inputField.src = data.Value;\n }\n else {\n inputField.type = 'button';\n }\n inputField.className = 'e-pv-buttonItem';\n if (data.Text !== '') {\n inputField.value = data.Text;\n }\n else {\n inputField.value = '';\n }\n inputField.name = data.FieldName;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createTextBoxField = function (data, pageIndex, type) {\n // eslint-disable-next-line\n var inputField;\n if (data.Visible === 1) {\n return;\n }\n if (data.Multiline) {\n inputField = document.createElement('textarea');\n inputField.style.resize = 'none';\n }\n else {\n inputField = document.createElement('input');\n inputField.type = type;\n }\n if (data.MaxLength > 0) {\n inputField.maxLength = data.MaxLength;\n }\n this.addAlignmentPropety(data, inputField);\n if (data.Text !== '') {\n inputField.value = data.Text;\n }\n else {\n inputField.value = '';\n }\n if (!this.pdfViewer.enableAutoComplete) {\n inputField.autocomplete = 'off';\n }\n inputField.name = data.FieldName;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.checkIsReadonly = function (data, inputField) {\n var isReadonly = false;\n for (var n = 0; n < this.readOnlyCollection.length; n++) {\n if (inputField.id === this.readOnlyCollection[n]) {\n isReadonly = true;\n break;\n }\n }\n if (!this.pdfViewer.formDesignerModule && !this.pdfViewer.annotationModule && (data.IsInitialField || data.IsSignatureField)) {\n isReadonly = true;\n }\n if (data.IsReadonly || (!this.pdfViewer.enableFormFields) || isReadonly) {\n inputField.disabled = true;\n inputField.style.cursor = 'default';\n inputField.style.backgroundColor = 'transparent';\n }\n else {\n // eslint-disable-next-line\n var borderColor = data.BackColor;\n inputField.style.backgroundColor = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 0.2 + ')';\n // eslint-disable-next-line\n var fontColor = data.FontColor;\n inputField.style.color = 'rgba(' + fontColor.R + ',' + fontColor.G + ',' + fontColor.B + ',' + 1 + ')';\n }\n };\n /**\n * @param isReadonly\n * @private\n */\n // eslint-disable-next-line max-len\n FormFields.prototype.formFieldsReadOnly = function (isReadonly) {\n // eslint-disable-next-line\n var formFields = document.getElementsByClassName('e-pdfviewer-formFields');\n this.makeformFieldsReadonly(formFields, isReadonly);\n // eslint-disable-next-line\n var signatureFields = document.getElementsByClassName('e-pdfviewer-signatureformfields');\n this.makeformFieldsReadonly(signatureFields, isReadonly);\n };\n // eslint-disable-next-line\n FormFields.prototype.makeformFieldsReadonly = function (formFields, isReadonly) {\n for (var i = 0; i < formFields.length; i++) {\n if (formFields[i]) {\n // eslint-disable-next-line\n var inputField = formFields[i];\n if (!isReadonly) {\n inputField.disabled = true;\n inputField.style.cursor = 'default';\n }\n else {\n // eslint-disable-next-line\n inputField.disabled = false;\n }\n }\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.applyTabIndex = function (data, inputField, pageIndex) {\n inputField.tabIndex = data.TabIndex;\n this.maxTabIndex = Math.max(this.maxTabIndex, inputField.tabIndex);\n if (this.minTabIndex === -1) {\n this.minTabIndex = inputField.tabIndex;\n }\n this.minTabIndex = Math.min(this.minTabIndex, inputField.tabIndex);\n this.maintainTabIndex[pageIndex.toString()] = this.maxTabIndex;\n this.maintanMinTabindex[pageIndex.toString()] = this.minTabIndex;\n };\n // eslint-disable-next-line\n FormFields.prototype.checkIsRequiredField = function (data, inputField) {\n if (data.IsRequired) {\n inputField.required = true;\n inputField.style.border = '1px solid red';\n }\n else {\n // eslint-disable-next-line\n var borderColor = data.BorderColor;\n inputField.style.border = data.BorderWidth;\n inputField.style.borderColor = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 1 + ')';\n }\n if (inputField.type !== 'checkbox' && inputField.type !== 'radio') {\n var borderStyle = data.BorderStyle;\n this.addBorderStylePropety(borderStyle, inputField);\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.applyDefaultColor = function (inputField) {\n // eslint-disable-next-line max-len\n if (inputField.type !== 'button' && (inputField.style.backgroundColor === 'rgba(255, 255, 255, 0.2)' || inputField.style.backgroundColor === 'rgba(0, 0, 0, 0.2)')) {\n inputField.style.backgroundColor = 'rgba(0, 20, 200, 0.2)';\n }\n if (inputField.style.color === 'rgba(255, 255, 255, 0.2)') {\n inputField.style.color = 'black';\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.addAlignmentPropety = function (data, inputField) {\n // eslint-disable-next-line\n var alignment = data.Alignment;\n switch (alignment) {\n case 0:\n inputField.style.textAlign = 'left';\n break;\n case 1:\n inputField.style.textAlign = 'center';\n break;\n case 2:\n inputField.style.textAlign = 'right';\n break;\n case 3:\n inputField.style.textAlign = 'justify';\n break;\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.addBorderStylePropety = function (borderStyle, inputField) {\n // eslint-disable-next-line\n switch (borderStyle) {\n case 0:\n inputField.style.borderStyle = 'solid';\n break;\n case 1:\n inputField.style.borderStyle = 'dashed';\n break;\n case 2:\n inputField.style.borderStyle = 'outset';\n break;\n case 3:\n inputField.style.borderStyle = 'inset';\n break;\n case 4:\n inputField.style.borderStyle = 'outset';\n break;\n case 5:\n inputField.style.borderStyle = 'dotted';\n break;\n case 6:\n inputField.style.borderStyle = 'inset';\n break;\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.createRadioBoxField = function (data, pageIndex, type, printContainer) {\n // eslint-disable-next-line\n var inputField = document.createElement('input');\n inputField.type = type;\n if (data.Selected) {\n inputField.checked = true;\n }\n else if (type === 'checkbox' && !printContainer) {\n inputField.style.webkitAppearance = 'none';\n }\n inputField.name = data.GroupName;\n inputField.value = data.Value;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createDropDownField = function (data, pageIndex, index, printContainer) {\n // eslint-disable-next-line\n var inputField = document.createElement('select');\n // eslint-disable-next-line\n var childItems = data['TextList'];\n if (data.Selected && !printContainer) {\n // eslint-disable-next-line\n var previousField = document.getElementById('editableDropdown' + pageIndex + '_' + index);\n if (previousField) {\n previousField.remove();\n }\n // eslint-disable-next-line\n var inputFields = document.createElement('input');\n inputFields.id = 'editableDropdown' + pageIndex + '_' + index;\n inputFields.setAttribute('list', this.pdfViewer.element.id + 'input_' + pageIndex + '_' + index);\n // eslint-disable-next-line\n var bounds = data['LineBounds'];\n // eslint-disable-next-line\n var font = data['Font'];\n inputFields.style.position = 'absolute';\n inputFields.style.border = '0px';\n // eslint-disable-next-line\n this.applyPosition(inputFields, bounds, font, pageIndex, data['Rotation']);\n inputFields.style.backgroundColor = 'rgba(0, 20, 200, 0.2)';\n inputFields.className = 'e-pdfviewer-formFields';\n if (data.selectedIndex === -1) {\n inputFields.value = data.SelectedValue;\n }\n if (printContainer) {\n printContainer.appendChild(inputFields);\n }\n else {\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n textLayer.appendChild(inputFields);\n }\n inputFields.addEventListener('focus', this.focusFormFields.bind(this));\n inputFields.addEventListener('blur', this.blurFormFields.bind(this));\n inputFields.addEventListener('click', this.updateFormFields.bind(this));\n inputFields.addEventListener('change', this.changeFormFields.bind(this));\n inputFields.addEventListener('keydown', this.updateFormFieldsValue.bind(this));\n inputField = document.createElement('DATALIST');\n }\n for (var j = 0; j < childItems.length; j++) {\n // eslint-disable-next-line\n var option = document.createElement('option');\n option.className = 'e-dropdownSelect';\n if (data.SelectedValue === childItems[j] || data.selectedIndex === j) {\n option.selected = true;\n }\n else {\n option.selected = false;\n }\n option.innerHTML = childItems[j];\n inputField.appendChild(option);\n }\n inputField.name = data.Text;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createListBoxField = function (data, pageIndex) {\n // eslint-disable-next-line\n var inputField = document.createElement('select');\n // eslint-disable-next-line\n var childItems = data['TextList'];\n if (data.MultiSelect) {\n inputField.multiple = true;\n }\n else {\n inputField.multiple = false;\n inputField.size = childItems.length;\n }\n for (var j = 0; j < childItems.length; j++) {\n // eslint-disable-next-line\n var option = document.createElement('option');\n option.className = 'e-pdfviewer-ListBox';\n for (var k = 0; k < data.SelectedList.length; k++) {\n if (data.SelectedList[k] === j) {\n option.selected = true;\n }\n }\n option.innerHTML = childItems[j];\n inputField.appendChild(option);\n }\n inputField.name = data.Text;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createSignatureField = function (data, pageIndex, index, printContainer) {\n // eslint-disable-next-line\n var inputField = document.createElement('input');\n inputField.type = 'text';\n inputField.name = data.FieldName;\n // eslint-disable-next-line\n var previousField = document.getElementById('signIcon' + pageIndex + '_' + index);\n if (previousField && !printContainer) {\n previousField.remove();\n }\n this.pdfViewerBase.isInitialField = data.IsInitialField;\n var signIndicator = this.pdfViewerBase.isInitialField ? \"Initial\" : \"Sign\";\n //check whether the width for sign indicator has default value or not and then set the default width value for initial field.\n var signatureFieldIndicatorWidth = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.width === 19 ? (this.pdfViewerBase.isInitialField ? 27 : 19) : this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.width;\n // eslint-disable-next-line\n var span = document.createElement('span');\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n // eslint-disable-next-line\n var bounds = data['LineBounds'];\n // eslint-disable-next-line\n var font = data['Font'];\n var left = this.ConvertPointToPixel(bounds.X);\n var top = this.ConvertPointToPixel(bounds.Y);\n // eslint-disable-next-line max-len\n var height = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.height > bounds.Height / 2 ? bounds.Height / 2 : this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.height;\n // eslint-disable-next-line max-len\n var width = signatureFieldIndicatorWidth > bounds.Width / 2 ? bounds.Width / 2 : signatureFieldIndicatorWidth;\n // eslint-disable-next-line max-len\n var fontSize = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.fontSize > height / 2 ? 10 : this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.fontSize;\n span.style.position = 'absolute';\n span.id = 'signIcon' + pageIndex + '_' + index;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n var rotation = this.getAngle(pageIndex);\n // eslint-disable-next-line\n var annotBounds = { left: left, top: top, width: width, height: height };\n // eslint-disable-next-line\n var fieldBounds = this.getBounds(annotBounds, pageIndex);\n span.style.transform = 'rotate(' + rotation + 'deg)';\n span.style.left = fieldBounds.left * zoomvalue + 'px';\n span.style.top = fieldBounds.top * zoomvalue + 'px';\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n span.style.height = 5 + 'px';\n span.style.width = 10 + 'px';\n span.style.fontSize = '3px';\n }\n else {\n span.style.height = height + 'px';\n span.style.width = width + 'px';\n span.style.fontSize = fontSize + 'px';\n if (isBlazor()) {\n span.style.fontSize = (fontSize - 1) + 'px';\n }\n }\n span.style.padding = '2px';\n span.style.textAlign = 'center';\n span.style.boxSizing = 'content-box';\n // eslint-disable-next-line\n span.innerHTML = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.text ? this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.text : signIndicator;\n span.style.color = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.color ? this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.color : 'black';\n // eslint-disable-next-line\n span.style.backgroundColor = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.backgroundColor ? this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.backgroundColor : 'orange';\n span.style.opacity = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.opacity ? this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.opacity : 1;\n textLayer.appendChild(span);\n this.addSignaturePath(data);\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.addSignaturePath = function (signData) {\n this.isSignatureField = false;\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n for (var m = 0; m < formFieldsData.length; m++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[m];\n // eslint-disable-next-line max-len\n if ((currentData.Name === 'ink' || currentData.Name === 'SignatureField' || currentData.Name === 'SignatureImage' || currentData.Name === 'SignatureText') && currentData.FieldName === signData.ActualFieldName && currentData.Value && currentData.Value !== '') {\n signData.Value = currentData.Value;\n signData.FontFamily = currentData.FontFamily;\n signData.FontSize = currentData.FontSize;\n this.isSignatureField = true;\n if (!signData.Bounds) {\n signData.Bounds = currentData.LineBounds;\n }\n break;\n }\n }\n }\n return this.isSignatureField;\n };\n // eslint-disable-next-line\n FormFields.prototype.getBounds = function (bound, pageIndex, rotation) {\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n // eslint-disable-next-line\n var bounds;\n if (rotation > 0) {\n bounds = this.getBoundsPosition(rotation, bound, pageDetails);\n }\n else {\n bounds = this.getBoundsPosition(pageDetails.rotation, bound, pageDetails);\n }\n return bounds;\n };\n // eslint-disable-next-line\n FormFields.prototype.getBoundsPosition = function (rotation, bound, pageDetails) {\n // eslint-disable-next-line\n var bounds;\n switch (rotation) {\n case 90:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.top - bound.height, top: bound.left, width: bound.height, height: bound.width };\n break;\n case 180:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.left - bound.width, top: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n break;\n case 270:\n // eslint-disable-next-line\n bounds = { left: bound.top, top: pageDetails.height - bound.left - bound.width, width: bound.height, height: bound.width };\n break;\n case 0:\n bounds = bound;\n break;\n case 1:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.top - bound.height - (bound.width / 2 - bound.height / 2), top: bound.left + (bound.width / 2 - bound.height / 2), width: bound.width, height: bound.height };\n break;\n case 2:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.left - bound.width, top: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n break;\n case 3:\n // eslint-disable-next-line\n bounds = { left: bound.top - (bound.width / 2 - bound.height / 2), top: (pageDetails.height - bound.left - bound.width + (bound.width / 2 - bound.height / 2)), width: bound.width, height: bound.height };\n break;\n }\n if (!bounds) {\n bounds = bound;\n }\n return bounds;\n };\n // eslint-disable-next-line\n FormFields.prototype.applyPosition = function (inputField, bounds, font, pageIndex, rotation) {\n if (bounds) {\n var left = this.ConvertPointToPixel(bounds.X);\n var top_3 = this.ConvertPointToPixel(bounds.Y);\n var width = this.ConvertPointToPixel(bounds.Width);\n var height = this.ConvertPointToPixel(bounds.Height);\n var fontHeight = 0;\n // eslint-disable-next-line\n var fieldBounds = { left: left, top: top_3, width: width, height: height };\n // eslint-disable-next-line\n var annotBounds = this.getBounds(fieldBounds, pageIndex, rotation);\n if (font !== null && font.Height) {\n inputField.style.fontfamily = font.Name;\n if (font.Italic) {\n inputField.style.fontStyle = 'italic';\n }\n if (font.Bold) {\n inputField.style.fontWeight = 'Bold';\n }\n fontHeight = this.ConvertPointToPixel(font.Size);\n }\n this.pdfViewerBase.setStyleToTextDiv(inputField, annotBounds.left, annotBounds.top, fontHeight, annotBounds.width, annotBounds.height, false);\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.renderExistingAnnnot = function (data, index, printContainer) {\n if (!printContainer) {\n // eslint-disable-next-line\n var bounds = void 0;\n if (data.Bounds && data.Name !== 'ink') {\n bounds = data.Bounds;\n }\n else {\n bounds = data.LineBounds;\n }\n var currentLeft = void 0;\n var currentTop = void 0;\n var currentWidth = void 0;\n var currentHeight = void 0;\n if (bounds.x || bounds.y || bounds.width || bounds.height) {\n currentLeft = bounds.x;\n currentTop = bounds.y;\n currentWidth = bounds.width;\n currentHeight = bounds.height;\n }\n else {\n currentLeft = this.ConvertPointToPixel(bounds.X);\n currentTop = this.ConvertPointToPixel(bounds.Y);\n currentWidth = this.ConvertPointToPixel(bounds.Width);\n currentHeight = this.ConvertPointToPixel(bounds.Height);\n }\n // eslint-disable-next-line\n var currentPage = parseFloat(data['PageIndex']);\n // eslint-disable-next-line\n var bound = { left: currentLeft, top: currentTop, width: currentWidth, height: currentHeight };\n // eslint-disable-next-line\n var newBounds = this.updateSignatureBounds(bound, currentPage);\n var annot = void 0;\n var fontFamily = data.FontFamily ? data.FontFamily : data.fontFamily;\n // eslint-disable-next-line\n if ((data.Value.split('base64,')[1])) {\n annot = {\n // eslint-disable-next-line max-len\n id: this.pdfViewer.element.id + 'input_' + currentPage + '_' + index, bounds: newBounds, pageIndex: currentPage, data: data.Value, modifiedDate: '',\n shapeAnnotationType: 'SignatureImage', opacity: 1, rotateAngle: this.getAngle(currentPage), annotName: '', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n }\n else if (fontFamily) {\n annot = {\n // eslint-disable-next-line max-len\n id: this.pdfViewer.element.id + 'input_' + currentPage + '_' + index, bounds: newBounds, pageIndex: currentPage, data: data.Value, modifiedDate: '',\n shapeAnnotationType: 'SignatureText', opacity: 1, rotateAngle: this.getAngle(currentPage), annotName: '', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }, fontFamily: data.FontFamily, fontSize: data.FontSize\n };\n annot.fontFamily = fontFamily;\n annot.fontSize = data.FontSize ? data.FontSize : data.fontSize;\n }\n else {\n annot = {\n // eslint-disable-next-line max-len\n id: this.pdfViewer.element.id + 'input_' + currentPage + '_' + index, bounds: newBounds, pageIndex: currentPage, data: data.Value, modifiedDate: '',\n shapeAnnotationType: 'Path', opacity: 1, rotateAngle: this.getAngle(currentPage), annotName: '', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n }\n if ((data.Name === 'SignatureField' || data.Name === 'InitialField') && !isNullOrUndefined(data.id)) {\n var elementId = data.id;\n var signatureFieldElement = document.getElementById(elementId + '_content_html_element');\n var signatureField = this.pdfViewer.nameTable[elementId];\n annot.id = signatureField.id + \"_content\";\n var obj = this.pdfViewer.add(annot);\n signatureField.wrapper.children.push(obj.wrapper);\n if (!isNullOrUndefined(signatureFieldElement) && this.isSignatureField) {\n var inputField = signatureFieldElement.children[0].children[0];\n inputField.style.pointerEvents = 'none';\n inputField.className = 'e-pdfviewer-signatureformfields-signature';\n inputField.parentElement.style.pointerEvents = 'none';\n }\n }\n else {\n this.pdfViewer.add(annot);\n }\n data.Bounds = annot.bounds;\n if (this.pdfViewer.formDesignerModule) {\n this.updateSignatureDataInSession(annot, annot.id);\n }\n // eslint-disable-next-line\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentPage);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, currentPage);\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.updateSignatureBounds = function (bound, pageIndex) {\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails) {\n if (pageDetails.rotation === 1) {\n return { x: pageDetails.width - bound.top - bound.height - (bound.width / 2 - bound.height / 2), y: bound.left + (bound.width / 2 - bound.height / 2), width: bound.width, height: bound.height };\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n return { x: pageDetails.width - bound.left - bound.width, y: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n }\n else if (pageDetails.rotation === 3) {\n return { x: bound.top - (bound.width / 2 - bound.height / 2), y: (pageDetails.height - bound.left - bound.width + (bound.width / 2 - bound.height / 2)), width: bound.width, height: bound.height };\n }\n else {\n return { x: bound.left, y: bound.top, width: bound.width, height: bound.height };\n }\n }\n else {\n return { x: bound.left, y: bound.top, width: bound.width, height: bound.height };\n }\n };\n FormFields.prototype.resetFormFields = function () {\n var formFieldData = this.pdfViewer.formFieldCollections;\n for (var i = 0; i < formFieldData.length; i++) {\n var currentData = formFieldData[i];\n this.currentTarget = document.getElementById(currentData.id);\n if (currentData.type === 'Textbox') {\n this.currentTarget.value = currentData.value;\n }\n else if (currentData.type === 'RadioButton') {\n this.currentTarget.checked = currentData.value;\n if (currentData.value) {\n this.updateDataInSession(this.currentTarget);\n }\n }\n else if (currentData.type === 'DropDown') {\n this.currentTarget.value = currentData.value;\n }\n else if (currentData.type === 'CheckBox') {\n this.currentTarget.checked = currentData.value;\n }\n else if (currentData.type === 'SignatureField') {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.nameTable[currentData.id];\n if (annotation) {\n if (this.currentTarget && this.currentTarget.className === 'e-pdfviewer-signatureformfields-signature') {\n this.currentTarget.className = 'e-pdfviewer-signatureformfields';\n this.currentTarget.style.pointerEvents = '';\n this.updateDataInSession(this.currentTarget, '');\n }\n this.pdfViewer.remove(annotation);\n this.pdfViewer.renderDrawing();\n }\n }\n if (currentData.type !== 'RadioButton' && currentData.type !== 'SignatureField') {\n this.updateDataInSession(this.currentTarget);\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.clearFormFieldStorage = function () {\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n var maxSessionSize = 4500;\n if (sessionSize > maxSessionSize) {\n var storageLength = window.sessionStorage.length;\n // eslint-disable-next-line\n var annotationList = [];\n for (var i = 0; i < storageLength; i++) {\n if (window.sessionStorage.key(i) && window.sessionStorage.key(i).split('_')[3]) {\n if (window.sessionStorage.key(i).split('_')[3] === 'annotations') {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.formFieldStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n annotationList.push(window.sessionStorage.key(i));\n }\n }\n }\n if (annotationList) {\n for (var i = 0; i < annotationList.length; i++) {\n window.sessionStorage.removeItem(annotationList[i]);\n }\n }\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.clearFormFields = function (formField) {\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = void 0;\n if (formField) {\n formFieldsData = [formField];\n }\n else {\n formFieldsData = JSON.parse(data);\n }\n var isFirstRadio = true;\n for (var m = 0; m < formFieldsData.length; m++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[m];\n if (formField) {\n currentData.uniqueID = formField.id;\n currentData.Name = formField.type;\n }\n // eslint-disable-next-line\n this.currentTarget = document.getElementById(currentData.uniqueID);\n if (currentData.Name === 'Textbox') {\n this.currentTarget.value = '';\n }\n else if (currentData.Name === 'RadioButton') {\n if (isFirstRadio) {\n this.currentTarget.checked = true;\n this.updateDataInSession(this.currentTarget);\n isFirstRadio = false;\n }\n }\n else if (currentData.Name === 'DropDown') {\n this.currentTarget.value = currentData.TextList[0];\n }\n else if (currentData.Name === 'CheckBox') {\n this.currentTarget.checked = false;\n }\n else if (currentData.Name === 'SignatureField') {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.nameTable[currentData.uniqueID];\n if (annotation) {\n if (this.currentTarget && this.currentTarget.className === 'e-pdfviewer-signatureformfields-signature') {\n this.currentTarget.className = 'e-pdfviewer-signatureformfields';\n this.currentTarget.style.pointerEvents = '';\n this.currentTarget.parentElement.style.pointerEvents = '';\n this.updateDataInSession(this.currentTarget, '');\n if (formField) {\n formField.value = '';\n formField.signatureType = [formField.signatureType];\n formField.signatureType[0] = '';\n }\n }\n this.pdfViewer.remove(annotation);\n this.pdfViewer.renderDrawing();\n }\n }\n if (currentData.Name !== 'SignatureField' && currentData.Name !== 'ink' && currentData.Name !== 'RadioButton') {\n this.updateDataInSession(this.currentTarget);\n }\n }\n }\n };\n /**\n * @param number\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n /**\n * @private\n */\n FormFields.prototype.destroy = function () {\n this.currentTarget = null;\n this.readOnlyCollection = [];\n if (this.pdfViewerBase && this.pdfViewerBase.signatureModule)\n this.pdfViewerBase.signatureModule.destroy();\n };\n /**\n * @private\n */\n FormFields.prototype.getModuleName = function () {\n return 'FormFields';\n };\n return FormFields;\n}());\nexport { FormFields };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Size } from '../../primitives/size';\nimport { DrawingElement } from './drawing-element';\nimport { measureImage } from './../../utility/dom-util';\n/**\n * ImageElement defines a basic image elements\n */\nvar ImageElement = /** @class */ (function (_super) {\n __extends(ImageElement, _super);\n /**\n * set the id for each element\n */\n function ImageElement() {\n var _this = _super.call(this) || this;\n /**\n * sets or gets the image source\n */\n _this.imageSource = '';\n /**\n * sets scaling factor of the image\n */\n _this.imageScale = 'None';\n /**\n * sets the alignment of the image\n */\n _this.imageAlign = 'None';\n /**\n * Sets how to stretch the image\n */\n _this.stretch = 'Stretch';\n return _this;\n }\n Object.defineProperty(ImageElement.prototype, \"source\", {\n /**\n * Gets the source for the image element\n */\n get: function () {\n return this.imageSource;\n },\n /**\n * Sets the source for the image element\n */\n set: function (value) {\n this.imageSource = value;\n this.isDirt = true;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Measures minimum space that is required to render the image\n * @param availableSize\n */\n ImageElement.prototype.measure = function (availableSize) {\n if (this.isDirt && (this.stretch !== 'Stretch' || this.width === undefined && this.height === undefined)) {\n this.contentSize = measureImage(this.source, this.contentSize);\n this.isDirt = false;\n }\n if (this.width !== undefined && this.height !== undefined) {\n this.desiredSize = new Size(this.width, this.height);\n this.contentSize = this.desiredSize;\n }\n else {\n this.desiredSize = this.contentSize;\n }\n this.desiredSize = this.validateDesiredSize(this.desiredSize, availableSize);\n return this.desiredSize;\n };\n /**\n * Arranges the image\n * @param desiredSize\n */\n ImageElement.prototype.arrange = function (desiredSize) {\n this.actualSize = new Size(this.desiredSize.width, this.desiredSize.height);\n this.updateBounds();\n return this.actualSize;\n };\n return ImageElement;\n}(DrawingElement));\nexport { ImageElement };\n","import { PathElement } from '../core/elements/path-element';\nimport { TextElement } from '../core/elements/text-element';\nimport { Container } from '../core/containers/container';\nimport { wordBreakToString, whiteSpaceToString, textAlignToString } from '../utility/base-util';\nimport { getDiagramElement } from '../utility/dom-util';\nimport { CanvasRenderer } from './canvas-renderer';\nimport { ImageElement } from '../core/elements/image-element';\n/**\n * Renderer module is used to render basic diagram elements\n */\n/** @private */\nvar DrawingRenderer = /** @class */ (function () {\n function DrawingRenderer(name, isSvgMode) {\n /** @private */\n this.renderer = null;\n // private svgRenderer: SvgRenderer;\n /** @private */\n this.isSvgMode = true;\n this.diagramId = name;\n this.element = getDiagramElement(this.diagramId);\n this.isSvgMode = isSvgMode;\n this.renderer = new CanvasRenderer();\n // this.svgRenderer = new SvgRenderer();\n }\n // /** @private */\n // public setLayers(): void {\n // this.adornerSvgLayer = this.element.getElementsByClassName('e-adorner-layer')[0] as SVGSVGElement;\n // }\n /** @private */\n DrawingRenderer.prototype.renderElement = function (element, canvas, htmlLayer, transform, parentSvg, createParent, fromPalette, indexValue) {\n var isElement = true;\n if (element instanceof Container) {\n isElement = false;\n this.renderContainer(element, canvas, htmlLayer, transform, parentSvg, createParent, fromPalette, indexValue);\n }\n else if (element instanceof ImageElement) {\n this.renderImageElement(element, canvas, transform, parentSvg, fromPalette);\n }\n else if (element instanceof PathElement) {\n this.renderPathElement(element, canvas, transform, parentSvg, fromPalette);\n }\n else if (element instanceof TextElement) {\n this.renderTextElement(element, canvas, transform, parentSvg, fromPalette);\n }\n else {\n this.renderRect(element, canvas, transform, parentSvg);\n }\n };\n /** @private */\n DrawingRenderer.prototype.renderImageElement = function (element, canvas, transform, parentSvg, fromPalette) {\n var options = this.getBaseAttributes(element, transform);\n options.cornerRadius = 0;\n this.renderer.drawRectangle(canvas, options);\n // let sx: number; let sy: number;\n var imageWidth;\n var imageHeight;\n var sourceWidth;\n var sourceHeight;\n if (element.stretch === 'Stretch') {\n imageWidth = element.actualSize.width;\n imageHeight = element.actualSize.height;\n }\n else {\n var contentWidth = element.contentSize.width;\n var contentHeight = element.contentSize.height;\n var widthRatio = options.width / contentWidth;\n var heightRatio = options.height / contentHeight;\n var ratio = void 0;\n switch (element.stretch) {\n case 'Meet':\n ratio = Math.min(widthRatio, heightRatio);\n imageWidth = contentWidth * ratio;\n imageHeight = contentHeight * ratio;\n options.x += Math.abs(options.width - imageWidth) / 2;\n options.y += Math.abs(options.height - imageHeight) / 2;\n break;\n case 'Slice':\n widthRatio = options.width / contentWidth;\n heightRatio = options.height / contentHeight;\n ratio = Math.max(widthRatio, heightRatio);\n imageWidth = contentWidth * ratio;\n imageHeight = contentHeight * ratio;\n sourceWidth = options.width / imageWidth * contentWidth;\n sourceHeight = options.height / imageHeight * contentHeight;\n break;\n case 'None':\n imageWidth = contentWidth;\n imageHeight = contentHeight;\n break;\n }\n }\n options.width = imageWidth;\n options.height = imageHeight;\n //Commented for code coverage\n //(options as ImageAttributes).sourceX = sx;\n //(options as ImageAttrib utes).sourceY = sy;\n options.sourceWidth = sourceWidth;\n options.sourceHeight = sourceHeight;\n options.source = element.source;\n options.alignment = element.imageAlign;\n options.scale = element.imageScale;\n this.renderer.drawImage(canvas, options, parentSvg, fromPalette);\n };\n /** @private */\n DrawingRenderer.prototype.renderPathElement = function (element, canvas, transform, parentSvg, fromPalette) {\n var options = this.getBaseAttributes(element, transform);\n options.data = element.absolutePath;\n options.data = element.absolutePath;\n var ariaLabel = element.id;\n if (!this.isSvgMode) {\n options.x = options.x;\n options.y = options.y;\n }\n this.renderer.drawPath(canvas, options);\n };\n /** @private */\n DrawingRenderer.prototype.renderTextElement = function (element, canvas, transform, parentSvg, fromPalette) {\n var options = this.getBaseAttributes(element, transform);\n options.cornerRadius = 0;\n options.whiteSpace = whiteSpaceToString(element.style.whiteSpace, element.style.textWrapping);\n options.content = element.content;\n options.breakWord = wordBreakToString(element.style.textWrapping);\n options.textAlign = textAlignToString(element.style.textAlign);\n options.color = element.style.color;\n options.italic = element.style.italic;\n options.bold = element.style.bold;\n options.fontSize = element.style.fontSize;\n options.fontFamily = element.style.fontFamily;\n options.textOverflow = element.style.textOverflow;\n options.textDecoration = element.style.textDecoration;\n options.doWrap = element.doWrap;\n options.wrapBounds = element.wrapBounds;\n options.childNodes = element.childNodes;\n options.dashArray = '';\n options.strokeWidth = 0;\n options.fill = element.style.fill;\n var ariaLabel = element.content ? element.content : element.id;\n this.renderer.drawRectangle(canvas, options);\n this.renderer.drawText(canvas, options);\n };\n /** @private */\n DrawingRenderer.prototype.renderContainer = function (group, canvas, htmlLayer, transform, parentSvg, createParent, fromPalette, indexValue) {\n transform = { tx: 0, ty: 0, scale: 1 };\n var svgParent = { svg: parentSvg, g: canvas };\n if (this.diagramId) {\n parentSvg = parentSvg;\n }\n this.renderRect(group, canvas, transform, parentSvg);\n if (group.hasChildren()) {\n var parentG = void 0;\n var svgParent_1;\n for (var _i = 0, _a = group.children; _i < _a.length; _i++) {\n var child = _a[_i];\n this.renderElement(child, parentG || canvas, htmlLayer, transform, parentSvg, true, fromPalette, indexValue);\n }\n }\n };\n /** @private */\n DrawingRenderer.prototype.renderRect = function (element, canvas, transform, parentSvg) {\n var options = this.getBaseAttributes(element, transform);\n options.cornerRadius = element.cornerRadius || 0;\n var ariaLabel = element.id;\n this.renderer.drawRectangle(canvas, options);\n };\n /** @private */\n DrawingRenderer.prototype.getBaseAttributes = function (element, transform) {\n var options = {\n width: element.actualSize.width, height: element.actualSize.height,\n x: element.offsetX - element.actualSize.width * element.pivot.x + 0.5,\n y: element.offsetY - element.actualSize.height * element.pivot.y + 0.5,\n fill: element.style.fill, stroke: element.style.strokeColor, angle: element.rotateAngle + element.parentTransform,\n pivotX: element.pivot.x, pivotY: element.pivot.y, strokeWidth: element.style.strokeWidth,\n dashArray: element.style.strokeDashArray || '', opacity: element.style.opacity,\n visible: element.visible, id: element.id, gradient: element.style.gradient,\n };\n if (transform) {\n options.x += transform.tx;\n options.y += transform.ty;\n }\n return options;\n };\n return DrawingRenderer;\n}());\nexport { DrawingRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Container } from './container';\nimport { RotateTransform } from '../../enum/enum';\nimport { Size } from '../../primitives/size';\nimport { Rect } from '../../primitives/rect';\nimport { TextElement } from '../elements/text-element';\nimport { identityMatrix, rotateMatrix, transformPointByMatrix } from '../../primitives/matrix';\nimport { rotateSize } from '../../utility/base-util';\n/**\n * Canvas module is used to define a plane(canvas) and to arrange the children based on margin\n */\nvar Canvas = /** @class */ (function (_super) {\n __extends(Canvas, _super);\n function Canvas() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Not applicable for canvas\n * @private\n */\n _this.measureChildren = undefined;\n return _this;\n }\n /**\n * Measures the minimum space that the canvas requires\n * @param availableSize\n */\n Canvas.prototype.measure = function (availableSize) {\n var desired = undefined;\n var desiredBounds = undefined;\n if (this.hasChildren()) {\n //Measuring the children\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if (child instanceof TextElement) {\n if (child.canMeasure) {\n availableSize.width = availableSize.width || this.maxWidth || this.minWidth;\n child.measure(availableSize);\n }\n else {\n break;\n }\n }\n else if (!(child instanceof TextElement)) {\n child.measure(availableSize);\n }\n var childSize = child.desiredSize.clone();\n if (child.rotateAngle !== 0) {\n childSize = rotateSize(childSize, child.rotateAngle);\n }\n var right = childSize.width + child.margin.right;\n var bottom = childSize.height + child.margin.bottom;\n var childBounds = new Rect(child.margin.left, child.margin.top, right, bottom);\n if (child.float) {\n var position = child.getAbsolutePosition(childSize);\n if (position !== undefined) {\n continue;\n }\n }\n if ((!(child instanceof TextElement)) || (child instanceof TextElement && child.canConsiderBounds)) {\n if (desiredBounds === undefined) {\n desiredBounds = childBounds;\n }\n else {\n desiredBounds.uniteRect(childBounds);\n }\n }\n }\n if (desiredBounds) {\n var leftMargin = 0;\n var topMargin = 0;\n leftMargin = Math.max(desiredBounds.left, 0);\n topMargin = Math.max(desiredBounds.top, 0);\n desired = new Size(desiredBounds.width + leftMargin, desiredBounds.height + topMargin);\n }\n }\n desired = _super.prototype.validateDesiredSize.call(this, desired, availableSize);\n _super.prototype.stretchChildren.call(this, desired);\n this.desiredSize = desired;\n return desired;\n };\n /**\n * Arranges the child elements of the canvas\n */\n Canvas.prototype.arrange = function (desiredSize) {\n this.outerBounds = new Rect();\n if (this.hasChildren()) {\n var y = void 0;\n var x = void 0;\n y = this.offsetY - desiredSize.height * this.pivot.y;\n x = this.offsetX - desiredSize.width * this.pivot.x;\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if ((child.transform & RotateTransform.Parent) !== 0) {\n child.parentTransform = this.parentTransform + this.rotateAngle;\n var childSize = child.desiredSize.clone();\n var topLeft = void 0;\n var center = { x: 0, y: 0 };\n var childX = x;\n var childY = y;\n if (child.relativeMode === 'Point') {\n var position = child.getAbsolutePosition(desiredSize);\n if (position !== undefined) {\n childX += position.x;\n childY += position.y;\n }\n }\n if (child.relativeMode === 'Object') {\n topLeft = this.alignChildBasedOnParent(child, childSize, desiredSize, childX, childY);\n }\n else {\n topLeft = this.alignChildBasedOnaPoint(child, childX, childY);\n }\n center = { x: topLeft.x + childSize.width / 2, y: topLeft.y + childSize.height / 2 };\n if (child.rotateValue) {\n var rotateValue = {\n x: this.offsetX + (child.rotateValue.x || 0),\n y: this.offsetY + (child.rotateValue.y || 0)\n };\n var centerPoint = { x: this.offsetX, y: this.offsetY };\n var angle = child.rotateValue.angle | 0;\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, centerPoint.x, centerPoint.y);\n center = transformPointByMatrix(matrix, rotateValue);\n }\n _super.prototype.findChildOffsetFromCenter.call(this, child, center);\n }\n if ((child.horizontalAlignment === 'Stretch' || child.verticalAlignment === 'Stretch')) {\n child.arrange(desiredSize);\n }\n else {\n if (child instanceof TextElement && child.canMeasure) {\n child.arrange(child.desiredSize);\n this.outerBounds.uniteRect(child.outerBounds);\n }\n else if (!(child instanceof TextElement)) {\n child.arrange(child.desiredSize);\n this.outerBounds.uniteRect(child.outerBounds);\n }\n }\n }\n }\n this.actualSize = desiredSize;\n this.updateBounds();\n this.outerBounds.uniteRect(this.bounds);\n return desiredSize;\n };\n /**\n * Aligns the child element based on its parent\n * @param child\n * @param childSize\n * @param parentSize\n * @param x\n * @param y\n */\n Canvas.prototype.alignChildBasedOnParent = function (child, childSize, parentSize, x, y) {\n switch (child.horizontalAlignment) {\n case 'Auto':\n case 'Left':\n x += child.margin.left;\n break;\n case 'Right':\n x += parentSize.width - childSize.width - child.margin.right;\n break;\n case 'Stretch':\n case 'Center':\n x += parentSize.width / 2 - childSize.width / 2;\n break;\n }\n switch (child.verticalAlignment) {\n case 'Auto':\n case 'Top':\n y += child.margin.top;\n break;\n case 'Bottom':\n y += parentSize.height - childSize.height - child.margin.bottom;\n break;\n case 'Stretch':\n case 'Center':\n y += parentSize.height / 2 - childSize.height / 2;\n break;\n }\n return { x: x, y: y };\n };\n /**\n * Aligns the child elements based on a point\n * @param child\n * @param x\n * @param y\n */\n Canvas.prototype.alignChildBasedOnaPoint = function (child, x, y) {\n x += child.margin.left - child.margin.right;\n y += child.margin.top - child.margin.bottom;\n switch (child.horizontalAlignment) {\n case 'Auto':\n case 'Left':\n x = x;\n break;\n case 'Stretch':\n case 'Center':\n x -= child.desiredSize.width * child.pivot.x;\n break;\n case 'Right':\n x -= child.desiredSize.width;\n break;\n }\n switch (child.verticalAlignment) {\n case 'Auto':\n case 'Top':\n y = y;\n break;\n case 'Stretch':\n case 'Center':\n y -= child.desiredSize.height * child.pivot.y;\n break;\n case 'Bottom':\n y -= child.desiredSize.height;\n break;\n }\n return { x: x, y: y };\n };\n return Canvas;\n}(Container));\nexport { Canvas };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { compile as baseTemplateComplier } from '@syncfusion/ej2-base';\nimport { DrawingElement } from '@syncfusion/ej2-drawings';\n/**\n * HTMLElement defines the basic html elements\n */\nvar DiagramHtmlElement = /** @class */ (function (_super) {\n __extends(DiagramHtmlElement, _super);\n /**\n * set the id for each element\n *\n * @param {string} nodeTemplate - Set the id for each element.\n * @returns {void}\n *\n * @private\n */\n function DiagramHtmlElement(nodeTemplate) {\n var _this = _super.call(this) || this;\n _this.templateFn = _this.templateCompiler(nodeTemplate);\n return _this;\n }\n DiagramHtmlElement.prototype.templateCompiler = function (template) {\n if (template) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n };\n /**\n * getNodeTemplate method \\\n *\n * @returns { Function } getNodeTemplate method .\\\n *\n * @private\n */\n DiagramHtmlElement.prototype.getNodeTemplate = function () {\n return this.templateFn;\n };\n return DiagramHtmlElement;\n}(DrawingElement));\nexport { DiagramHtmlElement };\n","import { LineTool } from '../index';\nimport { ZOrderPageTable, PdfAnnotationBase, PdfFormFieldBase } from './pdf-annotation';\nimport { Rect, Point, identityMatrix, rotateMatrix, getDiagramElement, ThumbsConstraints, scaleMatrix, cornersPointsBeforeRotation, ImageElement } from '@syncfusion/ej2-drawings';\nimport { DrawingElement } from '@syncfusion/ej2-drawings';\nimport { PathElement } from '@syncfusion/ej2-drawings';\nimport { createMeasureElements } from '@syncfusion/ej2-drawings';\nimport { randomId } from '@syncfusion/ej2-drawings';\nimport { Size, transformPointByMatrix, RotateTransform, TextElement } from '@syncfusion/ej2-drawings';\nimport { Canvas, refreshDiagramElements, DrawingRenderer } from '@syncfusion/ej2-drawings';\nimport { Selector } from './selector';\nimport { SvgRenderer } from '@syncfusion/ej2-drawings';\nimport { isLineShapes, setElementStype, findPointsLength, getBaseShapeAttributes, isLeader, cloneObject } from './drawing-util';\nimport { getConnectorPoints, updateSegmentElement, getSegmentElement, updateDecoratorElement, getDecoratorElement, clipDecorators, initDistanceLabel, initLeaders, initLeader, getPolygonPath, initPerimeterLabel } from './connector-util';\nimport { isNullOrUndefined, isBlazor, Browser } from '@syncfusion/ej2-base';\nimport { DiagramHtmlElement } from './html-element';\n/**\n * Renderer module is used to render basic diagram elements\n *\n * @hidden\n */\nvar Drawing = /** @class */ (function () {\n function Drawing(viewer) {\n this.isDynamicStamps = false;\n this.pdfViewer = viewer;\n this.renderer = new DrawingRenderer('this.pdfViewer.element.id', false);\n this.svgRenderer = new SvgRenderer();\n }\n /**\n * @private\n * @param {PdfViewer} viewer - Specified the pdfViewer element.\n * @returns {void}\n */\n Drawing.prototype.renderLabels = function (viewer) {\n var annotations = viewer.annotations;\n if (annotations) {\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n this.initObject(annotation);\n }\n }\n };\n Drawing.prototype.createNewZindexTable = function (pageId) {\n var zIndexTable = new ZOrderPageTable();\n this.pdfViewer.zIndex++;\n zIndexTable.pageId = this.pdfViewer.zIndex;\n this.pdfViewer.zIndexTable.push(zIndexTable);\n return zIndexTable;\n };\n /**\n * @private\n * @param {number} pageId - Specified the page Id.\n * @returns {ZOrderPageTable} - Returns the ZOrder page table.\n */\n Drawing.prototype.getPageTable = function (pageId) {\n var zIndexTable;\n if (this.pdfViewer.zIndexTable.length !== undefined) {\n var notFound = true;\n for (var i = 0; i < this.pdfViewer.zIndexTable.length; i++) {\n if (this.pdfViewer.zIndexTable[i].pageId === pageId) {\n notFound = false;\n zIndexTable = this.pdfViewer.zIndexTable[i];\n break;\n }\n }\n if (notFound) {\n zIndexTable = this.createNewZindexTable(pageId);\n zIndexTable.pageId = pageId;\n }\n }\n else {\n zIndexTable = this.createNewZindexTable(pageId);\n }\n return zIndexTable;\n };\n /**\n * @private\n * @param {number} index - Specified the page index value.\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {void}\n */\n Drawing.prototype.setZIndex = function (index, obj) {\n if (obj.pageIndex !== undefined) {\n var pageTable = this.getPageTable(obj.pageIndex);\n if (obj.zIndex === -1) {\n pageTable.zIndex++;\n obj.zIndex = pageTable.zIndex;\n pageTable.objects.push(obj);\n }\n else {\n var index_1 = obj.zIndex;\n var tabelLength = pageTable.objects.length;\n obj.zIndex = tabelLength++;\n pageTable.objects.push(obj);\n }\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel | PdfFormFieldBaseModel} obj - Specified the annotation object.\n * @returns {PdfAnnotationBaseModel | PdfFormFieldBaseModel} - Returns the annotaion or form fields model.\n */\n Drawing.prototype.initObject = function (obj) {\n //Move the common properties like zindex and id to an abstract class\n this.setZIndex(this.pdfViewer.zIndex, obj);\n createMeasureElements();\n if (!isLineShapes(obj)) {\n this.initNode(obj);\n }\n else {\n this.initLine(obj);\n obj.wrapper.measure(new Size(undefined, undefined));\n obj.wrapper.arrange(obj.wrapper.desiredSize);\n }\n if (obj.wrapper === null) {\n //Init default wrapper\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.pdfViewer.nameTable[obj.id] = obj;\n if (obj.formFieldAnnotationType) {\n this.nodePropertyChange(obj, { bounds: { width: obj.bounds.width, height: obj.bounds.height } });\n }\n //Add some methodologies to add the children of group to name table\n return obj;\n };\n Drawing.prototype.initNode = function (obj) {\n var canvas = this.initContainer(obj);\n var content;\n if (!canvas.children) {\n canvas.children = [];\n }\n if (!content) {\n content = this.init(obj, canvas);\n }\n //canvas.children.push(content);\n canvas.rotateAngle = obj.rotateAngle;\n // eslint-disable-next-line max-len\n canvas.measure(new Size(obj.wrapper.width, obj.wrapper.height));\n canvas.arrange(canvas.desiredSize);\n if (this.isDynamicStamps) {\n this.pdfViewer.annotation.stampAnnotationModule.updateSessionStorage(obj, null, 'dynamicStamp');\n this.isDynamicStamps = false;\n }\n };\n /**\n * Allows to initialize the UI of a node\n */\n /**\n * @private\n * @param {PdfAnnotationBaseModel | PdfFormFieldBaseModel} obj - Specified the annotation object.\n * @param {Container} canvas - Specified the canvas element.\n * @returns {DrawingElement} - Returns the drawing element.\n */\n Drawing.prototype.init = function (obj, canvas) {\n var content;\n content = new DrawingElement();\n var pathContent;\n var basicElement;\n var isStamp = false;\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.annotationModule ? this.pdfViewer.annotationModule.findAnnotationSettings(obj) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n var isAnnotationSet = false;\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n isAnnotationSet = true;\n }\n if (obj.formFieldAnnotationType) {\n content = this.initFormFields(obj, content, canvas);\n }\n else {\n // eslint-disable-next-line max-len\n content = this.initAnnotationObject(obj, pathContent, content, canvas, isStamp, basicElement, isAnnotationSet, annotationMaxHeight, annotationMaxWidth, annotationMinWidth, annotationMinHeight);\n }\n content.id = obj.id + '_content';\n content.relativeMode = 'Object';\n if (obj.shapeAnnotationType !== 'Stamp') {\n if (obj.bounds.width !== undefined) {\n content.width = obj.bounds.width;\n if (isAnnotationSet) {\n if ((content.width < annotationMinWidth) || (content.width > annotationMaxWidth)) {\n if (content.width < annotationMinWidth) {\n content.width = annotationMinWidth;\n }\n if (content.width > annotationMaxWidth) {\n content.width = annotationMaxWidth;\n }\n }\n }\n }\n content.horizontalAlignment = 'Stretch';\n if (obj.bounds.height !== undefined) {\n content.height = obj.bounds.height;\n if (isAnnotationSet) {\n if ((content.height < annotationMinHeight) || (content.width > annotationMaxHeight)) {\n if (content.height < annotationMinHeight) {\n content.height = annotationMinHeight;\n }\n if (content.height > annotationMaxHeight) {\n content.height = annotationMaxHeight;\n }\n }\n }\n }\n setElementStype(obj, content);\n if (this.pdfViewer.viewerBase.drawSignatureWithTool && obj.shapeAnnotationType === 'SignatureText') {\n content.style.strokeWidth = 0;\n }\n }\n content.isRectElement = true;\n content.verticalAlignment = 'Stretch';\n return content;\n };\n Drawing.prototype.initFormFields = function (obj, content, canvas) {\n switch (obj.formFieldAnnotationType) {\n case 'Textbox':\n case 'PasswordField':\n case 'Checkbox':\n case 'RadioButton':\n case 'DropdownList':\n case 'ListBox':\n case 'SignatureField':\n case 'InitialField':\n // eslint-disable-next-line\n var htmlContent = new DiagramHtmlElement();\n content = htmlContent;\n content.rotateAngle = this.pdfViewer.formFieldsModule.getAngle(obj.pageIndex);\n content.id = obj.id + '_content';\n canvas.children.push(content);\n break;\n }\n return content;\n };\n // eslint-disable-next-line\n Drawing.prototype.initAnnotationObject = function (obj, pathContent, content, canvas, isStamp, basicElement, isAnnotationSet, annotationMaxHeight, annotationMaxWidth, annotationMinWidth, annotationMinHeight) {\n switch (obj.shapeAnnotationType) {\n case 'Ellipse':\n pathContent = new PathElement();\n pathContent.data = 'M80.5,12.5 C80.5,19.127417 62.59139,24.5 40.5,24.5 C18.40861,24.5 0.5,19.127417 0.5,12.5' +\n 'C0.5,5.872583 18.40861,0.5 40.5,0.5 C62.59139,0.5 80.5,5.872583 80.5,12.5 z';\n content = pathContent;\n canvas.children.push(content);\n if (obj.enableShapeLabel) {\n var textLabel = this.textElement(obj);\n textLabel.content = obj.labelContent;\n textLabel.style.color = obj.fontColor;\n textLabel.style.strokeColor = obj.labelBorderColor;\n textLabel.style.fill = obj.labelFillColor;\n textLabel.style.fontSize = obj.fontSize;\n textLabel.style.fontFamily = obj.fontFamily;\n textLabel.style.opacity = obj.labelOpacity;\n canvas.children.push(textLabel);\n }\n break;\n case 'Path':\n pathContent = new PathElement();\n pathContent.data = obj.data;\n content = pathContent;\n canvas.children.push(content);\n break;\n case 'HandWrittenSignature':\n case 'Ink':\n pathContent = new PathElement();\n pathContent.data = obj.data;\n pathContent.style.strokeColor = obj.strokeColor;\n pathContent.style.strokeWidth = obj.thickness;\n pathContent.style.opacity = obj.opacity;\n content = pathContent;\n canvas.children.push(content);\n break;\n case 'Polygon':\n pathContent = new PathElement();\n pathContent.data = getPolygonPath(obj.vertexPoints);\n content = pathContent;\n canvas.children.push(content);\n break;\n case 'Stamp':\n isStamp = true;\n this.isDynamicStamps = true;\n if (obj && obj.annotationAddMode && (obj.annotationAddMode === 'Existing Annotation' || obj.annotationAddMode === 'Imported Annotation')) {\n obj.bounds.width = obj.bounds.width - 20;\n obj.bounds.height = obj.bounds.height - 20;\n }\n if (obj.isDynamicStamp) {\n canvas.horizontalAlignment = 'Left';\n basicElement = new DrawingElement();\n content = basicElement;\n content.cornerRadius = 10;\n content.style.fill = obj.stampFillColor;\n content.style.strokeColor = obj.stampStrokeColor;\n canvas.children.push(content);\n var textele_1 = this.textElement(obj);\n textele_1 = new TextElement();\n textele_1.style.fontFamily = 'Helvetica';\n textele_1.style.fontSize = 14;\n textele_1.style.italic = true;\n textele_1.style.bold = true;\n textele_1.style.color = obj.fillColor;\n textele_1.rotateValue = undefined;\n textele_1.content = obj.dynamicText;\n textele_1.relativeMode = 'Point';\n textele_1.margin.left = 10;\n textele_1.margin.bottom = -7;\n textele_1.setOffsetWithRespectToBounds(0, 0.57, null);\n textele_1.relativeMode = 'Point';\n canvas.children.push(textele_1);\n // eslint-disable-next-line\n var pathContent1 = new PathElement();\n pathContent1.id = randomId() + '_stamp';\n pathContent1.data = obj.data;\n pathContent1.width = obj.bounds.width;\n if (isAnnotationSet && (obj.bounds.width > annotationMaxWidth)) {\n pathContent1.width = annotationMaxWidth;\n obj.bounds.width = annotationMaxWidth;\n }\n pathContent1.height = obj.bounds.height / 2;\n if (isAnnotationSet && (obj.bounds.height > annotationMaxHeight)) {\n pathContent1.height = annotationMaxHeight / 2;\n obj.bounds.height = annotationMaxHeight / 2;\n }\n pathContent1.rotateValue = undefined;\n pathContent1.margin.left = 10;\n pathContent1.margin.bottom = -5;\n pathContent1.relativeMode = 'Point';\n pathContent1.setOffsetWithRespectToBounds(0, 0.1, null);\n // eslint-disable-next-line\n var content1 = pathContent1;\n pathContent1.style.fill = obj.fillColor;\n pathContent1.style.strokeColor = obj.strokeColor;\n pathContent1.style.opacity = obj.opacity;\n content.width = obj.bounds.width + 20;\n content.height = obj.bounds.height + 20;\n content.style.opacity = obj.opacity;\n canvas.children.push(content1);\n }\n else {\n canvas.horizontalAlignment = 'Left';\n basicElement = new DrawingElement();\n content = basicElement;\n content.cornerRadius = 10;\n content.style.fill = obj.stampFillColor;\n content.style.strokeColor = obj.stampStrokeColor;\n canvas.children.push(content);\n // eslint-disable-next-line\n var pathContent1 = new PathElement();\n pathContent1.id = randomId() + '_stamp';\n pathContent1.data = obj.data;\n pathContent1.width = obj.bounds.width;\n if (isAnnotationSet && (obj.bounds.width > annotationMaxWidth)) {\n pathContent1.width = annotationMaxWidth;\n obj.bounds.width = annotationMaxWidth;\n }\n pathContent1.height = obj.bounds.height;\n if (isAnnotationSet && (obj.bounds.height > annotationMaxHeight)) {\n pathContent1.height = annotationMaxHeight;\n obj.bounds.height = annotationMaxHeight;\n }\n pathContent1.minWidth = pathContent1.width / 2;\n pathContent1.minHeight = pathContent1.height / 2;\n // eslint-disable-next-line\n var content1 = pathContent1;\n pathContent1.style.fill = obj.fillColor;\n pathContent1.style.strokeColor = obj.strokeColor;\n pathContent1.style.opacity = obj.opacity;\n content.width = obj.bounds.width + 20;\n content.height = obj.bounds.height + 20;\n content.minWidth = pathContent1.width / 2;\n content.minHeight = pathContent1.height / 2;\n content.style.opacity = obj.opacity;\n canvas.children.push(content1);\n canvas.minHeight = content.minHeight + 20;\n canvas.minWidth = content.minWidth + 20;\n }\n break;\n case 'Image':\n case 'SignatureImage':\n // eslint-disable-next-line\n var pathContent11 = new ImageElement();\n pathContent11.source = obj.data;\n content = pathContent11;\n content.style.strokeWidth = 0;\n canvas.children.push(content);\n break;\n case 'Rectangle':\n basicElement = new DrawingElement();\n content = basicElement;\n canvas.children.push(content);\n if (obj.enableShapeLabel) {\n var textLabel = this.textElement(obj);\n textLabel.content = obj.labelContent;\n textLabel.style.color = obj.fontColor;\n textLabel.style.strokeColor = obj.labelBorderColor;\n textLabel.style.fill = obj.labelFillColor;\n textLabel.style.fontSize = obj.fontSize;\n textLabel.style.fontFamily = obj.fontFamily;\n textLabel.style.opacity = obj.labelOpacity;\n canvas.children.push(textLabel);\n }\n break;\n case 'Perimeter':\n pathContent = new PathElement();\n pathContent.data = 'M80.5,12.5 C80.5,19.127417 62.59139,24.5 40.5,24.5 C18.40861,24.5 0.5,19.127417 0.5,12.5' +\n 'C0.5,5.872583 18.40861,0.5 40.5,0.5 C62.59139,0.5 80.5,5.872583 80.5,12.5 z';\n content = pathContent;\n setElementStype(obj, pathContent);\n canvas.children.push(content);\n basicElement = new DrawingElement();\n basicElement.id = 'perimeter_' + randomId();\n basicElement.height = .2;\n basicElement.width = .2;\n basicElement.transform = RotateTransform.Self;\n basicElement.horizontalAlignment = 'Stretch';\n this.setNodePosition(basicElement, obj);\n basicElement.rotateAngle = obj.rotateAngle;\n setElementStype(obj, basicElement);\n canvas.children.push(basicElement);\n // eslint-disable-next-line\n var textele = this.textElement(obj);\n textele = new TextElement();\n textele.content = textele.content = findPointsLength([\n { x: obj.bounds.x, y: obj.bounds.y },\n { x: obj.bounds.x + obj.bounds.width, y: obj.bounds.y + obj.bounds.height }\n ]).toString();\n textele.rotateValue = { y: -10, angle: obj.rotateAngle };\n canvas.children.push(textele);\n break;\n case 'Radius':\n pathContent = new PathElement();\n pathContent.data = 'M80.5,12.5 C80.5,19.127417 62.59139,24.5 40.5,24.5 C18.40861,24.5 0.5,19.127417 0.5,12.5' +\n 'C0.5,5.872583 18.40861,0.5 40.5,0.5 C62.59139,0.5 80.5,5.872583 80.5,12.5 z';\n content = pathContent;\n setElementStype(obj, pathContent);\n canvas.children.push(content);\n basicElement = new DrawingElement();\n basicElement.id = 'radius_' + randomId();\n basicElement.height = .2;\n basicElement.width = obj.bounds.width / 2;\n basicElement.transform = RotateTransform.Self;\n this.setNodePosition(basicElement, obj);\n basicElement.rotateAngle = obj.rotateAngle;\n setElementStype(obj, basicElement);\n canvas.children.push(basicElement);\n // eslint-disable-next-line\n var radiusTextEle = this.textElement(obj);\n if (obj.enableShapeLabel) {\n radiusTextEle.style.color = obj.fontColor;\n radiusTextEle.style.strokeColor = obj.labelBorderColor;\n radiusTextEle.style.fill = obj.labelFillColor;\n radiusTextEle.style.fontSize = obj.fontSize;\n radiusTextEle.style.fontFamily = obj.fontFamily;\n radiusTextEle.style.opacity = obj.labelOpacity;\n }\n // eslint-disable-next-line\n var length_1 = findPointsLength([\n { x: obj.bounds.x, y: obj.bounds.y },\n { x: obj.bounds.x + obj.bounds.width, y: obj.bounds.y + obj.bounds.height }\n ]);\n if (!this.pdfViewer.enableImportAnnotationMeasurement && obj.notes && obj.notes !== '') {\n radiusTextEle.content = obj.notes;\n }\n else {\n // eslint-disable-next-line max-len\n radiusTextEle.content = this.pdfViewer.annotation.measureAnnotationModule.setConversion((obj.bounds.width / 2) * this.pdfViewer.annotation.measureAnnotationModule.pixelToPointFactor, obj);\n }\n radiusTextEle.rotateValue = { y: -10, x: obj.bounds.width / 4, angle: obj.rotateAngle };\n canvas.children.push(radiusTextEle);\n break;\n case 'StickyNotes':\n // eslint-disable-next-line\n var pathContent2 = new ImageElement();\n pathContent2.source = obj.data;\n pathContent2.width = obj.bounds.width;\n pathContent2.height = obj.bounds.height;\n pathContent2.style.strokeColor = obj.strokeColor;\n pathContent2.style.strokeWidth = 0;\n content = pathContent2;\n canvas.children.push(content);\n break;\n case 'SignatureText':\n //eslint-disable-next-line\n var rectElements = new DrawingElement();\n rectElements.style.strokeWidth = 0;\n content = rectElements;\n content.style.strokeWidth = 0;\n canvas.style.strokeWidth = 0;\n canvas.children.push(content);\n // eslint-disable-next-line\n var signatureText = this.textElement(obj);\n signatureText.style.fontFamily = obj.fontFamily;\n signatureText.style.fontSize = obj.fontSize;\n signatureText.style.textAlign = 'Left';\n signatureText.rotateValue = undefined;\n signatureText.content = obj.data;\n signatureText.margin.top = (obj.fontSize / 2);\n signatureText.style.strokeWidth = 0;\n canvas.children.push(signatureText);\n break;\n case 'FreeText':\n // eslint-disable-next-line\n var rectElement = new DrawingElement();\n content = rectElement;\n canvas.children.push(content);\n // eslint-disable-next-line\n var freeTextEle = this.textElement(obj);\n freeTextEle = new TextElement();\n freeTextEle.style.fontFamily = obj.fontFamily;\n freeTextEle.style.fontSize = obj.fontSize;\n freeTextEle.style.textAlign = 'Left';\n if (obj.textAlign.toLowerCase() === 'center') {\n freeTextEle.style.textAlign = 'Center';\n }\n else if (obj.textAlign.toLowerCase() === 'right') {\n freeTextEle.style.textAlign = 'Right';\n }\n else if (obj.textAlign.toLowerCase() === 'justify') {\n freeTextEle.style.textAlign = 'Justify';\n }\n freeTextEle.style.color = obj.fontColor;\n freeTextEle.style.bold = obj.font.isBold;\n freeTextEle.style.italic = obj.font.isItalic;\n if (obj.font.isUnderline === true) {\n freeTextEle.style.textDecoration = 'Underline';\n }\n else if (obj.font.isStrikeout === true) {\n freeTextEle.style.textDecoration = 'LineThrough';\n }\n freeTextEle.rotateValue = undefined;\n freeTextEle.content = obj.dynamicText;\n freeTextEle.style.opacity = obj.opacity;\n freeTextEle.margin.left = 4;\n freeTextEle.margin.top = 5 * (obj.fontSize / 16);\n if (this.pdfViewer.freeTextSettings.enableAutoFit) {\n freeTextEle.style.textWrapping = 'Wrap';\n }\n else {\n freeTextEle.style.textWrapping = 'WrapWithOverflow';\n }\n freeTextEle.relativeMode = 'Point';\n freeTextEle.setOffsetWithRespectToBounds(0, 0, null);\n freeTextEle.relativeMode = 'Point';\n canvas.children.push(freeTextEle);\n break;\n }\n content.id = obj.id + '_content';\n content.relativeMode = 'Object';\n if (!isStamp) {\n if (obj.bounds.width !== undefined) {\n content.width = obj.bounds.width;\n if (isAnnotationSet) {\n if ((content.width < annotationMinWidth) || (content.width > annotationMaxWidth)) {\n if (content.width < annotationMinWidth) {\n content.width = annotationMinWidth;\n }\n if (content.width > annotationMaxWidth) {\n content.width = annotationMaxWidth;\n }\n }\n }\n }\n content.horizontalAlignment = 'Stretch';\n if (obj.bounds.height !== undefined) {\n content.height = obj.bounds.height;\n if (isAnnotationSet) {\n if ((content.height < annotationMinHeight) || (content.width > annotationMaxHeight)) {\n if (content.height < annotationMinHeight) {\n content.height = annotationMinHeight;\n }\n if (content.height > annotationMaxHeight) {\n content.height = annotationMaxHeight;\n }\n }\n }\n }\n setElementStype(obj, content);\n }\n content.isRectElement = true;\n content.verticalAlignment = 'Stretch';\n return content;\n };\n Drawing.prototype.textElement = function (obj) {\n var textele = new TextElement();\n setElementStype(obj, textele);\n textele.horizontalAlignment = 'Center';\n textele.verticalAlignment = 'Top';\n textele.relativeMode = 'Object';\n textele.setOffsetWithRespectToBounds(.5, .5, 'Absolute');\n return textele;\n };\n /**\n * @private\n * @param {DrawingElement} obj - Specified the drawing element.\n * @param {PdfAnnotationBaseModel} node - Specified the node element.\n * @returns {void}\n */\n Drawing.prototype.setNodePosition = function (obj, node) {\n if (node.shapeAnnotationType === 'Perimeter') {\n obj.offsetX = node.bounds.x + node.bounds.width / 2;\n obj.offsetY = node.bounds.y + node.bounds.height / 2;\n }\n else if (node.shapeAnnotationType === 'Radius') {\n // eslint-disable-next-line max-len\n var trasPoint = { x: node.bounds.x + (node.bounds.width / 2) + (node.bounds.width / 4), y: node.bounds.y + (node.bounds.height / 2) };\n var center = { x: (node.bounds.x + (node.bounds.width / 2)), y: (node.bounds.y + (node.bounds.height / 2)) };\n var matrix = identityMatrix();\n rotateMatrix(matrix, node.rotateAngle, center.x, center.y);\n var rotatedPoint = transformPointByMatrix(matrix, trasPoint);\n var newPoint1 = { x: rotatedPoint.x, y: rotatedPoint.y };\n obj.offsetX = newPoint1.x;\n obj.offsetY = newPoint1.y;\n obj.width = node.bounds.width / 2;\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {Container} - Returns the container element.\n */\n Drawing.prototype.initContainer = function (obj) {\n if (!obj.id) {\n obj.id = randomId();\n }\n // Creates canvas element\n var canvas = new Canvas();\n canvas.id = obj.id;\n canvas.offsetX = obj.bounds.x + (obj.bounds.width * 0.5);\n canvas.offsetY = obj.bounds.y + (obj.bounds.height * 0.5);\n canvas.style.fill = 'transparent';\n canvas.style.strokeColor = 'transparent';\n canvas.rotateAngle = obj.rotateAngle;\n obj.wrapper = canvas;\n return canvas;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {Canvas} - Returns the canvas element.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Drawing.prototype.initLine = function (obj) {\n if (!obj.id) {\n obj.id = randomId();\n }\n var bpmnElement;\n var container = new Canvas();\n var segment = new PathElement();\n segment.id = obj.id + '_path';\n var srcDecorator = new PathElement();\n var targetDecorator = new PathElement();\n if (obj.vertexPoints.length) {\n obj.sourcePoint = obj.vertexPoints[0];\n obj.targetPoint = obj.vertexPoints[obj.vertexPoints.length - 1];\n for (var i = 0; i < obj.vertexPoints.length; i++) {\n if (i !== 0 && i !== obj.vertexPoints.length - 1) {\n obj.segments.push(obj.vertexPoints[i]);\n }\n }\n }\n segment = getSegmentElement(obj, segment);\n var points = [];\n points = getConnectorPoints(obj);\n // points = this.clipDecorators(this, points);\n var leaders = [];\n var labels = [];\n if (obj.shapeAnnotationType === 'Distance') {\n leaders = initLeaders(obj, points);\n labels = initDistanceLabel(obj, points, this.pdfViewer.annotation.measureAnnotationModule, this.pdfViewer);\n }\n if ((obj.shapeAnnotationType === 'Line' || obj.shapeAnnotationType === 'LineWidthArrowHead') && obj.measureType === 'Perimeter') {\n labels = initPerimeterLabel(obj, points, this.pdfViewer.annotation.measureAnnotationModule, this.pdfViewer);\n }\n if (obj.enableShapeLabel === true && !(obj.shapeAnnotationType === 'Distance') && !(obj.measureType === 'Perimeter')) {\n var angle = Point.findAngle(points[0], points[1]);\n var textele = this.textElement(obj);\n textele.id = randomId();\n if (!this.pdfViewer.enableImportAnnotationMeasurement && obj.notes && obj.notes !== '') {\n textele.content = obj.notes;\n }\n else {\n textele.content = obj.labelContent;\n }\n textele.style.strokeColor = obj.labelBorderColor;\n textele.style.fill = obj.labelFillColor;\n textele.style.fontSize = obj.fontSize;\n textele.style.color = obj.fontColor;\n textele.style.fontFamily = obj.fontFamily;\n textele.style.opacity = obj.labelOpacity;\n textele.rotateValue = { y: -10, angle: angle };\n labels.push(textele);\n }\n points = clipDecorators(obj, points);\n var bounds = Rect.toBounds(points);\n container.width = bounds.width;\n container.height = bounds.height;\n container.offsetX = bounds.x + container.pivot.x * bounds.width;\n container.offsetY = bounds.y + container.pivot.y * bounds.height;\n var anglePoints = obj.vertexPoints;\n var accessContent = 'getDescription';\n // eslint-disable-next-line max-len\n if (obj.shapeAnnotationType === 'Line' || obj.shapeAnnotationType === 'LineWidthArrowHead' || obj.shapeAnnotationType === 'Distance') {\n srcDecorator = getDecoratorElement(obj, points[0], anglePoints[1], true);\n targetDecorator = getDecoratorElement(obj, points[points.length - 1], anglePoints[anglePoints.length - 2], false);\n }\n srcDecorator.id = obj.id + '_srcDec';\n targetDecorator.id = obj.id + '_tarDec';\n /* eslint-disable @typescript-eslint/dot-notation */\n segment.style['fill'] = 'transparent';\n container.style.strokeColor = 'transparent';\n container.style.fill = 'transparent';\n container.style.strokeWidth = 0;\n container.children = [];\n setElementStype(obj, segment);\n container.children.push(segment);\n if (leaders.length > 0) {\n for (var i = 0; i < leaders.length; i++) {\n container.children.push(leaders[i]);\n }\n }\n if (labels.length > 0) {\n for (var i = 0; i < labels.length; i++) {\n container.children.push(labels[i]);\n }\n }\n container.children.push(srcDecorator);\n container.children.push(targetDecorator);\n container.id = obj.id;\n container.offsetX = segment.offsetX;\n container.offsetY = segment.offsetY;\n container.width = segment.width;\n container.height = segment.height;\n points = getConnectorPoints(obj);\n obj.wrapper = container;\n return container;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {PdfAnnotationBaseModel} - Returns the added annotaion object.\n */\n Drawing.prototype.add = function (obj) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n if (obj.formFieldAnnotationType && this.pdfViewer.formDesignerModule) {\n obj = new PdfFormFieldBase(this.pdfViewer, 'formFields', obj, true);\n obj = this.initObject(obj);\n this.pdfViewer.formFields.push(obj);\n }\n else {\n obj = new PdfAnnotationBase(this.pdfViewer, 'annotations', obj, true);\n obj = this.initObject(obj);\n this.pdfViewer.annotations.push(obj);\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n return obj;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {void}\n */\n Drawing.prototype.remove = function (obj) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n var index = obj.pageIndex;\n for (var i = 0; i < this.pdfViewer.annotations.length; i++) {\n var annotation = this.pdfViewer.annotations[i];\n if ((annotation.id && (annotation.id === obj.id || annotation.id.split('_')[0] === obj.id)) || (annotation.wrapper && annotation.wrapper.id === obj.id)) {\n this.pdfViewer.annotations.splice(i, 1);\n var objects = this.getPageObjects(obj.pageIndex);\n for (var j = 0; j < objects.length; j++) {\n if (objects[j].id === obj.id) {\n objects.splice(j, 1);\n if (obj.shapeAnnotationType === 'Path' || obj.shapeAnnotationType === 'SignatureImage' || obj.shapeAnnotationType === 'SignatureText') {\n this.refreshCanvasDiagramLayer(undefined, index, obj.id);\n }\n else {\n this.pdfViewer.renderDrawing(undefined, index);\n }\n }\n }\n // need to add code snippet to remove from z index table \n }\n }\n for (var i = 0; i < this.pdfViewer.formFields.length; i++) {\n var element = this.pdfViewer.formFields[i];\n if (element.id === obj.id || element.wrapper.id === obj.id) {\n this.pdfViewer.formFields.splice(i, 1);\n if (this.pdfViewer.formDesignerModule && obj.formFieldAnnotationType) {\n this.pdfViewer.formFieldCollection.splice(i, 1);\n }\n var objects = this.getPageObjects(obj.pageIndex);\n for (var j = 0; j < objects.length; j++) {\n if (objects[j].id === obj.id) {\n objects.splice(j, 1);\n }\n if (objects[j] && objects[j].id && objects[j].id.indexOf(obj.id) !== -1) {\n objects.splice(j, 1);\n }\n }\n }\n }\n if (obj.formFieldAnnotationType === 'Textbox' || obj.formFieldAnnotationType === 'Checkbox' || obj.formFieldAnnotationType === 'RadioButton'\n || obj.formFieldAnnotationType === 'PasswordField' || obj.formFieldAnnotationType === 'DropdownList' || obj.formFieldAnnotationType === 'ListBox' || obj.formFieldAnnotationType === 'SignatureField' || obj.formFieldAnnotationType === 'InitialField') {\n for (var i = 0; i < this.pdfViewer.formFieldCollections.length; i++) {\n // eslint-disable-next-line\n var element = this.pdfViewer.formFieldCollections[i];\n if (element.id === obj.id) {\n this.pdfViewer.formFieldCollections.splice(i, 1);\n }\n }\n }\n if (obj.formFieldAnnotationType === 'Textbox' || obj.formFieldAnnotationType === 'Checkbox' || obj.formFieldAnnotationType === 'RadioButton'\n || obj.formFieldAnnotationType === 'PasswordField' || obj.formFieldAnnotationType === 'DropdownList' || obj.formFieldAnnotationType === 'ListBox' || obj.formFieldAnnotationType === 'SignatureField' || obj.formFieldAnnotationType === 'InitialField') {\n // eslint-disable-next-line\n var inputField = document.getElementById('form_field_' + obj.id + '_content_html_element');\n if (inputField) {\n inputField.remove();\n this.pdfViewer.renderDrawing(undefined, index);\n var field = {\n // eslint-disable-next-line\n name: obj.name, value: obj.value, fontFamily: obj.fontFamily, fontSize: obj.fontSize, fontStyle: obj.fontStyle,\n // eslint-disable-next-line\n color: obj.color, backgroundColor: obj.backgroundColor, alignment: obj.alignment, isReadonly: obj.isReadonly, visibility: obj.visibility,\n // eslint-disable-next-line\n maxLength: obj.maxLength, isRequired: obj.isRequired, isPrint: obj.isPrint, rotation: obj.rotateAngle, tooltip: obj.tooltip,\n // eslint-disable-next-line\n options: obj.options, isChecked: obj.isChecked, isSelected: obj.isSelected\n };\n this.pdfViewer.fireFormFieldRemoveEvent('formFieldRemove', field, obj.pageIndex);\n this.pdfViewer.formDesignerModule.removeFieldsFromAnnotationCollections(obj.id);\n }\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @private\n * @param {number} pageIndex - Specified the page index.\n * @returns {PdfAnnotationBaseModel[]} - Returns the annotation base model collections.\n */\n Drawing.prototype.getPageObjects = function (pageIndex) {\n var pageTable = this.getPageTable(pageIndex);\n return pageTable.objects;\n };\n /**\n * @private\n * @param {HTMLCanvasElement} diagramLayer - Specified the diagram layer element.\n * @param {number} pageIndex - Specified the page index.\n * @param {string} objectId - Specified the object id.\n * @returns {void}\n */\n Drawing.prototype.refreshCanvasDiagramLayer = function (diagramLayer, pageIndex, objectId) {\n if (!diagramLayer) {\n diagramLayer = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n }\n if (diagramLayer) {\n var zoom = this.pdfViewer.viewerBase.getZoomFactor();\n var width = diagramLayer.width / zoom;\n var height = diagramLayer.height / zoom;\n var ctx = diagramLayer.getContext('2d');\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n if (zoom < 1) {\n ctx.lineWidth = ctx.lineWidth / zoom;\n }\n var devicePixelRatio_1 = this.pdfViewer.viewerBase.getWindowDevicePixelRatio();\n var zoomRatio = zoom * devicePixelRatio_1;\n if (!Browser.isDevice || (Browser.isDevice && zoom <= 0.7)) {\n ctx.setTransform(zoomRatio, 0, 0, zoomRatio, 0, 0);\n }\n else {\n ctx.setTransform(zoom, 0, 0, zoom, 0, 0);\n }\n ctx.clearRect(0, 0, width, height);\n var objects = this.getPageObjects(pageIndex);\n for (var i = 0; i < objects.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var renderElement = void 0;\n if (diagramLayer.id === this.pdfViewer.element.id + '_print_annotation_layer_' + pageIndex) {\n if (objects[i].isPrint) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n renderElement = this.pdfViewer.nameTable[objects[i].id].wrapper;\n if (!isNullOrUndefined(renderElement)) {\n refreshDiagramElements(diagramLayer, [renderElement], this.renderer);\n }\n }\n }\n else {\n // eslint-disable-next-line\n renderElement = this.pdfViewer.nameTable[objects[i].id].wrapper;\n refreshDiagramElements(diagramLayer, [renderElement], this.renderer);\n }\n }\n }\n };\n /**\n * @private\n * @param {number} index - Specified the page index.\n * @returns {void}\n */\n Drawing.prototype.clearHighlighter = function (index) {\n var adornerSvg = this.getAdornerLayerSvg(this.pdfViewer.element.id + index + '_diagramAdornerLayer', index);\n if (adornerSvg) {\n var highlighter = adornerSvg.getElementById(adornerSvg.id + '_highlighter');\n if (highlighter) {\n highlighter.parentNode.removeChild(highlighter);\n }\n }\n };\n /**\n * @private\n * @param {string} diagramId - Specified the diagram id.\n * @param {number} index - Specified the page index.\n * @returns {SVGSVGElement} Return the svg element.\n */\n Drawing.prototype.getSelectorElement = function (diagramId, index) {\n var adornerLayer = null;\n var adornerSvg = this.getAdornerLayerSvg(diagramId, index);\n if (adornerSvg) {\n adornerLayer = adornerSvg.getElementById(diagramId + '_SelectorElement');\n }\n return adornerLayer;\n };\n /**\n * @private\n * @param {string} diagramId - Specified the diagram id.\n * @param {number} index - Specified the page index.\n * @returns {SVGSVGElement} Return the svg element.\n */\n Drawing.prototype.getAdornerLayerSvg = function (diagramId, index) {\n var adornerLayerSvg = null;\n var diagramElement = getDiagramElement(diagramId + index + '_diagramAdornerLayer');\n // eslint-disable-next-line\n var elementcoll;\n if (diagramElement) {\n elementcoll = diagramElement.getElementsByClassName('e-adorner-layer' + index);\n adornerLayerSvg = elementcoll[0];\n }\n return adornerLayerSvg;\n };\n /**\n * @private\n * @param {number} index - Specified the page index.\n * @returns {void}\n */\n Drawing.prototype.clearSelectorLayer = function (index) {\n var adornerSvg = this.getAdornerLayerSvg(this.pdfViewer.element.id, index);\n if (adornerSvg) {\n var selectionRect = adornerSvg.getElementById(this.pdfViewer.adornerSvgLayer.id + '_selected_region');\n if (selectionRect) {\n selectionRect.parentNode.removeChild(selectionRect);\n }\n this.clearHighlighter(index);\n var childNodes = this.getSelectorElement(this.pdfViewer.element.id, index).childNodes;\n var child = void 0;\n for (var i = childNodes.length; i > 0; i--) {\n child = childNodes[i - 1];\n child.parentNode.removeChild(child);\n }\n }\n };\n /**\n * @private\n * @param {number} select - Specified the select value.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the annotation selector element.\n * @param {PdfAnnotationBaseModel} helper - Specified the annotation helper element.\n * @param {boolean} isSelect - Specified the is select or not.\n * @returns {void}\n */\n // eslint-disable-next-line max-len\n Drawing.prototype.renderSelector = function (select, currentSelector, helper, isSelect) {\n if (!helper || isSelect) {\n var size = new Size();\n var selectorModel = this.pdfViewer.selectedItems;\n this.clearSelectorLayer(select);\n if (selectorModel.wrapper) {\n selectorModel.wrapper.measure(size);\n var zoom = this.pdfViewer.viewerBase.getZoomFactor();\n selectorModel.wrapper.arrange(selectorModel.wrapper.desiredSize);\n selectorModel.width = selectorModel.wrapper.actualSize.width;\n selectorModel.height = selectorModel.wrapper.actualSize.height;\n selectorModel.offsetX = selectorModel.wrapper.offsetX;\n selectorModel.offsetY = selectorModel.wrapper.offsetY;\n if (selectorModel.annotations.length === 1) {\n selectorModel.rotateAngle = selectorModel.annotations[0].rotateAngle;\n selectorModel.wrapper.rotateAngle = selectorModel.annotations[0].rotateAngle;\n //selectorModel.pivot = selectorModel.annotations[0].pivot;\n }\n var bounds = selectorModel.wrapper.bounds;\n // eslint-disable-next-line\n var selectorElement = void 0;\n if (selectorModel.formFields.length) {\n for (var i = 0; i < selectorModel.formFields.length; i++) {\n var node = selectorModel.formFields[i];\n selectorElement = this.getSelectorElement(this.pdfViewer.element.id, select);\n if (selectorElement && node.pageIndex === select && this.pdfViewer.designerMode) {\n this.renderResizeHandle(node.wrapper.children[0], selectorElement, selectorModel.thumbsConstraints, zoom, undefined, undefined, undefined, false, true, null, null, currentSelector);\n }\n if (this.pdfViewer.formDesignerModule && node.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.viewerBase.isFormFieldSelect && !this.pdfViewer.viewerBase.isFormFieldMouseDown && !this.pdfViewer.viewerBase.isFormFieldMouseMove) {\n this.pdfViewer.viewerBase.isFormFieldSelect = true;\n var field = {\n // eslint-disable-next-line\n value: node.value, fontFamily: node.fontFamily, fontSize: node.fontSize, fontStyle: node.fontStyle, color: node.color, backgroundColor: node.backgroundColor, alignment: node.alignment, isReadonly: node.isReadonly, visibility: node.visibility,\n // eslint-disable-next-line\n maxLength: node.maxLength, isRequired: node.isRequired, isPrint: node.isPrint, rotation: node.rotateAngle, tooltip: node.tooltip,\n // eslint-disable-next-line\n options: node.options, isChecked: node.isChecked, isSelected: node.isSelected\n };\n this.pdfViewer.fireFormFieldSelectEvent('formFieldSelect', field, node.pageIndex, this.pdfViewer.formDesignerModule.isProgrammaticSelection);\n }\n }\n }\n }\n if (selectorModel.annotations.length) {\n for (var j = 0; j < selectorModel.annotations.length; j++) {\n var node = selectorModel.annotations[j];\n selectorElement = this.getSelectorElement(this.pdfViewer.element.id, select);\n var constraints = true;\n if (selectorElement && node.pageIndex === select) {\n if (node.shapeAnnotationType === 'Distance' || node.shapeAnnotationType === 'Line' ||\n node.shapeAnnotationType === 'LineWidthArrowHead' || node.shapeAnnotationType === 'Polygon') {\n this.renderEndPointHandle(node, selectorElement, selectorModel.thumbsConstraints, { scale: zoom, tx: 0, ty: 0 }, undefined, undefined, true, currentSelector);\n }\n else {\n if (node.shapeAnnotationType === 'StickyNotes') {\n this.renderResizeHandle(node.wrapper.children[0], selectorElement, selectorModel.thumbsConstraints, zoom, undefined, undefined, undefined, false, true, null, null, currentSelector);\n }\n else {\n if (this.pdfViewer.tool !== 'Stamp') {\n // eslint-disable-next-line\n var isSignature = node.shapeAnnotationType === 'Path' || node.formFieldAnnotationType === 'SignatureField' || node.formFieldAnnotationType === 'InitialField';\n this.renderResizeHandle(node.wrapper.children[0], selectorElement, selectorModel.thumbsConstraints, zoom, undefined, undefined, undefined, node.shapeAnnotationType === 'Stamp', false, isSignature, (node.shapeAnnotationType === 'FreeText' || node.shapeAnnotationType === 'HandWrittenSignature' || node.shapeAnnotationType === 'SignatureImage' || node.shapeAnnotationType === 'Image' || node.shapeAnnotationType === 'SignatureText'), currentSelector);\n }\n }\n }\n if (!this.pdfViewer.viewerBase.isNewSignatureAdded && (node.shapeAnnotationType === 'HandWrittenSignature' || node.shapeAnnotationType === 'SignatureText' || node.shapeAnnotationType === 'SignatureImage')) {\n this.pdfViewer.annotationModule.selectSignature(node.signatureName, node.pageIndex, node);\n }\n if (this.pdfViewer.formDesignerModule && node.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.viewerBase.isFormFieldSelect && !this.pdfViewer.viewerBase.isFormFieldMouseDown && !this.pdfViewer.viewerBase.isFormFieldMouseMove) {\n this.pdfViewer.viewerBase.isFormFieldSelect = true;\n var field = {\n // eslint-disable-next-line\n value: node.value, fontFamily: node.fontFamily, fontSize: node.fontSize, fontStyle: node.fontStyle,\n // eslint-disable-next-line\n color: node.color, backgroundColor: node.backgroundColor, alignment: node.alignment, isReadonly: node.isReadonly, visibility: node.visibility,\n // eslint-disable-next-line\n maxLength: node.maxLength, isRequired: node.isRequired, isPrint: node.isPrint, rotation: node.rotateAngle, tooltip: node.tooltip,\n // eslint-disable-next-line\n options: node.options, isChecked: node.isChecked, isSelected: node.isSelected\n };\n this.pdfViewer.fireFormFieldSelectEvent('formFieldSelect', field, node.pageIndex, this.pdfViewer.formDesignerModule.isProgrammaticSelection);\n }\n }\n if (node.annotName !== '') {\n if (helper && (node === helper) && !node.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.viewerBase.isAddComment && !this.pdfViewer.viewerBase.isAnnotationSelect && !this.pdfViewer.viewerBase.isAnnotationMouseDown && !this.pdfViewer.viewerBase.isAnnotationMouseMove && !this.pdfViewer.viewerBase.isInkAdded && !this.pdfViewer.viewerBase.isNewStamp) {\n this.pdfViewer.viewerBase.isAnnotationSelect = true;\n this.pdfViewer.annotationModule.annotationSelect(node.annotName, node.pageIndex, node);\n }\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * Rotates the given nodes/connectors by the given angle\n *\n * @private\n * @param {PdfAnnotationBaseModel | SelectorModel} obj - Specified the objects to be rotated.\n * @param {number} angle - Specified the angle by which the objects have to be rotated.\n * @param {PointModel} pivot - Specified the reference point with reference to which the objects have to be rotated.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the current selector value.\n * @returns {void}\n */\n // eslint-disable-next-line max-len\n Drawing.prototype.rotate = function (obj, angle, pivot, currentSelector) {\n var checkBoundaryConstraints;\n if (obj) {\n pivot = pivot || { x: obj.wrapper.offsetX, y: obj.wrapper.offsetY };\n if (obj instanceof Selector) {\n obj.rotateAngle += angle;\n obj.wrapper.rotateAngle += angle;\n var objects = [];\n objects = objects.concat(obj.annotations);\n this.rotateObjects(obj, objects, angle, pivot, null, currentSelector);\n }\n else {\n this.rotateObjects(obj, [obj], angle, pivot);\n }\n }\n return checkBoundaryConstraints;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel | SelectorModel} parent - Specified the annotation object.\n * @param {PdfAnnotationBaseModel[]} objects - Specified the annotation objects.\n * @param {number} angle - Specified the annotation angle.\n * @param {PointModel} pivot - Specified the pivot value.\n * @param {boolean} includeParent - Specified the include parent value.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the current selector value.\n * @returns {void}\n */\n Drawing.prototype.rotateObjects = function (parent, objects, angle, pivot, includeParent, currentSelector) {\n pivot = pivot || {};\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, pivot.x, pivot.y);\n for (var _i = 0, objects_1 = objects; _i < objects_1.length; _i++) {\n var obj = objects_1[_i];\n if (obj instanceof PdfAnnotationBase) {\n if (includeParent !== false || parent !== obj) {\n obj.rotateAngle += angle;\n obj.rotateAngle = (obj.rotateAngle + 360) % 360;\n var newOffset = transformPointByMatrix(matrix, { x: obj.wrapper.offsetX, y: obj.wrapper.offsetY });\n obj.wrapper.offsetX = newOffset.x;\n obj.wrapper.offsetY = newOffset.y;\n this.nodePropertyChange(obj, { rotateAngle: obj.rotateAngle });\n }\n this.renderSelector(obj.pageIndex, currentSelector);\n }\n }\n };\n Drawing.prototype.getParentSvg = function (element, targetElement, canvas) {\n if (element && element.id) {\n if (targetElement && targetElement === 'selector') {\n return this.pdfViewer.adornerSvgLayer;\n }\n }\n return canvas;\n };\n /**\n * @private\n * @param {DrawingElement} selector - Specified the annotation selector object.\n * @param {HTMLCanvasElement | SVGElement} canvas - Specified the canvas element.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {Transforms} transform - Specfied the transform value.\n * @param {number} enableNode - Specified the node number.\n * @param {boolean} isBorderTickness - Specified is thickness or not.\n * @param {boolean} isSwimlane - Specified is swimlane annotation or not.\n * @param {boolean} isSticky - Specified is sticky annotation or not.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.renderBorder = function (selector, canvas, currentSelector, transform, enableNode, isBorderTickness, isSwimlane, isSticky) {\n var wrapper = selector;\n var options = getBaseShapeAttributes(wrapper, transform);\n transform = transform || { scale: 1, tx: 0, ty: 0 };\n if (!isSticky) {\n options.x *= transform.scale;\n options.y *= transform.scale;\n options.width *= transform.scale;\n options.height *= transform.scale;\n options.fill = 'transparent';\n // eslint-disable-next-line max-len\n var shapeType = this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType;\n if (currentSelector && (typeof (currentSelector) !== 'object') && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n var borderColor = annotationSelector.selectionBorderColor === '' ? 'black' : annotationSelector.selectionBorderColor;\n options.stroke = borderColor;\n options.strokeWidth = currentSelector.selectionBorderThickness === 1 ? 1 : annotationSelector.selectionBorderThickness;\n // eslint-disable-next-line max-len\n var lineDash = annotationSelector.selectorLineDashArray.length === 0 ? [6, 3] : annotationSelector.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n else {\n if (!this.pdfViewer.designerMode) {\n if ((shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText' || shapeType === 'SignatureImage') || shapeType === 'Ink') {\n // eslint-disable-next-line\n var formField = this.pdfViewer.nameTable[selector.id.split('_')[0]];\n var isFormFieldSign = this.pdfViewer.viewerBase.checkSignatureFormField(selector.id.split('_')[0]);\n // if (isFormFieldSign && options.width + 21 !== formField.bounds.width && options.height + 21 !== formField.bounds.height) {\n // if (this.pdfViewer.signatureFitMode === 'Default') {\n // let selectorBounds: any = this.pdfViewer.formFieldsModule.getDefaultBoundsforSign(formField.bounds);\n // options.x = selectorBounds.x; options.y = selectorBounds.y; options.width = selectorBounds.width; options.height = selectorBounds.height;\n // } else {\n // options.x = formField.bounds.x; options.y = formField.bounds.y; options.width = formField.bounds.width; options.height = formField.bounds.height;\n // }\n // }\n this.getSignBorder(shapeType, options, isFormFieldSign);\n }\n else {\n this.getBorderSelector(shapeType, options);\n }\n }\n }\n options.class = 'e-pv-diagram-border';\n if (isSwimlane) {\n options.class += ' e-diagram-lane';\n }\n options.id = 'borderRect';\n options.id = 'borderRect';\n if (!enableNode) {\n options.class += ' e-disabled';\n }\n if (isBorderTickness) {\n options.class += ' e-thick-border';\n }\n options.cornerRadius = 0;\n }\n else {\n options.x *= transform.scale;\n options.y *= transform.scale;\n options.width *= transform.scale;\n options.height *= transform.scale;\n // eslint-disable-next-line max-len\n var shapeType = this.pdfViewer.selectedItems.annotations.length > 0 ? this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType\n : this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType;\n if (currentSelector && (typeof (currentSelector) !== 'object') && currentSelector !== '') {\n var annotationSelector = JSON.parse(currentSelector);\n var borderColor = annotationSelector.selectionBorderColor === '' ? 'black' : annotationSelector.selectionBorderColor;\n options.stroke = borderColor;\n options.strokeWidth = currentSelector.selectionBorderThickness === 1 ? 1 : annotationSelector.selectionBorderThickness;\n // eslint-disable-next-line max-len\n var lineDash = annotationSelector.selectorLineDashArray.length === 0 ? [6, 3] : annotationSelector.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n else {\n this.getBorderSelector(shapeType, options);\n }\n }\n var parentSvg = this.getParentSvg(selector, 'selector');\n // eslint-disable-next-line max-len\n this.svgRenderer.drawRectangle(canvas, options, this.pdfViewer.element.id, undefined, true, parentSvg);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotation object.\n * @param {BaseAttributes} options - Specified the options value.\n * @param {boolean} isFormFieldSign - Specified is form field sign or not.\n * @returns {void}\n */\n Drawing.prototype.getSignBorder = function (type, options, isFormFieldSign) {\n if (!isFormFieldSign && (type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n var borderColor = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderColor === '' ? '#0000ff' : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n var borderColor = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderColor === '' ? '#0000ff' : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n else {\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n var borderColor = annotationSelector.selectionBorderColor === '' ? 'black' : annotationSelector.selectionBorderColor;\n options.stroke = borderColor;\n options.strokeWidth = annotationSelector.selectionBorderThickness === 1 ? 1 : annotationSelector.selectionBorderThickness;\n // eslint-disable-next-line max-len\n var lineDash = annotationSelector.selectorLineDashArray.length === 0 ? [6, 3] : annotationSelector.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotation object.\n * @param {BaseAttributes} options - Specified the base attributes.\n * @returns {void}\n */\n Drawing.prototype.getBorderSelector = function (type, options) {\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n var borderColor = isNullOrUndefined(annotationSelector.selectionBorderColor) || annotationSelector.selectionBorderColor === '' ? 'black' : annotationSelector.selectionBorderColor;\n options.stroke = borderColor;\n // eslint-disable-next-line max-len\n options.strokeWidth = isNullOrUndefined(annotationSelector.selectionBorderThickness) || annotationSelector.selectionBorderThickness === 1 ? 1 : annotationSelector.selectionBorderThickness;\n // eslint-disable-next-line max-len\n var lineDash = isNullOrUndefined(annotationSelector.selectorLineDashArray) || annotationSelector.selectorLineDashArray.length === 0 ? [6, 3] : annotationSelector.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n var borderColor_1 = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_1;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_1 = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_1.length > 2) {\n lineDash_1 = [lineDash_1[0], lineDash_1[1]];\n }\n options.dashArray = lineDash_1.toString();\n }\n else if ((type === 'Textbox' || type === 'Checkbox' || type === 'RadioButton' || type === 'SignatureField' || type === 'InitialField' || type === 'DropdownList' || type === 'ListBox' || type === 'PasswordField') && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n var borderColor_2 = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_2;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_2 = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_2.length > 2) {\n lineDash_2 = [lineDash_2[0], lineDash_2[1]];\n }\n options.dashArray = lineDash_2.toString();\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n var borderColor_3 = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_3;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_3 = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.circleSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.circleSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_3.length > 2) {\n lineDash_3 = [lineDash_3[0], lineDash_3[1]];\n }\n options.dashArray = lineDash_3.toString();\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n var borderColor_4 = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_4;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_4 = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.radiusSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.radiusSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_4.length > 2) {\n lineDash_4 = [lineDash_4[0], lineDash_4[1]];\n }\n options.dashArray = lineDash_4.toString();\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n var borderColor_5 = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_5;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_5 = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_5.length > 2) {\n lineDash_5 = [lineDash_5[0], lineDash_5[1]];\n }\n options.dashArray = lineDash_5.toString();\n }\n else if (type === 'StickyNotes' && this.pdfViewer.stickyNotesSettings.annotationSelectorSettings) {\n var borderColor_6 = isNullOrUndefined(this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_6;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_6 = isNullOrUndefined(this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [6, 3] : this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_6.length > 2) {\n lineDash_6 = [lineDash_6[0], lineDash_6[1]];\n }\n options.dashArray = lineDash_6.toString();\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n var borderColor_7 = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderColor === '' ? '#0000ff' : this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_7;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_7 = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.stampSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.stampSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_7.length > 2) {\n lineDash_7 = [lineDash_7[0], lineDash_7[1]];\n }\n options.dashArray = lineDash_7.toString();\n }\n };\n /**\n * @private\n * @param {string} id - Specified the annotaion id.\n * @param {DrawingElement} selector - Specified the drawing element.\n * @param {number} cx - Specified the cx number.\n * @param {number} cy - Specified the cy number.\n * @param {HTMLCanvasElement | SVGElement} canvas - Specified the html canvas element.\n * @param {boolean} visible - Specified the annotation visible or not.\n * @param {number} enableSelector - Specified the enable selector value.\n * @param {Transforms} t - Specified the transforms value.\n * @param {boolean} connected - Specified is connected or not.\n * @param {boolean} canMask - Specified is mask or not.\n * @param {Object} ariaLabel - Specified the aria label object.\n * @param {number} count - Specified the count value.\n * @param {string} className - Specified the class name.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the annotation selector settings.\n * @returns {void}\n */\n Drawing.prototype.renderCircularHandle = function (id, selector, cx, cy, canvas, visible, enableSelector, t, connected, canMask, ariaLabel, count, className, currentSelector) {\n var wrapper = selector;\n var radius = 7;\n var newPoint = { x: cx, y: cy };\n t = t || { scale: 1, tx: 0, ty: 0 };\n if (wrapper.rotateAngle !== 0 || wrapper.parentTransform !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, wrapper.rotateAngle + wrapper.parentTransform, wrapper.offsetX, wrapper.offsetY);\n newPoint = transformPointByMatrix(matrix, newPoint);\n }\n var options = getBaseShapeAttributes(wrapper);\n var shapeType;\n if (this.pdfViewer.selectedItems.annotations.length > 0 && this.pdfViewer.selectedItems.annotations[0].measureType) {\n shapeType = this.pdfViewer.selectedItems.annotations[0].measureType;\n }\n else if (this.pdfViewer.selectedItems.formFields.length > 0) {\n shapeType = this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType;\n }\n else {\n shapeType = this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType;\n }\n this.getResizerColors(shapeType, options, currentSelector, t);\n this.getShapeSize(shapeType, options, currentSelector, t);\n options.strokeWidth = 1;\n if (count !== undefined) {\n radius = 5;\n options.id = 'segmentEnd_' + count;\n }\n options.centerX = (newPoint.x + t.tx) * t.scale;\n options.centerY = (newPoint.y + t.ty) * t.scale;\n options.angle = 0;\n options.id = id;\n options.visible = visible;\n options.class = className;\n options.opacity = 1;\n if (connected) {\n options.class += ' e-connected';\n }\n if (canMask) {\n options.visible = false;\n }\n options.x = (newPoint.x * t.scale) - (options.width / 2);\n options.y = (newPoint.y * t.scale) - (options.height / 2);\n var parentSvg = this.getParentSvg(selector, 'selector');\n if (this.getShape(shapeType, currentSelector) === 'Square') {\n this.svgRenderer.drawRectangle(canvas, options, id, undefined, true, parentSvg);\n }\n else if (this.getShape(shapeType, currentSelector) === 'Circle') {\n this.svgRenderer.drawCircle(canvas, options, 1);\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotaion object.\n * @param {CircleAttributes} options - Specified the circle attributes value.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {Transforms} t - Specified the transforms value.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.getShapeSize = function (type, options, currentSelector, t) {\n if (currentSelector && typeof (currentSelector) !== 'object' && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) * t.scale;\n }\n else {\n // eslint-disable-next-line\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) * t.scale;\n if (type === 'Line' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'LineWidthArrowHead' && this.pdfViewer.arrowSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Distance' && this.pdfViewer.distanceSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if ((type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Perimeter' && this.pdfViewer.perimeterSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Area' && this.pdfViewer.areaSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Volume' && this.pdfViewer.volumeSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotation object.\n * @param {any} currentSelector - Specified the current selector value.\n * @returns {AnnotationSelectorSettingsModel} - Specified the annotation selector settings model.\n */\n // eslint-disable-next-line\n Drawing.prototype.getShape = function (type, currentSelector) {\n // eslint-disable-next-line\n var shapeType;\n {\n if (currentSelector && typeof (currentSelector) !== 'object' && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n shapeType = isNullOrUndefined(annotationSelector.resizerShape) || annotationSelector.resizerShape === 'Square' ? 'Square' : annotationSelector.resizerShape;\n }\n else {\n // eslint-disable-next-line\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n shapeType = isNullOrUndefined(annotationSelector.resizerShape) || annotationSelector.resizerShape === 'Square' ? 'Square' : annotationSelector.resizerShape;\n if (type === 'Line' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'LineWidthArrowHead' && this.pdfViewer.arrowSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Distance' && this.pdfViewer.distanceSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerShape;\n }\n else if ((type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Perimeter' && this.pdfViewer.perimeterSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Area' && this.pdfViewer.areaSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Volume' && this.pdfViewer.volumeSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerShape;\n }\n }\n return shapeType;\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotaion object.\n * @param {CircleAttributes} options - Specified the circle attributes value.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {Transforms} t - Specified the transforms value.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.getResizerColors = function (type, options, currentSelector, t) {\n if (currentSelector && typeof (currentSelector) !== 'object' && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n options.stroke = isNullOrUndefined(annotationSelector.resizerBorderColor) || annotationSelector.resizerBorderColor === 'black' ? 'black' : annotationSelector.resizerBorderColor;\n options.fill = isNullOrUndefined(annotationSelector.resizerFillColor) || annotationSelector.resizerFillColor === '#FF4081' ? '#FF4081' : annotationSelector.resizerFillColor;\n }\n else {\n // eslint-disable-next-line\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n options.stroke = isNullOrUndefined(annotationSelector.resizerBorderColor) || annotationSelector.resizerBorderColor === 'black' ? 'black' : annotationSelector.resizerBorderColor;\n options.fill = isNullOrUndefined(annotationSelector.resizerFillColor) || annotationSelector.resizerFillColor === '#FF4081' ? '#FF4081' : annotationSelector.resizerFillColor;\n if (type === 'Line' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'LineWidthArrowHead' && this.pdfViewer.arrowSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Distance' && this.pdfViewer.distanceSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if ((type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Perimeter' && this.pdfViewer.perimeterSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Area' && this.pdfViewer.areaSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Volume' && this.pdfViewer.volumeSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerFillColor;\n }\n }\n };\n /**\n * @private\n * @param {DrawingElement} wrapper - Specified the drawing element.\n * @param {HTMLCanvasElement | SVGElement} canvas - Specified the canvas element.\n * @param {Transforms} transform - Specified the transform value.\n * @param {SelectorConstraints} selectorConstraints - Specified the selector constraints value.\n * @param {boolean} canMask - Specified the is mask or not.\n * @returns {void}\n */\n Drawing.prototype.renderRotateThumb = function (wrapper, canvas, transform, selectorConstraints, canMask) {\n var element = new PathElement();\n var newPoint;\n var top = wrapper.offsetY - wrapper.actualSize.height * wrapper.pivot.y;\n var left = wrapper.offsetX - wrapper.actualSize.width * wrapper.pivot.x;\n var pivotX = left + wrapper.pivot.x * wrapper.actualSize.width;\n var pivotY = top;\n pivotX = (pivotX + transform.tx) * transform.scale;\n pivotY = (pivotY + transform.ty) * transform.scale;\n newPoint = { x: pivotX, y: pivotY - 25 };\n if (wrapper.rotateAngle !== 0 || wrapper.parentTransform !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, wrapper.rotateAngle + wrapper.parentTransform, (transform.tx + wrapper.offsetX) * transform.scale, (transform.ty + wrapper.offsetY) * transform.scale);\n newPoint = transformPointByMatrix(matrix, newPoint);\n }\n var options = getBaseShapeAttributes(wrapper);\n options.stroke = 'black';\n options.strokeWidth = 1;\n options.opacity = 1;\n options.fill = '#FF4081';\n options.centerX = newPoint.x;\n options.centerY = newPoint.y;\n options.radius = 4;\n options.angle = 0;\n options.visible = true;\n options.class = 'e-diagram-rotate-handle';\n options.id = 'rotateThumb';\n this.svgRenderer.drawCircle(canvas, options, ThumbsConstraints.Rotate, { 'aria-label': 'Thumb to rotate the selected object' });\n };\n /**\n * @private\n * @param {DrawingElement} element - Specified the drawing element.\n * @param {HTMLCanvasElement | SVGElement} canvas - Specified the canvas element.\n * @param {ThumbsConstraints} constraints - Specified the thumbs constraints element.\n * @param {number} currentZoom - Specified the current zoom value.\n * @param {boolean} canMask - Specified the is mask or not.\n * @param {number} enableNode - Specified the node number.\n * @param {boolean} nodeConstraints - Specified the node constraints or not.\n * @param {boolean} isStamp - Specified is stamp or not.\n * @param {boolean} isSticky - Specified is sticky or not.\n * @param {boolean} isPath - Specified is path or not.\n * @param {boolean} isFreeText - Specified is free text or not.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the current selector settings value.\n * @returns {void}\n */\n Drawing.prototype.renderResizeHandle = function (element, canvas, constraints, currentZoom, canMask, enableNode, nodeConstraints, isStamp, isSticky, isPath, isFreeText, currentSelector) {\n var left = element.offsetX - element.actualSize.width * element.pivot.x;\n var top = element.offsetY - element.actualSize.height * element.pivot.y;\n var height = element.actualSize.height;\n var width = element.actualSize.width;\n var transform = { scale: currentZoom, tx: 0, ty: 0 };\n if (isStamp) {\n this.renderPivotLine(element, canvas, transform);\n this.renderRotateThumb(element, canvas, transform);\n }\n if (isFreeText) {\n isStamp = true;\n }\n this.renderBorder(element, canvas, currentSelector, transform, enableNode, nodeConstraints, true, isSticky);\n var nodeWidth = element.actualSize.width * currentZoom;\n var nodeHeight = element.actualSize.height * currentZoom;\n // eslint-disable-next-line max-len\n var shapeType = this.pdfViewer.selectedItems.annotations.length > 0 ? this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType : this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType;\n var allowPermission = false;\n if (!this.pdfViewer.formDesignerModule) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line\n var allowedInteraction = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var isLock = this.pdfViewer.annotationModule.checkIsLockSettings(annotation);\n if ((isLock || annotation.annotationSettings.isLock) && this.getAllowedInteractions(allowedInteraction)) {\n allowPermission = true;\n }\n }\n var resizerLocation = this.getResizerLocation(shapeType, currentSelector);\n if (resizerLocation < 1 || resizerLocation > 3) {\n resizerLocation = 3;\n }\n var isNodeShape = false;\n if (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ellipse' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Radius' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Rectangle' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink')) {\n isNodeShape = true;\n }\n if (!this.pdfViewer.viewerBase.checkSignatureFormField(element.id.split('_')[0]) && !nodeConstraints && !isSticky && !isPath && !allowPermission) {\n if (isStamp || (isNodeShape && (nodeWidth >= 40 && nodeHeight >= 40) && (resizerLocation === 1 || resizerLocation === 3))) {\n //Hide corners when the size is less than 40\n this.renderCircularHandle('resizeNorthWest', element, left, top, canvas, true, constraints & ThumbsConstraints.ResizeNorthWest, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on top left side direction' }, undefined, 'e-pv-diagram-resize-handle e-northwest', currentSelector);\n this.renderCircularHandle('resizeNorthEast', element, left + width, top, canvas, true, constraints & ThumbsConstraints.ResizeNorthEast, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on top right side direction' }, undefined, 'e-pv-diagram-resize-handle e-northeast', currentSelector);\n this.renderCircularHandle('resizeSouthWest', element, left, top + height, canvas, true, constraints & ThumbsConstraints.ResizeSouthWest, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on bottom left side direction' }, undefined, 'e-pv-diagram-resize-handle e-southwest', currentSelector);\n this.renderCircularHandle('resizeSouthEast', element, left + width, top + height, canvas, true, constraints & ThumbsConstraints.ResizeSouthEast, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on bottom right side direction' }, undefined, 'e-pv-diagram-resize-handle e-southeast', currentSelector);\n }\n // eslint-disable-next-line max-len\n if ((!isStamp && !isNodeShape) || (isNodeShape && (resizerLocation === 2 || resizerLocation === 3 || (!(nodeWidth >= 40 && nodeHeight >= 40) && resizerLocation === 1)))) {\n this.renderCircularHandle('resizeNorth', element, left + width / 2, top, canvas, true, constraints & ThumbsConstraints.ResizeNorth, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on top side direction' }, undefined, 'e-pv-diagram-resize-handle e-north', currentSelector);\n this.renderCircularHandle('resizeSouth', element, left + width / 2, top + height, canvas, true, constraints & ThumbsConstraints.ResizeSouth, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on bottom side direction' }, undefined, 'e-pv-diagram-resize-handle e-south', currentSelector);\n this.renderCircularHandle('resizeWest', element, left, top + height / 2, canvas, true, constraints & ThumbsConstraints.ResizeWest, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on left side direction' }, undefined, 'e-pv-diagram-resize-handle e-west', currentSelector);\n this.renderCircularHandle('resizeEast', element, left + width, top + height / 2, canvas, true, constraints & ThumbsConstraints.ResizeEast, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on right side direction' }, undefined, 'e-pv-diagram-resize-handle e-east', currentSelector);\n }\n }\n if ((shapeType === 'Textbox' || shapeType === 'Checkbox' || shapeType === 'RadioButton' || shapeType === 'SignatureField' || shapeType === 'InitialField' || shapeType === 'DropdownList' ||\n shapeType === 'ListBox' || shapeType === 'PasswordField')) {\n this.renderCircularHandle('resizeNorth', element, left + width / 2, top, canvas, true, constraints & ThumbsConstraints.ResizeNorth, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on top side direction' }, undefined, 'e-pv-diagram-resize-handle e-north', currentSelector);\n this.renderCircularHandle('resizeSouth', element, left + width / 2, top + height, canvas, true, constraints & ThumbsConstraints.ResizeSouth, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on bottom side direction' }, undefined, 'e-pv-diagram-resize-handle e-south', currentSelector);\n this.renderCircularHandle('resizeWest', element, left, top + height / 2, canvas, true, constraints & ThumbsConstraints.ResizeWest, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on left side direction' }, undefined, 'e-pv-diagram-resize-handle e-west', currentSelector);\n this.renderCircularHandle('resizeEast', element, left + width, top + height / 2, canvas, true, constraints & ThumbsConstraints.ResizeEast, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on right side direction' }, undefined, 'e-pv-diagram-resize-handle e-east', currentSelector);\n }\n };\n // eslint-disable-next-line\n Drawing.prototype.getAllowedInteractions = function (allowedInteraction) {\n if (allowedInteraction && allowedInteraction.length > 0) {\n for (var i = 0; i < allowedInteraction.length; i++) {\n if (allowedInteraction[0] !== 'None' && allowedInteraction[i] === 'Resize') {\n return false;\n }\n }\n }\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotation base model.\n * @param {any} currentSelector - Specified the current selector value\n * @returns {AnnotationResizerLocation} - Returns the annotation resizer location value.\n */\n // eslint-disable-next-line\n Drawing.prototype.getResizerLocation = function (type, currentSelector) {\n // eslint-disable-next-line\n var resizerLocation;\n {\n if (currentSelector && typeof (currentSelector) !== 'object' && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(annotationSelector.resizerLocation) || annotationSelector.resizerLocation === 3 ? 3 : annotationSelector.resizerLocation;\n }\n else {\n // eslint-disable-next-line\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(annotationSelector.resizerLocation) || annotationSelector.resizerLocation === 3 ? 3 : annotationSelector.resizerLocation;\n if (type === 'Line' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'LineWidthArrowHead' && this.pdfViewer.arrowSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Distance') {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerLocation;\n }\n else if ((type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerLocation;\n }\n }\n return resizerLocation;\n }\n };\n /**\n * @private\n * @param {DrawingElement} element - Specified the drawing element.\n * @param {HTMLCanvasElement | SVGAElement} canvas - Specified the canvas element.\n * @param {Transforms} transform - Specified the transform values.\n * @param {SelectorConstraints} selectorConstraints - Specified the selector constraints value.\n * @param {boolean} canMask - Specified is mask value or not.\n * @returns {void}\n */\n Drawing.prototype.renderPivotLine = function (element, canvas, transform, selectorConstraints, canMask) {\n var wrapper = element;\n var dashArray = '2,3';\n var visible = true;\n if (canMask) {\n visible = false;\n }\n var options = getBaseShapeAttributes(wrapper, transform);\n options.fill = 'None';\n options.stroke = 'black';\n options.strokeWidth = 1;\n options.dashArray = dashArray;\n options.visible = visible;\n var scale = transform.scale;\n options.x *= scale;\n options.y *= scale;\n options.width *= scale;\n options.height *= scale;\n options.id = 'pivotLine';\n options.class = 'e-diagram-pivot-line';\n var startPoint = { x: wrapper.actualSize.width * wrapper.pivot.x * scale, y: -20 };\n var endPoint = { x: wrapper.actualSize.width * wrapper.pivot.x * scale, y: 0 };\n options.startPoint = startPoint;\n options.endPoint = endPoint;\n this.svgRenderer.drawLine(canvas, options);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} selector - Specified the annotation element.\n * @param {HTMLCanvasElement | SVGAElement} canvas - Specified the canvas element.\n * @param {SelectorConstraints} constraints - Specified the selector constraints value.\n * @param {Transforms} transform - Specified the transform values.\n * @param {boolean} connectedSource - Specified is connected source or not.\n * @param {boolean} connectedTarget - Specified is connected target or not.\n * @param {boolean} isSegmentEditing - Specified is segment editing or not.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the current selector value.\n * @returns {void}\n */\n Drawing.prototype.renderEndPointHandle = function (selector, canvas, constraints, transform, connectedSource, connectedTarget, isSegmentEditing, currentSelector) {\n transform = transform || { tx: 0, ty: 0, scale: 1 };\n var sourcePoint = selector.sourcePoint;\n var targetPoint = selector.targetPoint;\n var wrapper = selector.wrapper;\n var i;\n for (i = 0; i < selector.vertexPoints.length; i++) {\n var segment = selector.vertexPoints[i];\n this.renderCircularHandle(('segementThumb_' + (i + 1)), wrapper, segment.x, segment.y, canvas, true, constraints & ThumbsConstraints.ConnectorSource, transform, connectedSource, null, null, i, null, currentSelector);\n }\n var leaderCount = 0;\n if (selector.shapeAnnotationType === 'Distance') {\n for (i = 0; i < selector.wrapper.children.length; i++) {\n var segment = selector.wrapper.children[i];\n var newPoint1 = void 0;\n var angle = Point.findAngle(selector.sourcePoint, selector.targetPoint);\n if (segment.id.indexOf('leader') > -1) {\n var center = selector.wrapper.children[0].bounds.center;\n if (leaderCount === 0) {\n newPoint1 = { x: selector.sourcePoint.x, y: selector.sourcePoint.y - selector.leaderHeight };\n center = sourcePoint;\n }\n else {\n newPoint1 = { x: selector.targetPoint.x, y: selector.targetPoint.y - selector.leaderHeight };\n center = targetPoint;\n }\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, center.x, center.y);\n var rotatedPoint = transformPointByMatrix(matrix, { x: newPoint1.x, y: newPoint1.y });\n this.renderCircularHandle(('leaderThumb_' + (i + 1)), wrapper, rotatedPoint.x, rotatedPoint.y, canvas, true, constraints & ThumbsConstraints.ConnectorSource, transform, connectedSource, null, null, i, null, currentSelector);\n leaderCount++;\n }\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Drawing.prototype.initSelectorWrapper = function () {\n var selectorModel = this.pdfViewer.selectedItems;\n selectorModel.init(this);\n };\n /**\n * @private\n * @param {string[]} objArray - Specified the annotation object array.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {boolean} multipleSelection - Specified the multiple selection or not.\n * @param {boolean} preventUpdate - Specified the prevent update or not.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.select = function (objArray, currentSelector, multipleSelection, preventUpdate) {\n var selectorModel = this.pdfViewer.selectedItems;\n for (var i = 0; i < objArray.length; i++) {\n // eslint-disable-next-line\n var obj = this.pdfViewer.nameTable[objArray[i]];\n if (obj.formFieldAnnotationType && this.pdfViewer.designerMode) {\n selectorModel.formFields.push(obj);\n this.initSelectorWrapper();\n selectorModel.wrapper.children.push(obj.wrapper);\n this.renderSelector(obj.pageIndex, currentSelector, obj, true);\n }\n else if (obj && !obj.formFieldAnnotationType) {\n if (!(obj instanceof Selector) && obj.wrapper.visible && this.pdfViewer.annotationModule) {\n // eslint-disable-next-line\n var annotationSettings = void 0;\n if (obj.annotationSettings) {\n annotationSettings = obj.annotationSettings;\n annotationSettings.isLock = JSON.parse(annotationSettings.isLock);\n }\n else if (!obj.formFieldAnnotationType) {\n annotationSettings = this.pdfViewer.annotationModule.findAnnotationSettings(obj, true);\n obj.annotationSettings = annotationSettings;\n }\n var isLock = !obj.formFieldAnnotationType ? annotationSettings.isLock : false;\n if (annotationSettings && annotationSettings.isLock && this.pdfViewer.annotationModule.checkAllowedInteractions('Select', obj)) {\n isLock = false;\n }\n if (!isLock) {\n selectorModel.annotations.push(obj);\n this.initSelectorWrapper();\n selectorModel.wrapper.rotateAngle = selectorModel.rotateAngle = 0;\n selectorModel.wrapper.children.push(obj.wrapper);\n if (!preventUpdate) {\n this.renderSelector(obj.pageIndex, currentSelector, obj, true);\n }\n }\n }\n }\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @param {number} pageIndex - Specified the page index value.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {PdfAnnotationBaseModel} helper - Specified the helper object.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.dragSelectedObjects = function (tx, ty, pageIndex, currentSelector, helper) {\n var obj = this.pdfViewer.selectedItems;\n this.drag(obj, tx, ty, currentSelector, helper);\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {PdfAnnotationBaseModel} helper - Specified the helper object.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.drag = function (obj, tx, ty, currentSelector, helper) {\n if (obj instanceof Selector) {\n if (obj.annotations.length) {\n for (var _i = 0, _a = obj.annotations; _i < _a.length; _i++) {\n var node = _a[_i];\n this.drag(node, tx, ty, currentSelector, helper);\n this.renderSelector(node.pageIndex, currentSelector, helper);\n }\n }\n else if (obj.formFields.length) {\n for (var _b = 0, _c = obj.formFields; _b < _c.length; _b++) {\n var node = _c[_b];\n this.drag(node, tx, ty, currentSelector, helper);\n this.renderSelector(node.pageIndex, currentSelector, helper);\n }\n }\n }\n else {\n this.dragAnnotation(obj, tx, ty);\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @returns {void}\n */\n Drawing.prototype.dragAnnotation = function (obj, tx, ty) {\n var tempNode;\n var elements = [];\n // eslint-disable-next-line\n var oldValues = { x: obj.wrapper.offsetX, y: obj.wrapper.offsetY };\n obj.wrapper.offsetX += tx;\n obj.wrapper.offsetY += ty;\n if (isLineShapes(obj) || obj.shapeAnnotationType === 'Polygon') {\n if (obj.wrapper.children.length) {\n var nodes = obj.wrapper.children;\n for (var i = 0; i < nodes.length; i++) {\n nodes[i].offsetX += tx;\n nodes[i].offsetY += ty;\n }\n }\n this.dragControlPoint(obj, tx, ty, true);\n }\n this.nodePropertyChange(obj, { bounds: { x: obj.wrapper.offsetX, y: obj.wrapper.offsetY } });\n obj.wrapper.measureChildren = false;\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + obj.pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvas, obj.pageIndex);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @param {boolean} preventUpdate - Specified the prevent update or not.\n * @param {number} segmentNumber - Specified the segment value.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.dragControlPoint = function (obj, tx, ty, preventUpdate, segmentNumber) {\n // eslint-disable-next-line\n var connector = this.pdfViewer.nameTable[obj.id];\n for (var i = 0; i < connector.vertexPoints.length; i++) {\n (connector.vertexPoints[i]).x += tx;\n (connector.vertexPoints[i]).y += ty;\n }\n if (!preventUpdate) {\n this.updateEndPoint(connector);\n }\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the connector object.\n * @returns {void}\n */\n Drawing.prototype.updateEndPoint = function (connector) {\n this.nodePropertyChange(connector, { vertexPoints: connector.vertexPoints });\n this.renderSelector(connector.pageIndex);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} actualObject - Specified the actual annotaion object.\n * @param {PdfAnnotationBaseModel} node - Specified the node annotation object.\n * @returns {void}\n */\n Drawing.prototype.nodePropertyChange = function (actualObject, node) {\n var existingBounds = actualObject.wrapper.outerBounds;\n var existingInnerBounds = actualObject.wrapper.bounds;\n var updateConnector = false;\n var i;\n var j;\n var offsetX;\n var offsetY;\n var update;\n var tx;\n var ty;\n if (node.bounds) {\n if (node.bounds.width !== undefined) {\n actualObject.bounds.width = actualObject.wrapper.width = node.bounds.width;\n }\n if (node.bounds.height !== undefined) {\n actualObject.bounds.height = actualObject.wrapper.height = node.bounds.height;\n }\n if (node.bounds.x !== undefined) {\n actualObject.bounds.x = node.bounds.x - (actualObject.bounds.width * 0.5);\n actualObject.wrapper.offsetX = node.bounds.x;\n update = true;\n updateConnector = true;\n }\n if (node.bounds.y !== undefined) {\n actualObject.bounds.y = node.bounds.y - (actualObject.bounds.height * 0.5);\n actualObject.wrapper.offsetY = node.bounds.y;\n update = true;\n updateConnector = true;\n }\n if (node.leaderHeight !== undefined) {\n actualObject.leaderHeight = node.leaderHeight;\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (actualObject.wrapper.children.length) {\n var children = actualObject.wrapper.children;\n for (var i_1 = 0; i_1 < children.length; i_1++) {\n if (children[i_1].id) {\n var names = children[i_1].id.split('_');\n if (names.length && (names.indexOf('perimeter') > -1 || names.indexOf('radius') > -1)) {\n this.setNodePosition(children[i_1], actualObject);\n }\n else if (names.length && (names.indexOf('srcDec') > -1)) {\n children[i_1].offsetX = actualObject.vertexPoints[0].x;\n children[i_1].offsetY = actualObject.vertexPoints[0].y;\n }\n else if (names.length && names.indexOf('tarDec') > -1) {\n children[i_1].offsetX = actualObject.vertexPoints[actualObject.vertexPoints.length - 1].x;\n children[i_1].offsetY = actualObject.vertexPoints[actualObject.vertexPoints.length - 1].y;\n }\n else if (names.length && (names.indexOf('stamp') > -1)) {\n // eslint-disable-next-line\n var ratio = 0;\n var heightRatio = 2;\n if (actualObject.wrapper.width !== undefined && actualObject.wrapper.height !== undefined) {\n ratio = 20;\n heightRatio = 2.9;\n }\n if (actualObject.isDynamicStamp) {\n children[i_1].width = actualObject.bounds.width - ratio;\n children[i_1].height = (actualObject.bounds.height / 2) - ratio;\n // eslint-disable-next-line\n var element = children[1];\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.stampSettings ? this.pdfViewer.stampSettings : this.pdfViewer.annotationSettings;\n // eslint-disable-next-line max-len\n if (annotationSettings && (annotationSettings.maxHeight || annotationSettings.maxWidth) && (actualObject.bounds.height > 60)) {\n if (ratio != 0) {\n element.style.fontSize = (actualObject.bounds.width / ratio);\n }\n else {\n element.style.fontSize = (actualObject.wrapper.bounds.width / 20);\n }\n }\n else {\n if (ratio != 0) {\n element.style.fontSize = (actualObject.bounds.width / ratio);\n }\n else {\n element.style.fontSize = (actualObject.wrapper.bounds.width / 20);\n }\n }\n if (ratio !== 0) {\n element.margin.bottom = -(children[i_1].height / 2);\n }\n }\n else {\n children[i_1].width = actualObject.bounds.width - ratio;\n children[i_1].height = actualObject.bounds.height - ratio;\n }\n children[i_1].offsetX = actualObject.wrapper.offsetX;\n children[i_1].offsetY = actualObject.wrapper.offsetX;\n children[i_1].isDirt = true;\n }\n }\n }\n }\n }\n if (node.sourceDecoraterShapes !== undefined) {\n actualObject.sourceDecoraterShapes = node.sourceDecoraterShapes;\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (node.isReadonly !== undefined && actualObject.shapeAnnotationType === 'FreeText') {\n actualObject.isReadonly = node.isReadonly;\n }\n if (node.taregetDecoraterShapes !== undefined) {\n actualObject.taregetDecoraterShapes = node.taregetDecoraterShapes;\n update = true;\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (node.fillColor !== undefined) {\n actualObject.fillColor = node.fillColor;\n actualObject.wrapper.children[0].style.fill = node.fillColor;\n if ((actualObject.enableShapeLabel || actualObject.measureType) && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_2 = 0; i_2 < children.length; i_2++) {\n if (children[i_2].textNodes) {\n if (actualObject.enableShapeLabel) {\n actualObject.labelFillColor = node.fillColor;\n children[i_2].style.fill = node.fillColor;\n }\n if (actualObject.measureType) {\n children[i_2].style.fill = node.fillColor;\n }\n }\n }\n }\n update = true;\n }\n if (actualObject.enableShapeLabel && node.labelFillColor !== undefined) {\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_3 = 0; i_3 < children.length; i_3++) {\n if (children[i_3].textNodes) {\n actualObject.labelFillColor = node.labelFillColor;\n children[i_3].style.fill = node.labelFillColor;\n }\n }\n }\n }\n if (node.opacity !== undefined) {\n if (actualObject.shapeAnnotationType === 'Stamp' || actualObject.shapeAnnotationType === 'FreeText') {\n actualObject.wrapper.children[1].style.opacity = node.opacity;\n if (actualObject.wrapper.children[2]) {\n actualObject.wrapper.children[2].style.opacity = node.opacity;\n }\n }\n else {\n if (actualObject.shapeAnnotationType === 'StickyNotes') {\n // eslint-disable-next-line\n this.pdfViewer.nameTable[actualObject.annotName].wrapper.children[0].style.opacity = node.opacity;\n }\n actualObject.opacity = node.opacity;\n }\n actualObject.wrapper.children[0].style.opacity = node.opacity;\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_4 = 0; i_4 < children.length; i_4++) {\n if (children[i_4].textNodes) {\n children[i_4].style.opacity = node.labelOpacity;\n }\n }\n }\n update = true;\n updateConnector = true;\n }\n if (actualObject.enableShapeLabel && node.labelOpacity !== undefined) {\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_5 = 0; i_5 < children.length; i_5++) {\n if (children[i_5].textNodes) {\n children[i_5].style.opacity = node.labelOpacity;\n }\n }\n }\n }\n if (node.rotateAngle !== undefined) {\n actualObject.rotateAngle = node.rotateAngle;\n actualObject.wrapper.rotateAngle = node.rotateAngle;\n update = true;\n updateConnector = true;\n }\n if (node.strokeColor !== undefined) {\n actualObject.strokeColor = node.strokeColor;\n actualObject.wrapper.children[0].style.strokeColor = node.strokeColor;\n update = true;\n updateConnector = true;\n }\n if (node.fontColor !== undefined) {\n actualObject.fontColor = node.fontColor;\n if (actualObject.shapeAnnotationType === 'FreeText' && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n children[1].style.color = node.fontColor;\n if (actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Center';\n }\n else {\n children[1].horizontalAlignment = 'Auto';\n }\n }\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_6 = 0; i_6 < children.length; i_6++) {\n if (children[i_6].textNodes) {\n children[i_6].style.color = node.fontColor;\n }\n }\n }\n update = true;\n updateConnector = true;\n }\n if (node.fontFamily !== undefined) {\n actualObject.fontFamily = node.fontFamily;\n if (actualObject.shapeAnnotationType === 'FreeText' && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n children[1].style.fontFamily = node.fontFamily;\n }\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_7 = 0; i_7 < children.length; i_7++) {\n if (children[i_7].textNodes) {\n children[i_7].style.fontFamily = node.fontFamily;\n }\n }\n }\n update = true;\n updateConnector = true;\n }\n if (node.fontSize !== undefined) {\n actualObject.fontSize = node.fontSize;\n if ((actualObject.shapeAnnotationType === 'FreeText' || actualObject.shapeAnnotationType === 'SignatureText') && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n children[1].style.fontSize = node.fontSize;\n if (actualObject.shapeAnnotationType === 'SignatureText') {\n actualObject.wrapper.children[1].bounds.width = actualObject.bounds.width;\n actualObject.wrapper.children[1].desiredSize.width = actualObject.bounds.width;\n actualObject.wrapper.children[1].actualSize.width = actualObject.bounds.width;\n children[1].horizontalAlignment = 'Center';\n children[1].verticalAlignment = 'Center';\n children[1].setOffsetWithRespectToBounds(0, 0, 'Absolute');\n }\n }\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_8 = 0; i_8 < children.length; i_8++) {\n if (children[i_8].textNodes) {\n children[i_8].style.fontSize = node.fontSize;\n }\n }\n }\n update = true;\n updateConnector = true;\n }\n if (node.font !== undefined) {\n if (actualObject.shapeAnnotationType === 'FreeText' && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n if (node.font.isBold !== undefined) {\n children[1].style.bold = node.font.isBold;\n actualObject.font.isBold = node.font.isBold;\n }\n if (node.font.isItalic !== undefined) {\n children[1].style.italic = node.font.isItalic;\n actualObject.font.isItalic = node.font.isItalic;\n }\n if (node.font.isUnderline !== undefined) {\n if (node.font.isUnderline) {\n actualObject.font.isStrikeout = false;\n }\n if (node.font.isUnderline === true) {\n children[1].style.textDecoration = 'Underline';\n }\n else {\n if (!node.font.isStrikeout) {\n children[1].style.textDecoration = 'None';\n }\n }\n actualObject.font.isUnderline = node.font.isUnderline;\n }\n if (node.font.isStrikeout !== undefined) {\n if (node.font.isStrikeout) {\n actualObject.font.isUnderline = false;\n }\n if (node.font.isStrikeout === true) {\n children[1].style.textDecoration = 'LineThrough';\n }\n else {\n if (!node.font.isUnderline) {\n children[1].style.textDecoration = 'None';\n }\n }\n actualObject.font.isStrikeout = node.font.isStrikeout;\n }\n }\n update = true;\n updateConnector = true;\n }\n if (node.textAlign !== undefined) {\n actualObject.textAlign = node.textAlign;\n if (actualObject.shapeAnnotationType === 'FreeText' && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n children[1].style.textAlign = node.textAlign;\n if (children[1].childNodes.length === 1) {\n if (actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n else if (actualObject.textAlign === 'Right') {\n children[1].horizontalAlignment = 'Right';\n children[1].setOffsetWithRespectToBounds(0.97, 0, null);\n }\n else if (actualObject.textAlign === 'Left') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n else if (actualObject.textAlign === 'Center') {\n children[1].horizontalAlignment = 'Center';\n children[1].setOffsetWithRespectToBounds(0.46, 0, null);\n }\n }\n else if (children[1].childNodes.length > 1 && actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Center';\n }\n else {\n children[1].horizontalAlignment = 'Auto';\n }\n }\n update = true;\n updateConnector = true;\n }\n if (node.thickness !== undefined) {\n actualObject.thickness = node.thickness;\n actualObject.wrapper.children[0].style.strokeWidth = node.thickness;\n update = true;\n updateConnector = true;\n }\n if (node.borderDashArray !== undefined) {\n actualObject.borderDashArray = node.borderDashArray;\n actualObject.wrapper.children[0].style.strokeDashArray = node.borderDashArray;\n }\n if (node.borderStyle !== undefined) {\n actualObject.borderStyle = node.borderStyle;\n }\n if (node.author !== undefined) {\n actualObject.author = node.author;\n }\n if (node.modifiedDate !== undefined) {\n actualObject.modifiedDate = node.modifiedDate;\n }\n if (node.subject !== undefined) {\n actualObject.subject = node.subject;\n }\n if (node.vertexPoints !== undefined) {\n actualObject.vertexPoints = node.vertexPoints;\n // eslint-disable-next-line\n this.pdfViewer.nameTable[actualObject.id].vertexPoints = node.vertexPoints;\n this.updateConnector(actualObject, node.vertexPoints);\n }\n if (node.leaderHeight !== undefined && actualObject.shapeAnnotationType !== 'Polygon') {\n actualObject.leaderHeight = node.leaderHeight;\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (node.notes !== undefined) {\n actualObject.notes = node.notes;\n }\n if (node.annotName !== undefined) {\n actualObject.annotName = node.annotName;\n }\n if (actualObject.shapeAnnotationType === 'Distance') {\n for (i = 0; i < actualObject.wrapper.children.length; i++) {\n // eslint-disable-next-line\n var segment = actualObject.wrapper.children[i];\n // eslint-disable-next-line\n var points = getConnectorPoints(actualObject);\n if (segment.id.indexOf('leader1') > -1) {\n this.setLineDistance(actualObject, points, segment, false);\n }\n if (segment.id.indexOf('leader2') > -1) {\n this.setLineDistance(actualObject, points, segment, true);\n }\n }\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (actualObject.shapeAnnotationType === 'Polygon' && node.vertexPoints) {\n actualObject.data = getPolygonPath(actualObject.vertexPoints);\n // eslint-disable-next-line\n var path = actualObject.wrapper.children[0];\n path.data = actualObject.data;\n path.canMeasurePath = true;\n }\n if (isLineShapes(actualObject)) {\n for (var i_9 = 0; i_9 < actualObject.wrapper.children.length; i_9++) {\n // eslint-disable-next-line\n var childElement = actualObject.wrapper.children[i_9];\n if (!childElement.textNodes) {\n setElementStype(actualObject, actualObject.wrapper.children[i_9]);\n }\n if (actualObject.enableShapeLabel === true) {\n if (actualObject.wrapper.children[i_9] instanceof TextElement) {\n actualObject.wrapper.children[i_9].style.fill = actualObject.labelFillColor;\n }\n if ((actualObject.wrapper.children[i_9] instanceof PathElement && actualObject.measureType === 'Perimeter')) {\n actualObject.wrapper.children[i_9].style.fill = 'transparent';\n }\n }\n else {\n if ((actualObject.wrapper.children[i_9] instanceof PathElement && actualObject.measureType === 'Perimeter') || actualObject.wrapper.children[i_9] instanceof TextElement) {\n actualObject.wrapper.children[i_9].style.fill = 'transparent';\n }\n }\n }\n }\n if (actualObject && (actualObject.shapeAnnotationType === 'FreeText' || actualObject.enableShapeLabel === true)) {\n if (actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_10 = 0; i_10 < children.length; i_10++) {\n if (children[i_10].textNodes) {\n if (actualObject.shapeAnnotationType === 'FreeText') {\n if (node.dynamicText) {\n children[i_10].content = node.dynamicText;\n actualObject.dynamicText = node.dynamicText;\n }\n else {\n children[i_10].content = actualObject.dynamicText;\n }\n children[i_10].width = actualObject.bounds.width - 8;\n }\n else if (actualObject.enableShapeLabel === true && actualObject.measureType) {\n if (node.labelContent) {\n children[i_10].content = node.labelContent;\n actualObject.labelContent = node.labelContent;\n }\n else {\n children[i_10].content = actualObject.labelContent;\n }\n actualObject.notes = children[i_10].content;\n }\n else if (actualObject.enableShapeLabel === true) {\n if (node.labelContent) {\n children[i_10].content = node.labelContent;\n actualObject.labelContent = node.labelContent;\n }\n else {\n children[i_10].content = actualObject.labelContent;\n }\n actualObject.notes = children[i_10].content;\n }\n children[i_10].isDirt = true;\n }\n /** set text node width less than the parent */\n }\n }\n }\n actualObject.wrapper.measure(new Size(actualObject.wrapper.bounds.width, actualObject.wrapper.bounds.height));\n actualObject.wrapper.arrange(actualObject.wrapper.desiredSize);\n if (actualObject && actualObject.formFieldAnnotationType) {\n if (actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children[0];\n children.actualSize.width = actualObject.wrapper.desiredSize.width;\n children.actualSize.height = actualObject.wrapper.desiredSize.height;\n }\n }\n if (actualObject && actualObject.shapeAnnotationType === 'FreeText' && actualObject.subject === 'Text Box') {\n if (actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n if (children[1].childNodes.length > 1 && actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Center';\n }\n else if (children[1].childNodes.length === 1) {\n if (actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n else if (actualObject.textAlign === 'Right') {\n children[1].horizontalAlignment = 'Right';\n children[1].setOffsetWithRespectToBounds(0.97, 0, null);\n }\n else if (actualObject.textAlign === 'Left') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n else if (actualObject.textAlign === 'Center') {\n children[1].horizontalAlignment = 'Center';\n children[1].setOffsetWithRespectToBounds(0.46, 0, null);\n }\n }\n for (var i_11 = 0; i_11 < children.length; i_11++) {\n if (children[i_11].textNodes && children[i_11].textNodes.length > 0) {\n children[i_11].isDirt = true;\n var childNodeHeight = children[i_11].textNodes.length * children[i_11].textNodes[0].dy;\n var heightDiff = actualObject.bounds.height - childNodeHeight;\n if (heightDiff > 0 && heightDiff < children[i_11].textNodes[0].dy) {\n childNodeHeight = childNodeHeight + children[i_11].textNodes[0].dy;\n }\n if (childNodeHeight > actualObject.bounds.height) {\n var contString = '';\n for (var index = 0; index < children[i_11].textNodes.length; index++) {\n // eslint-disable-next-line\n var childHeight = children[i_11].textNodes[0].dy * (index + 1);\n // eslint-disable-next-line\n childHeight = childHeight;\n contString = contString + children[i_11].textNodes[index].text;\n }\n children[i_11].content = contString;\n }\n }\n /** set text node width less than the parent */\n children[i_11].width = actualObject.bounds.width - 8;\n }\n }\n actualObject.wrapper.measure(new Size(actualObject.wrapper.bounds.width, actualObject.wrapper.bounds.height));\n actualObject.wrapper.arrange(actualObject.wrapper.desiredSize);\n }\n this.pdfViewer.renderDrawing(undefined, actualObject.pageIndex);\n if (actualObject && actualObject.shapeAnnotationType === 'FreeText') {\n if (actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n if (children[1].childNodes.length === 1 && actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0.5, 0, null);\n }\n else if (children[1].childNodes.length > 1 && actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Center';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n }\n }\n };\n // eslint-disable-next-line\n Drawing.prototype.setLineDistance = function (actualObject, points, segment, leader) {\n var node1;\n if (leader) {\n node1 = initLeader(actualObject, points[1], points[0], leader);\n }\n else {\n node1 = initLeader(actualObject, points[0], points[1], leader);\n }\n segment.data = node1.data;\n segment.offsetX = node1.offsetX;\n segment.offsetY = node1.offsetY;\n segment.rotateAngle = node1.rotateAngle;\n segment.width = node1.width;\n segment.height = node1.height;\n segment.pivot = node1.pivot;\n segment.canMeasurePath = true;\n segment.isDirt = true;\n };\n /**\n * @private\n * @param {number} sx - Specified the sx value.\n * @param {number} sy - Specified the sy value.\n * @param {PointModel} pivot - Specified the pivot value.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.scaleSelectedItems = function (sx, sy, pivot) {\n var obj = this.pdfViewer.selectedItems;\n return this.scale(obj, sx, sy, pivot);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel | SelectorModel} obj - Specified the annotaion object.\n * @param {number} sx - Specified the sx value.\n * @param {number} sy - Specified the sy value.\n * @param {PointModel} pivot - Specified the pivot value.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.scale = function (obj, sx, sy, pivot) {\n var checkBoundaryConstraints = true;\n if (obj instanceof Selector) {\n if (obj.annotations && obj.annotations.length) {\n for (var _i = 0, _a = obj.annotations; _i < _a.length; _i++) {\n var node = _a[_i];\n checkBoundaryConstraints = this.scaleAnnotation(node, sx, sy, pivot, obj);\n }\n }\n else if (obj.formFields && obj.formFields.length) {\n for (var _b = 0, _c = obj.formFields; _b < _c.length; _b++) {\n var node = _c[_b];\n checkBoundaryConstraints = this.scaleAnnotation(node, sx, sy, pivot, obj);\n }\n }\n }\n else {\n checkBoundaryConstraints = this.scaleAnnotation(obj, sx, sy, pivot, undefined);\n }\n return checkBoundaryConstraints;\n };\n /**\n * @private\n * @param {number} sw - Specified the sw value.\n * @param {number} sh - Specified the sh value.\n * @param {PointModel} pivot - Specified the pivot value.\n * @param {IElement} obj - Specified the annotation object.\n * @param {DrawingElement} element - Specified the annotation element.\n * @param {IElement} refObject - Specified the annotation reference object.\n * @returns {void}\n */\n Drawing.prototype.scaleObject = function (sw, sh, pivot, obj, element, refObject) {\n sw = sw < 0 ? 1 : sw;\n sh = sh < 0 ? 1 : sh;\n if (sw !== 1 || sh !== 1) {\n var width = void 0;\n var height = void 0;\n if (!isLineShapes(obj)) {\n var node = obj;\n var isResize = void 0;\n var bound = void 0;\n width = node.wrapper.actualSize.width * sw;\n height = node.wrapper.actualSize.height * sh;\n if (isResize) {\n width = Math.max(width, (bound.right - node.wrapper.bounds.x));\n height = Math.max(height, (bound.bottom - node.wrapper.bounds.y));\n }\n sw = width / node.wrapper.actualSize.width;\n sh = height / node.wrapper.actualSize.height;\n }\n var matrix = identityMatrix();\n if (!refObject) {\n refObject = obj;\n }\n var refWrapper = refObject.wrapper;\n rotateMatrix(matrix, -refWrapper.rotateAngle, pivot.x, pivot.y);\n scaleMatrix(matrix, sw, sh, pivot.x, pivot.y);\n rotateMatrix(matrix, refWrapper.rotateAngle, pivot.x, pivot.y);\n if (!isLineShapes(obj)) {\n var node = obj;\n var newPosition = transformPointByMatrix(matrix, { x: node.wrapper.offsetX, y: node.wrapper.offsetY });\n if (width > 0) {\n node.wrapper.width = width;\n node.wrapper.offsetX = newPosition.x;\n }\n if (height > 0) {\n node.wrapper.height = height;\n node.wrapper.offsetY = newPosition.y;\n }\n this.nodePropertyChange(obj, {\n bounds: { width: node.wrapper.width, height: node.wrapper.height, x: node.wrapper.offsetX, y: node.wrapper.offsetY }\n });\n }\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} sw - Specified the sw value.\n * @param {number} sh - Specified the sh value.\n * @param {PointModel} pivot - Specified the pivot value.\n * @param {IElement} refObject - Specified the reference object.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.scaleAnnotation = function (obj, sw, sh, pivot, refObject) {\n // eslint-disable-next-line\n var node = this.pdfViewer.nameTable[obj.id];\n var tempNode = node;\n var elements = [];\n var element = node.wrapper;\n if (!refObject) {\n refObject = obj;\n }\n var refWrapper = refObject.wrapper;\n var x = refWrapper.offsetX - refWrapper.actualSize.width * refWrapper.pivot.x;\n var y = refWrapper.offsetY - refWrapper.actualSize.height * refWrapper.pivot.y;\n var refPoint = this.getShapePoint(x, y, refWrapper.actualSize.width, refWrapper.actualSize.height, refWrapper.rotateAngle, refWrapper.offsetX, refWrapper.offsetY, pivot);\n if (element.actualSize.width !== undefined && element.actualSize.height !== undefined) {\n this.scaleObject(sw, sh, refPoint, node, element, refObject);\n }\n // eslint-disable-next-line max-len\n var constraints = this.checkBoundaryConstraints(undefined, undefined, obj.pageIndex, obj.wrapper.bounds);\n if (!constraints) {\n this.scaleObject(1 / sw, 1 / sh, refPoint, node, element, refObject);\n }\n return constraints;\n };\n /**\n * @private\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @param {number} pageIndex - Specified the page index value.\n * @param {Rect} nodeBounds - Specified the node bounds value.\n * @param {boolean} isStamp - Specified the annotation is stamp or not.\n * @param {boolean} isSkip - Specified the annotaion is skip or not.\n * @returns {boolean} - Returns true or false.\n */\n // eslint-disable-next-line max-len\n Drawing.prototype.checkBoundaryConstraints = function (tx, ty, pageIndex, nodeBounds, isStamp, isSkip) {\n var selectorBounds = !nodeBounds ? this.pdfViewer.selectedItems.wrapper.bounds : undefined;\n var bounds = nodeBounds;\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n var heightDifference = 10;\n if (canvas) {\n var width = canvas.clientWidth / this.pdfViewer.viewerBase.getZoomFactor();\n var height = canvas.clientHeight / this.pdfViewer.viewerBase.getZoomFactor();\n var right = (nodeBounds ? bounds.right : selectorBounds.right) + (tx || 0);\n var left = (nodeBounds ? bounds.left : selectorBounds.left) + (tx || 0);\n var top_1 = (nodeBounds ? bounds.top : selectorBounds.top) + (ty || 0);\n var bottom = (nodeBounds ? bounds.bottom : selectorBounds.bottom) + (ty || 0);\n if (isStamp) {\n heightDifference = 50;\n if (this.pdfViewer.viewerBase.eventArgs && this.pdfViewer.viewerBase.eventArgs.source) {\n if (this.RestrictStamp(this.pdfViewer.viewerBase.eventArgs.source)) {\n return false;\n }\n }\n }\n if ((right <= width - 10 && left >= 10 && bottom <= height - 10 && top_1 >= heightDifference) || isSkip) {\n return true;\n }\n }\n return false;\n };\n // eslint-disable-next-line\n Drawing.prototype.RestrictStamp = function (source) {\n // eslint-disable-next-line max-len\n if (source && source.pageIndex !== undefined && this.pdfViewer.viewerBase.activeElements && source.pageIndex !== this.pdfViewer.viewerBase.activeElements.activePageID) {\n return true;\n }\n return false;\n };\n /**\n * @private\n * @param {DrawingElement} shapeElement - Specified the shape element.\n * @returns {Rect} - Returns the rectangle object.\n */\n Drawing.prototype.getShapeBounds = function (shapeElement) {\n var shapeBounds = new Rect();\n var shapeCorners = cornersPointsBeforeRotation(shapeElement);\n var shapeMiddleLeft = shapeCorners.middleLeft;\n var shapeTopCenter = shapeCorners.topCenter;\n var shapeBottomCenter = shapeCorners.bottomCenter;\n var shapeMiddleRight = shapeCorners.middleRight;\n var shapeTopLeft = shapeCorners.topLeft;\n var shapeTopRight = shapeCorners.topRight;\n var shapeBottomLeft = shapeCorners.bottomLeft;\n var shapeBottomRight = shapeCorners.bottomRight;\n shapeElement.corners = {\n topLeft: shapeTopLeft, topCenter: shapeTopCenter, topRight: shapeTopRight, middleLeft: shapeMiddleLeft,\n middleRight: shapeMiddleRight, bottomLeft: shapeBottomLeft, bottomCenter: shapeBottomCenter, bottomRight: shapeBottomRight\n };\n if (shapeElement.rotateAngle !== 0 || shapeElement.parentTransform !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, shapeElement.rotateAngle + shapeElement.parentTransform, shapeElement.offsetX, shapeElement.offsetY);\n shapeElement.corners.topLeft = shapeTopLeft = transformPointByMatrix(matrix, shapeTopLeft);\n shapeElement.corners.topCenter = shapeTopCenter = transformPointByMatrix(matrix, shapeTopCenter);\n shapeElement.corners.topRight = shapeTopRight = transformPointByMatrix(matrix, shapeTopRight);\n shapeElement.corners.middleLeft = shapeMiddleLeft = transformPointByMatrix(matrix, shapeMiddleLeft);\n shapeElement.corners.middleRight = shapeMiddleRight = transformPointByMatrix(matrix, shapeMiddleRight);\n shapeElement.corners.bottomLeft = shapeBottomLeft = transformPointByMatrix(matrix, shapeBottomLeft);\n shapeElement.corners.bottomCenter = shapeBottomCenter = transformPointByMatrix(matrix, shapeBottomCenter);\n shapeElement.corners.bottomRight = shapeBottomRight = transformPointByMatrix(matrix, shapeBottomRight);\n //Set corners based on rotate angle\n }\n shapeBounds = Rect.toBounds([shapeTopLeft, shapeTopRight, shapeBottomLeft, shapeBottomRight]);\n shapeElement.corners.left = shapeBounds.left;\n shapeElement.corners.right = shapeBounds.right;\n shapeElement.corners.top = shapeBounds.top;\n shapeElement.corners.bottom = shapeBounds.bottom;\n shapeElement.corners.center = shapeBounds.center;\n shapeElement.corners.width = shapeBounds.width;\n shapeElement.corners.height = shapeBounds.height;\n return shapeBounds;\n };\n /**\n * @private\n * @param {number} x - Specified the x value.\n * @param {number} y - Specified the y value.\n * @param {number} w - Specified the w value.\n * @param {number} h - Specified the h value.\n * @param {number} angle - Specified the angle value.\n * @param {number} offsetX - Specified the offset x value.\n * @param {number} offsetY - Specified the offset y value.\n * @param {PointModel} cornerPoint - Specified the corner point value.\n * @returns {PointModel} - Returns the point model.\n */\n Drawing.prototype.getShapePoint = function (x, y, w, h, angle, offsetX, offsetY, cornerPoint) {\n var pivotPoint = { x: 0, y: 0 };\n var transformMatrix = identityMatrix();\n rotateMatrix(transformMatrix, angle, offsetX, offsetY);\n switch (cornerPoint.x) {\n case 1:\n switch (cornerPoint.y) {\n case 1:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w, y: y + h }));\n break;\n case 0:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w, y: y }));\n break;\n case 0.5:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w, y: y + h / 2 }));\n break;\n }\n break;\n case 0:\n switch (cornerPoint.y) {\n case 0.5:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x, y: y + h / 2 }));\n break;\n case 1:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x, y: y + h }));\n break;\n case 0:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x, y: y }));\n break;\n }\n break;\n case 0.5:\n switch (cornerPoint.y) {\n case 0:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w / 2, y: y }));\n break;\n case 0.5:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w / 2, y: y + h / 2 }));\n break;\n case 1:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w / 2, y: y + h }));\n break;\n }\n break;\n }\n return { x: pivotPoint.x, y: pivotPoint.y };\n };\n /**\n * @private\n * @param {string} endPoint - Specified the end point value.\n * @param {IElement} obj - Specified the annotaion object.\n * @param {PointModel} point - Specified the annotation points.\n * @param {PointModel} segment - Specified the annotaion segment.\n * @param {IElement} target - Specified the target element.\n * @param {string} targetPortId - Specified the target port id.\n * @param {any} currentSelector - Specified the current selector value.\n * @returns {boolean} - Returns true or false.\n */\n // eslint-disable-next-line\n Drawing.prototype.dragConnectorEnds = function (endPoint, obj, point, segment, target, targetPortId, currentSelector) {\n var selectorModel;\n var connector;\n var node;\n var tx;\n var segmentPoint;\n var ty;\n var index;\n // eslint-disable-next-line\n var checkBezierThumb = false;\n if (obj instanceof Selector) {\n selectorModel = obj;\n connector = selectorModel.annotations[0];\n }\n else {\n connector = obj;\n }\n point = { x: point.x / this.pdfViewer.viewerBase.getZoomFactor(), y: point.y / this.pdfViewer.viewerBase.getZoomFactor() };\n if (this.checkBoundaryConstraints(undefined, undefined, connector.pageIndex, connector.wrapper.bounds)) {\n if (connector.shapeAnnotationType === 'Distance') {\n var leader = isLeader(connector, endPoint);\n if (endPoint === 'Leader0') {\n if (this.pdfViewer.viewerBase.tool instanceof LineTool) {\n connector.vertexPoints[0].x = point.x;\n connector.vertexPoints[0].y = point.y;\n }\n else {\n tx = point.x - leader.point.x;\n ty = point.y - leader.point.y;\n connector.vertexPoints[0].x += tx;\n connector.vertexPoints[0].y += ty;\n }\n }\n else if (endPoint === 'Leader1') {\n var length_2 = connector.vertexPoints.length - 1;\n if (this.pdfViewer.viewerBase.tool instanceof LineTool) {\n connector.vertexPoints[length_2].x = point.x;\n connector.vertexPoints[length_2].y = point.y;\n }\n else {\n tx = point.x - leader.point.x;\n ty = point.y - leader.point.y;\n connector.vertexPoints[length_2].x += tx;\n connector.vertexPoints[length_2].y += ty;\n }\n }\n else {\n // eslint-disable-next-line\n var angle = Point.findAngle(connector.sourcePoint, connector.targetPoint);\n // eslint-disable-next-line\n var center = obj.wrapper.children[0].bounds.center;\n // eslint-disable-next-line\n var matrix = identityMatrix();\n rotateMatrix(matrix, -angle, center.x, center.y);\n // eslint-disable-next-line\n var rotatedPoint = transformPointByMatrix(matrix, { x: point.x, y: point.y });\n if (endPoint.split('_')[0] === 'ConnectorSegmentPoint') {\n // eslint-disable-next-line\n var matrix = identityMatrix();\n rotateMatrix(matrix, -angle, center.x, center.y);\n // eslint-disable-next-line\n var rotatedPoint1 = transformPointByMatrix(matrix, connector.vertexPoints[0]);\n // eslint-disable-next-line\n var rotatedPoint2 = transformPointByMatrix(matrix, connector.vertexPoints[connector.vertexPoints.length - 1]);\n ty = rotatedPoint.y - rotatedPoint1.y;\n if (connector.leaderHeight === 0 && connector.leaderHeight != null) {\n connector.leaderHeight = this.pdfViewer.distanceSettings.leaderLength;\n }\n else {\n connector.leaderHeight += ty;\n rotatedPoint1.y += ty;\n rotatedPoint2.y += ty;\n // eslint-disable-next-line\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, center.x, center.y);\n connector.vertexPoints[0] = transformPointByMatrix(matrix, rotatedPoint1);\n connector.vertexPoints[connector.vertexPoints.length - 1] = transformPointByMatrix(matrix, rotatedPoint2);\n }\n }\n }\n }\n else if (endPoint.split('_')[0] === 'ConnectorSegmentPoint') {\n var i = Number(endPoint.split('_')[1]);\n tx = point.x - connector.vertexPoints[i].x;\n ty = point.y - connector.vertexPoints[i].y;\n connector.vertexPoints[i].x += tx;\n connector.vertexPoints[i].y += ty;\n if (connector.vertexPoints.length > 2 && obj.measureType !== 'Perimeter') {\n if (parseFloat(endPoint.split('_')[1]) === 0) {\n connector.vertexPoints[connector.vertexPoints.length - 1].x += tx;\n connector.vertexPoints[connector.vertexPoints.length - 1].y += ty;\n }\n else if (parseFloat(endPoint.split('_')[1]) === connector.vertexPoints.length - 1) {\n connector.vertexPoints[0].x += tx;\n connector.vertexPoints[0].y += ty;\n }\n }\n }\n this.nodePropertyChange(connector, { vertexPoints: connector.vertexPoints });\n this.renderSelector(connector.pageIndex, currentSelector);\n }\n this.pdfViewer.renderDrawing();\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the y value.\n * @param {number} i - Specified the index value.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.dragSourceEnd = function (obj, tx, ty, i) {\n // eslint-disable-next-line\n var connector = this.pdfViewer.nameTable[obj.id];\n connector.vertexPoints[i].x += tx;\n connector.vertexPoints[i].y += ty;\n this.pdfViewer.renderDrawing();\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the connector object.\n * @param {PointModel[]} points - Specified the points value.\n * @returns {void}\n */\n Drawing.prototype.updateConnector = function (connector, points) {\n var srcDecorator;\n var tarDecorator;\n var targetPoint;\n connector.vertexPoints = points;\n updateSegmentElement(connector, points, connector.wrapper.children[0]);\n var srcPoint = connector.sourcePoint;\n var anglePoint = connector.vertexPoints;\n // points = this.clipDecorators(connector, points);\n var element = connector.wrapper.children[0];\n element.canMeasurePath = true;\n for (var i = 0; i < connector.wrapper.children.length; i++) {\n element = connector.wrapper.children[i];\n if (connector.shapeAnnotationType !== 'Polygon') {\n if (element.id.indexOf('srcDec') > -1) {\n updateDecoratorElement(connector, element, points[0], anglePoint[1], true);\n }\n targetPoint = connector.targetPoint;\n if (element.id.indexOf('tarDec') > -1) {\n updateDecoratorElement(connector, element, points[points.length - 1], anglePoint[anglePoint.length - 2], false);\n }\n }\n }\n };\n /**\n * @private\n * @returns {Object} - Returns the object.\n */\n Drawing.prototype.copy = function () {\n this.pdfViewer.clipboardData.pasteIndex = 1;\n this.pdfViewer.clipboardData.clipObject = this.copyObjects();\n return this.pdfViewer.clipboardData.clipObject;\n };\n /**\n * @private\n * @returns {Object[]} - Returns the object array.\n */\n Drawing.prototype.copyObjects = function () {\n var selectedItems = [];\n var obj = [];\n this.pdfViewer.clipboardData.childTable = {};\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n selectedItems = this.pdfViewer.selectedItems.annotations;\n for (var j = 0; j < selectedItems.length; j++) {\n var element = cloneObject((selectedItems[j]));\n obj.push(element);\n }\n }\n if (this.pdfViewer.selectedItems.formFields.length > 0) {\n selectedItems = this.pdfViewer.selectedItems.formFields;\n for (var j = 0; j < selectedItems.length; j++) {\n var element = cloneObject((selectedItems[j]));\n obj.push(element);\n }\n }\n if (this.pdfViewer.clipboardData.pasteIndex === 0) {\n for (var _i = 0, selectedItems_1 = selectedItems; _i < selectedItems_1.length; _i++) {\n var item = selectedItems_1[_i];\n // eslint-disable-next-line\n if (this.pdfViewer.nameTable[item.id]) {\n if (!item.formFieldAnnotationType) {\n if (item.annotName)\n this.pdfViewer.annotationModule.deleteAnnotationById(item.annotName);\n else\n this.pdfViewer.annotationModule.deleteAnnotation();\n }\n else {\n this.pdfViewer.clearSelection(item.pageIndex);\n this.pdfViewer.formDesignerModule.deleteFormField(item.id);\n }\n }\n }\n //this.endGroupAction();\n }\n this.sortByZIndex(obj, 'zIndex');\n return obj;\n };\n Drawing.prototype.getNewObject = function (obj) {\n var newObj;\n var newobjs = [];\n this.pdfViewer.clipboardData.pasteIndex = 1;\n for (var i = 0; i < obj.length; i++) {\n newObj = cloneObject(obj[i]);\n newobjs.push(newObj);\n }\n return newobjs;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel[]} obj - Specified the annotation object.\n * @param {number} index - Specified the annotation index.\n * @returns {void}\n */\n Drawing.prototype.paste = function (obj, index) {\n var zoomfactor = this.pdfViewer.viewerBase.getZoomFactor();\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n if (obj || this.pdfViewer.clipboardData.clipObject) {\n var copiedItems = obj ? this.getNewObject(obj) :\n this.pdfViewer.clipboardData.clipObject;\n if (copiedItems) {\n var objectTable = {};\n if (this.pdfViewer.clipboardData.pasteIndex !== 0) {\n this.pdfViewer.clearSelection(index);\n }\n for (var _i = 0, copiedItems_1 = copiedItems; _i < copiedItems_1.length; _i++) {\n var copy = copiedItems_1[_i];\n // eslint-disable-next-line\n objectTable[copy.id] = copy;\n }\n for (var j = 0; j < copiedItems.length; j++) {\n var copy = copiedItems[j];\n var pageDiv = this.pdfViewer.viewerBase.getElement('_pageDiv_' + copy.pageIndex);\n // eslint-disable-next-line\n var events = event;\n if (events && !events.clientX && !events.clientY) {\n events = { clientX: this.pdfViewer.viewerBase.mouseLeft, clientY: this.pdfViewer.viewerBase.mouseTop };\n }\n if (isBlazor()) {\n events = this.pdfViewer.viewerBase.mouseDownEvent;\n }\n if (isLineShapes(copy)) {\n this.calculateCopyPosition(copy, pageDiv, events);\n }\n else {\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n copy.bounds.x = (events.clientX - pageCurrentRect.left) / zoomfactor;\n copy.bounds.y = (events.clientY - pageCurrentRect.top) / zoomfactor;\n }\n }\n var newNode = cloneObject(copy);\n if (this.pdfViewer.viewerBase.contextMenuModule.previousAction !== 'Cut') {\n newNode.id += randomId();\n if (this.pdfViewer.annotationModule && newNode.shapeAnnotationType !== 'HandWrittenSignature') {\n newNode.annotName = newNode.id;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationCollection(newNode, copiedItems[0], false);\n }\n if (newNode.shapeAnnotationType === 'SignatureText' || newNode.shapeAnnotationType === 'HandWrittenSignature' || newNode.shapeAnnotationType === 'SignatureImage') {\n this.pdfViewer.viewerBase.signatureModule.storeSignatureData(newNode.pageIndex, newNode);\n }\n if (!newNode.formFieldAnnotationType) {\n this.pdfViewer.annotation.addAction(newNode.pageIndex, null, newNode, 'Addition', '', newNode, newNode);\n }\n }\n else {\n if (this.pdfViewer.annotationModule) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationCollection(newNode, copiedItems[0], true);\n }\n if (newNode.shapeAnnotationType === 'SignatureText' || newNode.shapeAnnotationType === 'HandWrittenSignature' || newNode.shapeAnnotationType === 'SignatureImage') {\n this.pdfViewer.viewerBase.signatureModule.storeSignatureData(newNode.pageIndex, newNode);\n }\n }\n var addedAnnot = this.add(newNode);\n if (this.pdfViewer.formDesigner && addedAnnot.formFieldAnnotationType) {\n this.pdfViewer.annotation.addAction(newNode.pageIndex, null, addedAnnot, 'Addition', '', addedAnnot, addedAnnot);\n }\n if ((newNode.shapeAnnotationType === 'FreeText' || newNode.enableShapeLabel) && addedAnnot) {\n this.nodePropertyChange(addedAnnot, {});\n }\n if (addedAnnot.formFieldAnnotationType && addedAnnot.pageIndex === index) {\n this.pdfViewer.formFieldCollection.push(addedAnnot);\n // eslint-disable-next-line max-len\n var formField = { id: addedAnnot.id, name: addedAnnot.name, value: addedAnnot.value, type: addedAnnot.formFieldAnnotationType,\n isReadOnly: addedAnnot.isReadonly, fontFamily: addedAnnot.fontFamily,\n // eslint-disable-next-line max-len\n fontSize: addedAnnot.fontSize, fontStyle: addedAnnot.fontStyle, color: addedAnnot.color, backgroundColor: addedAnnot.backgroundColor,\n // eslint-disable-next-line max-len\n alignment: addedAnnot.alignment, visibility: addedAnnot.visibility, maxLength: addedAnnot.maxLength, isRequired: addedAnnot.isRequired,\n // eslint-disable-next-line max-len\n isPrint: addedAnnot.isPrint, isSelected: addedAnnot.isSelected, isChecked: addedAnnot.isChecked, tooltip: addedAnnot.tooltip, bounds: addedAnnot.bounds, thickness: addedAnnot.thickness, borderColor: addedAnnot.borderColor, signatureIndicatorSettings: addedAnnot.signatureIndicatorSettings };\n this.pdfViewer.formFieldCollections.push(formField);\n // eslint-disable-next-line max-len\n this.pdfViewer.formDesigner.drawHTMLContent(addedAnnot.formFieldAnnotationType, addedAnnot.wrapper.children[0], addedAnnot, addedAnnot.pageIndex, this.pdfViewer);\n }\n this.pdfViewer.select([newNode.id], this.pdfViewer.annotationSelectorSettings);\n if (!addedAnnot.formFieldAnnotationType) {\n this.pdfViewer.annotationModule.triggerAnnotationAddEvent(newNode);\n }\n ;\n }\n }\n this.pdfViewer.renderDrawing(undefined, index);\n this.pdfViewer.clipboardData.pasteIndex++;\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n Drawing.prototype.calculateCopyPosition = function (copy, pageDiv, events) {\n var zoomfactor = this.pdfViewer.viewerBase.getZoomFactor();\n var x1;\n var y1;\n var x2;\n var y2;\n for (var i = 0; i < copy.vertexPoints.length; i++) {\n if (pageDiv) {\n if (i === 0) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n x1 = copy.vertexPoints[i].x;\n y1 = copy.vertexPoints[i].y;\n copy.vertexPoints[i].x = (events.clientX - pageCurrentRect.left) / zoomfactor;\n copy.vertexPoints[i].y = (events.clientY - pageCurrentRect.top) / zoomfactor;\n x2 = copy.vertexPoints[i].x;\n y2 = copy.vertexPoints[i].y;\n }\n else {\n copy.vertexPoints[i].x += x2 - x1;\n copy.vertexPoints[i].y += y2 - y1;\n }\n }\n }\n };\n /**\n * @private\n * @param {number} index - Specified the annotaion index.\n * @returns {void}\n */\n Drawing.prototype.cut = function (index) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.removedAnnotationCollection = [];\n }\n this.pdfViewer.clipboardData.pasteIndex = 0;\n this.pdfViewer.clipboardData.clipObject = this.copyObjects();\n this.pdfViewer.renderDrawing(undefined, index);\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @private\n * @param {Object[]} nodeArray - Specified the node array.\n * @param {string} sortID - Specified the sort id.\n * @returns {Object[]} - Returns the node array.\n */\n Drawing.prototype.sortByZIndex = function (nodeArray, sortID) {\n var id = sortID ? sortID : 'zIndex';\n nodeArray = nodeArray.sort(function (a, b) {\n // eslint-disable-next-line\n return a[id] - b[id];\n });\n return nodeArray;\n };\n return Drawing;\n}());\nexport { Drawing };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/* eslint-disable */\n// eslint-disable-next-line max-len\nimport { Component, NotifyPropertyChanges, ChildProperty, L10n, Collection, Complex, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, Property, Event } from '@syncfusion/ej2-base';\nimport { PdfViewerBase } from './index';\n// eslint-disable-next-line max-len\nimport { FontStyle, AnnotationResizerLocation, CursorType, ContextMenuItem, DynamicStampItem, SignStampItem, StandardBusinessStampItem, AnnotationDataFormat, DisplayMode } from './base/types';\nimport { FormFields } from './index';\nimport { PdfAnnotationBase, PdfFormFieldBase } from './drawing/pdf-annotation';\nimport { Drawing } from './drawing/drawing';\nimport { Selector } from './drawing/selector';\nimport { renderAdornerLayer } from './drawing/dom-util';\n/**\n * The `ToolbarSettings` module is used to provide the toolbar settings of PDF viewer.\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, \"showTooltip\", void 0);\n __decorate([\n Property()\n ], ToolbarSettings.prototype, \"toolbarItems\", void 0);\n __decorate([\n Property()\n ], ToolbarSettings.prototype, \"annotationToolbarItems\", void 0);\n __decorate([\n Property()\n ], ToolbarSettings.prototype, \"formDesignerToolbarItems\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * The `AjaxRequestSettings` module is used to set the ajax Request Headers of PDF viewer.\n */\nvar AjaxRequestSettings = /** @class */ (function (_super) {\n __extends(AjaxRequestSettings, _super);\n function AjaxRequestSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], AjaxRequestSettings.prototype, \"ajaxHeaders\", void 0);\n __decorate([\n Property(false)\n ], AjaxRequestSettings.prototype, \"withCredentials\", void 0);\n return AjaxRequestSettings;\n}(ChildProperty));\nexport { AjaxRequestSettings };\n/**\n * The `CustomStamp` module is used to provide the custom stamp added in stamp menu of the PDF Viewer toolbar.\n */\nvar CustomStamp = /** @class */ (function (_super) {\n __extends(CustomStamp, _super);\n function CustomStamp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CustomStamp.prototype, \"customStampName\", void 0);\n __decorate([\n Property('')\n ], CustomStamp.prototype, \"customStampImageSource\", void 0);\n return CustomStamp;\n}(ChildProperty));\nexport { CustomStamp };\n/**\n * The `AnnotationToolbarSettings` module is used to provide the annotation toolbar settings of the PDF viewer.\n */\nvar AnnotationToolbarSettings = /** @class */ (function (_super) {\n __extends(AnnotationToolbarSettings, _super);\n function AnnotationToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], AnnotationToolbarSettings.prototype, \"showTooltip\", void 0);\n __decorate([\n Property()\n ], AnnotationToolbarSettings.prototype, \"annotationToolbarItem\", void 0);\n return AnnotationToolbarSettings;\n}(ChildProperty));\nexport { AnnotationToolbarSettings };\n/**\n * The `FormDesignerToolbarSettings` module is used to provide the Form designer toolbar settings of the PDF viewer.\n */\nvar FormDesignerToolbarSettings = /** @class */ (function (_super) {\n __extends(FormDesignerToolbarSettings, _super);\n function FormDesignerToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], FormDesignerToolbarSettings.prototype, \"showTooltip\", void 0);\n __decorate([\n Property()\n ], FormDesignerToolbarSettings.prototype, \"formDesignerToolbarItem\", void 0);\n return FormDesignerToolbarSettings;\n}(ChildProperty));\nexport { FormDesignerToolbarSettings };\n/**\n * The `SignatureFieldSettings` module is used to set the properties of signature field in PDF Viewer\n */\nvar SignatureFieldSettings = /** @class */ (function (_super) {\n __extends(SignatureFieldSettings, _super);\n function SignatureFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], SignatureFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], SignatureFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property(false)\n ], SignatureFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], SignatureFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(false)\n ], SignatureFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], SignatureFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], SignatureFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property(0)\n ], SignatureFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property()\n ], SignatureFieldSettings.prototype, \"signatureDialogSettings\", void 0);\n __decorate([\n Property()\n ], SignatureFieldSettings.prototype, \"signatureIndicatorSettings\", void 0);\n return SignatureFieldSettings;\n}(ChildProperty));\nexport { SignatureFieldSettings };\n/**\n * The `InitialFieldSettings` module is used to set the properties of initial field in PDF Viewer\n */\nvar InitialFieldSettings = /** @class */ (function (_super) {\n __extends(InitialFieldSettings, _super);\n function InitialFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], InitialFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], InitialFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property(false)\n ], InitialFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], InitialFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(false)\n ], InitialFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], InitialFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], InitialFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property(0)\n ], InitialFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(false)\n ], InitialFieldSettings.prototype, \"isInitialField\", void 0);\n __decorate([\n Property()\n ], InitialFieldSettings.prototype, \"initialDialogSettings\", void 0);\n __decorate([\n Property()\n ], InitialFieldSettings.prototype, \"initialIndicatorSettings\", void 0);\n return InitialFieldSettings;\n}(ChildProperty));\nexport { InitialFieldSettings };\n/**\n * The `SignatureIndicatorSettings` module is used to provide the properties of signature Indicator in the signature field\n */\nvar SignatureIndicatorSettings = /** @class */ (function (_super) {\n __extends(SignatureIndicatorSettings, _super);\n function SignatureIndicatorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], SignatureIndicatorSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('orange')\n ], SignatureIndicatorSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property(19)\n ], SignatureIndicatorSettings.prototype, \"width\", void 0);\n __decorate([\n Property(10)\n ], SignatureIndicatorSettings.prototype, \"height\", void 0);\n __decorate([\n Property(10)\n ], SignatureIndicatorSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property(null)\n ], SignatureIndicatorSettings.prototype, \"text\", void 0);\n __decorate([\n Property('black')\n ], SignatureIndicatorSettings.prototype, \"color\", void 0);\n return SignatureIndicatorSettings;\n}(ChildProperty));\nexport { SignatureIndicatorSettings };\n/**\n * The `SignatureDialogSettings` module is used to customize the signature dialog box.\n */\nvar SignatureDialogSettings = /** @class */ (function (_super) {\n __extends(SignatureDialogSettings, _super);\n function SignatureDialogSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload)\n ], SignatureDialogSettings.prototype, \"displayMode\", void 0);\n __decorate([\n Property(false)\n ], SignatureDialogSettings.prototype, \"hideSaveSignature\", void 0);\n return SignatureDialogSettings;\n}(ChildProperty));\nexport { SignatureDialogSettings };\n/**\n * The `ServerActionSettings` module is used to provide the server action methods of PDF viewer.\n */\nvar ServerActionSettings = /** @class */ (function (_super) {\n __extends(ServerActionSettings, _super);\n function ServerActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Load')\n ], ServerActionSettings.prototype, \"load\", void 0);\n __decorate([\n Property('Unload')\n ], ServerActionSettings.prototype, \"unload\", void 0);\n __decorate([\n Property('RenderPdfPages')\n ], ServerActionSettings.prototype, \"renderPages\", void 0);\n __decorate([\n Property('RenderPdfPages')\n ], ServerActionSettings.prototype, \"print\", void 0);\n __decorate([\n Property('Download')\n ], ServerActionSettings.prototype, \"download\", void 0);\n __decorate([\n Property('RenderThumbnailImages')\n ], ServerActionSettings.prototype, \"renderThumbnail\", void 0);\n __decorate([\n Property('RenderAnnotationComments')\n ], ServerActionSettings.prototype, \"renderComments\", void 0);\n __decorate([\n Property('ImportAnnotations')\n ], ServerActionSettings.prototype, \"importAnnotations\", void 0);\n __decorate([\n Property('ExportAnnotations')\n ], ServerActionSettings.prototype, \"exportAnnotations\", void 0);\n __decorate([\n Property('ImportFormFields')\n ], ServerActionSettings.prototype, \"importFormFields\", void 0);\n __decorate([\n Property('ExportFormFields')\n ], ServerActionSettings.prototype, \"exportFormFields\", void 0);\n __decorate([\n Property('RenderPdfTexts')\n ], ServerActionSettings.prototype, \"renderTexts\", void 0);\n return ServerActionSettings;\n}(ChildProperty));\nexport { ServerActionSettings };\n/**\n * The `StrikethroughSettings` module is used to provide the properties to Strikethrough annotation.\n */\nvar StrikethroughSettings = /** @class */ (function (_super) {\n __extends(StrikethroughSettings, _super);\n function StrikethroughSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], StrikethroughSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], StrikethroughSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ff0000')\n ], StrikethroughSettings.prototype, \"color\", void 0);\n __decorate([\n Property('Guest')\n ], StrikethroughSettings.prototype, \"author\", void 0);\n __decorate([\n Property('')\n ], StrikethroughSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(null)\n ], StrikethroughSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(false)\n ], StrikethroughSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(false)\n ], StrikethroughSettings.prototype, \"enableMultiPageAnnotation\", void 0);\n __decorate([\n Property(false)\n ], StrikethroughSettings.prototype, \"enableTextMarkupResizer\", void 0);\n __decorate([\n Property(['None'])\n ], StrikethroughSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], StrikethroughSettings.prototype, \"isPrint\", void 0);\n return StrikethroughSettings;\n}(ChildProperty));\nexport { StrikethroughSettings };\n/**\n * The `UnderlineSettings` module is used to provide the properties to Underline annotation.\n */\nvar UnderlineSettings = /** @class */ (function (_super) {\n __extends(UnderlineSettings, _super);\n function UnderlineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], UnderlineSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], UnderlineSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#00ff00')\n ], UnderlineSettings.prototype, \"color\", void 0);\n __decorate([\n Property('Guest')\n ], UnderlineSettings.prototype, \"author\", void 0);\n __decorate([\n Property('')\n ], UnderlineSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(null)\n ], UnderlineSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(false)\n ], UnderlineSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(false)\n ], UnderlineSettings.prototype, \"enableMultiPageAnnotation\", void 0);\n __decorate([\n Property(false)\n ], UnderlineSettings.prototype, \"enableTextMarkupResizer\", void 0);\n __decorate([\n Property(['None'])\n ], UnderlineSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], UnderlineSettings.prototype, \"isPrint\", void 0);\n return UnderlineSettings;\n}(ChildProperty));\nexport { UnderlineSettings };\n/**\n * The `HighlightSettings` module is used to provide the properties to Highlight annotation.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], HighlightSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffff00')\n ], HighlightSettings.prototype, \"color\", void 0);\n __decorate([\n Property('Guest')\n ], HighlightSettings.prototype, \"author\", void 0);\n __decorate([\n Property('')\n ], HighlightSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(null)\n ], HighlightSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enableMultiPageAnnotation\", void 0);\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enableTextMarkupResizer\", void 0);\n __decorate([\n Property(['None'])\n ], HighlightSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], HighlightSettings.prototype, \"isPrint\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * The `LineSettings` module is used to provide the properties to line annotation.\n */\nvar LineSettings = /** @class */ (function (_super) {\n __extends(LineSettings, _super);\n function LineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], LineSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], LineSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], LineSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], LineSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], LineSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], LineSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], LineSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('None')\n ], LineSettings.prototype, \"lineHeadStartStyle\", void 0);\n __decorate([\n Property('None')\n ], LineSettings.prototype, \"lineHeadEndStyle\", void 0);\n __decorate([\n Property(0)\n ], LineSettings.prototype, \"borderDashArray\", void 0);\n __decorate([\n Property('')\n ], LineSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], LineSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], LineSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], LineSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], LineSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], LineSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], LineSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], LineSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], LineSettings.prototype, \"isPrint\", void 0);\n return LineSettings;\n}(ChildProperty));\nexport { LineSettings };\n/**\n * The `ArrowSettings` module is used to provide the properties to arrow annotation.\n */\nvar ArrowSettings = /** @class */ (function (_super) {\n __extends(ArrowSettings, _super);\n function ArrowSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], ArrowSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], ArrowSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], ArrowSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], ArrowSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], ArrowSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], ArrowSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], ArrowSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('None')\n ], ArrowSettings.prototype, \"lineHeadStartStyle\", void 0);\n __decorate([\n Property('None')\n ], ArrowSettings.prototype, \"lineHeadEndStyle\", void 0);\n __decorate([\n Property(0)\n ], ArrowSettings.prototype, \"borderDashArray\", void 0);\n __decorate([\n Property('')\n ], ArrowSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], ArrowSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], ArrowSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], ArrowSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], ArrowSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], ArrowSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], ArrowSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], ArrowSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], ArrowSettings.prototype, \"isPrint\", void 0);\n return ArrowSettings;\n}(ChildProperty));\nexport { ArrowSettings };\n/**\n * The `RectangleSettings` module is used to provide the properties to rectangle annotation.\n */\nvar RectangleSettings = /** @class */ (function (_super) {\n __extends(RectangleSettings, _super);\n function RectangleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], RectangleSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], RectangleSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(100)\n ], RectangleSettings.prototype, \"width\", void 0);\n __decorate([\n Property(50)\n ], RectangleSettings.prototype, \"height\", void 0);\n __decorate([\n Property(1)\n ], RectangleSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], RectangleSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], RectangleSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], RectangleSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], RectangleSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], RectangleSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], RectangleSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], RectangleSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], RectangleSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], RectangleSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], RectangleSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], RectangleSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], RectangleSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], RectangleSettings.prototype, \"isPrint\", void 0);\n return RectangleSettings;\n}(ChildProperty));\nexport { RectangleSettings };\n/**\n * The `CircleSettings` module is used to provide the properties to circle annotation.\n */\nvar CircleSettings = /** @class */ (function (_super) {\n __extends(CircleSettings, _super);\n function CircleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], CircleSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], CircleSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(100)\n ], CircleSettings.prototype, \"width\", void 0);\n __decorate([\n Property(100)\n ], CircleSettings.prototype, \"height\", void 0);\n __decorate([\n Property(1)\n ], CircleSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], CircleSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], CircleSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], CircleSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], CircleSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], CircleSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], CircleSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], CircleSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], CircleSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], CircleSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], CircleSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], CircleSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], CircleSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], CircleSettings.prototype, \"isPrint\", void 0);\n return CircleSettings;\n}(ChildProperty));\nexport { CircleSettings };\n/**\n * The `ShapeLabelSettings` module is used to provide the properties to rectangle annotation.\n */\nvar ShapeLabelSettings = /** @class */ (function (_super) {\n __extends(ShapeLabelSettings, _super);\n function ShapeLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], ShapeLabelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], ShapeLabelSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#000')\n ], ShapeLabelSettings.prototype, \"fontColor\", void 0);\n __decorate([\n Property(16)\n ], ShapeLabelSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property('Helvetica')\n ], ShapeLabelSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Label')\n ], ShapeLabelSettings.prototype, \"labelContent\", void 0);\n __decorate([\n Property('')\n ], ShapeLabelSettings.prototype, \"notes\", void 0);\n return ShapeLabelSettings;\n}(ChildProperty));\nexport { ShapeLabelSettings };\n/**\n * The `PolygonSettings` module is used to provide the properties to polygon annotation.\n */\nvar PolygonSettings = /** @class */ (function (_super) {\n __extends(PolygonSettings, _super);\n function PolygonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], PolygonSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], PolygonSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], PolygonSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PolygonSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], PolygonSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], PolygonSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], PolygonSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], PolygonSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], PolygonSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], PolygonSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], PolygonSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], PolygonSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], PolygonSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], PolygonSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], PolygonSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], PolygonSettings.prototype, \"isPrint\", void 0);\n return PolygonSettings;\n}(ChildProperty));\nexport { PolygonSettings };\n/**\n * The `stampSettings` module is used to provide the properties to stamp annotation.\n */\nvar StampSettings = /** @class */ (function (_super) {\n __extends(StampSettings, _super);\n function StampSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], StampSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], StampSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(150)\n ], StampSettings.prototype, \"width\", void 0);\n __decorate([\n Property(50)\n ], StampSettings.prototype, \"height\", void 0);\n __decorate([\n Property(1)\n ], StampSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('Guest')\n ], StampSettings.prototype, \"author\", void 0);\n __decorate([\n Property('')\n ], StampSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], StampSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], StampSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], StampSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], StampSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], StampSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], StampSettings.prototype, \"customData\", void 0);\n __decorate([\n Property([])\n ], StampSettings.prototype, \"dynamicStamps\", void 0);\n __decorate([\n Property([])\n ], StampSettings.prototype, \"signStamps\", void 0);\n __decorate([\n Property([])\n ], StampSettings.prototype, \"standardBusinessStamps\", void 0);\n __decorate([\n Property(['None'])\n ], StampSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], StampSettings.prototype, \"isPrint\", void 0);\n return StampSettings;\n}(ChildProperty));\nexport { StampSettings };\n/**\n * The `CustomStampSettings` module is used to provide the properties to customstamp annotation.\n */\nvar CustomStampSettings = /** @class */ (function (_super) {\n __extends(CustomStampSettings, _super);\n function CustomStampSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], CustomStampSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], CustomStampSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], CustomStampSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('Guest')\n ], CustomStampSettings.prototype, \"author\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"height\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"top\", void 0);\n __decorate([\n Property(false)\n ], CustomStampSettings.prototype, \"isAddToMenu\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], CustomStampSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property('')\n ], CustomStampSettings.prototype, \"customStamps\", void 0);\n __decorate([\n Property(true)\n ], CustomStampSettings.prototype, \"enableCustomStamp\", void 0);\n __decorate([\n Property(['None'])\n ], CustomStampSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], CustomStampSettings.prototype, \"isPrint\", void 0);\n return CustomStampSettings;\n}(ChildProperty));\nexport { CustomStampSettings };\n/**\n * The `DistanceSettings` module is used to provide the properties to distance calibrate annotation.\n */\nvar DistanceSettings = /** @class */ (function (_super) {\n __extends(DistanceSettings, _super);\n function DistanceSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], DistanceSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], DistanceSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], DistanceSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ff0000')\n ], DistanceSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], DistanceSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], DistanceSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], DistanceSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('None')\n ], DistanceSettings.prototype, \"lineHeadStartStyle\", void 0);\n __decorate([\n Property('None')\n ], DistanceSettings.prototype, \"lineHeadEndStyle\", void 0);\n __decorate([\n Property(0)\n ], DistanceSettings.prototype, \"borderDashArray\", void 0);\n __decorate([\n Property('')\n ], DistanceSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], DistanceSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], DistanceSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], DistanceSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], DistanceSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], DistanceSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], DistanceSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(40)\n ], DistanceSettings.prototype, \"leaderLength\", void 0);\n __decorate([\n Property(CursorType.move)\n ], DistanceSettings.prototype, \"resizeCursorType\", void 0);\n __decorate([\n Property(['None'])\n ], DistanceSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], DistanceSettings.prototype, \"isPrint\", void 0);\n return DistanceSettings;\n}(ChildProperty));\nexport { DistanceSettings };\n/**\n * The `PerimeterSettings` module is used to provide the properties to perimeter calibrate annotation.\n */\nvar PerimeterSettings = /** @class */ (function (_super) {\n __extends(PerimeterSettings, _super);\n function PerimeterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], PerimeterSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], PerimeterSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], PerimeterSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PerimeterSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], PerimeterSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], PerimeterSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], PerimeterSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('None')\n ], PerimeterSettings.prototype, \"lineHeadStartStyle\", void 0);\n __decorate([\n Property('None')\n ], PerimeterSettings.prototype, \"lineHeadEndStyle\", void 0);\n __decorate([\n Property(0)\n ], PerimeterSettings.prototype, \"borderDashArray\", void 0);\n __decorate([\n Property(0)\n ], PerimeterSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], PerimeterSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], PerimeterSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], PerimeterSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], PerimeterSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property('')\n ], PerimeterSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(['None'])\n ], PerimeterSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], PerimeterSettings.prototype, \"isPrint\", void 0);\n return PerimeterSettings;\n}(ChildProperty));\nexport { PerimeterSettings };\n/**\n * The `AreaSettings` module is used to provide the properties to area calibrate annotation.\n */\nvar AreaSettings = /** @class */ (function (_super) {\n __extends(AreaSettings, _super);\n function AreaSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], AreaSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], AreaSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], AreaSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], AreaSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], AreaSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], AreaSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], AreaSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property(0)\n ], AreaSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], AreaSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], AreaSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], AreaSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], AreaSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property('')\n ], AreaSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(['None'])\n ], AreaSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], AreaSettings.prototype, \"isPrint\", void 0);\n return AreaSettings;\n}(ChildProperty));\nexport { AreaSettings };\n/**\n * The `RadiusSettings` module is used to provide the properties to radius calibrate annotation.\n */\nvar RadiusSettings = /** @class */ (function (_super) {\n __extends(RadiusSettings, _super);\n function RadiusSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], RadiusSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], RadiusSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(100)\n ], RadiusSettings.prototype, \"width\", void 0);\n __decorate([\n Property(90)\n ], RadiusSettings.prototype, \"height\", void 0);\n __decorate([\n Property(1)\n ], RadiusSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], RadiusSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], RadiusSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], RadiusSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], RadiusSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], RadiusSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], RadiusSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], RadiusSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], RadiusSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], RadiusSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], RadiusSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], RadiusSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], RadiusSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], RadiusSettings.prototype, \"isPrint\", void 0);\n return RadiusSettings;\n}(ChildProperty));\nexport { RadiusSettings };\n/**\n * The `VolumeSettings` module is used to provide the properties to volume calibrate annotation.\n */\nvar VolumeSettings = /** @class */ (function (_super) {\n __extends(VolumeSettings, _super);\n function VolumeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], VolumeSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], VolumeSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], VolumeSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], VolumeSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], VolumeSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], VolumeSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], VolumeSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property(0)\n ], VolumeSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], VolumeSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], VolumeSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], VolumeSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], VolumeSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property('')\n ], VolumeSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(['None'])\n ], VolumeSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], VolumeSettings.prototype, \"isPrint\", void 0);\n return VolumeSettings;\n}(ChildProperty));\nexport { VolumeSettings };\n/**\n * The `Ink` module is used to provide the properties to Ink annotation.\n */\nvar InkAnnotationSettings = /** @class */ (function (_super) {\n __extends(InkAnnotationSettings, _super);\n function InkAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], InkAnnotationSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], InkAnnotationSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(0)\n ], InkAnnotationSettings.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], InkAnnotationSettings.prototype, \"height\", void 0);\n __decorate([\n Property(0)\n ], InkAnnotationSettings.prototype, \"path\", void 0);\n __decorate([\n Property(1)\n ], InkAnnotationSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ff0000')\n ], InkAnnotationSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property(1)\n ], InkAnnotationSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], InkAnnotationSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(false)\n ], InkAnnotationSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property('Guest')\n ], InkAnnotationSettings.prototype, \"author\", void 0);\n __decorate([\n Property(['None'])\n ], InkAnnotationSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(null)\n ], InkAnnotationSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(true)\n ], InkAnnotationSettings.prototype, \"isPrint\", void 0);\n return InkAnnotationSettings;\n}(ChildProperty));\nexport { InkAnnotationSettings };\n/**\n * The `stickyNotesSettings` module is used to provide the properties to sticky notes annotation.\n */\nvar StickyNotesSettings = /** @class */ (function (_super) {\n __extends(StickyNotesSettings, _super);\n function StickyNotesSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], StickyNotesSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], StickyNotesSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('Guest')\n ], StickyNotesSettings.prototype, \"author\", void 0);\n __decorate([\n Property(1)\n ], StickyNotesSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('')\n ], StickyNotesSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(null)\n ], StickyNotesSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(false)\n ], StickyNotesSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(['None'])\n ], StickyNotesSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], StickyNotesSettings.prototype, \"isPrint\", void 0);\n return StickyNotesSettings;\n}(ChildProperty));\nexport { StickyNotesSettings };\n/**\n * The `MeasurementSettings` module is used to provide the settings to measurement annotations.\n */\nvar MeasurementSettings = /** @class */ (function (_super) {\n __extends(MeasurementSettings, _super);\n function MeasurementSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MeasurementSettings.prototype, \"scaleRatio\", void 0);\n __decorate([\n Property('in')\n ], MeasurementSettings.prototype, \"conversionUnit\", void 0);\n __decorate([\n Property('in')\n ], MeasurementSettings.prototype, \"displayUnit\", void 0);\n __decorate([\n Property(96)\n ], MeasurementSettings.prototype, \"depth\", void 0);\n return MeasurementSettings;\n}(ChildProperty));\nexport { MeasurementSettings };\n/**\n * The `FreeTextSettings` module is used to provide the properties to free text annotation.\n */\nvar FreeTextSettings = /** @class */ (function (_super) {\n __extends(FreeTextSettings, _super);\n function FreeTextSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], FreeTextSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], FreeTextSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], FreeTextSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], FreeTextSettings.prototype, \"borderColor\", void 0);\n __decorate([\n Property(1)\n ], FreeTextSettings.prototype, \"borderWidth\", void 0);\n __decorate([\n Property('solid')\n ], FreeTextSettings.prototype, \"borderStyle\", void 0);\n __decorate([\n Property('Guest')\n ], FreeTextSettings.prototype, \"author\", void 0);\n __decorate([\n Property('#ffffff00')\n ], FreeTextSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property(16)\n ], FreeTextSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property(151)\n ], FreeTextSettings.prototype, \"width\", void 0);\n __decorate([\n Property(24.6)\n ], FreeTextSettings.prototype, \"height\", void 0);\n __decorate([\n Property('#000')\n ], FreeTextSettings.prototype, \"fontColor\", void 0);\n __decorate([\n Property('Helvetica')\n ], FreeTextSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('TypeHere')\n ], FreeTextSettings.prototype, \"defaultText\", void 0);\n __decorate([\n Property('None')\n ], FreeTextSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('Left')\n ], FreeTextSettings.prototype, \"textAlignment\", void 0);\n __decorate([\n Property(false)\n ], FreeTextSettings.prototype, \"allowEditTextOnly\", void 0);\n __decorate([\n Property('')\n ], FreeTextSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], FreeTextSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], FreeTextSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], FreeTextSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], FreeTextSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], FreeTextSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], FreeTextSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], FreeTextSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], FreeTextSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property(false)\n ], FreeTextSettings.prototype, \"isReadonly\", void 0);\n __decorate([\n Property(false)\n ], FreeTextSettings.prototype, \"enableAutoFit\", void 0);\n return FreeTextSettings;\n}(ChildProperty));\nexport { FreeTextSettings };\n/**\n * The `AnnotationSelectorSettings` module is used to provide the properties to annotation selectors.\n */\nvar AnnotationSelectorSettings = /** @class */ (function (_super) {\n __extends(AnnotationSelectorSettings, _super);\n function AnnotationSelectorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], AnnotationSelectorSettings.prototype, \"selectionBorderColor\", void 0);\n __decorate([\n Property('black')\n ], AnnotationSelectorSettings.prototype, \"resizerBorderColor\", void 0);\n __decorate([\n Property('#FF4081')\n ], AnnotationSelectorSettings.prototype, \"resizerFillColor\", void 0);\n __decorate([\n Property(8)\n ], AnnotationSelectorSettings.prototype, \"resizerSize\", void 0);\n __decorate([\n Property(1)\n ], AnnotationSelectorSettings.prototype, \"selectionBorderThickness\", void 0);\n __decorate([\n Property('Square')\n ], AnnotationSelectorSettings.prototype, \"resizerShape\", void 0);\n __decorate([\n Property('')\n ], AnnotationSelectorSettings.prototype, \"selectorLineDashArray\", void 0);\n __decorate([\n Property(AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges)\n ], AnnotationSelectorSettings.prototype, \"resizerLocation\", void 0);\n __decorate([\n Property(null)\n ], AnnotationSelectorSettings.prototype, \"resizerCursorType\", void 0);\n return AnnotationSelectorSettings;\n}(ChildProperty));\nexport { AnnotationSelectorSettings };\n/**\n * The `TextSearchColorSettings` module is used to set the settings for the color of the text search highlight.\n */\nvar TextSearchColorSettings = /** @class */ (function (_super) {\n __extends(TextSearchColorSettings, _super);\n function TextSearchColorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#fdd835')\n ], TextSearchColorSettings.prototype, \"searchHighlightColor\", void 0);\n __decorate([\n Property('#8b4c12')\n ], TextSearchColorSettings.prototype, \"searchColor\", void 0);\n return TextSearchColorSettings;\n}(ChildProperty));\nexport { TextSearchColorSettings };\n/**\n * The `HandWrittenSignatureSettings` module is used to provide the properties to handwritten signature.\n */\nvar HandWrittenSignatureSettings = /** @class */ (function (_super) {\n __extends(HandWrittenSignatureSettings, _super);\n function HandWrittenSignatureSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], HandWrittenSignatureSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#000000')\n ], HandWrittenSignatureSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property(1)\n ], HandWrittenSignatureSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property(150)\n ], HandWrittenSignatureSettings.prototype, \"width\", void 0);\n __decorate([\n Property(100)\n ], HandWrittenSignatureSettings.prototype, \"height\", void 0);\n __decorate([\n Property(1)\n ], HandWrittenSignatureSettings.prototype, \"saveSignatureLimit\", void 0);\n __decorate([\n Property(1)\n ], HandWrittenSignatureSettings.prototype, \"saveInitialLimit\", void 0);\n __decorate([\n Property([])\n ], HandWrittenSignatureSettings.prototype, \"signatureItem\", void 0);\n __decorate([\n Property()\n ], HandWrittenSignatureSettings.prototype, \"typeSignatureFonts\", void 0);\n __decorate([\n Property('')\n ], HandWrittenSignatureSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property()\n ], HandWrittenSignatureSettings.prototype, \"signatureDialogSettings\", void 0);\n __decorate([\n Property()\n ], HandWrittenSignatureSettings.prototype, \"initialDialogSettings\", void 0);\n return HandWrittenSignatureSettings;\n}(ChildProperty));\nexport { HandWrittenSignatureSettings };\n/**\n * The `AnnotationSettings` module is used to provide the properties to annotations.\n */\nvar AnnotationSettings = /** @class */ (function (_super) {\n __extends(AnnotationSettings, _super);\n function AnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Guest')\n ], AnnotationSettings.prototype, \"author\", void 0);\n __decorate([\n Property(0)\n ], AnnotationSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], AnnotationSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], AnnotationSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], AnnotationSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], AnnotationSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(false)\n ], AnnotationSettings.prototype, \"skipPrint\", void 0);\n __decorate([\n Property(false)\n ], AnnotationSettings.prototype, \"skipDownload\", void 0);\n __decorate([\n Property(null)\n ], AnnotationSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], AnnotationSettings.prototype, \"allowedInteractions\", void 0);\n return AnnotationSettings;\n}(ChildProperty));\nexport { AnnotationSettings };\n/**\n * The `DocumentTextCollectionSettings` module is used to provide the properties to DocumentTextCollection.\n */\nvar DocumentTextCollectionSettings = /** @class */ (function (_super) {\n __extends(DocumentTextCollectionSettings, _super);\n function DocumentTextCollectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], DocumentTextCollectionSettings.prototype, \"textData\", void 0);\n __decorate([\n Property()\n ], DocumentTextCollectionSettings.prototype, \"pageText\", void 0);\n __decorate([\n Property()\n ], DocumentTextCollectionSettings.prototype, \"pageSize\", void 0);\n return DocumentTextCollectionSettings;\n}(ChildProperty));\nexport { DocumentTextCollectionSettings };\n/**\n * The `TextDataSettings` module is used to provide the properties of text data.\n */\nvar TextDataSettings = /** @class */ (function (_super) {\n __extends(TextDataSettings, _super);\n function TextDataSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], TextDataSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property()\n ], TextDataSettings.prototype, \"text\", void 0);\n return TextDataSettings;\n}(ChildProperty));\nexport { TextDataSettings };\n/**\n * The `RectangleBounds` module is used to provide the properties of rectangle bounds.\n */\nvar RectangleBounds = /** @class */ (function (_super) {\n __extends(RectangleBounds, _super);\n function RectangleBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"size\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"x\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"y\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"width\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"left\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"top\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"right\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"bottom\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"isEmpty\", void 0);\n return RectangleBounds;\n}(ChildProperty));\nexport { RectangleBounds };\n/**\n * The `TileRenderingSettings` module is used to provide the tile rendering settings of the PDF viewer.\n */\nvar TileRenderingSettings = /** @class */ (function (_super) {\n __extends(TileRenderingSettings, _super);\n function TileRenderingSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], TileRenderingSettings.prototype, \"enableTileRendering\", void 0);\n __decorate([\n Property(0)\n ], TileRenderingSettings.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], TileRenderingSettings.prototype, \"y\", void 0);\n return TileRenderingSettings;\n}(ChildProperty));\nexport { TileRenderingSettings };\n/**\n * The `ScrollSettings` module is used to provide the settings of the scroll of the PDF viewer.\n */\nvar ScrollSettings = /** @class */ (function (_super) {\n __extends(ScrollSettings, _super);\n function ScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(100)\n ], ScrollSettings.prototype, \"delayPageRequestTimeOnScroll\", void 0);\n return ScrollSettings;\n}(ChildProperty));\nexport { ScrollSettings };\n/**\n * The `FormField` is used to store the form fields of PDF document.\n */\nvar FormField = /** @class */ (function (_super) {\n __extends(FormField, _super);\n function FormField() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], FormField.prototype, \"name\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isChecked\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isSelected\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property([''])\n ], FormField.prototype, \"signatureType\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"fontName\", void 0);\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], FormField.prototype, \"bounds\", void 0);\n __decorate([\n Property('Helvetica')\n ], FormField.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(10)\n ], FormField.prototype, \"fontSize\", void 0);\n __decorate([\n Property('None')\n ], FormField.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('black')\n ], FormField.prototype, \"color\", void 0);\n __decorate([\n Property('white')\n ], FormField.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('Left')\n ], FormField.prototype, \"alignment\", void 0);\n __decorate([\n Property('visible')\n ], FormField.prototype, \"visibility\", void 0);\n __decorate([\n Property(0)\n ], FormField.prototype, \"maxLength\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"tooltip\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"options\", void 0);\n __decorate([\n Property()\n ], FormField.prototype, \"signatureIndicatorSettings\", void 0);\n __decorate([\n Property(1)\n ], FormField.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], FormField.prototype, \"borderColor\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isMultiline\", void 0);\n __decorate([\n Property(-1)\n ], FormField.prototype, \"pageIndex\", void 0);\n return FormField;\n}(ChildProperty));\nexport { FormField };\n/**\n * The `ContextMenuSettings` is used to show the context menu of PDF document.\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('RightClick')\n ], ContextMenuSettings.prototype, \"contextMenuAction\", void 0);\n __decorate([\n Property([])\n ], ContextMenuSettings.prototype, \"contextMenuItems\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n/**\n * The `TextFieldSettings` is used to to show and customize the appearance of text box HTML element.\n */\nvar TextFieldSettings = /** @class */ (function (_super) {\n __extends(TextFieldSettings, _super);\n function TextFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], TextFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], TextFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], TextFieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property('Helvetica')\n ], TextFieldSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(10)\n ], TextFieldSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property(0)\n ], TextFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('None')\n ], TextFieldSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('black')\n ], TextFieldSettings.prototype, \"color\", void 0);\n __decorate([\n Property('white')\n ], TextFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('Left')\n ], TextFieldSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property(false)\n ], TextFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], TextFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(0)\n ], TextFieldSettings.prototype, \"maxLength\", void 0);\n __decorate([\n Property(false)\n ], TextFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], TextFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], TextFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property(1)\n ], TextFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], TextFieldSettings.prototype, \"borderColor\", void 0);\n __decorate([\n Property(false)\n ], TextFieldSettings.prototype, \"isMultiline\", void 0);\n return TextFieldSettings;\n}(ChildProperty));\nexport { TextFieldSettings };\n/**\n * The `PasswordFieldSettings` is used to to show and customize the appearance of password input HTML element.\n */\nvar PasswordFieldSettings = /** @class */ (function (_super) {\n __extends(PasswordFieldSettings, _super);\n function PasswordFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], PasswordFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], PasswordFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], PasswordFieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property(0)\n ], PasswordFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('Helvetica')\n ], PasswordFieldSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(10)\n ], PasswordFieldSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property('None')\n ], PasswordFieldSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('black')\n ], PasswordFieldSettings.prototype, \"color\", void 0);\n __decorate([\n Property('white')\n ], PasswordFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('Left')\n ], PasswordFieldSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property(false)\n ], PasswordFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], PasswordFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(0)\n ], PasswordFieldSettings.prototype, \"maxLength\", void 0);\n __decorate([\n Property(false)\n ], PasswordFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], PasswordFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], PasswordFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property(1)\n ], PasswordFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], PasswordFieldSettings.prototype, \"borderColor\", void 0);\n return PasswordFieldSettings;\n}(ChildProperty));\nexport { PasswordFieldSettings };\n/**\n * The `CheckBoxFieldSettings` is used to to show and customize the appearance of check box element.\n */\nvar CheckBoxFieldSettings = /** @class */ (function (_super) {\n __extends(CheckBoxFieldSettings, _super);\n function CheckBoxFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], CheckBoxFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], CheckBoxFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property(false)\n ], CheckBoxFieldSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('white')\n ], CheckBoxFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property(false)\n ], CheckBoxFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], CheckBoxFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(false)\n ], CheckBoxFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property(0)\n ], CheckBoxFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('')\n ], CheckBoxFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property(false)\n ], CheckBoxFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(1)\n ], CheckBoxFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], CheckBoxFieldSettings.prototype, \"borderColor\", void 0);\n return CheckBoxFieldSettings;\n}(ChildProperty));\nexport { CheckBoxFieldSettings };\n/**\n * The `RadioButtonFieldSettings` is used to to show and customize the appearance of radio button element.\n */\nvar RadioButtonFieldSettings = /** @class */ (function (_super) {\n __extends(RadioButtonFieldSettings, _super);\n function RadioButtonFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], RadioButtonFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], RadioButtonFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property(false)\n ], RadioButtonFieldSettings.prototype, \"isSelected\", void 0);\n __decorate([\n Property('white')\n ], RadioButtonFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property(false)\n ], RadioButtonFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property(false)\n ], RadioButtonFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(0)\n ], RadioButtonFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('visible')\n ], RadioButtonFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(false)\n ], RadioButtonFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], RadioButtonFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property(1)\n ], RadioButtonFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], RadioButtonFieldSettings.prototype, \"borderColor\", void 0);\n return RadioButtonFieldSettings;\n}(ChildProperty));\nexport { RadioButtonFieldSettings };\n/**\n * The `DropdownFieldSettings` is used to to show and customize the appearance of drop down element.\n */\nvar DropdownFieldSettings = /** @class */ (function (_super) {\n __extends(DropdownFieldSettings, _super);\n function DropdownFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], DropdownFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], DropdownFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], DropdownFieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property('Helvetica')\n ], DropdownFieldSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(10)\n ], DropdownFieldSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property(0)\n ], DropdownFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('None')\n ], DropdownFieldSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('black')\n ], DropdownFieldSettings.prototype, \"color\", void 0);\n __decorate([\n Property('white')\n ], DropdownFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('Left')\n ], DropdownFieldSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property(false)\n ], DropdownFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], DropdownFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(false)\n ], DropdownFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], DropdownFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], DropdownFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('')\n ], DropdownFieldSettings.prototype, \"options\", void 0);\n __decorate([\n Property(1)\n ], DropdownFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], DropdownFieldSettings.prototype, \"borderColor\", void 0);\n return DropdownFieldSettings;\n}(ChildProperty));\nexport { DropdownFieldSettings };\n/**\n * The `ListBoxFieldSettings` is used to to show and customize the appearance of list box element.\n */\nvar ListBoxFieldSettings = /** @class */ (function (_super) {\n __extends(ListBoxFieldSettings, _super);\n function ListBoxFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], ListBoxFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], ListBoxFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], ListBoxFieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property('Helvetica')\n ], ListBoxFieldSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(10)\n ], ListBoxFieldSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property(0)\n ], ListBoxFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('None')\n ], ListBoxFieldSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('black')\n ], ListBoxFieldSettings.prototype, \"color\", void 0);\n __decorate([\n Property('white')\n ], ListBoxFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('Left')\n ], ListBoxFieldSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property(false)\n ], ListBoxFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], ListBoxFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(false)\n ], ListBoxFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], ListBoxFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], ListBoxFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property([])\n ], ListBoxFieldSettings.prototype, \"options\", void 0);\n __decorate([\n Property(1)\n ], ListBoxFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], ListBoxFieldSettings.prototype, \"borderColor\", void 0);\n return ListBoxFieldSettings;\n}(ChildProperty));\nexport { ListBoxFieldSettings };\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, \"itemName\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"itemValue\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * Represents the PDF viewer component.\n * ```html\n *
    \n * \n * ```\n */\nvar PdfViewer = /** @class */ (function (_super) {\n __extends(PdfViewer, _super);\n function PdfViewer(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Get the Loaded document signature Collections in the PdfViewer control.\n */\n // eslint-disable-next-line\n _this.signatureCollection = [];\n /**\n * Gets or sets the document name loaded in the PdfViewer control.\n */\n _this.fileName = null;\n /**\n * @private\n */\n _this.zIndex = -1;\n /**\n * @private\n */\n _this.nameTable = {};\n /** @private */\n _this.clipboardData = {};\n /**\n * @private\n */\n _this.zIndexTable = [];\n _this.isTextSelectionStarted = false;\n /** @hidden */\n _this.defaultLocale = {\n 'PdfViewer': 'PDF Viewer',\n 'Cancel': 'Cancel',\n 'Download file': 'Download file',\n 'Download': 'Download',\n 'Enter Password': 'This document is password protected. Please enter a password.',\n 'File Corrupted': 'File Corrupted',\n 'File Corrupted Content': 'The file is corrupted and cannot be opened.',\n 'Fit Page': 'Fit Page',\n 'Fit Width': 'Fit Width',\n 'Automatic': 'Automatic',\n 'Go To First Page': 'Show first page',\n 'Invalid Password': 'Incorrect Password. Please try again.',\n 'Next Page': 'Show next page',\n 'OK': 'OK',\n 'Open': 'Open file',\n 'Page Number': 'Current page number',\n 'Previous Page': 'Show previous page',\n 'Go To Last Page': 'Show last page',\n 'Zoom': 'Zoom',\n 'Zoom In': 'Zoom in',\n 'Zoom Out': 'Zoom out',\n 'Page Thumbnails': 'Page thumbnails',\n 'Bookmarks': 'Bookmarks',\n 'Print': 'Print file',\n 'Password Protected': 'Password Required',\n 'Copy': 'Copy',\n 'Text Selection': 'Text selection tool',\n 'Panning': 'Pan mode',\n 'Text Search': 'Find text',\n 'Find in document': 'Find in document',\n 'Match case': 'Match case',\n 'Apply': 'Apply',\n 'GoToPage': 'Go to Page',\n // eslint-disable-next-line max-len\n 'No matches': 'Viewer has finished searching the document. No more matches were found',\n 'No Text Found': 'No Text Found',\n 'Undo': 'Undo',\n 'Redo': 'Redo',\n 'Annotation': 'Add or Edit annotations',\n 'FormDesigner': 'Add and Edit Form Fields',\n 'Highlight': 'Highlight Text',\n 'Underline': 'Underline Text',\n 'Strikethrough': 'Strikethrough Text',\n 'Delete': 'Delete annotation',\n 'Opacity': 'Opacity',\n 'Color edit': 'Change Color',\n 'Opacity edit': 'Change Opacity',\n 'Highlight context': 'Highlight',\n 'Underline context': 'Underline',\n 'Strikethrough context': 'Strikethrough',\n // eslint-disable-next-line max-len\n 'Server error': 'Web-service is not listening. PDF Viewer depends on web-service for all it\\'s features. Please start the web service to continue.',\n // eslint-disable-next-line max-len\n 'Client error': 'Client-side error is found. Please check the custom headers provided in the AjaxRequestSettings property and web action methods in the ServerActionSettings property.',\n 'Open text': 'Open',\n 'First text': 'First Page',\n 'Previous text': 'Previous Page',\n 'Next text': 'Next Page',\n 'Last text': 'Last Page',\n 'Zoom in text': 'Zoom In',\n 'Zoom out text': 'Zoom Out',\n 'Selection text': 'Selection',\n 'Pan text': 'Pan',\n 'Print text': 'Print',\n 'Search text': 'Search',\n 'Annotation Edit text': 'Edit Annotation',\n 'FormDesigner Edit text': 'Add and Edit Form Fields',\n 'Line Thickness': 'Line Thickness',\n 'Line Properties': 'Line Properties',\n 'Start Arrow': 'Start Arrow',\n 'End Arrow': 'End Arrow',\n 'Line Style': 'Line Style',\n 'Fill Color': 'Fill Color',\n 'Line Color': 'Line Color',\n 'None': 'None',\n 'Open Arrow': 'Open',\n 'Closed Arrow': 'Closed',\n 'Round Arrow': 'Round',\n 'Square Arrow': 'Square',\n 'Diamond Arrow': 'Diamond',\n 'Butt': 'Butt',\n 'Cut': 'Cut',\n 'Paste': 'Paste',\n 'Delete Context': 'Delete',\n 'Properties': 'Properties',\n 'Add Stamp': 'Add Stamp',\n 'Add Shapes': 'Add Shapes',\n 'Stroke edit': 'Change Stroke Color',\n 'Change thickness': 'Change Border Thickness',\n 'Add line': 'Add Line',\n 'Add arrow': 'Add Arrow',\n 'Add rectangle': 'Add Rectangle',\n 'Add circle': 'Add Circle',\n 'Add polygon': 'Add Polygon',\n 'Add Comments': 'Add Comments',\n 'Comments': 'Comments',\n 'SubmitForm': 'Submit Form',\n 'No Comments Yet': 'No Comments Yet',\n 'Accepted': 'Accepted',\n 'Completed': 'Completed',\n 'Cancelled': 'Cancelled',\n 'Rejected': 'Rejected',\n 'Leader Length': 'Leader Length',\n 'Scale Ratio': 'Scale Ratio',\n 'Calibrate': 'Calibrate',\n 'Calibrate Distance': 'Calibrate Distance',\n 'Calibrate Perimeter': 'Calibrate Perimeter',\n 'Calibrate Area': 'Calibrate Area',\n 'Calibrate Radius': 'Calibrate Radius',\n 'Calibrate Volume': 'Calibrate Volume',\n 'Depth': 'Depth',\n 'Closed': 'Closed',\n 'Round': 'Round',\n 'Square': 'Square',\n 'Diamond': 'Diamond',\n 'Edit': 'Edit',\n 'Comment': 'Comment',\n 'Comment Panel': 'Comment Panel',\n 'Set Status': 'Set Status',\n 'Post': 'Post',\n 'Page': 'Page',\n 'Add a comment': 'Add a comment',\n 'Add a reply': 'Add a reply',\n 'Import Annotations': 'Import annotations from JSON file',\n 'Export Annotations': 'Export annotation to JSON file',\n 'Export XFDF': 'Export annotation to XFDF file',\n 'Import XFDF': 'Import annotations from XFDF file',\n 'Add': 'Add',\n 'Clear': 'Clear',\n 'Bold': 'Bold',\n 'Italic': 'Italic',\n 'Strikethroughs': 'Strikethrough',\n 'Underlines': 'Underline',\n 'Superscript': 'Superscript',\n 'Subscript': 'Subscript',\n 'Align left': 'Align Left',\n 'Align right': 'Align Right',\n 'Center': 'Center',\n 'Justify': 'Justify',\n 'Font color': 'Font Color',\n 'Text Align': 'Text Align',\n 'Text Properties': 'Font Style',\n 'SignatureFieldDialogHeaderText': 'Add Signature',\n 'HandwrittenSignatureDialogHeaderText': 'Add Signature',\n 'InitialFieldDialogHeaderText': 'Add Initial',\n 'HandwrittenInitialDialogHeaderText': 'Add Initial',\n 'Draw Ink': 'Draw Ink',\n 'Create': 'Create',\n 'Font family': 'Font Family',\n 'Font size': 'Font Size',\n 'Free Text': 'Free Text',\n 'Import Failed': 'Invalid JSON file type or file name; please select a valid JSON file',\n 'File not found': 'Imported JSON file is not found in the desired location',\n 'Export Failed': 'Export annotations action has failed; please ensure annotations are added properly',\n 'of': 'of ',\n 'Dynamic': 'Dynamic',\n 'Standard Business': 'Standard Business',\n 'Sign Here': 'Sign Here',\n 'Custom Stamp': 'Custom Stamp',\n 'Enter Signature as Name': 'Enter your name',\n 'Draw-hand Signature': 'DRAW',\n 'Type Signature': 'TYPE',\n 'Upload Signature': 'UPLOAD',\n 'Browse Signature Image': 'BROWSE',\n 'Save Signature': 'Save Signature',\n 'Save Initial': 'Save Initial',\n 'Textbox': 'Textbox',\n 'Password': 'Password',\n 'Check Box': 'Checkbox',\n 'Radio Button': 'Radio Button',\n 'Dropdown': 'Drop Down',\n 'List Box': 'List Box',\n 'Signature': 'Signature',\n 'Delete FormField': 'Delete Form Field',\n 'Textbox Properties': 'Textbox Properties',\n 'Name': 'Name',\n 'Tooltip': 'Tooltip',\n 'Value': 'Value',\n 'Form Field Visibility': 'Form Field Visibility',\n 'Read Only': 'Read Only',\n 'Required': 'Required',\n 'Checked': 'Checked',\n 'Show Printing': 'Show Printing',\n 'Formatting': 'Format',\n 'Fill': 'Fill',\n 'Border': 'Border',\n 'Border Color': 'Border Color',\n 'Thickness': 'Thickness',\n 'Max Length': 'Max Length',\n 'List Item': 'Item Name',\n 'Export Value': 'Item Value',\n 'Dropdown Item List': 'Dropdown Item List',\n 'List Box Item List': 'List Box Item List',\n 'General': 'GENERAL',\n 'Appearance': 'APPEARANCE',\n 'Options': 'OPTIONS',\n 'Delete Item': 'Delete',\n 'Up': 'Up',\n 'Down': 'Down',\n 'Multiline': 'Multiline',\n 'Revised': 'Revised',\n 'Reviewed': 'Reviewed',\n 'Received': 'Received',\n 'Confidential': 'Confidential',\n 'Approved': 'Approved',\n 'Not Approved': 'Not Approved',\n 'Witness': 'Witness',\n 'Initial Here': 'Initial Here',\n 'Draft': 'Draft',\n 'Final': 'Final',\n 'For Public Release': 'For Public Release',\n 'Not For Public Release': 'Not For Public Release',\n 'For Comment': 'For Comment',\n 'Void': 'Void',\n 'Preliminary Results': 'Preliminary Results',\n 'Information Only': 'Information Only',\n 'in': 'in',\n 'm': 'm',\n 'ft_in': 'ft_in',\n 'ft': 'ft',\n 'p': 'p',\n 'cm': 'cm',\n 'mm': 'mm',\n 'pt': 'pt',\n 'cu': 'cu',\n 'sq': 'sq',\n 'Initial': 'Initial'\n };\n _this.viewerBase = new PdfViewerBase(_this);\n _this.drawing = new Drawing(_this);\n return _this;\n }\n Object.defineProperty(PdfViewer.prototype, \"zoomPercentage\", {\n /**\n * Returns the current zoom percentage of the PdfViewer control.\n *\n * @asptype int\n * @blazorType int\n */\n get: function () {\n return this.magnificationModule.zoomFactor * 100;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"bookmark\", {\n /**\n * Gets the bookmark view object of the pdf viewer.\n *\n * @asptype BookmarkView\n * @blazorType BookmarkView\n * @returns { BookmarkView }\n */\n get: function () {\n return this.bookmarkViewModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"print\", {\n /**\n * Gets the print object of the pdf viewer.\n *\n * @asptype Print\n * @blazorType Print\n * @returns { Print }\n */\n get: function () {\n return this.printModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"magnification\", {\n /**\n * Gets the magnification object of the pdf viewer.\n *\n * @asptype Magnification\n * @blazorType Magnification\n * @returns { Magnification }\n */\n get: function () {\n return this.magnificationModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"navigation\", {\n /**\n * Gets the navigation object of the pdf viewer.\n *\n * @asptype Navigation\n * @blazorType Navigation\n * @returns { Navigation }\n */\n get: function () {\n return this.navigationModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"textSearch\", {\n /**\n * Gets the text search object of the pdf viewer.\n *\n * @asptype TextSearch\n * @blazorType TextSearch\n * @returns { TextSearch }\n */\n get: function () {\n return this.textSearchModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"toolbar\", {\n /**\n * Gets the toolbar object of the pdf viewer.\n *\n * @asptype Toolbar\n * @blazorType Toolbar\n * @returns { Toolbar }\n */\n get: function () {\n return this.toolbarModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"thumbnailView\", {\n /**\n * Gets the thumbnail-view object of the pdf viewer.\n *\n * @asptype ThumbnailView\n * @blazorType ThumbnailView\n * @returns { ThumbnailView }\n */\n get: function () {\n return this.thumbnailViewModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"annotation\", {\n /**\n * Gets the annotation object of the pdf viewer.\n *\n * @asptype Annotation\n * @blazorType Annotation\n * @returns { Annotation }\n */\n get: function () {\n return this.annotationModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"formDesigner\", {\n /**\n * Gets the FormDesigner object of the pdf viewer.\n *\n * @asptype FormDesigner\n * @blazorType FormDesigner\n * @returns { FormDesigner }\n */\n get: function () {\n return this.formDesignerModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"textSelection\", {\n /**\n * Gets the TextSelection object of the pdf viewer.\n *\n * @asptype TextSelection\n * @blazorType TextSelection\n * @returns { TextSelection }\n */\n get: function () {\n return this.textSelectionModule;\n },\n enumerable: true,\n configurable: true\n });\n PdfViewer.prototype.preRender = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale);\n };\n PdfViewer.prototype.render = function () {\n this.viewerBase.initializeComponent();\n if (this.enableTextSelection && this.textSelectionModule) {\n this.textSelectionModule.enableTextSelectionMode();\n }\n else {\n this.viewerBase.disableTextSelectionMode();\n }\n this.drawing.renderLabels(this);\n this.renderComplete();\n };\n PdfViewer.prototype.getModuleName = function () {\n return 'PdfViewer';\n };\n /**\n * @private\n */\n PdfViewer.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * To modify the Json Data in ajax request.\n *\n * @param jsonData\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.setJsonData = function (jsonData) {\n this.viewerBase.ajaxData = jsonData;\n };\n PdfViewer.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n if (this.isDestroyed) {\n return;\n }\n var properties = Object.keys(newProp);\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'locale':\n if (this.viewerBase.loadedData) {\n // eslint-disable-next-line\n var data = null;\n if (this.formFieldsModule) {\n data = this.viewerBase.getItemFromSessionStorage('_formfields');\n }\n if (data) {\n this.viewerBase.formfieldvalue = JSON.parse(data);\n // eslint-disable-next-line\n var annotCollection = this.annotationCollection;\n var filename = this.viewerBase.jsonDocumentId;\n _super.prototype.refresh.call(this);\n this.load(this.viewerBase.loadedData, null);\n this.addAnnotation(annotCollection);\n this.viewerBase.loadedData = null;\n this.downloadFileName = filename;\n this.fileName = filename;\n }\n }\n break;\n case 'enableToolbar':\n this.notify('', { module: 'toolbar', enable: this.enableToolbar });\n requireRefresh = true;\n break;\n case 'enableCommentPanel':\n this.notify('', { module: 'annotation', enable: this.enableCommentPanel });\n requireRefresh = true;\n if (this.toolbarModule && this.toolbarModule.annotationToolbarModule) {\n this.toolbarModule.annotationToolbarModule.enableCommentPanelTool(this.enableCommentPanel);\n }\n if (!this.enableCommentPanel) {\n if (this.viewerBase.navigationPane) {\n this.viewerBase.navigationPane.closeCommentPanelContainer();\n }\n }\n break;\n case 'documentPath':\n if (!isBlazor()) {\n this.load(newProp.documentPath, null);\n }\n else {\n this._dotnetInstance.invokeMethodAsync('LoadDocumentFromClient', newProp.documentPath);\n }\n break;\n case 'interactionMode':\n this.interactionMode = newProp.interactionMode;\n if (newProp.interactionMode === 'Pan') {\n this.viewerBase.initiatePanning();\n if (this.toolbar) {\n this.toolbar.updateInteractionTools(false);\n }\n }\n else if (newProp.interactionMode === 'TextSelection') {\n this.viewerBase.initiateTextSelectMode();\n if (this.toolbar) {\n this.toolbar.updateInteractionTools(true);\n }\n }\n break;\n case 'height':\n this.height = newProp.height;\n this.viewerBase.updateHeight();\n this.viewerBase.onWindowResize();\n if (this.toolbar && this.toolbar.annotationToolbarModule) {\n if (this.toolbar.annotationToolbarModule.isToolbarHidden) {\n this.toolbar.annotationToolbarModule.adjustViewer(false);\n }\n else {\n this.toolbar.annotationToolbarModule.adjustViewer(true);\n }\n }\n break;\n case 'width':\n this.width = newProp.width;\n this.viewerBase.updateWidth();\n this.viewerBase.onWindowResize();\n break;\n case 'customStamp':\n this.renderCustomerStamp(this.customStamp[0]);\n break;\n case 'customStampSettings':\n if (newProp.customStampSettings.customStamps) {\n this.renderCustomerStamp(this.customStampSettings.customStamps[0]);\n }\n break;\n case 'enableFormFields':\n if (this.enableFormFields && this.formFieldsModule) {\n for (var m = 0; m < this.pageCount; m++) {\n this.formFieldsModule.renderFormFields(m);\n }\n }\n else {\n this.formFieldsModule = new FormFields(this, this.viewerBase);\n this.formFieldsModule.formFieldsReadOnly(this.enableFormFields);\n }\n break;\n case 'designerMode':\n if (this.designerMode) {\n this.formDesignerModule.setMode('designer');\n }\n else {\n this.formDesignerModule.setMode('edit');\n }\n break;\n case 'highlightSettings':\n case 'underlineSettings':\n case 'strikethroughSettings':\n if (this.annotationModule && this.annotationModule.textMarkupAnnotationModule) {\n this.annotationModule.textMarkupAnnotationModule.updateTextMarkupSettings(prop);\n }\n break;\n }\n }\n };\n // eslint-disable-next-line\n PdfViewer.prototype.renderCustomerStamp = function (customStamp) {\n this.annotation.stampAnnotationModule.isStampAddMode = true;\n this.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n this.viewerBase.stampAdded = true;\n this.viewerBase.isAlreadyAdded = false;\n // eslint-disable-next-line max-len\n this.annotation.stampAnnotationModule.createCustomStampAnnotation(customStamp.customStampImageSource, customStamp.customStampName);\n };\n PdfViewer.prototype.getPersistData = function () {\n return 'PdfViewer';\n };\n PdfViewer.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMagnification) {\n modules.push({\n member: 'Magnification', args: [this, this.viewerBase]\n });\n }\n if (this.enableNavigation) {\n modules.push({\n member: 'Navigation', args: [this, this.viewerBase]\n });\n }\n if (this.enableToolbar || this.enableNavigationToolbar || this.enableAnnotationToolbar || this.enableFormDesignerToolbar) {\n modules.push({\n member: 'Toolbar', args: [this, this.viewerBase]\n });\n }\n if (this.enableHyperlink) {\n modules.push({\n member: 'LinkAnnotation', args: [this, this.viewerBase]\n });\n }\n if (this.enableThumbnail) {\n modules.push({\n member: 'ThumbnailView', args: [this, this.viewerBase]\n });\n }\n if (this.enableBookmark) {\n modules.push({\n member: 'BookmarkView', args: [this, this.viewerBase]\n });\n }\n if (this.enableTextSelection) {\n modules.push({\n member: 'TextSelection', args: [this, this.viewerBase]\n });\n }\n if (this.enableTextSearch) {\n modules.push({\n member: 'TextSearch', args: [this, this.viewerBase]\n });\n }\n if (this.enablePrint) {\n modules.push({\n member: 'Print', args: [this, this.viewerBase]\n });\n }\n if (this.enableAnnotation) {\n modules.push({\n member: 'Annotation', args: [this, this.viewerBase]\n });\n }\n if (this.enableFormFields) {\n modules.push({\n member: 'FormFields', args: [this, this.viewerBase]\n });\n }\n if (this.enableFormDesigner && !isBlazor()) {\n modules.push({\n member: 'FormDesigner', args: [this, this.viewerBase]\n });\n }\n return modules;\n };\n /**\n * Loads the given PDF document in the PDF viewer control\n *\n * @param {string} document - Specifies the document name for load\n * @param {string} password - Specifies the Given document password\n * @returns void\n */\n PdfViewer.prototype.load = function (document, password) {\n if (this.pageCount !== 0) {\n this.viewerBase.clear(true);\n }\n else {\n this.viewerBase.clear(false);\n }\n this.pageCount = 0;\n this.currentPageNumber = 0;\n if (!isBlazor()) {\n if (this.toolbarModule) {\n this.toolbarModule.resetToolbar();\n }\n }\n else {\n this.viewerBase.blazorUIAdaptor.resetToolbar();\n }\n this.viewerBase.initiatePageRender(document, password);\n };\n /**\n * Loads the given PDF document in the PDF viewer control\n * @private\n */\n PdfViewer.prototype.loadDocument = function (documentId, isFileName, fileName) {\n if (this.pageCount !== 0) {\n this.viewerBase.clear(true);\n }\n else {\n this.viewerBase.clear(false);\n }\n this.pageCount = 0;\n this.currentPageNumber = 0;\n this.viewerBase.blazorUIAdaptor.resetToolbar();\n this.fileName = fileName;\n this.viewerBase.initiateLoadDocument(documentId, isFileName, fileName);\n };\n /**\n * Loads the PDF document with the document details in the PDF viewer control\n * @private\n */\n PdfViewer.prototype.loadSuccess = function (documentDetails, password) {\n this.viewerBase.loadSuccess(documentDetails, password);\n };\n /**\n * Set the focus of the given element\n * @private\n */\n PdfViewer.prototype.focusElement = function (elementId) {\n var element = document.getElementById(elementId);\n if (element != null) {\n element.focus();\n }\n };\n /**\n * Downloads the PDF document being loaded in the ejPdfViewer control.\n *\n * @returns void\n */\n PdfViewer.prototype.download = function () {\n if (this.enableDownload) {\n this.viewerBase.download();\n }\n };\n /**\n * Saves the PDF document being loaded in the PDF Viewer control as blob.\n *\n * @returns Promise\n */\n PdfViewer.prototype.saveAsBlob = function () {\n var _this = this;\n if (this.enableDownload) {\n return new Promise(function (resolve, reject) {\n resolve(_this.viewerBase.saveAsBlob());\n });\n }\n else {\n return null;\n }\n };\n /**\n * updates the PDF Viewer container width and height from externally.\n *\n * @returns void\n */\n PdfViewer.prototype.updateViewerContainer = function () {\n this.viewerBase.updateViewerContainer();\n };\n /**\n * Specifies the message to be displayed in the popup.\n *\n * @param errorString\n * @returns void\n */\n PdfViewer.prototype.showNotificationPopup = function (errorString) {\n this.viewerBase.showNotificationPopup(errorString);\n };\n /**\n * Focus a form field in a document by its field name or the field object.\n *\n * @returns void\n */\n PdfViewer.prototype.focusFormField = function (field) {\n if (typeof (field) === \"string\") {\n var fieldCollections = this.retrieveFormFields();\n for (var i = 0; i < fieldCollections.length; i++) {\n if (fieldCollections[i].name === field) {\n field = fieldCollections[i];\n }\n }\n }\n if (field) {\n this.viewerBase.isFocusField = true;\n this.viewerBase.focusField = field;\n var currentField = document.getElementById(field.id);\n if (this.formDesignerModule) {\n this.navigationModule.goToPage(field.pageIndex + 1);\n }\n else {\n var pageIndex = parseFloat(field.id.split('_')[1]);\n this.navigationModule.goToPage(pageIndex + 1);\n }\n if (currentField) {\n if ((field.type === \"SignatureField\" || field.type === \"InitialField\") && this.formDesignerModule) {\n var y = field.bounds.y;\n var height = this.viewerBase.getPageHeight(field.pageIndex);\n this.bookmark.goToBookmark(field.pageIndex, height - y);\n }\n else {\n currentField.focus();\n }\n this.viewerBase.isFocusField = false;\n this.viewerBase.focusField = [];\n }\n }\n };\n /**\n * Update the form field values from externally.\n *\n * @param fieldValue\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.updateFormFieldsValue = function (fieldValue) {\n // eslint-disable-next-line\n var target = document.getElementById(fieldValue.id);\n var isformDesignerModuleListBox = false;\n target = target ? target : document.getElementById(fieldValue.id + '_content_html_element').children[0].children[0];\n if (target && fieldValue.type === 'Textbox' || fieldValue.type === 'Password') {\n target.value = fieldValue.value;\n }\n else if (fieldValue.type === 'Checkbox' || fieldValue.type === 'RadioButton' || fieldValue.type === 'CheckBox') {\n if (fieldValue.type === 'CheckBox') {\n target.style.appearance = 'auto';\n }\n if (this.formDesignerModule) {\n if (fieldValue.type === 'RadioButton') {\n var radioButtonOption = { isSelected: fieldValue.isSelected };\n this.formDesignerModule.updateFormField(fieldValue, radioButtonOption);\n }\n else {\n var checkBoxOption = { isChecked: fieldValue.isChecked };\n this.formDesignerModule.updateFormField(fieldValue, checkBoxOption);\n }\n }\n else {\n target.checked = fieldValue.value;\n }\n }\n else if (fieldValue.type === 'DropDown' || fieldValue.type === 'ListBox' || fieldValue.type === 'DropdownList') {\n if (this.formDesignerModule) {\n isformDesignerModuleListBox = true;\n var dropDownListOption = { options: fieldValue.value };\n this.formDesignerModule.updateFormField(fieldValue, dropDownListOption);\n }\n else {\n target.options[target.selectedIndex].text = fieldValue.value;\n }\n }\n if (fieldValue.type === 'SignatureField' || fieldValue.type === 'InitialField') {\n if (fieldValue.signatureType) {\n fieldValue.signatureType = fieldValue.signatureType[0];\n }\n fieldValue.fontName = fieldValue.fontName ? fieldValue.fontName : fieldValue.fontFamily;\n if (target.classList.contains('e-pdfviewer-signatureformfields-signature')) {\n if (this.formDesignerModule)\n this.annotation.deleteAnnotationById(fieldValue.id.split('_')[0] + '_content');\n else\n this.annotation.deleteAnnotationById(fieldValue.id);\n }\n if (!fieldValue.signatureType)\n fieldValue.signatureType = (fieldValue.value.indexOf('base64')) > -1 ? 'Image' : ((fieldValue.value.startsWith('M') && fieldValue.split(',')[1].split(' ')[1].startsWith('L')) ? 'Path' : 'Type');\n this.formFieldsModule.drawSignature(fieldValue.signatureType, fieldValue.value, target, fieldValue.fontName);\n }\n else {\n if (!isformDesignerModuleListBox) {\n this.formFieldsModule.updateDataInSession(target);\n }\n }\n };\n /**\n * Perform undo action for the edited annotations\n *\n * @returns void\n */\n PdfViewer.prototype.undo = function () {\n if (this.annotationModule) {\n this.annotationModule.undo();\n }\n };\n /**\n * Perform redo action for the edited annotations\n *\n * @returns void\n */\n PdfViewer.prototype.redo = function () {\n if (this.annotationModule) {\n this.annotationModule.redo();\n }\n };\n /**\n * Unloads the PDF document being displayed in the PDF viewer.\n *\n * @returns void\n */\n PdfViewer.prototype.unload = function () {\n this.viewerBase.clear(true);\n this.pageCount = 0;\n if (!isBlazor()) {\n if (this.toolbarModule) {\n this.viewerBase.pageCount = 0;\n this.toolbarModule.resetToolbar();\n }\n }\n else {\n this.viewerBase.blazorUIAdaptor.resetToolbar();\n }\n this.magnificationModule.zoomTo(100);\n };\n /**\n * Destroys all managed resources used by this object.\n */\n PdfViewer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.element)) {\n if (!this.refreshing) {\n this.element.classList.remove('e-pdfviewer');\n }\n this.element.innerHTML = '';\n }\n if (this.viewerBase.navigationPane) {\n this.viewerBase.navigationPane.restrictUpdateZoomValue = false;\n }\n this.viewerBase.destroy();\n if (this.viewerBase.navigationPane) {\n this.viewerBase.navigationPane.restrictUpdateZoomValue = true;\n }\n };\n // eslint-disable-next-line\n /**\n * Perform imports annotations action in the PDF Viewer\n * @param {any} importData - Specifies the data for annotation imports\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.importAnnotation = function (importData, annotationDataFormat) {\n if (this.annotationModule) {\n if (typeof (importData) === 'string') {\n var isXfdfFile = ((importData.indexOf('.xfdf') > -1) || (annotationDataFormat.indexOf('Xfdf') > -1)) ? true : false;\n if (annotationDataFormat) {\n if (importData.indexOf('') > -1) {\n this.viewerBase.importAnnotations(importData, annotationDataFormat, false);\n }\n else {\n this.viewerBase.importAnnotations(importData, annotationDataFormat, isXfdfFile);\n }\n }\n else {\n if (importData.split('.')[1] === 'json') {\n this.viewerBase.importAnnotations(importData, AnnotationDataFormat.Json);\n }\n else {\n this.viewerBase.importAnnotations(importData, AnnotationDataFormat.Xfdf, isXfdfFile);\n }\n }\n }\n else {\n this.viewerBase.importAnnotations(importData);\n }\n }\n };\n /**\n * Perform export annotations action in the PDF Viewer\n *\n * @param annotationDataFormat\n * @returns void\n */\n PdfViewer.prototype.exportAnnotation = function (annotationDataFormat) {\n if (this.annotationModule) {\n if (annotationDataFormat && annotationDataFormat === 'Xfdf') {\n this.viewerBase.exportAnnotations(AnnotationDataFormat.Xfdf);\n }\n else {\n this.viewerBase.exportAnnotations(AnnotationDataFormat.Json);\n }\n }\n };\n /**\n * Perform export annotations action in the PDF Viewer\n *\n * @returns Promise\n */\n PdfViewer.prototype.exportAnnotationsAsObject = function () {\n var _this = this;\n if (this.annotationModule) {\n return new Promise(function (resolve, reject) {\n _this.viewerBase.exportAnnotationsAsObject().then(function (value) {\n resolve(value);\n });\n });\n }\n else {\n return null;\n }\n };\n /**\n * Export annotations and returns a base64 string for both Json and XFDF formats\n *\n * @returns Promise\n */\n PdfViewer.prototype.exportAnnotationsAsBase64String = function (annotationDataFormat) {\n var _this = this;\n if (this.annotationModule) {\n return new Promise(function (resolve, reject) {\n _this.viewerBase.createRequestForExportAnnotations(false, annotationDataFormat, true).then(function (value) {\n resolve(value);\n });\n });\n }\n else {\n return null;\n }\n };\n /**\n * Perform to add annotations in the PDF Viewer\n *\n * @param annotation\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.addAnnotation = function (annotation) {\n if (this.viewerBase) {\n this.viewerBase.addAnnotation(annotation);\n }\n };\n // eslint-disable-next-line\n /**\n * Perform action in the PDF Viewer\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.importFormFields = function (formFields) {\n if (this.formFieldsModule) {\n this.viewerBase.importFormFields(formFields);\n }\n };\n /**\n * Perform export action in the PDF Viewer\n *\n * @param path\n * @returns void\n */\n PdfViewer.prototype.exportFormFields = function (path) {\n if (this.formFieldsModule) {\n this.viewerBase.exportFormFields(path);\n }\n };\n /**\n * Perform export annotations action in the PDF Viewer\n *\n * @returns Promise\n */\n PdfViewer.prototype.exportFormFieldsAsObject = function () {\n var _this = this;\n if (this.formFieldsModule) {\n return new Promise(function (resolve, reject) {\n _this.viewerBase.exportFormFieldsAsObject().then(function (value) {\n resolve(value);\n });\n });\n }\n else {\n return null;\n }\n };\n /**\n * reset all form fields data\n *\n * @returns void\n */\n PdfViewer.prototype.resetFormFields = function () {\n this.formFieldsModule.resetFormFields();\n };\n /**\n * Clears data from the form fields.\n * Parameter - Specifies the form field object.\n *\n * @param formField\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.clearFormFields = function (formField) {\n this.formFieldsModule.clearFormFields(formField);\n };\n /**\n * To delete the annotation Collections in the PDF Document.\n *\n * @returns void\n */\n PdfViewer.prototype.deleteAnnotations = function () {\n if (this.annotationModule) {\n this.viewerBase.deleteAnnotations();\n }\n };\n /**\n * To retrieve the form fields in the PDF Document.\n *\n * @returns void\n */\n PdfViewer.prototype.retrieveFormFields = function () {\n return this.formFieldCollections;\n };\n /**\n * To update the form fields in the PDF Document.\n *\n * @param formFields\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.updateFormFields = function (formFields) {\n this.formFieldsModule.updateFormFieldValues(formFields);\n };\n /**\n * @param JsonData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAjaxRequestInitiate = function (JsonData) {\n var eventArgs = { name: 'ajaxRequestInitiate', JsonData: JsonData };\n this.trigger('ajaxRequestInitiate', eventArgs);\n };\n /**\n * @param value\n * @param fieldName\n * @param id\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireButtonFieldClickEvent = function (value, fieldName, id) {\n var eventArgs = { name: 'buttonFieldClicked', buttonFieldValue: value, buttonFieldName: fieldName, id: id };\n this.trigger('buttonFieldClick', eventArgs);\n };\n /**\n * @param name\n * @param field\n * @param cancel\n * @param name\n * @param field\n * @param cancel\n * @param isLeftClick - becomes true on signature panel left click.\n * @private\n */\n PdfViewer.prototype.fireFormFieldClickEvent = function (name, field, cancel, isLeftClick) {\n return __awaiter(this, void 0, void 0, function () {\n var eventArgs, target;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n eventArgs = { name: name, field: field, cancel: cancel };\n if (!isBlazor()) return [3 /*break*/, 2];\n return [4 /*yield*/, this.triggerEvent('formFieldClick', eventArgs)];\n case 1:\n eventArgs = (_a.sent()) || eventArgs;\n eventArgs.field.type = field.type;\n return [3 /*break*/, 3];\n case 2:\n this.triggerEvent('formFieldClick', eventArgs);\n _a.label = 3;\n case 3:\n if (field.type === 'SignatureField' || field.type === 'InitialField') {\n if (field.type === 'InitialField')\n this.viewerBase.isInitialField = true;\n else\n this.viewerBase.isInitialField = false;\n target = document.getElementById(field.id);\n if (target.style.visibility === \"hidden\") {\n target.disabled = true;\n }\n target = target ? target : (document.getElementById(field.id + '_content_html_element') ? document.getElementById(field.id + '_content_html_element').children[0].children[0] : null);\n if (!this.signatureFieldSettings.isReadOnly && !eventArgs.cancel && target && !target.disabled && target.classList.contains('e-pdfviewer-signatureformfields') && (isLeftClick || isNullOrUndefined(isLeftClick))) {\n this.viewerBase.signatureModule.showSignatureDialog(true);\n }\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field add event.\n * @param pageIndex - Get the page number.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldAddEvent = function (name, field, pageIndex) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex };\n this.viewerBase.isFormFieldSelect = false;\n this.trigger('formFieldAdd', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field remove event.\n * @param pageIndex - Get the page number.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldRemoveEvent = function (name, field, pageIndex) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex };\n this.trigger('formFieldRemove', eventArgs);\n };\n /**\n * @param name - Returns the event name.\n * @param field - Returns the double-clicked form field object.\n * @param cancel - If TRUE, property panel of the form field does not open. FALSE by default.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldDoubleClickEvent = function (eventArgs) {\n this.trigger('formFieldDoubleClick', eventArgs);\n return eventArgs;\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field properties change event.\n * @param pageIndex - Get the page number.\n * @param isAlignmentChanged - Specifies whether the text alignment of the form field is changed or not.\n * @param isBackgroundColorChanged - Specifies whether the background color of the form field is changed or not.\n * @param isBorderColorChanged - Specifies whether the border color of the form field is changed or not.\n * @param isBorderWidthChanged - Specifies whether the border width of the form field is changed or not.\n * @param isColorChanged - Specifies whether the font color of the form field is changed or not.\n * @param isFontFamilyChanged - Specifies whether the font family of the form field is changed or not.\n * @param isFontSizeChanged - Specifies whether the font size of the form field is changed or not.\n * @param isFontStyleChanged - Specifies whether the font style of the form field is changed or not.\n * @param isMaxLengthChanged - Specifies whether the max length of the form field is changed or not.\n * @param isPrintChanged - Specifies whether the print option of the form field is changed or not.\n * @param isReadOnlyChanged - Specifies the Read Only of Form field is changed or not.\n * @param isRequiredChanged - Specifies whether the is required option of the form field is changed or not.\n * @param isToolTipChanged - Specifies whether the tool tip property is changed or not.\n * @param isValueChanged - Specifies whether the form field value is changed or not.\n * @param isVisibilityChanged - Specifies whether the form field visibility is changed or not.\n * @param newValue - Specifies the new value of the form field.\n * @param oldValue - Specifies the old value of the form field.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldPropertiesChangeEvent = function (name, field, pageIndex, isValueChanged, isFontFamilyChanged, isFontSizeChanged, isFontStyleChanged, isColorChanged, isBackgroundColorChanged, isBorderColorChanged, isBorderWidthChanged, isAlignmentChanged, isReadOnlyChanged, isVisibilityChanged, isMaxLengthChanged, isRequiredChanged, isPrintChanged, isToolTipChanged, oldValue, newValue, isNamechanged) {\n var eventArgs = {\n name: name, field: field, pageIndex: pageIndex, isValueChanged: isValueChanged, isFontFamilyChanged: isFontFamilyChanged, isFontSizeChanged: isFontSizeChanged,\n isFontStyleChanged: isFontStyleChanged, isColorChanged: isColorChanged, isBackgroundColorChanged: isBackgroundColorChanged, isBorderColorChanged: isBorderColorChanged,\n isBorderWidthChanged: isBorderWidthChanged, isAlignmentChanged: isAlignmentChanged, isReadOnlyChanged: isReadOnlyChanged, isVisibilityChanged: isVisibilityChanged,\n isMaxLengthChanged: isMaxLengthChanged, isRequiredChanged: isRequiredChanged, isPrintChanged: isPrintChanged,\n isToolTipChanged: isToolTipChanged, oldValue: oldValue, newValue: newValue, isNameChanged: !isNullOrUndefined(isNamechanged) ? isNamechanged : false\n };\n this.trigger('formFieldPropertiesChange', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field mouse leave event.\n * @param pageIndex - Get the page number.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldMouseLeaveEvent = function (name, field, pageIndex) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex };\n this.trigger('formFieldMouseLeave', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field mouse over event.\n * @param pageIndex - Get the page number.\n * @param pageX - Get the mouse over x position with respect to the page container.\n * @param pageY - Get the mouse over y position with respect to the page container.\n * @param X - Specifies the mouse over x position with respect to the viewer container.\n * @param Y - Specifies the mouse over y position with respect to the viewer container.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldMouseoverEvent = function (name, field, pageIndex, pageX, pageY, X, Y) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex, pageX: pageX, pageY: pageY, X: X, Y: Y };\n this.trigger('formFieldMouseover', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field move event.\n * @param pageIndex - Get the page number.\n * @param previousPosition - Get the previous position of the form field in the page.\n * @param currentPosition - Current position of form field in the page.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldMoveEvent = function (name, field, pageIndex, previousPosition, currentPosition) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('formFieldMove', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field resize event.\n * @param pageIndex - Get the page number.\n * @param previousPosition - Get the previous position of the form field in the page.\n * @param currentPosition - Current position of form field in the page.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldResizeEvent = function (name, field, pageIndex, previousPosition, currentPosition) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('formFieldResize', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field select event.\n * @param pageIndex - Get the page number.\n * @param isProgrammaticSelection - Specifies whether the the form field is selected programmatically or by UI.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldSelectEvent = function (name, field, pageIndex, isProgrammaticSelection) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex, isProgrammaticSelection: isProgrammaticSelection };\n this.trigger('formFieldSelect', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field unselect event.\n * @param pageIndex - Get the page number.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldUnselectEvent = function (name, field, pageIndex) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex };\n this.trigger('formFieldUnselect', eventArgs);\n };\n /**\n * @param pageData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireDocumentLoad = function (pageData) {\n var eventArgs = { name: 'documentLoad', documentName: this.fileName, pageData: pageData };\n this.trigger('documentLoad', eventArgs);\n if (isBlazor()) {\n this._dotnetInstance.invokeMethodAsync('LoadDocument', null);\n this.viewerBase.blazorUIAdaptor.loadDocument();\n }\n };\n /**\n * @param fileName\n * @private\n */\n PdfViewer.prototype.fireDocumentUnload = function (fileName) {\n var eventArgs = { name: 'documentUnload', documentName: fileName };\n this.trigger('documentUnload', eventArgs);\n };\n /**\n * @param isPasswordRequired\n * @param password\n * @param isPasswordRequired\n * @param password\n * @private\n */\n PdfViewer.prototype.fireDocumentLoadFailed = function (isPasswordRequired, password) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'documentLoadFailed', documentName: this.fileName, isPasswordRequired: isPasswordRequired, password: password };\n this.trigger('documentLoadFailed', eventArgs);\n };\n /**\n * @param errorStatusCode\n * @param errorMessage\n * @param action\n * @param retryCount\n * @param errorStatusCode\n * @param errorMessage\n * @param action\n * @param retryCount\n * @param errorStatusCode\n * @param errorMessage\n * @param action\n * @param retryCount\n * @private\n */\n PdfViewer.prototype.fireAjaxRequestFailed = function (errorStatusCode, errorMessage, action, retryCount) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'ajaxRequestFailed', documentName: this.fileName, errorStatusCode: errorStatusCode, errorMessage: errorMessage, action: action };\n if (retryCount) {\n eventArgs.retryCount = true;\n }\n this.trigger('ajaxRequestFailed', eventArgs);\n };\n /**\n * @action\n * @data\n * @private\n */\n PdfViewer.prototype.fireAjaxRequestSuccess = function (action, data) {\n var eventArgs = { name: 'ajaxRequestSuccess', documentName: this.fileName, action: action, data: data, cancel: false };\n this.trigger('ajaxRequestSuccess', eventArgs);\n if (eventArgs.cancel) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * @param action\n * @private\n */\n PdfViewer.prototype.fireValidatedFailed = function (action) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n var eventArgs = { formField: this.formFieldCollections, documentName: this.fileName, nonFillableFields: this.viewerBase.nonFillableFields };\n this.trigger('validateFormFields', eventArgs);\n }\n else {\n // eslint-disable-next-line\n var eventArgs = {};\n eventArgs.documentName = this.fileName;\n eventArgs.formFields = this.formFieldCollections;\n eventArgs.nonFillableFields = this.viewerBase.nonFillableFields;\n this.trigger('validateFormFields', eventArgs);\n }\n };\n /**\n * @param x\n * @param y\n * @param pageNumber\n * @param x\n * @param y\n * @param pageNumber\n * @param x\n * @param y\n * @param pageNumber\n * @private\n */\n PdfViewer.prototype.firePageClick = function (x, y, pageNumber) {\n var eventArgs = { name: 'pageClick', documentName: this.fileName, x: x, y: y, pageNumber: pageNumber };\n this.trigger('pageClick', eventArgs);\n };\n /**\n * @param previousPageNumber\n * @private\n */\n PdfViewer.prototype.firePageChange = function (previousPageNumber) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'pageChange', documentName: this.fileName, currentPageNumber: this.currentPageNumber, previousPageNumber: previousPageNumber };\n this.trigger('pageChange', eventArgs);\n if (isBlazor()) {\n //this._dotnetInstance.invokeMethodAsync('OnPageChanged', this.currentPageNumber);\n this.viewerBase.blazorUIAdaptor.pageChanged(this.currentPageNumber);\n }\n };\n /**\n * @private\n */\n PdfViewer.prototype.fireZoomChange = function () {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'zoomChange', zoomValue: this.magnificationModule.zoomFactor * 100, previousZoomValue: this.magnificationModule.previousZoomFactor * 100 };\n this.trigger('zoomChange', eventArgs);\n };\n /**\n * @param hyperlink\n * @param hyperlinkElement\n * @private\n */\n PdfViewer.prototype.fireHyperlinkClick = function (hyperlink, hyperlinkElement) {\n return __awaiter(this, void 0, void 0, function () {\n var eventArgs;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n eventArgs = { name: 'hyperlinkClick', hyperlink: hyperlink, hyperlinkElement: hyperlinkElement, cancel: false };\n if (!isBlazor()) return [3 /*break*/, 2];\n return [4 /*yield*/, this.triggerEvent('hyperlinkClick', eventArgs)];\n case 1:\n eventArgs = (_a.sent()) || eventArgs;\n return [3 /*break*/, 3];\n case 2:\n this.triggerEvent('hyperlinkClick', eventArgs);\n _a.label = 3;\n case 3:\n if (eventArgs.hyperlinkElement.href != eventArgs.hyperlink) {\n hyperlinkElement.href = eventArgs.hyperlink;\n }\n if (eventArgs.cancel) {\n return [2 /*return*/, false];\n }\n else {\n return [2 /*return*/, true];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @param hyperlinkElement\n * @private\n */\n PdfViewer.prototype.fireHyperlinkHover = function (hyperlinkElement) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'hyperlinkMouseOver', hyperlinkElement: hyperlinkElement };\n this.trigger('hyperlinkMouseOver', eventArgs);\n };\n /**\n * @param fieldName\n * @param value\n * @param fieldName\n * @param value\n * @private\n */\n PdfViewer.prototype.fireFocusOutFormField = function (fieldName, value) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'formFieldFocusOut', fieldName: fieldName, value: value };\n // eslint-disable-next-line\n this.trigger('formFieldFocusOut', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationAdd = function (pageNumber, index, type, bounds, settings, textMarkupContent, tmStartIndex, tmEndIndex, labelSettings, multiPageCollection, customStampName) {\n var eventArgs = { name: 'annotationAdd', pageIndex: pageNumber, annotationId: index, annotationType: type, annotationBound: bounds, annotationSettings: settings };\n if (textMarkupContent) {\n if (isBlazor()) {\n eventArgs.annotationSettings.textMarkupContent = textMarkupContent;\n eventArgs.annotationSettings.textMarkupStartIndex = tmStartIndex;\n eventArgs.annotationSettings.textMarkupEndIndex = tmEndIndex;\n }\n else {\n eventArgs.textMarkupContent = textMarkupContent;\n eventArgs.textMarkupStartIndex = tmStartIndex;\n eventArgs.textMarkupEndIndex = tmEndIndex;\n }\n }\n if (labelSettings) {\n eventArgs.labelSettings = labelSettings;\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n if (type === 'Image') {\n eventArgs.customStampName = customStampName;\n }\n this.viewerBase.isAnnotationSelect = false;\n this.trigger('annotationAdd', eventArgs);\n if (isBlazor()) {\n // this._dotnetInstance.invokeMethodAsync('AnnotationAdd', null);\n this.viewerBase.blazorUIAdaptor.annotationAdd();\n }\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param multiPageCollection\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationRemove = function (pageNumber, index, type, bounds, textMarkupContent, tmStartIndex, tmEndIndex, multiPageCollection) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationRemove', pageIndex: pageNumber, annotationId: index, annotationType: type, annotationBounds: bounds };\n if (textMarkupContent) {\n eventArgs.textMarkupContent = textMarkupContent;\n eventArgs.textMarkupStartIndex = tmStartIndex;\n eventArgs.textMarkupEndIndex = tmEndIndex;\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n this.trigger('annotationRemove', eventArgs);\n };\n /**\n * @param value\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireBeforeAddFreeTextAnnotation = function (value) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'beforeAddFreeText', value: value };\n // eslint-disable-next-line\n this.trigger('beforeAddFreeText', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @param id\n * @param text\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentAdd = function (id, text, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentAdd', id: id, text: text, annotation: annotation };\n // eslint-disable-next-line\n this.trigger('commentAdd', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @param id\n * @param text\n * @param annotation\n * @param id\n * @param text\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentEdit = function (id, text, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentEdit', id: id, text: text, annotation: annotation };\n // eslint-disable-next-line\n this.trigger('commentEdit', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @param id\n * @param text\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentDelete = function (id, text, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentDelete', id: id, text: text, annotation: annotation };\n // eslint-disable-next-line\n this.trigger('commentDelete', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentSelect = function (id, text, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentSelect', id: id, text: text, annotation: annotation };\n // eslint-disable-next-line\n this.trigger('commentSelect', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @param statusChange\n * @param id\n * @param text\n * @param annotation\n * @param statusChange\n * @param id\n * @param text\n * @param annotation\n * @param statusChange\n * @param id\n * @param text\n * @param annotation\n * @param statusChange\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentStatusChanged = function (id, text, annotation, statusChange) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentStatusChanged', id: id, text: text, annotation: annotation, status: statusChange };\n // eslint-disable-next-line\n this.trigger('commentStatusChanged', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param isColorChanged\n * @param isOpacityChanged\n * @param isTextChanged\n * @param isCommentsChanged\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param isColorChanged\n * @param isOpacityChanged\n * @param isTextChanged\n * @param isCommentsChanged\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param multiPageCollection\n * @private\n */\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationPropertiesChange = function (pageNumber, index, type, isColorChanged, isOpacityChanged, isTextChanged, isCommentsChanged, textMarkupContent, tmStartIndex, tmEndIndex, multiPageCollection) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationPropertiesChange', pageIndex: pageNumber, annotationId: index, annotationType: type, isColorChanged: isColorChanged, isOpacityChanged: isOpacityChanged, isTextChanged: isTextChanged, isCommentsChanged: isCommentsChanged };\n if (textMarkupContent) {\n eventArgs.textMarkupContent = textMarkupContent;\n eventArgs.textMarkupStartIndex = tmStartIndex;\n eventArgs.textMarkupEndIndex = tmEndIndex;\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n this.trigger('annotationPropertiesChange', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param data\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param data\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param data\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureAdd = function (pageNumber, index, type, bounds, opacity, strokeColor, thickness, data) {\n var eventArgs = { pageIndex: pageNumber, id: index, type: type, bounds: bounds, opacity: opacity };\n if (thickness) {\n eventArgs.thickness = thickness;\n }\n if (strokeColor) {\n eventArgs.strokeColor = strokeColor;\n }\n if (data) {\n eventArgs.data = data;\n }\n this.trigger('addSignature', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureRemove = function (pageNumber, index, type, bounds) {\n var eventArgs = { pageIndex: pageNumber, id: index, type: type, bounds: bounds };\n this.trigger('removeSignature', eventArgs);\n };\n /**\n * @param pageNumber\n * @param id\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param previousPosition\n * @param currentPosition\n * @param pageNumber\n * @param id\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param previousPosition\n * @param currentPosition\n * @param pageNumber\n * @param id\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param previousPosition\n * @param currentPosition\n * @param pageNumber\n * @param id\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param previousPosition\n * @param currentPosition\n * @param pageNumber\n * @param id\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param previousPosition\n * @param currentPosition\n * @param pageNumber\n * @param id\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param previousPosition\n * @param currentPosition\n * @param pageNumber\n * @param id\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param previousPosition\n * @param currentPosition\n * @param pageNumber\n * @param id\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param previousPosition\n * @param currentPosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureMove = function (pageNumber, id, type, opacity, strokeColor, thickness, previousPosition, currentPosition) {\n var eventArgs = { pageIndex: pageNumber, id: id, type: type, opacity: opacity, strokeColor: strokeColor, thickness: thickness, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('moveSignature', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param isStrokeColorChanged\n * @param isOpacityChanged\n * @param isThicknessChanged\n * @param oldProp\n * @param newProp\n * @param pageNumber\n * @param index\n * @param type\n * @param isStrokeColorChanged\n * @param isOpacityChanged\n * @param isThicknessChanged\n * @param oldProp\n * @param newProp\n * @param pageNumber\n * @param index\n * @param type\n * @param isStrokeColorChanged\n * @param isOpacityChanged\n * @param isThicknessChanged\n * @param oldProp\n * @param newProp\n * @param pageNumber\n * @param index\n * @param type\n * @param isStrokeColorChanged\n * @param isOpacityChanged\n * @param isThicknessChanged\n * @param oldProp\n * @param newProp\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignaturePropertiesChange = function (pageNumber, index, type, isStrokeColorChanged, isOpacityChanged, isThicknessChanged, oldProp, newProp) {\n var eventArgs = { pageIndex: pageNumber, id: index, type: type, isStrokeColorChanged: isStrokeColorChanged, isOpacityChanged: isOpacityChanged, isThicknessChanged: isThicknessChanged, oldValue: oldProp, newValue: newProp };\n this.trigger('signaturePropertiesChange', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param currentPosition\n * @param previousPosition\n * @param pageNumber\n * @param index\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param currentPosition\n * @param previousPosition\n * @param pageNumber\n * @param index\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param currentPosition\n * @param previousPosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureResize = function (pageNumber, index, type, opacity, strokeColor, thickness, currentPosition, previousPosition) {\n var eventArgs = { pageIndex: pageNumber, id: index, type: type, opacity: opacity, strokeColor: strokeColor, thickness: thickness, currentPosition: currentPosition, previousPosition: previousPosition };\n this.trigger('resizeSignature', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param signature\n * @param id\n * @param pageNumber\n * @param signature\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureSelect = function (id, pageNumber, signature) {\n var eventArgs = { id: id, pageIndex: pageNumber, signature: signature };\n this.trigger('signatureSelect', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param annotation\n * @param annotationCollection\n * @param multiPageCollection\n * @param isSelected\n * @param annotationAddMode\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationSelect = function (id, pageNumber, annotation, annotationCollection, multiPageCollection, isSelected, annotationAddMode) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationSelect', annotationId: id, pageIndex: pageNumber, annotation: annotation };\n if (annotationCollection) {\n // eslint-disable-next-line max-len\n eventArgs = { name: 'annotationSelect', annotationId: id, pageIndex: pageNumber, annotation: annotation, annotationCollection: annotationCollection };\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n if (isSelected) {\n eventArgs.isProgrammaticSelection = isSelected;\n }\n if (annotationAddMode) {\n eventArgs.annotationAddMode = annotationAddMode;\n }\n if (isBlazor()) {\n if (annotation.type === 'FreeText') {\n // eslint-disable-next-line\n var fontStyle = { isBold: false, isItalic: false, isStrikeout: false, isUnderline: false };\n if (annotation.fontStyle === 1) {\n fontStyle.isBold = true;\n }\n else if (annotation.fontStyle === 2) {\n fontStyle.isItalic = true;\n }\n else if (annotation.fontStyle === 3) {\n fontStyle.isStrikeout = true;\n }\n else if (annotation.fontStyle === 4) {\n fontStyle.isUnderline = true;\n }\n annotation.fontStyle = fontStyle;\n }\n //this._dotnetInstance.invokeMethodAsync('AnnotationSelect', annotation.type);\n this.viewerBase.blazorUIAdaptor.annotationSelect(annotation.type);\n }\n this.trigger('annotationSelect', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param annotation\n * @param id\n * @param pageNumber\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationUnSelect = function (id, pageNumber, annotation) {\n if (isBlazor()) {\n this.viewerBase.blazorUIAdaptor.annotationUnSelect();\n }\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationUnSelect', annotationId: id, pageIndex: pageNumber, annotation: annotation };\n this.trigger('annotationUnSelect', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param annotation\n * @param id\n * @param pageNumber\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationDoubleClick = function (id, pageNumber, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationDblClick', annotationId: id, pageIndex: pageNumber, annotation: annotation };\n this.trigger('annotationDoubleClick', eventArgs);\n };\n /**\n * @param pageNumber\n * @private\n */\n PdfViewer.prototype.fireTextSelectionStart = function (pageNumber) {\n this.isTextSelectionStarted = true;\n var eventArgs = { pageIndex: pageNumber };\n this.trigger('textSelectionStart', eventArgs);\n };\n /**\n * @param pageNumber\n * @param text\n * @param bound\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextSelectionEnd = function (pageNumber, text, bound) {\n if (this.isTextSelectionStarted) {\n var eventArgs = { pageIndex: pageNumber, textContent: text, textBounds: bound };\n this.trigger('textSelectionEnd', eventArgs);\n this.isTextSelectionStarted = false;\n }\n };\n /**\n * @param canvas\n * @param index\n * @private\n */\n PdfViewer.prototype.renderDrawing = function (canvas, index) {\n if (isNullOrUndefined(index) && this.viewerBase.activeElements.activePageID && !this.viewerBase.isPrint) {\n index = this.viewerBase.activeElements.activePageID;\n }\n if (this.annotation) {\n this.annotation.renderAnnotations(index, null, null, null, canvas);\n }\n else if (this.formDesignerModule) {\n this.formDesignerModule.updateCanvas(index, canvas);\n }\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationResize = function (pageNumber, index, type, bounds, settings, textMarkupContent, tmStartIndex, tmEndIndex, labelSettings, multiPageCollection) {\n var eventArgs = { name: 'annotationResize', pageIndex: pageNumber, annotationId: index, annotationType: type, annotationBound: bounds, annotationSettings: settings };\n if (textMarkupContent) {\n eventArgs.textMarkupContent = textMarkupContent;\n eventArgs.textMarkupStartIndex = tmStartIndex;\n eventArgs.textMarkupEndIndex = tmEndIndex;\n }\n if (labelSettings) {\n eventArgs.labelSettings = labelSettings;\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n this.trigger('annotationResize', eventArgs);\n };\n /**\n * @param pageNumber\n * @param id\n * @param type\n * @param annotationSettings\n * @param previousPosition\n * @param currentPosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationMoving = function (pageNumber, id, type, annotationSettings, previousPosition, currentPosition) {\n var eventArgs = { name: 'annotationMoving', pageIndex: pageNumber, annotationId: id, annotationType: type, annotationSettings: annotationSettings, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('annotationMoving', eventArgs);\n };\n /**\n * @param pageNumber\n * @param id\n * @param type\n * @param annotationSettings\n * @param previousPosition\n * @param currentPosition\n * @param pageNumber\n * @param id\n * @param type\n * @param annotationSettings\n * @param previousPosition\n * @param currentPosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationMove = function (pageNumber, id, type, annotationSettings, previousPosition, currentPosition) {\n var eventArgs = { name: 'annotationMove', pageIndex: pageNumber, annotationId: id, annotationType: type, annotationSettings: annotationSettings, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('annotationMove', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param annotationType\n * @param bounds\n * @param annotation\n * @param currentPosition\n * @param mousePosition\n * @param id\n * @param pageNumber\n * @param annotationType\n * @param bounds\n * @param annotation\n * @param currentPosition\n * @param mousePosition\n * @param id\n * @param pageNumber\n * @param annotationType\n * @param bounds\n * @param annotation\n * @param currentPosition\n * @param mousePosition\n * @param id\n * @param pageNumber\n * @param annotationType\n * @param bounds\n * @param annotation\n * @param currentPosition\n * @param mousePosition\n * @param id\n * @param pageNumber\n * @param annotationType\n * @param bounds\n * @param annotation\n * @param currentPosition\n * @param mousePosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationMouseover = function (id, pageNumber, annotationType, bounds, annotation, currentPosition, mousePosition) {\n var eventArgs = { name: 'annotationMouseover', annotationId: id, pageIndex: pageNumber, annotationType: annotationType, annotationBounds: bounds, annotation: annotation, pageX: currentPosition.left, pageY: currentPosition.top, X: mousePosition.left, Y: mousePosition.top };\n if (isBlazor()) {\n if (annotation.subject === 'Perimeter calculation') {\n eventArgs.annotationType = 'Perimeter';\n }\n else if (annotation.subject === 'Area calculation') {\n eventArgs.annotationType = 'Area';\n }\n else if (annotation.subject === 'Volume calculation') {\n eventArgs.annotationType = 'Volume';\n }\n else if (annotation.subject === 'Arrow') {\n eventArgs.annotationType = 'Arrow';\n }\n else if (annotation.subject === 'Circle') {\n eventArgs.annotationType = 'Circle';\n }\n }\n this.trigger('annotationMouseover', eventArgs);\n };\n /**\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationMouseLeave = function (pageNumber) {\n var eventArgs = { name: 'annotationMouseLeave', pageIndex: pageNumber };\n this.trigger('annotationMouseLeave', eventArgs);\n };\n /**\n * @param pageX\n * @param pageY\n * @private\n */\n PdfViewer.prototype.firePageMouseover = function (pageX, pageY) {\n var eventArgs = { pageX: pageX, pageY: pageY };\n this.trigger('pageMouseover', eventArgs);\n };\n /**\n * @param fileName\n * @private\n */\n PdfViewer.prototype.fireDownloadStart = function (fileName) {\n var eventArgs = { fileName: fileName };\n this.trigger('downloadStart', eventArgs);\n };\n /**\n * @param fileName\n * @param downloadData\n * @private\n */\n PdfViewer.prototype.fireDownloadEnd = function (fileName, downloadData) {\n var eventArgs = { fileName: fileName, downloadDocument: downloadData };\n this.trigger('downloadEnd', eventArgs);\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.firePrintStart = function () {\n return __awaiter(this, void 0, void 0, function () {\n var eventArgs;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n eventArgs = { fileName: this.downloadFileName, cancel: false };\n if (!isBlazor) return [3 /*break*/, 2];\n return [4 /*yield*/, this.triggerEvent('printStart', eventArgs)];\n case 1:\n eventArgs = (_a.sent()) || eventArgs;\n return [3 /*break*/, 3];\n case 2:\n this.triggerEvent('printStart', eventArgs);\n _a.label = 3;\n case 3:\n if (!eventArgs.cancel) {\n this.printModule.print();\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @param eventName\n * @param args\n * @param eventName\n * @param args\n * @private\n */\n PdfViewer.prototype.triggerEvent = function (eventName, args) {\n return __awaiter(this, void 0, void 0, function () {\n var eventArgs;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.trigger(eventName, args)];\n case 1:\n eventArgs = _a.sent();\n if (isBlazor && typeof eventArgs === 'string') {\n eventArgs = JSON.parse(eventArgs);\n }\n return [2 /*return*/, eventArgs];\n }\n });\n });\n };\n /**\n * @param fileName\n * @private\n */\n PdfViewer.prototype.firePrintEnd = function (fileName) {\n var eventArgs = { fileName: fileName };\n this.trigger('printEnd', eventArgs);\n };\n /**\n * @param pageNumber\n * @private\n */\n PdfViewer.prototype.fireThumbnailClick = function (pageNumber) {\n var eventArgs = { name: 'thumbnailClick', pageNumber: pageNumber };\n this.trigger('thumbnailClick', eventArgs);\n };\n /**\n * @param pageNumber\n * @param position\n * @param text\n * @param fileName\n * @param pageNumber\n * @param position\n * @param text\n * @param fileName\n * @param pageNumber\n * @param position\n * @param text\n * @param fileName\n * @private\n */\n PdfViewer.prototype.fireBookmarkClick = function (pageNumber, position, text, fileName) {\n // eslint-disable-next-line\n var eventArgs = { name: 'bookmarkClick', pageNumber: pageNumber, position: position, text: text, fileName: fileName };\n this.trigger('bookmarkClick', eventArgs);\n };\n /**\n * @param importData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireImportStart = function (importData) {\n var eventArgs = { name: 'importAnnotationsStart', importData: importData, formFieldData: null };\n this.trigger('importStart', eventArgs);\n };\n /**\n * @param exportData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireExportStart = function (exportData) {\n var eventArgs = { name: 'exportAnnotationsStart', exportData: exportData, formFieldData: null };\n this.trigger('exportStart', eventArgs);\n };\n /**\n * @param importData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireImportSuccess = function (importData) {\n var eventArgs = { name: 'importAnnotationsSuccess', importData: importData, formFieldData: null };\n this.trigger('importSuccess', eventArgs);\n };\n /**\n * @param exportData\n * @param fileName\n * @param exportData\n * @param fileName\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireExportSuccess = function (exportData, fileName) {\n var eventArgs = { name: 'exportAnnotationsSuccess', exportData: exportData, fileName: fileName, formFieldData: null };\n this.trigger('exportSuccess', eventArgs);\n };\n /**\n * @param data\n * @param errorDetails\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireImportFailed = function (data, errorDetails) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'importAnnotationsFailed', importData: data, errorDetails: errorDetails, formFieldData: null };\n this.trigger('importFailed', eventArgs);\n };\n /**\n * @param data\n * @param errorDetails\n * @param data\n * @param errorDetails\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireExportFailed = function (data, errorDetails) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'exportAnnotationsFailed', exportData: data, errorDetails: errorDetails, formFieldData: null };\n this.trigger('exportFailed', eventArgs);\n };\n /**\n * @param data\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormImportStarted = function (data) {\n var eventArgs = { name: 'importFormFieldsStart', importData: null, formFieldData: data };\n this.trigger('importStart', eventArgs);\n };\n /**\n * @param data\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormExportStarted = function (data) {\n var eventArgs = { name: 'exportFormFieldsStart', exportData: null, formFieldData: data };\n this.trigger('exportStart', eventArgs);\n };\n /**\n * @param data\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormImportSuccess = function (data) {\n var eventArgs = { name: 'importFormFieldsSuccess', importData: data, formFieldData: data };\n this.trigger('importSuccess', eventArgs);\n };\n /**\n * @param data\n * @param fileName\n * @param data\n * @param fileName\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormExportSuccess = function (data, fileName) {\n var eventArgs = { name: 'exportFormFieldsSuccess', exportData: data, fileName: fileName, formFieldData: data };\n this.trigger('exportSuccess', eventArgs);\n };\n /**\n * @param data\n * @param errorDetails\n * @param data\n * @param errorDetails\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormImportFailed = function (data, errorDetails) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'importFormFieldsfailed', importData: data, errorDetails: errorDetails, formFieldData: data };\n this.trigger('importFailed', eventArgs);\n };\n /**\n * @param data\n * @param errorDetails\n * @param data\n * @param errorDetails\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormExportFailed = function (data, errorDetails) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'exportFormFieldsFailed', exportData: data, errorDetails: errorDetails, formFieldData: data };\n this.trigger('exportFailed', eventArgs);\n };\n /**\n * @param documentCollection\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextExtractionCompleted = function (documentCollection) {\n var eventArgs = { documentTextCollection: documentCollection };\n this.trigger('extractTextCompleted', eventArgs);\n };\n /**\n * @param searchText\n * @param isMatchcase\n * @param searchText\n * @param isMatchcase\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextSearchStart = function (searchText, isMatchcase) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'textSearchStart', searchText: searchText, matchCase: isMatchcase };\n this.trigger('textSearchStart', eventArgs);\n };\n /**\n * @param searchText\n * @param isMatchcase\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextSearchComplete = function (searchText, isMatchcase) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'textSearchComplete', searchText: searchText, matchCase: isMatchcase };\n this.trigger('textSearchComplete', eventArgs);\n };\n /**\n * @param searchText\n * @param isMatchcase\n * @param bounds\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextSearchHighlight = function (searchText, isMatchcase, bounds, pageNumber) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'textSearchHighlight', searchText: searchText, matchCase: isMatchcase, bounds: bounds, pageNumber: pageNumber };\n this.trigger('textSearchHighlight', eventArgs);\n };\n /**\n * @param bounds\n * @param commonStyle\n * @param cavas\n * @param index\n * @private\n */\n PdfViewer.prototype.renderAdornerLayer = function (bounds, commonStyle, cavas, index) {\n renderAdornerLayer(bounds, commonStyle, cavas, index, this);\n };\n /**\n * @param index\n * @param currentSelector\n * @param index\n * @param currentSelector\n * @private\n */\n PdfViewer.prototype.renderSelector = function (index, currentSelector) {\n this.drawing.renderSelector(index, currentSelector);\n };\n /**\n * @param objArray\n * @param currentSelector\n * @param multipleSelection\n * @param preventUpdate\n * @param objArray\n * @param currentSelector\n * @param multipleSelection\n * @param preventUpdate\n * @param objArray\n * @param currentSelector\n * @param multipleSelection\n * @param preventUpdate\n * @param objArray\n * @param currentSelector\n * @param multipleSelection\n * @param preventUpdate\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewer.prototype.select = function (objArray, currentSelector, multipleSelection, preventUpdate) {\n var allowServerDataBind = this.allowServerDataBinding;\n this.enableServerDataBinding(false);\n if (this.annotationModule) {\n var annotationSelect = this.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage;\n // eslint-disable-next-line\n var annotation = this.selectedItems.annotations[0];\n if (annotationSelect) {\n // eslint-disable-next-line\n var currentAnnot = this.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n this.annotationModule.textMarkupAnnotationModule.clearCurrentAnnotationSelection(annotationSelect, true);\n this.fireAnnotationUnSelect(currentAnnot.annotName, currentAnnot.pageNumber, currentAnnot);\n }\n if (!multipleSelection) {\n if (this.viewerBase.activeElements && this.viewerBase.activeElements.activePageID >= 0) {\n if (!this.viewerBase.isNewStamp && annotation && annotation.shapeAnnotationType !== 'HandWrittenSignature' && annotation.shapeAnnotationType !== 'SignatureText' && annotation.shapeAnnotationType !== 'SignatureImage') {\n this.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n }\n this.clearSelection(this.viewerBase.activeElements.activePageID);\n }\n }\n }\n if (this.formDesignerModule) {\n var formField = this.selectedItems.formFields[0];\n if (formField) {\n if (this.formDesignerModule && formField && formField.formFieldAnnotationType) {\n var field = {\n value: formField.value, fontFamily: formField.fontFamily, fontSize: formField.fontSize, fontStyle: formField.fontStyle,\n color: formField.color, backgroundColor: formField.backgroundColor, borderColor: formField.borderColor,\n thickness: formField.thickness, alignment: formField.alignment, isReadonly: formField.isReadonly, visibility: formField.visibility,\n maxLength: formField.maxLength, isRequired: formField.isRequired, isPrint: formField.isPrint, rotation: formField.rotateAngle, tooltip: formField.tooltip, options: formField.options,\n isChecked: formField.isChecked, isSelected: formField.isSelected\n };\n this.fireFormFieldUnselectEvent(\"formFieldUnselect\", field, formField.pageIndex);\n }\n }\n }\n this.drawing.select(objArray, currentSelector, multipleSelection, preventUpdate);\n this.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @param pageId\n * @private\n */\n PdfViewer.prototype.getPageTable = function (pageId) {\n return this.drawing.getPageTable(pageId);\n };\n /**\n * @param diffX\n * @param diffY\n * @param pageIndex\n * @param currentSelector\n * @param helper\n * @param diffX\n * @param diffY\n * @param pageIndex\n * @param currentSelector\n * @param helper\n * @param diffX\n * @param diffY\n * @param pageIndex\n * @param currentSelector\n * @param helper\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewer.prototype.dragSelectedObjects = function (diffX, diffY, pageIndex, currentSelector, helper) {\n return this.drawing.dragSelectedObjects(diffX, diffY, pageIndex, currentSelector, helper);\n };\n /**\n * @param sx\n * @param sy\n * @param pivot\n * @private\n */\n PdfViewer.prototype.scaleSelectedItems = function (sx, sy, pivot) {\n return this.drawing.scaleSelectedItems(sx, sy, pivot);\n };\n /**\n * @param endPoint\n * @param obj\n * @param point\n * @param segment\n * @param target\n * @param targetPortId\n * @param currentSelector\n * @param endPoint\n * @param obj\n * @param point\n * @param segment\n * @param target\n * @param targetPortId\n * @param currentSelector\n * @param endPoint\n * @param obj\n * @param point\n * @param segment\n * @param target\n * @param targetPortId\n * @param currentSelector\n * @param endPoint\n * @param obj\n * @param point\n * @param segment\n * @param target\n * @param targetPortId\n * @param currentSelector\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewer.prototype.dragConnectorEnds = function (endPoint, obj, point, segment, target, targetPortId, currentSelector) {\n return this.drawing.dragConnectorEnds(endPoint, obj, point, segment, target, null, currentSelector);\n };\n /**\n * @param pageId\n * @private\n */\n PdfViewer.prototype.clearSelection = function (pageId) {\n var allowServerDataBind = this.allowServerDataBinding;\n this.enableServerDataBinding(false);\n var selectormodel = this.selectedItems;\n var node = selectormodel.annotations.length > 0 ? this.selectedItems.annotations[0] : this.selectedItems.formFields[0];\n if (selectormodel.annotations.length > 0) {\n selectormodel.offsetX = 0;\n selectormodel.offsetY = 0;\n selectormodel.width = 0;\n selectormodel.height = 0;\n selectormodel.rotateAngle = 0;\n selectormodel.annotations = [];\n selectormodel.wrapper = null;\n }\n else if (selectormodel.formFields.length > 0) {\n selectormodel.offsetX = 0;\n selectormodel.offsetY = 0;\n selectormodel.width = 0;\n selectormodel.height = 0;\n selectormodel.rotateAngle = 0;\n selectormodel.formFields = [];\n selectormodel.wrapper = null;\n }\n this.drawing.clearSelectorLayer(pageId);\n this.viewerBase.isAnnotationSelect = false;\n this.viewerBase.isFormFieldSelect = false;\n this.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @param obj\n * @private\n */\n PdfViewer.prototype.add = function (obj) {\n return this.drawing.add(obj);\n };\n /**\n * @param obj\n * @private\n */\n PdfViewer.prototype.remove = function (obj) {\n return this.drawing.remove(obj);\n };\n /**\n * @private\n */\n PdfViewer.prototype.copy = function () {\n if (this.annotation)\n this.annotation.isShapeCopied = true;\n else if (this.formDesigner && this.designerMode)\n this.formDesigner.isShapeCopied = true;\n return this.drawing.copy();\n };\n /**\n * @param angle\n * @param currentSelector\n * @param angle\n * @param currentSelector\n * @private\n */\n PdfViewer.prototype.rotate = function (angle, currentSelector) {\n return this.drawing.rotate(this.selectedItems, angle, null, currentSelector);\n };\n /**\n * @param obj\n * @private\n */\n PdfViewer.prototype.paste = function (obj) {\n var index;\n if (this.viewerBase.activeElements.activePageID) {\n index = this.viewerBase.activeElements.activePageID;\n }\n return this.drawing.paste(obj, index || 0);\n };\n /**\n * @private\n */\n PdfViewer.prototype.refresh = function () {\n for (var i = 0; i < this.annotations.length; i++) {\n if (this.zIndexTable.length !== undefined) {\n var notFound = true;\n for (var i_1 = 0; i_1 < this.zIndexTable.length; i_1++) {\n var objects = this.zIndexTable[i_1].objects;\n for (var j = 0; j < objects.length; j++) {\n objects.splice(j, 1);\n }\n delete this.zIndexTable[i_1];\n }\n if (this.annotations[i]) {\n delete this.annotations[i];\n }\n if (this.selectedItems.annotations && this.selectedItems.annotations[i]) {\n delete this.selectedItems.annotations[i];\n }\n this.zIndexTable = [];\n this.renderDrawing();\n }\n if (this.annotations && this.annotations.length !== 0) {\n this.annotations.length = 0;\n this.selectedItems.annotations.length = 0;\n }\n }\n };\n /**\n * @private\n */\n PdfViewer.prototype.cut = function () {\n var index;\n if (this.viewerBase.activeElements.activePageID) {\n index = this.viewerBase.activeElements.activePageID;\n }\n if (this.annotation)\n this.annotation.isShapeCopied = true;\n else if (this.formDesigner && this.designerMode)\n this.formDesigner.isShapeCopied = true;\n return this.drawing.cut(index || 0);\n };\n /**\n * @param actualObject\n * @param node\n * @private\n */\n PdfViewer.prototype.nodePropertyChange = function (actualObject, node) {\n this.drawing.nodePropertyChange(actualObject, node);\n };\n /**\n * enableServerDataBinding method \\\n *\n * @returns { void } enableServerDataBinding method .\\\n * @param {boolean} enable - provide the node value.\n *\n * @private\n */\n PdfViewer.prototype.enableServerDataBinding = function (enable, clearBulkChanges) {\n if (clearBulkChanges === void 0) { clearBulkChanges = false; }\n if (isBlazor()) {\n this.allowServerDataBinding = enable;\n if (clearBulkChanges) {\n this.bulkChanges = {};\n }\n }\n };\n /**\n * @param tx\n * @param ty\n * @param pageIndex\n * @param nodeBounds\n * @param isStamp\n * @param isSkip\n * @param tx\n * @param ty\n * @param pageIndex\n * @param nodeBounds\n * @param isStamp\n * @param isSkip\n * @param tx\n * @param ty\n * @param pageIndex\n * @param nodeBounds\n * @param isStamp\n * @param isSkip\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewer.prototype.checkBoundaryConstraints = function (tx, ty, pageIndex, nodeBounds, isStamp, isSkip) {\n return this.drawing.checkBoundaryConstraints(tx, ty, pageIndex, nodeBounds, isStamp, isSkip);\n };\n __decorate([\n Property()\n ], PdfViewer.prototype, \"serviceUrl\", void 0);\n __decorate([\n Property(0)\n ], PdfViewer.prototype, \"pageCount\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isDocumentEdited\", void 0);\n __decorate([\n Property(0)\n ], PdfViewer.prototype, \"currentPageNumber\", void 0);\n __decorate([\n Property()\n ], PdfViewer.prototype, \"documentPath\", void 0);\n __decorate([\n Property(null)\n ], PdfViewer.prototype, \"exportAnnotationFileName\", void 0);\n __decorate([\n Property()\n ], PdfViewer.prototype, \"downloadFileName\", void 0);\n __decorate([\n Property('auto')\n ], PdfViewer.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], PdfViewer.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableToolbar\", void 0);\n __decorate([\n Property(1)\n ], PdfViewer.prototype, \"retryCount\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"showNotificationDialog\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableNavigationToolbar\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableCommentPanel\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isCommandPanelOpen\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableTextMarkupResizer\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableMultiLineOverlap\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isValidFreeText\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isAnnotationToolbarOpen\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isAnnotationToolbarVisible\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isFormDesignerToolbarVisible\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableMultiPageAnnotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableDownload\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enablePrint\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enablePrintRotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableThumbnail\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isThumbnailViewOpen\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isSignatureEditable\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableBookmark\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableBookmarkStyles\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableHyperlink\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableHandwrittenSignature\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableInkAnnotation\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"restrictZoomRequest\", void 0);\n __decorate([\n Property('CurrentTab')\n ], PdfViewer.prototype, \"hyperlinkOpenState\", void 0);\n __decorate([\n Property('RightClick')\n ], PdfViewer.prototype, \"contextMenuOption\", void 0);\n __decorate([\n Property([])\n ], PdfViewer.prototype, \"disableContextMenuItems\", void 0);\n __decorate([\n Property({ name: '', id: '', type: '', isReadOnly: false, isSelected: false, isChecked: false, value: '', signatureType: [''], fontName: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', backgroundColor: 'white', alignment: 'Left', visibility: 'visible', maxLength: 0, isRequired: false, isPrint: false, tooltip: '', pageIndex: -1, options: [], signatureIndicatorSettings: { opacity: 1, backgroundColor: 'orange', width: 19, height: 10, fontSize: 10, text: null, color: 'black' } })\n ], PdfViewer.prototype, \"formFieldCollections\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableNavigation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableAutoComplete\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableMagnification\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableShapeLabel\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableImportAnnotationMeasurement\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enablePinchZoom\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableTextSelection\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableTextSearch\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableAnnotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableFormFields\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableFormDesigner\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"designerMode\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableFormFieldsValidation\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isFormFieldDocument\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableDesktopMode\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"hideSaveSignature\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableFreeText\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableTextMarkupAnnotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableShapeAnnotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableMeasureAnnotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableStampAnnotations\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableStickyNotesAnnotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableAnnotationToolbar\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableFormDesignerToolbar\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isBookmarkPanelOpen\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isInitialFieldToolbarSelection\", void 0);\n __decorate([\n Property('TextSelection')\n ], PdfViewer.prototype, \"interactionMode\", void 0);\n __decorate([\n Property('Default')\n ], PdfViewer.prototype, \"zoomMode\", void 0);\n __decorate([\n Property('Default')\n ], PdfViewer.prototype, \"signatureFitMode\", void 0);\n __decorate([\n Property('Default')\n ], PdfViewer.prototype, \"printMode\", void 0);\n __decorate([\n Property(0)\n ], PdfViewer.prototype, \"zoomValue\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableZoomOptimization\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isExtractText\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isMaintainSelection\", void 0);\n __decorate([\n Property('M/d/yyyy h:mm:ss a')\n ], PdfViewer.prototype, \"dateTimeFormat\", void 0);\n __decorate([\n Property({ showTooltip: true, toolbarItems: ['OpenOption', 'UndoRedoTool', 'PageNavigationTool', 'MagnificationTool', 'PanTool', 'SelectionTool', 'CommentTool', 'SubmitForm', 'AnnotationEditTool', 'FormDesignerEditTool', 'FreeTextAnnotationOption', 'InkAnnotationOption', 'ShapeAnnotationOption', 'StampAnnotation', 'SignatureOption', 'SearchOption', 'PrintOption', 'DownloadOption'], annotationToolbarItems: ['HighlightTool', 'UnderlineTool', 'StrikethroughTool', 'ColorEditTool', 'OpacityEditTool', 'AnnotationDeleteTool', 'StampAnnotationTool', 'HandWrittenSignatureTool', 'InkAnnotationTool', 'ShapeTool', 'CalibrateTool', 'StrokeColorEditTool', 'ThicknessEditTool', 'FreeTextAnnotationTool', 'FontFamilyAnnotationTool', 'FontSizeAnnotationTool', 'FontStylesAnnotationTool', 'FontAlignAnnotationTool', 'FontColorAnnotationTool', 'CommentPanelTool'], formDesignerToolbarItems: ['TextboxTool', 'PasswordTool', 'CheckBoxTool', 'RadioButtonTool', 'DropdownTool', 'ListboxTool', 'DrawSignatureTool', 'DeleteTool'] })\n ], PdfViewer.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Property({ ajaxHeaders: [], withCredentials: false })\n ], PdfViewer.prototype, \"ajaxRequestSettings\", void 0);\n __decorate([\n Property({ customStampName: '', customStampImageSource: '' })\n ], PdfViewer.prototype, \"customStamp\", void 0);\n __decorate([\n Property({ load: 'Load', renderPages: 'RenderPdfPages', unload: 'Unload', download: 'Download', renderThumbnail: 'RenderThumbnailImages', print: 'PrintImages', renderComments: 'RenderAnnotationComments', importAnnotations: 'ImportAnnotations', exportAnnotations: 'ExportAnnotations', importFormFields: 'ImportFormFields', exportFormFields: 'ExportFormFields', renderTexts: 'RenderPdfTexts' })\n ], PdfViewer.prototype, \"serverActionSettings\", void 0);\n __decorate([\n Property({ signatureIndicatorSettings: { opacity: 1, backgroundColor: 'orange', width: 19, height: 10, fontSize: 10, text: null, color: 'black' }, signatureDialogSettings: { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false } })\n ], PdfViewer.prototype, \"signatureFieldSettings\", void 0);\n __decorate([\n Property({ initialIndicatorSettings: { opacity: 1, backgroundColor: 'orange', width: 19, height: 10, fontSize: 10, text: null, color: 'black' }, initialDialogSettings: { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false } })\n ], PdfViewer.prototype, \"initialFieldSettings\", void 0);\n __decorate([\n Property({ opacity: 1, color: '#FFDF56', author: 'Guest', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges }, isLock: false, enableMultiPageAnnotation: false, enableTextMarkupResizer: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"highlightSettings\", void 0);\n __decorate([\n Property({ opacity: 1, color: '#ff0000', author: 'Guest', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges }, isLock: false, enableMultiPageAnnotation: false, enableTextMarkupResizer: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"strikethroughSettings\", void 0);\n __decorate([\n Property({ opacity: 1, color: '#00ff00', author: 'Guest', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges }, isLock: false, enableMultiPageAnnotation: false, enableTextMarkupResizer: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"underlineSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, borderDashArray: 0, lineHeadStartStyle: 'None', lineHeadEndStyle: 'None', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"lineSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, borderDashArray: 0, lineHeadStartStyle: 'Closed', lineHeadEndStyle: 'Closed', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"arrowSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"rectangleSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', borderColor: '#ff0000', fontColor: '#000', fontSize: 16, labelHeight: 24.6, labelMaxWidth: 151, labelContent: 'Label' })\n ], PdfViewer.prototype, \"shapeLabelSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"circleSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"polygonSettings\", void 0);\n __decorate([\n Property({ opacity: 1, author: 'Guest', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, dynamicStamps: [DynamicStampItem.Revised, DynamicStampItem.Reviewed, DynamicStampItem.Received, DynamicStampItem.Confidential, DynamicStampItem.Approved, DynamicStampItem.NotApproved], signStamps: [SignStampItem.Witness, SignStampItem.InitialHere, SignStampItem.SignHere, SignStampItem.Accepted, SignStampItem.Rejected], standardBusinessStamps: [StandardBusinessStampItem.Approved, StandardBusinessStampItem.NotApproved, StandardBusinessStampItem.Draft, StandardBusinessStampItem.Final, StandardBusinessStampItem.Completed, StandardBusinessStampItem.Confidential, StandardBusinessStampItem.ForPublicRelease, StandardBusinessStampItem.NotForPublicRelease, StandardBusinessStampItem.ForComment, StandardBusinessStampItem.Void, StandardBusinessStampItem.PreliminaryResults, StandardBusinessStampItem.InformationOnly], allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"stampSettings\", void 0);\n __decorate([\n Property({ opacity: 1, author: 'Guest', width: 0, height: 0, left: 0, top: 0, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, enableCustomStamp: true, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"customStampSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, borderDashArray: 0, lineHeadStartStyle: 'Closed', lineHeadEndStyle: 'Closed', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, leaderLength: 40, resizeCursorType: CursorType.move, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"distanceSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, borderDashArray: 0, lineHeadStartStyle: 'Open', lineHeadEndStyle: 'Open', minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"perimeterSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"areaSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"radiusSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"volumeSettings\", void 0);\n __decorate([\n Property({ author: 'Guest', opacity: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"stickyNotesSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', borderColor: '#ffffff00', author: 'Guest', borderWidth: 1, width: 151, fontSize: 16, height: 24.6, fontColor: '#000', fontFamily: 'Helvetica', defaultText: 'Type Here', textAlignment: 'Left', fontStyle: FontStyle.None, allowTextOnly: false, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true, isReadonly: false, enableAutoFit: false })\n ], PdfViewer.prototype, \"freeTextSettings\", void 0);\n __decorate([\n Property({ conversionUnit: 'in', displayUnit: 'in', scaleRatio: 1, depth: 96 })\n ], PdfViewer.prototype, \"measurementSettings\", void 0);\n __decorate([\n Property({ selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null })\n ], PdfViewer.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property({ searchHighlightColor: '#fdd835', searchColor: '#8b4c12' })\n ], PdfViewer.prototype, \"textSearchColorSettings\", void 0);\n __decorate([\n Property({ displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false })\n ], PdfViewer.prototype, \"signatureDialogSettings\", void 0);\n __decorate([\n Property({ displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false })\n ], PdfViewer.prototype, \"initialDialogSettings\", void 0);\n __decorate([\n Property({ signatureItem: ['Signature', 'Initial'], saveSignatureLimit: 1, saveInitialLimit: 1, opacity: 1, strokeColor: '#000000', width: 150, height: 100, thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, allowedInteractions: ['None'], signatureDialogSettings: { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false }, initialDialogSettings: { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false } })\n ], PdfViewer.prototype, \"handWrittenSignatureSettings\", void 0);\n __decorate([\n Property({ author: 'Guest', opacity: 1, strokeColor: '#ff0000', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"inkAnnotationSettings\", void 0);\n __decorate([\n Property({ author: 'Guest', minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, skipPrint: false, skipDownload: false, allowedInteractions: ['None'] })\n ], PdfViewer.prototype, \"annotationSettings\", void 0);\n __decorate([\n Property({ enableTileRendering: true, x: 0, y: 0 })\n ], PdfViewer.prototype, \"tileRenderingSettings\", void 0);\n __decorate([\n Property({ delayPageRequestTimeOnScroll: 100 })\n ], PdfViewer.prototype, \"scrollSettings\", void 0);\n __decorate([\n Property({ name: '', value: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', backgroundColor: 'white', alignment: 'Left', isReadOnly: false, visibility: 'visible', maxLength: 0, isRequired: false, isPrint: false, tooltip: '' })\n ], PdfViewer.prototype, \"textFieldSettings\", void 0);\n __decorate([\n Property({ name: '', value: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', backgroundColor: 'white', alignment: 'Left', isReadOnly: false, visibility: 'visible', maxLength: 0, isRequired: false, isPrint: false, tooltip: '' })\n ], PdfViewer.prototype, \"passwordFieldSettings\", void 0);\n __decorate([\n Property({ name: '', isChecked: false, backgroundColor: 'white', isReadOnly: false, visibility: 'visible', isPrint: false, tooltip: '' })\n ], PdfViewer.prototype, \"checkBoxFieldSettings\", void 0);\n __decorate([\n Property({ name: '', isSelected: false, backgroundColor: 'white', isReadOnly: false, visibility: 'visible', isPrint: false, tooltip: '' })\n ], PdfViewer.prototype, \"radioButtonFieldSettings\", void 0);\n __decorate([\n Property({ name: '', value: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', backgroundColor: 'white', alignment: 'Left', isReadOnly: false, visibility: 'visible', isRequired: false, isPrint: false, tooltip: '', options: [] })\n ], PdfViewer.prototype, \"DropdownFieldSettings\", void 0);\n __decorate([\n Property({ name: '', value: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', backgroundColor: 'white', alignment: 'Left', isReadOnly: false, visibility: 'visible', isRequired: false, isPrint: false, tooltip: '', options: [] })\n ], PdfViewer.prototype, \"listBoxFieldSettings\", void 0);\n __decorate([\n Property({ contextMenuAction: 'RightClick', contextMenuItems: [ContextMenuItem.Comment, ContextMenuItem.Copy, ContextMenuItem.Cut, ContextMenuItem.Delete, ContextMenuItem.Highlight, ContextMenuItem.Paste, ContextMenuItem.Properties, ContextMenuItem.ScaleRatio, ContextMenuItem.Strikethrough, ContextMenuItem.Underline] })\n ], PdfViewer.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Complex({}, Selector)\n ], PdfViewer.prototype, \"selectedItems\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"documentLoad\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"documentUnload\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"documentLoadFailed\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"ajaxRequestFailed\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"ajaxRequestSuccess\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"validateFormFields\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"pageClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"pageChange\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"hyperlinkClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"hyperlinkMouseOver\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"zoomChange\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationAdd\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationRemove\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationPropertiesChange\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationResize\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"addSignature\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"removeSignature\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"moveSignature\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"signaturePropertiesChange\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"resizeSignature\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"signatureSelect\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationSelect\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationUnSelect\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationDoubleClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationMove\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationMoving\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationMouseover\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationMouseLeave\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"pageMouseover\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"importStart\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"exportStart\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"importSuccess\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"exportSuccess\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"importFailed\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"exportFailed\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"extractTextCompleted\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"thumbnailClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"bookmarkClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"textSelectionStart\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"textSelectionEnd\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"downloadStart\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"buttonFieldClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"downloadEnd\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"printStart\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"printEnd\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"textSearchStart\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"textSearchComplete\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"textSearchHighlight\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"ajaxRequestInitiate\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"commentAdd\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"commentEdit\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"commentDelete\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"commentSelect\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"commentStatusChanged\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"beforeAddFreeText\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldFocusOut\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldAdd\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldRemove\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldPropertiesChange\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldMouseLeave\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldMouseover\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldMove\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldResize\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldSelect\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldUnselect\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldDoubleClick\", void 0);\n __decorate([\n Collection([], PdfAnnotationBase)\n ], PdfViewer.prototype, \"annotations\", void 0);\n __decorate([\n Collection([], PdfFormFieldBase)\n ], PdfViewer.prototype, \"formFields\", void 0);\n __decorate([\n Property()\n ], PdfViewer.prototype, \"drawingObject\", void 0);\n PdfViewer = __decorate([\n NotifyPropertyChanges\n ], PdfViewer);\n return PdfViewer;\n}(Component));\nexport { PdfViewer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { PdfViewer } from '@syncfusion/ej2-pdfviewer';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `Represents the react PdfViewer Component.\n * ```tsx\n * \n * ```\n */\nvar PdfViewerComponent = /** @class */ (function (_super) {\n __extends(PdfViewerComponent, _super);\n function PdfViewerComponent(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 PdfViewerComponent.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 PdfViewerComponent;\n}(PdfViewer));\nexport { PdfViewerComponent };\napplyMixins(PdfViewerComponent, [ComponentBase, React.Component]);\n","import { createElement, Browser, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\n/**\n * The `TextMarkupAnnotation` module is used to handle text markup annotation actions of PDF viewer.\n *\n * @hidden\n */\nvar TextMarkupAnnotation = /** @class */ (function () {\n /**\n * @param pdfViewer\n * @param viewerBase\n * @private\n */\n function TextMarkupAnnotation(pdfViewer, viewerBase) {\n var _this = this;\n /**\n * @private\n */\n this.currentTextMarkupAddMode = '';\n /**\n * @private\n */\n this.selectTextMarkupCurrentPage = null;\n /**\n * @private\n */\n this.currentTextMarkupAnnotation = null;\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n this.currentAnnotationIndex = null;\n this.isAnnotationSelect = false;\n /**\n * @private\n */\n this.isDropletClicked = false;\n /**\n * @private\n */\n this.isRightDropletClicked = false;\n /**\n * @private\n */\n this.isLeftDropletClicked = false;\n /**\n * @private\n */\n this.isSelectionMaintained = false;\n this.isExtended = false;\n this.isNewAnnotation = false;\n this.selectedTextMarkup = null;\n this.multiPageCollection = [];\n this.triggerAddEvent = false;\n /**\n * @private\n */\n this.isSelectedAnnotation = false;\n this.dropletHeight = 20;\n /**\n * @private\n */\n this.annotationClickPosition = {};\n // eslint-disable-next-line\n this.maintainSelection = function (event) {\n _this.isDropletClicked = true;\n _this.pdfViewer.textSelectionModule.initiateSelectionByTouch();\n _this.isExtended = true;\n _this.pdfViewer.textSelectionModule.selectionRangeArray = [];\n };\n // eslint-disable-next-line\n this.selectionEnd = function (event) {\n if (_this.isDropletClicked) {\n _this.isDropletClicked = false;\n }\n };\n // eslint-disable-next-line\n this.annotationLeftMove = function (event) {\n if (_this.isDropletClicked) {\n _this.isLeftDropletClicked = true;\n }\n };\n // eslint-disable-next-line\n this.annotationRightMove = function (event) {\n if (_this.isDropletClicked) {\n _this.isRightDropletClicked = true;\n }\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = viewerBase;\n }\n /**\n * @private\n */\n TextMarkupAnnotation.prototype.createAnnotationSelectElement = function () {\n // eslint-disable-next-line max-len\n this.dropDivAnnotationLeft = createElement('div', { id: this.pdfViewer.element.id + '_droplet_left', className: 'e-pv-drop' });\n this.dropDivAnnotationLeft.style.borderRight = '2px solid';\n // eslint-disable-next-line max-len\n this.dropDivAnnotationRight = createElement('div', { id: this.pdfViewer.element.id + '_droplet_right', className: 'e-pv-drop' });\n this.dropDivAnnotationRight.style.borderLeft = '2px solid';\n this.dropElementLeft = createElement('div', { className: 'e-pv-droplet', id: this.pdfViewer.element.id + '_dropletspan_left' });\n this.dropElementLeft.style.transform = 'rotate(0deg)';\n this.dropDivAnnotationLeft.appendChild(this.dropElementLeft);\n this.dropElementRight = createElement('div', { className: 'e-pv-droplet', id: this.pdfViewer.element.id + '_dropletspan_right' });\n this.dropElementRight.style.transform = 'rotate(-90deg)';\n this.dropDivAnnotationRight.appendChild(this.dropElementRight);\n this.pdfViewerBase.pageContainer.appendChild(this.dropDivAnnotationLeft);\n this.pdfViewerBase.pageContainer.appendChild(this.dropDivAnnotationRight);\n this.dropElementLeft.style.top = '20px';\n this.dropElementRight.style.top = '20px';\n this.dropElementRight.style.left = '-8px';\n this.dropElementLeft.style.left = '-8px';\n this.dropDivAnnotationLeft.style.display = 'none';\n this.dropDivAnnotationRight.style.display = 'none';\n this.dropDivAnnotationLeft.addEventListener('mousedown', this.maintainSelection);\n this.dropDivAnnotationLeft.addEventListener('mousemove', this.annotationLeftMove);\n this.dropDivAnnotationLeft.addEventListener('mouseup', this.selectionEnd);\n this.dropDivAnnotationRight.addEventListener('mousedown', this.maintainSelection);\n this.dropDivAnnotationRight.addEventListener('mousemove', this.annotationRightMove);\n this.dropDivAnnotationRight.addEventListener('mouseup', this.selectionEnd);\n };\n /**\n * @param target\n * @param x\n * @param y\n * @param target\n * @param x\n * @param y\n * @param target\n * @param x\n * @param y\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.textSelect = function (target, x, y) {\n if (this.isLeftDropletClicked) {\n var leftElement = this.dropDivAnnotationRight.getBoundingClientRect();\n var rightElement = this.dropDivAnnotationLeft.getBoundingClientRect();\n var clientX = x;\n var clientY = y;\n if (target.classList.contains('e-pv-text')) {\n if ((rightElement.top - 25) > leftElement.top) {\n this.pdfViewer.textSelectionModule.textSelectionOnDrag(target, clientX, clientY, true);\n }\n else {\n this.pdfViewer.textSelectionModule.textSelectionOnDrag(target, clientX, clientY, false);\n }\n this.updateLeftposition(clientX, clientY);\n }\n }\n else if (this.isRightDropletClicked) {\n var leftElement = this.dropDivAnnotationLeft.getBoundingClientRect();\n var clientX = x;\n var clientY = y;\n if (target.classList.contains('e-pv-text')) {\n if ((clientY) >= leftElement.top) {\n this.pdfViewer.textSelectionModule.textSelectionOnDrag(target, clientX, clientY, true);\n }\n else {\n this.pdfViewer.textSelectionModule.textSelectionOnDrag(target, clientX, clientY, false);\n }\n this.updatePosition(clientX, clientY);\n }\n }\n };\n /**\n * @param hide\n * @private\n */\n TextMarkupAnnotation.prototype.showHideDropletDiv = function (hide) {\n var type = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode;\n var isEnableResizer = this.isEnableTextMarkupResizer(type);\n if (isEnableResizer && this.dropDivAnnotationLeft && this.dropDivAnnotationRight) {\n if (hide) {\n this.dropDivAnnotationLeft.style.display = 'none';\n this.dropDivAnnotationRight.style.display = 'none';\n }\n else {\n this.dropDivAnnotationLeft.style.display = '';\n this.dropDivAnnotationRight.style.display = '';\n this.updateDropletStyles(type);\n }\n }\n };\n /**\n * @param type\n * @private\n */\n TextMarkupAnnotation.prototype.isEnableTextMarkupResizer = function (type) {\n var isEnableResizer = false;\n if (type) {\n if (type === 'Highlight' && this.pdfViewer.highlightSettings.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n else if (type === 'Underline' && this.pdfViewer.underlineSettings.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n else if (type === 'Strikethrough' && this.pdfViewer.strikethroughSettings.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n else if (this.pdfViewer.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n }\n else {\n if (this.pdfViewer.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n else if (this.pdfViewer.highlightSettings.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n else if (this.pdfViewer.underlineSettings.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n else if (this.pdfViewer.strikethroughSettings.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n }\n return isEnableResizer;\n };\n TextMarkupAnnotation.prototype.updateDropletStyles = function (type) {\n if (this.isEnableTextMarkupResizer(type) && this.dropDivAnnotationLeft && this.dropDivAnnotationLeft.offsetWidth > 0) {\n this.dropDivAnnotationLeft.style.width = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropDivAnnotationRight.style.width = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropElementLeft.style.width = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropElementRight.style.width = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropDivAnnotationLeft.style.height = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropDivAnnotationRight.style.height = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropElementLeft.style.height = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropElementRight.style.height = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropElementLeft.style.top = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropElementRight.style.top = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n };\n TextMarkupAnnotation.prototype.updateAnnotationBounds = function () {\n this.isSelectionMaintained = false;\n // eslint-disable-next-line\n var annotation = this.currentTextMarkupAnnotation;\n if (annotation && annotation.isMultiSelect) {\n this.showHideDropletDiv(true);\n this.updateMultiAnnotBounds(annotation);\n }\n else if (annotation && annotation.bounds) {\n this.retreieveSelection(annotation, null);\n this.pdfViewer.textSelectionModule.maintainSelection(this.selectTextMarkupCurrentPage, false);\n this.isSelectionMaintained = true;\n window.getSelection().removeAllRanges();\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateMultiAnnotBounds = function (annotation) {\n if (!annotation.annotpageNumbers) {\n var annotationList = this.getAnnotations(annotation.pageNumber, null);\n if (annotationList) {\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === annotation.annotName) {\n annotation = annotationList[z];\n break;\n }\n }\n }\n }\n var lowestNumber = annotation.annotpageNumbers[0];\n var highestNumber = annotation.annotpageNumbers[0];\n for (var p = 0; p < annotation.annotpageNumbers.length; p++) {\n var currentPage = annotation.annotpageNumbers[p];\n if (currentPage >= highestNumber) {\n highestNumber = currentPage;\n }\n if (currentPage <= lowestNumber) {\n lowestNumber = currentPage;\n }\n }\n for (var k = lowestNumber; k <= highestNumber; k++) {\n var annotationList = this.getAnnotations(k, null);\n if (annotationList) {\n for (var j = 0; j < annotation.annotNameCollection.length; j++) {\n // eslint-disable-next-line\n var currentAnnot = annotation.annotNameCollection[j];\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === currentAnnot) {\n // eslint-disable-next-line\n var newAnnotation = annotationList[z];\n this.retreieveSelection(newAnnotation, null);\n this.pdfViewer.textSelectionModule.maintainSelection(newAnnotation.pageNumber, false);\n }\n }\n }\n }\n }\n this.isSelectionMaintained = true;\n window.getSelection().removeAllRanges();\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.retreieveSelection = function (annotation, element) {\n for (var k = 0; k < annotation.bounds.length; k++) {\n // eslint-disable-next-line\n var bound = annotation.bounds[k];\n var x = (bound.left ? bound.left : bound.Left) * this.pdfViewerBase.getZoomFactor();\n var y = (bound.top ? bound.top : bound.Top) * this.pdfViewerBase.getZoomFactor();\n var width = (bound.width ? bound.width : bound.Width) * this.pdfViewerBase.getZoomFactor();\n var height = bound.height ? bound.height : bound.Height;\n // eslint-disable-next-line\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + annotation.pageNumber);\n if (textLayer) {\n // eslint-disable-next-line\n var textDivs = textLayer.childNodes;\n for (var n = 0; n < textDivs.length; n++) {\n if (textDivs[n]) {\n // eslint-disable-next-line\n var rangebounds = textDivs[n].getBoundingClientRect();\n var top_1 = this.getClientValueTop(rangebounds.top, annotation.pageNumber);\n // eslint-disable-next-line max-len\n var currentLeft = rangebounds.left - this.pdfViewerBase.getElement('_pageDiv_' + annotation.pageNumber).getBoundingClientRect().left;\n var totalLeft = currentLeft + rangebounds.width;\n // eslint-disable-next-line\n var textDiVLeft = parseInt(textDivs[n].style.left);\n // eslint-disable-next-line\n var currentTop = parseInt(textDivs[n].style.top);\n var isLeftBounds = this.pdfViewer.textSelectionModule.checkLeftBounds(currentLeft, textDiVLeft, totalLeft, x);\n var isTopBounds = this.pdfViewer.textSelectionModule.checkTopBounds(top_1, currentTop, y);\n if (isLeftBounds && isTopBounds) {\n element = textDivs[n];\n break;\n }\n }\n }\n if (element != null) {\n // eslint-disable-next-line\n var boundingRect = this.pdfViewerBase.getElement('_textLayer_' + annotation.pageNumber).getBoundingClientRect();\n this.pdfViewer.textSelectionModule.textSelectionOnMouseMove(element, x + boundingRect.left, y + boundingRect.top, false);\n if ((annotation.bounds.length - 1) === k) {\n // eslint-disable-next-line max-len\n this.pdfViewer.textSelectionModule.textSelectionOnMouseMove(element, x + boundingRect.left + width, y + boundingRect.top, false);\n }\n }\n }\n }\n };\n /**\n * @param x\n * @param y\n * @param isSelected\n * @private\n */\n TextMarkupAnnotation.prototype.updatePosition = function (x, y, isSelected) {\n this.showHideDropletDiv(false);\n var pageTopValue = this.pdfViewerBase.pageSize[this.pdfViewerBase.currentPageNumber - 1].top;\n var topClientValue = this.getClientValueTop(y, this.pdfViewerBase.currentPageNumber - 1);\n // eslint-disable-next-line\n var rightDivElement = document.getElementById(this.pdfViewer.element.id + '_droplet_right');\n if (isSelected) {\n // eslint-disable-next-line max-len\n rightDivElement.style.top = topClientValue * this.pdfViewerBase.getZoomFactor() + pageTopValue * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n rightDivElement.style.top = topClientValue + pageTopValue * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n // eslint-disable-next-line max-len\n rightDivElement.style.left = x + this.pdfViewerBase.viewerContainer.scrollLeft - this.pdfViewerBase.viewerContainer.getBoundingClientRect().left + 'px';\n };\n /**\n * @param x\n * @param y\n * @param isSelected\n * @param x\n * @param y\n * @param isSelected\n * @private\n */\n TextMarkupAnnotation.prototype.updateLeftposition = function (x, y, isSelected) {\n this.showHideDropletDiv(false);\n var pageTopValue = this.pdfViewerBase.pageSize[this.pdfViewerBase.currentPageNumber - 1].top;\n var topClientValue = this.getClientValueTop(y, this.pdfViewerBase.currentPageNumber - 1);\n // eslint-disable-next-line\n var leftDivElement = document.getElementById(this.pdfViewer.element.id + '_droplet_left');\n leftDivElement.style.display = '';\n if (isSelected) {\n // eslint-disable-next-line max-len\n leftDivElement.style.top = topClientValue * this.pdfViewerBase.getZoomFactor() + pageTopValue * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n leftDivElement.style.top = topClientValue + pageTopValue * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n // eslint-disable-next-line max-len\n leftDivElement.style.left = x + this.pdfViewerBase.viewerContainer.scrollLeft - this.pdfViewerBase.viewerContainer.getBoundingClientRect().left - (this.dropletHeight * this.pdfViewerBase.getZoomFactor()) + 'px';\n };\n TextMarkupAnnotation.prototype.getClientValueTop = function (clientValue, pageNumber) {\n if (this.pdfViewerBase.getElement('_pageDiv_' + pageNumber)) {\n // eslint-disable-next-line max-len\n return clientValue - this.pdfViewerBase.getElement('_pageDiv_' + pageNumber).getBoundingClientRect().top;\n }\n else {\n return clientValue;\n }\n };\n /**\n * @param textMarkupAnnotations\n * @param pageNumber\n * @param isImportTextMarkup\n * @param textMarkupAnnotations\n * @param pageNumber\n * @param isImportTextMarkup\n * @param textMarkupAnnotations\n * @param pageNumber\n * @param isImportTextMarkup\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.renderTextMarkupAnnotationsInPage = function (textMarkupAnnotations, pageNumber, isImportTextMarkup) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (isImportTextMarkup) {\n this.renderTextMarkupAnnotations(null, pageNumber, canvas, this.pdfViewerBase.getZoomFactor());\n this.renderTextMarkupAnnotations(textMarkupAnnotations, pageNumber, canvas, this.pdfViewerBase.getZoomFactor(), true);\n }\n else {\n this.renderTextMarkupAnnotations(textMarkupAnnotations, pageNumber, canvas, this.pdfViewerBase.getZoomFactor());\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.renderTextMarkupAnnotations = function (textMarkupAnnotations, pageNumber, canvas, factor, isImportAction) {\n if (canvas) {\n var context = canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.setLineDash([]);\n // eslint-disable-next-line\n var annotations = void 0;\n if (!isImportAction) {\n annotations = this.getAnnotations(pageNumber, textMarkupAnnotations);\n }\n else {\n annotations = textMarkupAnnotations;\n }\n if (annotations) {\n for (var i = 0; i < annotations.length; i++) {\n // eslint-disable-next-line\n var annotation = annotations[i];\n var annotationObject = null;\n if (annotation.TextMarkupAnnotationType) {\n // eslint-disable-next-line max-len\n annotation.annotationAddMode = this.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n if (!annotation.Author) {\n // eslint-disable-next-line max-len\n annotation.Author = this.pdfViewer.annotationModule.updateAnnotationAuthor('textMarkup', annotation.TextMarkupAnnotationType);\n }\n if (!annotation.Subject) {\n annotation.Subject = annotation.TextMarkupAnnotationType;\n }\n if (annotation.AnnotationSettings && annotation.AnnotationSettings.isLock) {\n annotation.AnnotationSettings = { isLock: annotation.AnnotationSettings.isLock };\n }\n else {\n annotation.AnnotationSettings = this.getAnnotationSettings(annotation.TextMarkupAnnotationType);\n }\n var isPrint_1 = true;\n if (annotation.annotationAddMode === 'Imported Annotation') {\n isPrint_1 = annotation.IsPrint;\n }\n else {\n isPrint_1 = this.getIsPrintValue(annotation.TextMarkupAnnotationType);\n }\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n // eslint-disable-next-line max-len\n annotationObject = {\n textMarkupAnnotationType: annotation.TextMarkupAnnotationType, color: annotation.Color, allowedInteractions: annotation.allowedInteractions, opacity: annotation.Opacity, bounds: annotation.Bounds, author: annotation.Author, subject: annotation.Subject, modifiedDate: annotation.ModifiedDate, note: annotation.Note, rect: annotation.Rect,\n // eslint-disable-next-line max-len\n annotName: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, shapeAnnotationType: 'textMarkup', pageNumber: pageNumber,\n textMarkupContent: annotation.TextMarkupContent, textMarkupStartIndex: 0, textMarkupEndIndex: 0, annotationSelectorSettings: this.getSettings(annotation),\n // eslint-disable-next-line max-len\n customData: this.pdfViewer.annotation.getCustomData(annotation), annotationAddMode: annotation.annotationAddMode, annotationSettings: annotation.AnnotationSettings, isPrint: isPrint_1, isCommentLock: annotation.IsCommentLock\n };\n if (annotation.IsMultiSelect) {\n annotationObject.annotNameCollection = annotation.AnnotNameCollection;\n annotationObject.annotpageNumbers = annotation.AnnotpageNumbers;\n annotationObject.isMultiSelect = annotation.IsMultiSelect;\n }\n if (annotation.textMarkupContent && annotation.textMarkupContent !== '') {\n annotationObject.textMarkupContent = annotation.textMarkupContent;\n annotationObject.textMarkupStartIndex = annotation.textMarkupStartIndex;\n annotationObject.textMarkupEndIndex = annotation.textMarkupEndIndex;\n }\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_textMarkup');\n if (this.isAddAnnotationProgramatically) {\n // eslint-disable-next-line\n var settings = {\n opacity: annotationObject.opacity, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n // eslint-disable-next-line\n width: annotationObject.bounds.width, height: annotationObject.bounds.height\n };\n this.pdfViewer.fireAnnotationAdd(annotationObject.pageNumber, annotationObject.annotName, annotation.TextMarkupAnnotationType, annotationObject.bounds, settings);\n }\n }\n // eslint-disable-next-line max-len\n var type = annotation.TextMarkupAnnotationType ? annotation.TextMarkupAnnotationType : annotation.textMarkupAnnotationType;\n // eslint-disable-next-line\n var annotBounds = annotation.Bounds ? annotation.Bounds : annotation.bounds;\n var opacity = annotation.Opacity ? annotation.Opacity : annotation.opacity;\n var color = annotation.Color ? annotation.Color : annotation.color;\n var isPrint = true;\n if (annotation.TextMarkupAnnotationType) {\n isPrint = annotation.IsPrint;\n }\n if (annotation.textMarkupAnnotationType) {\n isPrint = annotation.isPrint;\n }\n switch (type) {\n case 'Highlight':\n this.renderHighlightAnnotation(annotBounds, opacity, color, context, factor, isPrint, pageNumber);\n break;\n case 'Strikethrough':\n this.renderStrikeoutAnnotation(annotBounds, opacity, color, context, factor, pageNumber, isPrint);\n break;\n case 'Underline':\n this.renderUnderlineAnnotation(annotBounds, opacity, color, context, factor, pageNumber, isPrint);\n break;\n }\n }\n }\n var isMaintainedSelector = false;\n if (this.currentTextMarkupAnnotation && this.currentTextMarkupAnnotation.annotpageNumbers) {\n for (var m = 0; m < this.currentTextMarkupAnnotation.annotpageNumbers.length; m++) {\n if (pageNumber === this.currentTextMarkupAnnotation.annotpageNumbers[m]) {\n isMaintainedSelector = true;\n this.isAnnotationSelect = false;\n break;\n }\n }\n }\n if ((pageNumber === this.selectTextMarkupCurrentPage) || isMaintainedSelector) {\n if (!this.isAnnotationSelect) {\n this.maintainAnnotationSelection();\n }\n else {\n this.isAnnotationSelect = false;\n }\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getSettings = function (annotation) {\n var selector;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else {\n selector = this.getSelector(annotation.TextMarkupAnnotationType);\n }\n return selector;\n };\n /**\n * @param type\n * @private\n */\n TextMarkupAnnotation.prototype.drawTextMarkupAnnotations = function (type) {\n this.isTextMarkupAnnotationMode = true;\n this.currentTextMarkupAddMode = type;\n var isCleared = true;\n this.multiPageCollection = [];\n var selectionObject = this.pdfViewer.textSelectionModule ? this.pdfViewer.textSelectionModule.selectionRangeArray : [];\n if (selectionObject.length > 0 && !this.isSelectionMaintained) {\n this.convertSelectionToTextMarkup(type, selectionObject, this.pdfViewerBase.getZoomFactor());\n }\n if (this.isEnableTextMarkupResizer(type) && this.isExtended && window.getSelection().toString()) {\n var pageBounds = this.getDrawnBounds();\n if (pageBounds[0] && pageBounds[0].bounds) {\n // eslint-disable-next-line\n var currentAnnot = this.currentTextMarkupAnnotation;\n for (var k = 0; k < pageBounds.length; k++) {\n if (currentAnnot && currentAnnot.pageNumber === pageBounds[k].pageIndex) {\n this.currentTextMarkupAnnotation = currentAnnot;\n this.selectTextMarkupCurrentPage = pageBounds[k].pageIndex;\n this.updateTextMarkupAnnotationBounds(pageBounds, k);\n }\n else {\n if (currentAnnot) {\n if (type === '') {\n type = currentAnnot.textMarkupAnnotationType;\n }\n }\n if (!currentAnnot.isMultiSelect) {\n var isMultiSelect = false;\n if (this.isMultiAnnotation(type)) {\n this.multiPageCollection.push(currentAnnot);\n isMultiSelect = true;\n }\n // eslint-disable-next-line max-len\n this.drawTextMarkups(type, pageBounds[k].bounds, pageBounds[k].pageIndex, pageBounds[k].rect, this.pdfViewerBase.getZoomFactor(), pageBounds[k].textContent, pageBounds[k].startIndex, pageBounds[k].endIndex, isMultiSelect);\n }\n else {\n if (currentAnnot.isMultiSelect && currentAnnot.annotNameCollection) {\n this.modifyCurrentAnnotation(currentAnnot, pageBounds, k);\n }\n }\n }\n }\n }\n }\n else if (window.getSelection().toString()) {\n var pageBounds = this.getDrawnBounds();\n var isMultiSelect = this.isMultiPageAnnotations(pageBounds, type);\n if (pageBounds.length > 0) {\n for (var i = 0; i < pageBounds.length; i++) {\n if (type === '') {\n isCleared = false;\n }\n // eslint-disable-next-line max-len\n this.drawTextMarkups(type, pageBounds[i].bounds, pageBounds[i].pageIndex, pageBounds[i].rect, this.pdfViewerBase.getZoomFactor(), pageBounds[i].textContent, pageBounds[i].startIndex, pageBounds[i].endIndex, isMultiSelect);\n }\n }\n }\n if (this.multiPageCollection) {\n for (var j = 0; j < this.multiPageCollection.length; j++) {\n this.updateAnnotationNames(this.multiPageCollection[j], this.multiPageCollection[j].pageNumber);\n }\n }\n this.isExtended = false;\n this.isSelectionMaintained = false;\n // this.pdfViewerBase.annotationHelper.redoCollection = [];\n if (isCleared && this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n if (this.isEnableTextMarkupResizer(type)) {\n this.updateAnnotationBounds();\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.isMultiPageAnnotations = function (pageBounds, type) {\n var isMultiSelect = false;\n for (var n = 0; n < pageBounds.length; n++) {\n if (pageBounds[n].pageIndex !== pageBounds[0].pageIndex && this.isMultiAnnotation(type)) {\n isMultiSelect = true;\n break;\n }\n }\n return isMultiSelect;\n };\n TextMarkupAnnotation.prototype.isMultiAnnotation = function (type) {\n var isSelection = false;\n if (type === 'Highlight' && this.pdfViewer.highlightSettings.enableMultiPageAnnotation) {\n isSelection = true;\n }\n else if (type === 'Underline' && this.pdfViewer.underlineSettings.enableMultiPageAnnotation) {\n isSelection = true;\n }\n else if (type === 'Strikethrough' && this.pdfViewer.strikethroughSettings.enableMultiPageAnnotation) {\n isSelection = true;\n }\n else if (this.pdfViewer.enableMultiPageAnnotation) {\n isSelection = true;\n }\n return isSelection;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.modifyCurrentAnnotation = function (currentAnnot, pageBounds, index) {\n for (var c = 0; c < currentAnnot.annotNameCollection.length; c++) {\n // eslint-disable-next-line\n var currentAnnots = currentAnnot.annotNameCollection[c];\n var annotationList = this.getAnnotations(pageBounds[index].pageIndex, null);\n if (annotationList) {\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === currentAnnots) {\n this.currentTextMarkupAnnotation = annotationList[z];\n this.selectTextMarkupCurrentPage = pageBounds[index].pageIndex;\n this.updateTextMarkupAnnotationBounds(pageBounds, index);\n break;\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.drawAnnotationSelector = function (newAnnotation, annotation, newcanvas) {\n for (var i = 0; i < newAnnotation.bounds.length; i++) {\n // eslint-disable-next-line\n var bound = newAnnotation.bounds[i];\n var x = bound.left ? bound.left : bound.Left;\n var y = bound.top ? bound.top : bound.Top;\n var width = bound.width ? bound.width : bound.Width;\n var height = bound.height ? bound.height : bound.Height;\n if (!newcanvas) {\n newcanvas = this.pdfViewerBase.getElement('_annotationCanvas_' + newAnnotation.pageNumber);\n }\n // eslint-disable-next-line max-len\n this.drawAnnotationSelectRect(newcanvas, this.getMagnifiedValue(x - 0.5, this.pdfViewerBase.getZoomFactor()), this.getMagnifiedValue(y - 0.5, this.pdfViewerBase.getZoomFactor()), this.getMagnifiedValue(width + 0.5, this.pdfViewerBase.getZoomFactor()), this.getMagnifiedValue(height + 0.5, this.pdfViewerBase.getZoomFactor()), annotation);\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.selectMultiPageAnnotations = function (annotation) {\n for (var k = 0; k < annotation.annotNameCollection.length; k++) {\n // eslint-disable-next-line\n var currentAnnot = annotation.annotNameCollection[k];\n if (currentAnnot !== annotation.annotName) {\n for (var p = 0; p < annotation.annotpageNumbers.length; p++) {\n var currentPage = annotation.annotpageNumbers[p];\n var annotationList = this.getAnnotations(currentPage, null);\n if (annotationList) {\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === currentAnnot) {\n // eslint-disable-next-line\n var newAnnotation = annotationList[z];\n this.drawAnnotationSelector(newAnnotation, annotation);\n }\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.deletMultiPageAnnotation = function (annotation) {\n for (var k = 0; k < annotation.annotNameCollection.length; k++) {\n // eslint-disable-next-line\n var currentAnnot = annotation.annotNameCollection[k];\n if (currentAnnot !== annotation.annotName) {\n for (var p = 0; p < annotation.annotpageNumbers.length; p++) {\n var currentPage = annotation.annotpageNumbers[p];\n var annotationList = this.getAnnotations(currentPage, null);\n if (annotationList) {\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === currentAnnot) {\n // eslint-disable-next-line\n var newAnnotation = annotationList[z];\n var deletedAnnotation = null;\n deletedAnnotation = annotationList.splice(z, 1)[0];\n this.pdfViewer.annotationModule.addAction(currentPage, z, deletedAnnotation, 'Text Markup Deleted', null);\n this.currentAnnotationIndex = z;\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(deletedAnnotation, 'textMarkup');\n var removeDiv = document.getElementById(deletedAnnotation.annotName);\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.remove();\n }\n }\n this.pdfViewer.annotationModule.updateAnnotationCollection(newAnnotation);\n this.manageAnnotations(annotationList, currentPage);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.updateImportAnnotationCollection(newAnnotation, newAnnotation.pageNumber, 'textMarkupAnnotation');\n var annotationId = newAnnotation.annotName;\n // eslint-disable-next-line\n var annotationBounds = newAnnotation.bounds;\n this.pdfViewer.annotationModule.renderAnnotations(currentPage, null, null, null);\n }\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.modifyMultiPageAnnotations = function (annotation, property, value) {\n for (var k = 0; k < annotation.annotNameCollection.length; k++) {\n // eslint-disable-next-line\n var currentAnnot = annotation.annotNameCollection[k];\n if (currentAnnot !== annotation.annotName) {\n for (var p = 0; p < annotation.annotpageNumbers.length; p++) {\n var currentPage = annotation.annotpageNumbers[p];\n var annotationList = this.getAnnotations(currentPage, null);\n if (annotationList) {\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === currentAnnot) {\n if (property === 'Color') {\n annotationList[z].color = value;\n }\n else {\n annotationList[z].opacity = value;\n }\n annotationList[z].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.currentAnnotationIndex = z;\n if (status === null || status === 'changed') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.addAction(annotationList[z].pageNumber, z, annotationList[z], 'Text Markup Property modified', property);\n }\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationModifiedDate(annotationList[z]);\n this.manageAnnotations(annotationList, currentPage);\n this.pdfViewer.annotationModule.renderAnnotations(currentPage, null, null, null);\n }\n }\n }\n }\n }\n }\n };\n TextMarkupAnnotation.prototype.convertSelectionToTextMarkup = function (type, selectionObject, factor) {\n var isMultiSelect = false;\n this.triggerAddEvent = false;\n this.multiPageCollection = [];\n for (var i = 0; i < selectionObject.length; i++) {\n var textValue = selectionObject[i].textContent;\n // eslint-disable-next-line\n var indexes = void 0;\n if (selectionObject[i].startNode === selectionObject[i].endNode) {\n var parentText = document.getElementById(selectionObject[i].startNode).textContent;\n indexes = this.getIndexNumbers(selectionObject[i].pageNumber, textValue, parentText);\n }\n else {\n indexes = this.getIndexNumbers(selectionObject[i].pageNumber, textValue);\n }\n if (!isMultiSelect) {\n for (var n = 1; n < selectionObject.length; n++) {\n if (selectionObject[n].pageNumber !== selectionObject[0].pageNumber && this.isMultiAnnotation(type)) {\n isMultiSelect = true;\n break;\n }\n }\n }\n if (this.isMultiAnnotation(type) && (selectionObject.length - 1) === i) {\n this.triggerAddEvent = true;\n }\n // eslint-disable-next-line max-len\n this.drawTextMarkups(type, selectionObject[i].rectangleBounds, selectionObject[i].pageNumber, selectionObject[i].bound, factor, textValue, indexes.startIndex, indexes.endIndex, isMultiSelect);\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateTextMarkupAnnotationBounds = function (pageBounds, currentIndex) {\n if (this.currentTextMarkupAnnotation) {\n var pageAnnotations = this.getAnnotations(pageBounds[currentIndex].pageIndex, null);\n var annotation = null;\n if (pageAnnotations) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (JSON.stringify(this.currentTextMarkupAnnotation) === JSON.stringify(pageAnnotations[i])) {\n pageAnnotations[i].bounds = pageBounds[currentIndex].bounds;\n pageAnnotations[i].textMarkupContent = pageBounds[currentIndex].textContent;\n pageAnnotations[i].textMarkupStartIndex = pageBounds[currentIndex].startIndex;\n pageAnnotations[i].textMarkupEndIndex = pageBounds[currentIndex].endIndex;\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n annotation = pageAnnotations[i];\n }\n }\n this.manageAnnotations(pageAnnotations, pageBounds[currentIndex].pageIndex);\n this.currentTextMarkupAnnotation = null;\n this.pdfViewer.annotationModule.renderAnnotations(pageBounds[currentIndex].pageIndex, null, null, null);\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n if (annotation) {\n // eslint-disable-next-line\n var settings = { opacity: annotation.opacity, color: annotation.color, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate };\n // eslint-disable-next-line max-len\n var multiPageCollection = this.multiPageCollectionList(annotation);\n if (multiPageCollection.length > 0) {\n if ((pageBounds.length - 1) === currentIndex) {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationResize(pageBounds[currentIndex].pageIndex, annotation.annotName, annotation.textMarkupAnnotationType, annotation.bounds, settings, annotation.textMarkupContent, annotation.textMarkupStartIndex, annotation.textMarkupEndIndex, null, multiPageCollection);\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationResize(pageBounds[currentIndex].pageIndex, annotation.annotName, annotation.textMarkupAnnotationType, annotation.bounds, settings, annotation.textMarkupContent, annotation.textMarkupStartIndex, annotation.textMarkupEndIndex, null);\n }\n }\n // eslint-disable-next-line max-len\n this.currentAnnotationIndex = null;\n this.selectTextMarkupCurrentPage = null;\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.multiPageCollectionList = function (annotation) {\n var multiPageCollectionList = [];\n if (annotation.isMultiSelect && annotation.annotNameCollection) {\n multiPageCollectionList.push(annotation);\n for (var k = 0; k < annotation.annotNameCollection.length; k++) {\n // eslint-disable-next-line\n var currentAnnot = annotation.annotNameCollection[k];\n if (currentAnnot !== annotation.annotName) {\n for (var p = 0; p < annotation.annotpageNumbers.length; p++) {\n var currentPage = annotation.annotpageNumbers[p];\n var annotationList = this.getAnnotations(currentPage, null);\n if (annotationList) {\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === currentAnnot) {\n multiPageCollectionList.push(annotationList[z]);\n }\n }\n }\n }\n }\n }\n }\n return multiPageCollectionList;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateAnnotationNames = function (annotations, pageNumber) {\n if (annotations) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n var annotation = null;\n if (pageAnnotations) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotations.annotName === pageAnnotations[i].annotName) {\n // eslint-disable-next-line\n var annotNamesCollections = [];\n // eslint-disable-next-line\n var annotpageNumbers = [];\n for (var p = 0; p < this.multiPageCollection.length; p++) {\n annotNamesCollections.push(this.multiPageCollection[p].annotName);\n annotpageNumbers.push(this.multiPageCollection[p].pageNumber);\n }\n pageAnnotations[i].isMultiSelect = true;\n pageAnnotations[i].annotNameCollection = annotNamesCollections;\n pageAnnotations[i].annotpageNumbers = annotpageNumbers;\n annotation = pageAnnotations[i];\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateAnnotationContent = function (annotation, pageBound) {\n if (annotation) {\n var pageAnnotations = this.getAnnotations(this.selectTextMarkupCurrentPage, null);\n var annotation_1 = null;\n if (pageAnnotations) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (JSON.stringify(this.currentTextMarkupAnnotation) === JSON.stringify(pageAnnotations[i])) {\n pageAnnotations[i].textMarkupContent = pageBound.textContent;\n pageAnnotations[i].textMarkupStartIndex = pageBound.startIndex;\n pageAnnotations[i].textMarkupEndIndex = pageBound.endIndex;\n annotation_1 = pageAnnotations[i];\n }\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], this.selectTextMarkupCurrentPage);\n }\n this.manageAnnotations(pageAnnotations, this.selectTextMarkupCurrentPage);\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.drawTextMarkups = function (type, bounds, pageNumber, rect, factor, textContent, startIndex, endIndex, isMultiSelect) {\n var annotation = null;\n this.isNewAnnotation = false;\n var author = 'Guest';\n var subject;\n var context = this.getPageContext(pageNumber);\n var modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.highlightColor = this.highlightColor ? this.highlightColor : this.pdfViewer.highlightSettings.color;\n this.underlineColor = this.underlineColor ? this.underlineColor : this.pdfViewer.underlineSettings.color;\n this.strikethroughColor = this.strikethroughColor ? this.strikethroughColor : this.pdfViewer.strikethroughSettings.color;\n this.highlightOpacity = this.pdfViewer.highlightSettings.opacity;\n this.underlineOpacity = this.pdfViewer.underlineSettings.opacity;\n this.strikethroughOpacity = this.pdfViewer.strikethroughSettings.opacity;\n this.annotationAddMode = 'UI Drawn Annotation';\n // eslint-disable-next-line\n var allowedInteractions;\n if (context) {\n context.setLineDash([]);\n switch (type) {\n case 'Highlight':\n this.isNewAnnotation = true;\n subject = 'Highlight';\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.highlightSettings.author !== 'Guest' && this.pdfViewer.highlightSettings.author) ? this.pdfViewer.highlightSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n allowedInteractions = this.pdfViewer.highlightSettings.allowedInteractions ? this.pdfViewer.highlightSettings.allowedInteractions : 'None';\n // eslint-disable-next-line max-len\n annotation = this.getAddedAnnotation(type, this.highlightColor, this.highlightOpacity, bounds, author, subject, modifiedDate, '', false, rect, pageNumber, textContent, startIndex, endIndex, isMultiSelect, allowedInteractions);\n if (annotation) {\n // eslint-disable-next-line max-len\n this.renderHighlightAnnotation(annotation.bounds, annotation.opacity, annotation.color, context, factor, annotation.isPrint, pageNumber);\n }\n break;\n case 'Strikethrough':\n this.isNewAnnotation = true;\n subject = 'Strikethrough';\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.strikethroughSettings.author !== 'Guest' && this.pdfViewer.strikethroughSettings.author) ? this.pdfViewer.strikethroughSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n allowedInteractions = this.pdfViewer.strikethroughSettings.allowedInteractions ? this.pdfViewer.strikethroughSettings.allowedInteractions : 'None';\n // eslint-disable-next-line max-len\n annotation = this.getAddedAnnotation(type, this.strikethroughColor, this.strikethroughOpacity, bounds, author, subject, modifiedDate, '', false, rect, pageNumber, textContent, startIndex, endIndex, isMultiSelect, allowedInteractions);\n if (annotation) {\n // eslint-disable-next-line max-len\n this.renderStrikeoutAnnotation(annotation.bounds, annotation.opacity, annotation.color, context, factor, pageNumber, annotation.isPrint);\n }\n break;\n case 'Underline':\n this.isNewAnnotation = true;\n subject = 'Underline';\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.underlineSettings.author !== 'Guest' && this.pdfViewer.underlineSettings.author) ? this.pdfViewer.underlineSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n allowedInteractions = this.pdfViewer.underlineSettings.allowedInteractions ? this.pdfViewer.underlineSettings.allowedInteractions : 'None';\n // eslint-disable-next-line max-len\n annotation = this.getAddedAnnotation(type, this.underlineColor, this.underlineOpacity, bounds, author, subject, modifiedDate, '', false, rect, pageNumber, textContent, startIndex, endIndex, isMultiSelect, allowedInteractions);\n if (annotation) {\n // eslint-disable-next-line max-len\n this.renderUnderlineAnnotation(annotation.bounds, annotation.opacity, annotation.color, context, factor, pageNumber, annotation.isPrint);\n }\n break;\n }\n this.isNewAnnotation = false;\n if (annotation) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var settings = { opacity: annotation.opacity, color: annotation.color, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate };\n var index = this.pdfViewer.annotationModule.actionCollection[this.pdfViewer.annotationModule.actionCollection.length - 1].index;\n // eslint-disable-next-line max-len\n if (this.isMultiAnnotation(type)) {\n if (this.triggerAddEvent) {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(pageNumber, annotation.annotName, type, annotation.bounds, settings, textContent, startIndex, endIndex, null, this.multiPageCollection);\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(pageNumber, annotation.annotName, type, annotation.bounds, settings, textContent, startIndex, endIndex);\n }\n }\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode && this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createPropertyTools(type);\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.retreiveTextIndex = function (annotation) {\n if (annotation.textMarkupContent === '') {\n this.retreieveSelection(annotation, null);\n var pageBounds = this.getDrawnBounds();\n window.getSelection().removeAllRanges();\n if (pageBounds[0] && pageBounds[0].bounds) {\n this.updateAnnotationContent(annotation, pageBounds[0]);\n annotation.textMarkupContent = pageBounds[0].textContent;\n annotation.textMarkupStartIndex = pageBounds[0].startIndex;\n annotation.textMarkupEndIndex = pageBounds[0].endIndex;\n }\n }\n return annotation;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.renderHighlightAnnotation = function (bounds, opacity, color, context, factor, isPrint, pageIndex) {\n var zoomRatio = this.pdfViewerBase.getZoomRatio(factor);\n for (var i = 0; i < bounds.length; i++) {\n // eslint-disable-next-line\n var bound = bounds[i];\n context.beginPath();\n var x = bound.X ? bound.X : bound.left;\n var y = bound.Y ? bound.Y : bound.top;\n var width = bound.Width ? bound.Width : bound.width;\n var height = bound.Height ? bound.Height : bound.height;\n x = x ? x : bound.x;\n y = y ? y : bound.y;\n // The highlighted position is slightly increased. So Subtract -1 from the height. \n height = height - 1;\n if (context.canvas.id === this.pdfViewer.element.id + '_print_annotation_layer_' + pageIndex) {\n if (isPrint) {\n // eslint-disable-next-line max-len\n context.rect((x * zoomRatio), (y * zoomRatio), (width * zoomRatio), (height * zoomRatio));\n context.globalAlpha = opacity * 0.5;\n context.closePath();\n context.fillStyle = color;\n context.msFillRule = 'nonzero';\n context.fill();\n }\n }\n else {\n // eslint-disable-next-line max-len\n context.rect((x * zoomRatio), (y * zoomRatio), (width * zoomRatio), (height * zoomRatio));\n context.globalAlpha = opacity * 0.5;\n context.closePath();\n context.fillStyle = color;\n context.msFillRule = 'nonzero';\n context.fill();\n }\n }\n context.save();\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.renderStrikeoutAnnotation = function (bounds, opacity, color, context, factor, pageNumber, isPrint) {\n for (var i = 0; i < bounds.length; i++) {\n // eslint-disable-next-line\n var bound = this.getProperBounds(bounds[i]);\n var pageDetails = this.pdfViewerBase.pageSize[pageNumber];\n var factorRatio = this.pdfViewerBase.getZoomRatio(factor);\n if (context.canvas.id === this.pdfViewer.element.id + '_print_annotation_layer_' + pageNumber) {\n if (isPrint) {\n if (pageDetails.rotation === 1) {\n // eslint-disable-next-line max-len\n this.drawLine(opacity, (bound.x + (bound.width / 2)), bound.y, bound.width, bound.height, color, factorRatio, context, pageNumber);\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n this.drawLine(opacity, bound.x, (bound.y + (bound.height / 2)), bound.width, bound.height, color, factorRatio, context, pageNumber);\n }\n else if (pageDetails.rotation === 3) {\n this.drawLine(opacity, bound.x, bound.y, (bound.width / 2), bound.height, color, factorRatio, context, pageNumber);\n }\n else {\n this.drawLine(opacity, bound.x, bound.y, bound.width, (bound.height / 2), color, factorRatio, context, pageNumber);\n }\n }\n }\n else {\n if (pageDetails.rotation === 1) {\n // eslint-disable-next-line max-len\n this.drawLine(opacity, (bound.x + (bound.width / 2)), bound.y, bound.width, bound.height, color, factorRatio, context, pageNumber);\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n this.drawLine(opacity, bound.x, (bound.y + (bound.height / 2)), bound.width, bound.height, color, factorRatio, context, pageNumber);\n }\n else if (pageDetails.rotation === 3) {\n this.drawLine(opacity, bound.x, bound.y, (bound.width / 2), bound.height, color, factorRatio, context, pageNumber);\n }\n else {\n this.drawLine(opacity, bound.x, bound.y, bound.width, (bound.height / 2), color, factorRatio, context, pageNumber);\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.renderUnderlineAnnotation = function (bounds, opacity, color, context, factor, pageNumber, isPrint) {\n for (var i = 0; i < bounds.length; i++) {\n // eslint-disable-next-line\n var boundValues = this.getProperBounds(bounds[i]);\n var factorRatio = this.pdfViewerBase.getZoomRatio(factor);\n if (context.canvas.id === this.pdfViewer.element.id + '_print_annotation_layer_' + pageNumber) {\n if (isPrint) {\n // eslint-disable-next-line max-len\n this.drawLine(opacity, boundValues.x, boundValues.y, boundValues.width, boundValues.height, color, factorRatio, context, pageNumber);\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.drawLine(opacity, boundValues.x, boundValues.y, boundValues.width, boundValues.height, color, factorRatio, context, pageNumber);\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getProperBounds = function (bound) {\n var x = bound.X ? bound.X : bound.left;\n var y = bound.Y ? bound.Y : bound.top;\n var width = bound.Width ? bound.Width : bound.width;\n var height = bound.Height ? bound.Height : bound.height;\n x = x ? x : bound.x;\n y = y ? y : bound.y;\n return { x: x, y: y, width: width, height: height };\n };\n // eslint-disable-next-line max-len\n TextMarkupAnnotation.prototype.drawLine = function (opacity, x, y, width, height, color, factor, context, pageNumber) {\n context.globalAlpha = opacity;\n if (isBlazor()) {\n y = y - 1;\n }\n height = height - 1;\n context.beginPath();\n var pageDetails = this.pdfViewerBase.pageSize[pageNumber];\n if (pageDetails.rotation === 1) {\n context.moveTo((x * factor), (y * factor));\n context.lineTo((x * factor), (y + height) * factor);\n }\n else if (pageDetails.rotation === 2) {\n context.moveTo((x * factor), (y * factor));\n context.lineTo((width + x) * factor, (y * factor));\n }\n else if (pageDetails.rotation === 3) {\n context.moveTo((width + x) * factor, (y * factor));\n context.lineTo((width + x) * factor, (y + height) * factor);\n }\n else {\n context.moveTo((x * factor), (y + height) * factor);\n context.lineTo((width + x) * factor, (y + height) * factor);\n }\n context.lineWidth = 1;\n context.strokeStyle = color;\n context.closePath();\n context.msFillRule = 'nonzero';\n context.stroke();\n };\n /**\n * @param textMarkupAnnotations\n * @param pageIndex\n * @param stampData\n * @param shapeData\n * @param measureShapeData\n * @param stickyData\n * @param textMarkupAnnotations\n * @param pageIndex\n * @param stampData\n * @param shapeData\n * @param measureShapeData\n * @param stickyData\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.printTextMarkupAnnotations = function (textMarkupAnnotations, pageIndex, stampData, shapeData, measureShapeData, stickyData) {\n var canvas = createElement('canvas', { id: this.pdfViewer.element.id + '_print_annotation_layer_' + pageIndex });\n canvas.style.width = 816 + 'px';\n canvas.style.height = 1056 + 'px';\n var pageWidth = this.pdfViewerBase.pageSize[pageIndex].width;\n var pageHeight = this.pdfViewerBase.pageSize[pageIndex].height;\n var zoom = this.pdfViewerBase.getZoomFactor();\n var zoomRatio = this.pdfViewerBase.getZoomRatio(zoom);\n canvas.height = pageHeight * zoomRatio;\n canvas.width = pageWidth * zoomRatio;\n // eslint-disable-next-line\n var textMarkupannotations = this.getAnnotations(pageIndex, null, '_annotations_textMarkup');\n // eslint-disable-next-line\n var shapeAnnotation = this.getAnnotations(pageIndex, null, '_annotations_shape');\n // eslint-disable-next-line\n var measureShapeAnnotation = this.getAnnotations(pageIndex, null, '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampAnnotation = this.getAnnotations(pageIndex, null, '_annotations_stamp');\n // eslint-disable-next-line\n var stickyNoteAnnotation = this.getAnnotations(pageIndex, null, '_annotations_sticky');\n if (stampAnnotation || shapeAnnotation || stickyNoteAnnotation || measureShapeAnnotation) {\n this.pdfViewer.renderDrawing(canvas, pageIndex);\n }\n else {\n this.pdfViewer.annotation.renderAnnotations(pageIndex, shapeData, measureShapeData, null, canvas);\n this.pdfViewer.annotation.stampAnnotationModule.renderStampAnnotations(stampData, pageIndex, canvas);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.renderStickyNotesAnnotations(stickyData, pageIndex, canvas);\n }\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n if (textMarkupannotations) {\n this.renderTextMarkupAnnotations(null, pageIndex, canvas, zoomFactor);\n }\n else {\n this.renderTextMarkupAnnotations(textMarkupAnnotations, pageIndex, canvas, zoomFactor);\n }\n var imageSource = canvas.toDataURL();\n return imageSource;\n };\n /**\n * @private\n */\n TextMarkupAnnotation.prototype.saveTextMarkupAnnotations = function () {\n // eslint-disable-next-line\n var storeTextMarkupObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n if (this.pdfViewerBase.isStorageExceed) {\n storeTextMarkupObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_textMarkup'];\n }\n // eslint-disable-next-line\n var textMarkupAnnotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n textMarkupAnnotations[j] = [];\n }\n if (storeTextMarkupObject && !this.pdfViewer.annotationSettings.skipDownload) {\n var textMarkupAnnotationCollection = JSON.parse(storeTextMarkupObject);\n for (var i = 0; i < textMarkupAnnotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = textMarkupAnnotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.getBoundsForSave(pageAnnotationObject.annotations[z].bounds, i));\n var colorString = pageAnnotationObject.annotations[z].color;\n pageAnnotationObject.annotations[z].color = JSON.stringify(this.getRgbCode(colorString));\n pageAnnotationObject.annotations[z].rect = JSON.stringify(pageAnnotationObject.annotations[z].rect);\n }\n newArray = pageAnnotationObject.annotations;\n }\n textMarkupAnnotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(textMarkupAnnotations);\n };\n /**\n * @private\n */\n TextMarkupAnnotation.prototype.deleteTextMarkupAnnotation = function () {\n if (this.currentTextMarkupAnnotation) {\n var isLock = false;\n if (this.currentTextMarkupAnnotation.annotationSettings) {\n // eslint-disable-next-line\n isLock = this.currentTextMarkupAnnotation.annotationSettings.isLock;\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', this.currentTextMarkupAnnotation)) {\n isLock = false;\n }\n }\n if (!isLock) {\n var deletedAnnotation = null;\n this.showHideDropletDiv(true);\n // eslint-disable-next-line\n var annotation = this.currentTextMarkupAnnotation;\n if (this.currentTextMarkupAnnotation.isMultiSelect && annotation.annotNameCollection) {\n this.deletMultiPageAnnotation(annotation);\n }\n var pageAnnotations = this.getAnnotations(this.selectTextMarkupCurrentPage, null);\n if (pageAnnotations) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (this.currentTextMarkupAnnotation.annotName === pageAnnotations[i].annotName) {\n deletedAnnotation = pageAnnotations.splice(i, 1)[0];\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.addAction(this.selectTextMarkupCurrentPage, i, deletedAnnotation, 'Text Markup Deleted', null);\n this.currentAnnotationIndex = i;\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(deletedAnnotation, 'textMarkup');\n var removeDiv = document.getElementById(deletedAnnotation.annotName);\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.remove();\n }\n }\n }\n }\n this.pdfViewer.annotationModule.updateAnnotationCollection(this.currentTextMarkupAnnotation);\n this.manageAnnotations(pageAnnotations, this.selectTextMarkupCurrentPage);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.updateImportAnnotationCollection(this.currentTextMarkupAnnotation, this.currentTextMarkupAnnotation.pageNumber, 'textMarkupAnnotation');\n var annotationId = this.currentTextMarkupAnnotation.annotName;\n // eslint-disable-next-line\n var annotationBounds = this.currentTextMarkupAnnotation.bounds;\n this.currentTextMarkupAnnotation = null;\n this.pdfViewer.annotationModule.renderAnnotations(this.selectTextMarkupCurrentPage, null, null, null);\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line max-len\n var multiPageCollection = this.multiPageCollectionList(annotation);\n if (multiPageCollection.length > 0) {\n multiPageCollection.push(deletedAnnotation);\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationRemove(this.selectTextMarkupCurrentPage, annotationId, deletedAnnotation.textMarkupAnnotationType, annotationBounds, deletedAnnotation.textMarkupContent, deletedAnnotation.textMarkupStartIndex, deletedAnnotation.textMarkupEndIndex, multiPageCollection);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationRemove(this.selectTextMarkupCurrentPage, annotationId, deletedAnnotation.textMarkupAnnotationType, annotationBounds, deletedAnnotation.textMarkupContent, deletedAnnotation.textMarkupStartIndex, deletedAnnotation.textMarkupEndIndex);\n }\n this.currentAnnotationIndex = null;\n this.selectTextMarkupCurrentPage = null;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.hideMobileAnnotationToolbar();\n this.pdfViewer.toolbarModule.showToolbar(true);\n }\n }\n }\n }\n };\n /**\n * @param color\n * @private\n */\n TextMarkupAnnotation.prototype.modifyColorProperty = function (color) {\n if (this.currentTextMarkupAnnotation) {\n var pageAnnotations = this.modifyAnnotationProperty('Color', color, null);\n this.manageAnnotations(pageAnnotations, this.selectTextMarkupCurrentPage);\n this.pdfViewer.annotationModule.renderAnnotations(this.selectTextMarkupCurrentPage, null, null, null);\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var annotation = this.currentTextMarkupAnnotation;\n // eslint-disable-next-line max-len\n var multiPageCollection = this.multiPageCollectionList(annotation);\n if (multiPageCollection.length > 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationPropertiesChange(this.selectTextMarkupCurrentPage, annotation.annotName, annotation.textMarkupAnnotationType, true, false, false, false, annotation.textMarkupContent, annotation.textMarkupStartIndex, annotation.textMarkupEndIndex, multiPageCollection);\n this.currentAnnotationIndex = null;\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationPropertiesChange(this.selectTextMarkupCurrentPage, annotation.annotName, annotation.textMarkupAnnotationType, true, false, false, false, annotation.textMarkupContent, annotation.textMarkupStartIndex, annotation.textMarkupEndIndex);\n this.currentAnnotationIndex = null;\n }\n }\n };\n /**\n * @param args\n * @param isOpacity\n * @private\n */\n TextMarkupAnnotation.prototype.modifyOpacityProperty = function (args, isOpacity) {\n if (this.currentTextMarkupAnnotation) {\n var pageAnnotations = void 0;\n if (isOpacity) {\n pageAnnotations = this.modifyAnnotationProperty('Opacity', isOpacity, 'changed');\n }\n else {\n pageAnnotations = this.modifyAnnotationProperty('Opacity', args.value / 100, args.name);\n }\n if (pageAnnotations) {\n this.manageAnnotations(pageAnnotations, this.selectTextMarkupCurrentPage);\n this.pdfViewer.annotationModule.renderAnnotations(this.selectTextMarkupCurrentPage, null, null, null);\n if (isOpacity || args.name === 'changed') {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var annotation = this.currentTextMarkupAnnotation;\n // eslint-disable-next-line max-len\n var multiPageCollection = this.multiPageCollectionList(annotation);\n if (multiPageCollection.length > 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationPropertiesChange(this.selectTextMarkupCurrentPage, annotation.annotName, annotation.textMarkupAnnotationType, false, true, false, false, annotation.textMarkupContent, annotation.textMarkupStartIndex, annotation.textMarkupEndIndex, multiPageCollection);\n this.currentAnnotationIndex = null;\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationPropertiesChange(this.selectTextMarkupCurrentPage, annotation.annotName, annotation.textMarkupAnnotationType, false, true, false, false, annotation.textMarkupContent, annotation.textMarkupStartIndex, annotation.textMarkupEndIndex);\n this.currentAnnotationIndex = null;\n }\n }\n }\n }\n };\n /**\n * @param property\n * @param value\n * @param status\n * @param annotName\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.modifyAnnotationProperty = function (property, value, status, annotName) {\n // eslint-disable-next-line\n var annotation = this.currentTextMarkupAnnotation;\n if (annotation.isMultiSelect && annotation.annotNameCollection) {\n this.modifyMultiPageAnnotations(annotation, property, value);\n }\n var pageAnnotations = this.getAnnotations(this.selectTextMarkupCurrentPage, null);\n if (pageAnnotations) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (JSON.stringify(this.currentTextMarkupAnnotation) === JSON.stringify(pageAnnotations[i])) {\n if (property === 'Color') {\n pageAnnotations[i].color = value;\n }\n else if (property === 'Opacity') {\n pageAnnotations[i].opacity = value;\n }\n else if (property === 'AnnotationSettings') {\n pageAnnotations[i].annotationSettings = { isLock: value };\n }\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.currentAnnotationIndex = i;\n if (status === null || status === 'changed') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.addAction(this.selectTextMarkupCurrentPage, i, this.currentTextMarkupAnnotation, 'Text Markup Property modified', property);\n }\n this.currentTextMarkupAnnotation = pageAnnotations[i];\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationModifiedDate(pageAnnotations[i]);\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], this.selectTextMarkupCurrentPage);\n }\n }\n }\n return pageAnnotations;\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param index\n * @param action\n * @private\n */\n TextMarkupAnnotation.prototype.undoTextMarkupAction = function (annotation, pageNumber, index, action) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n if (action === 'Text Markup Added') {\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(pageAnnotations[index], 'textMarkup');\n // eslint-disable-next-line\n var removeDiv = document.getElementById(pageAnnotations[index].annotName);\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.parentElement.removeChild(removeDiv);\n }\n }\n pageAnnotations.splice(index, 1);\n }\n else if (action === 'Text Markup Deleted') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addAnnotationComments(pageNumber, annotation.shapeAnnotationType);\n pageAnnotations.splice(index, 0, annotation);\n }\n }\n this.clearCurrentAnnotation();\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n this.manageAnnotations(pageAnnotations, pageNumber);\n this.pdfViewer.annotationModule.renderAnnotations(pageNumber, null, null, null);\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param index\n * @param property\n * @param isUndoAction\n * @param annotation\n * @param pageNumber\n * @param index\n * @param property\n * @param isUndoAction\n * @param annotation\n * @param pageNumber\n * @param index\n * @param property\n * @param isUndoAction\n * @param annotation\n * @param pageNumber\n * @param index\n * @param property\n * @param isUndoAction\n * @private\n */\n // eslint-disable-next-line max-len\n TextMarkupAnnotation.prototype.undoRedoPropertyChange = function (annotation, pageNumber, index, property, isUndoAction) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n if (property === 'Color') {\n var tempColor = pageAnnotations[index].color;\n pageAnnotations[index].color = annotation.color;\n annotation.color = tempColor;\n }\n else {\n var tempOpacity = pageAnnotations[index].opacity;\n pageAnnotations[index].opacity = annotation.opacity;\n annotation.opacity = tempOpacity;\n }\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationModifiedDate(annotation, null, true);\n if (isUndoAction) {\n annotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n }\n }\n this.clearCurrentAnnotation();\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n this.manageAnnotations(pageAnnotations, pageNumber);\n this.pdfViewer.annotationModule.renderAnnotations(pageNumber, null, null, null);\n return annotation;\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param index\n * @param action\n * @private\n */\n TextMarkupAnnotation.prototype.redoTextMarkupAction = function (annotation, pageNumber, index, action) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n if (action === 'Text Markup Added') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addAnnotationComments(pageNumber, annotation.shapeAnnotationType);\n pageAnnotations.push(annotation);\n }\n else if (action === 'Text Markup Deleted') {\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(pageAnnotations[index], 'textMarkup');\n // eslint-disable-next-line\n var removeDiv = document.getElementById(pageAnnotations[index].annotName);\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.remove();\n }\n }\n pageAnnotations.splice(index, 1);\n }\n }\n this.clearCurrentAnnotation();\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n this.manageAnnotations(pageAnnotations, pageNumber);\n this.pdfViewer.annotationModule.renderAnnotations(pageNumber, null, null, null);\n };\n /**\n * @param pageNumber\n * @param note\n * @param pageNumber\n * @param note\n * @private\n */\n TextMarkupAnnotation.prototype.saveNoteContent = function (pageNumber, note) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (JSON.stringify(this.currentTextMarkupAnnotation) === JSON.stringify(pageAnnotations[i])) {\n pageAnnotations[i].note = note;\n }\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n };\n TextMarkupAnnotation.prototype.clearCurrentAnnotation = function () {\n if (!this.isExtended) {\n if (this.pdfViewer.isMaintainSelection && !this.pdfViewer.textSelectionModule.isTextSelection) {\n this.selectTextMarkupCurrentPage = this.selectTextMarkupCurrentPage;\n this.currentTextMarkupAnnotation = this.currentTextMarkupAnnotation;\n }\n else {\n this.selectTextMarkupCurrentPage = null;\n this.currentTextMarkupAnnotation = null;\n }\n var isSkip = false;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && this.pdfViewer.annotation.freeTextAnnotationModule.isInuptBoxInFocus) {\n isSkip = true;\n }\n if (!isSkip) {\n this.enableAnnotationPropertiesTool(false);\n }\n }\n };\n /**\n * @param pageNumber\n * @param isSelect\n * @param pageNumber\n * @param isSelect\n * @private\n */\n TextMarkupAnnotation.prototype.clearCurrentAnnotationSelection = function (pageNumber, isSelect) {\n if (isSelect) {\n this.isAnnotationSelect = true;\n }\n else {\n this.isAnnotationSelect = false;\n }\n var lowerPageIndex = (pageNumber - 2) >= 0 ? (pageNumber - 2) : 0;\n // eslint-disable-next-line max-len\n var higherPageIndex = (pageNumber + 2) < this.pdfViewerBase.pageCount ? (pageNumber + 2) : this.pdfViewerBase.pageCount - 1;\n for (var k = lowerPageIndex; k <= higherPageIndex; k++) {\n this.clearAnnotationSelection(k);\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getBoundsForSave = function (bounds, pageIndex) {\n // eslint-disable-next-line\n var newArray = [];\n for (var i = 0; i < bounds.length; i++) {\n // eslint-disable-next-line\n var bound = this.getAnnotationBounds(bounds[i], pageIndex);\n newArray.push(bound);\n }\n return newArray;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getAnnotationBounds = function (bounds, pageIndex) {\n var left = bounds.left ? bounds.left : bounds.Left;\n var top = bounds.top ? bounds.top : bounds.Top;\n var height = bounds.height ? bounds.height : bounds.Height;\n var width = bounds.width ? bounds.width : bounds.Width;\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n left = left ? left : bounds.x;\n top = top ? top : bounds.y;\n if (pageDetails) {\n if (pageDetails.rotation === 1) {\n return { left: top, top: pageDetails.width - (left + width), width: height, height: width };\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n return { left: pageDetails.width - left - width, top: pageDetails.height - top - height, width: width, height: height };\n }\n else if (pageDetails.rotation === 3) {\n return { left: pageDetails.height - top - height, top: left, width: height, height: width };\n }\n else {\n return { left: left, top: top, width: width, height: height };\n }\n }\n else {\n return { left: left, top: top, width: width, height: height };\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getRgbCode = function (colorString) {\n if (!colorString.match(/#([a-z0-9]+)/gi) && !colorString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n colorString = this.pdfViewer.annotationModule.nameToHash(colorString);\n }\n var markupStringArray = colorString.split(',');\n if (isNullOrUndefined(markupStringArray[1])) {\n colorString = this.pdfViewer.annotationModule.getValue(colorString, 'rgba');\n markupStringArray = colorString.split(',');\n }\n // eslint-disable-next-line radix\n var textMarkupR = parseInt(markupStringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var textMarkupG = parseInt(markupStringArray[1]);\n // eslint-disable-next-line radix\n var textMarkupB = parseInt(markupStringArray[2]);\n // eslint-disable-next-line radix\n var textMarkupA = parseInt(markupStringArray[3]);\n return { a: textMarkupA, r: textMarkupR, g: textMarkupG, b: textMarkupB };\n };\n TextMarkupAnnotation.prototype.getDrawnBounds = function () {\n var pageBounds = [];\n var selection = window.getSelection();\n if (selection.anchorNode !== null) {\n var range = document.createRange();\n var isBackWardSelection = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (selection.anchorNode === selection.focusNode) {\n var pageId = this.pdfViewerBase.textLayer.getPageIndex(selection.anchorNode);\n var startIndex = 0;\n var endIndex = 0;\n if (!isNaN(pageId)) {\n var pageRect = this.pdfViewerBase.getElement('_pageDiv_' + pageId).getBoundingClientRect();\n if (this.pdfViewerBase.isMixedSizeDocument) {\n pageRect = this.pdfViewerBase.getElement('_textLayer_' + pageId).getBoundingClientRect();\n }\n if (isBackWardSelection) {\n range.setStart(selection.focusNode, selection.focusOffset);\n range.setEnd(selection.anchorNode, selection.anchorOffset);\n }\n else {\n if (selection.anchorOffset < selection.focusOffset) {\n startIndex = selection.anchorOffset;\n endIndex = selection.focusOffset;\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else {\n startIndex = selection.focusOffset;\n endIndex = selection.anchorOffset;\n range.setStart(selection.focusNode, selection.focusOffset);\n range.setEnd(selection.anchorNode, selection.anchorOffset);\n }\n }\n var boundingRect = range.getBoundingClientRect();\n // eslint-disable-next-line\n var indexes = this.getIndexNumbers(pageId, range.toString(), range.commonAncestorContainer.textContent.toString());\n // eslint-disable-next-line max-len\n var rectangle = { left: this.getDefaultValue(boundingRect.left - pageRect.left), top: this.getDefaultValue(boundingRect.top - pageRect.top), width: this.getDefaultValue(boundingRect.width), height: this.getDefaultValue(boundingRect.height), right: this.getDefaultValue(boundingRect.right - pageRect.left), bottom: this.getDefaultValue(boundingRect.bottom - pageRect.top) };\n var rectangleArray = [];\n rectangleArray.push(rectangle);\n // eslint-disable-next-line\n var rect = { left: rectangle.left, top: rectangle.top, right: rectangle.right, bottom: rectangle.bottom };\n pageBounds.push({ pageIndex: pageId, bounds: rectangleArray, rect: rect, startIndex: indexes.startIndex, endIndex: indexes.endIndex, textContent: range.toString() });\n }\n }\n else {\n var startNode = void 0;\n var endNode = void 0;\n var selectionStartOffset = void 0;\n var selectionEndOffset = void 0;\n if (isBackWardSelection) {\n startNode = selection.focusNode;\n selectionStartOffset = selection.focusOffset;\n endNode = selection.anchorNode;\n selectionEndOffset = selection.anchorOffset;\n }\n else {\n startNode = selection.anchorNode;\n selectionStartOffset = selection.anchorOffset;\n endNode = selection.focusNode;\n selectionEndOffset = selection.focusOffset;\n }\n var anchorPageId = this.pdfViewerBase.textLayer.getPageIndex(startNode);\n var anchorTextId = this.pdfViewerBase.textLayer.getTextIndex(startNode, anchorPageId);\n var focusPageId = this.pdfViewerBase.textLayer.getPageIndex(endNode);\n var focusTextId = this.pdfViewerBase.textLayer.getTextIndex(endNode, focusPageId);\n var startOffset = 0;\n var endOffset = 0;\n var currentId = 0;\n for (var i = anchorPageId; i <= focusPageId; i++) {\n var selectionRects = [];\n var pageStartId = void 0;\n var pageEndId = void 0;\n var pageStartOffset = void 0;\n var pageEndOffset = void 0;\n var textDivs = this.pdfViewerBase.getElement('_textLayer_' + i).childNodes;\n var pageRect = this.pdfViewerBase.getElement('_pageDiv_' + i).getBoundingClientRect();\n if (this.pdfViewerBase.isMixedSizeDocument) {\n pageRect = this.pdfViewerBase.getElement('_textLayer_' + i).getBoundingClientRect();\n }\n if (i === anchorPageId) {\n currentId = anchorTextId;\n }\n else {\n currentId = 0;\n }\n for (var j = currentId; j < textDivs.length; j++) {\n var textElement = textDivs[j];\n if (j === currentId) {\n pageStartId = currentId;\n pageStartOffset = (i === anchorPageId) ? selectionStartOffset : 0;\n }\n else {\n pageEndId = j;\n pageEndOffset = (i === focusPageId) ? selectionEndOffset : textElement.textContent.length;\n }\n if (j === anchorTextId && i === anchorPageId) {\n startOffset = selectionStartOffset;\n }\n else {\n startOffset = 0;\n }\n if (j === focusTextId && i === focusPageId) {\n endOffset = selectionEndOffset;\n }\n else {\n endOffset = textElement.textContent.length;\n }\n for (var k = 0; k < textElement.childNodes.length; k++) {\n var node = textElement.childNodes[k];\n range.setStart(node, startOffset);\n range.setEnd(node, endOffset);\n }\n var boundingRect = range.getBoundingClientRect();\n // eslint-disable-next-line max-len\n var rectangle = { left: this.getDefaultValue(boundingRect.left - pageRect.left), top: this.getDefaultValue(boundingRect.top - pageRect.top), width: this.getDefaultValue(boundingRect.width), height: this.getDefaultValue(boundingRect.height), right: this.getDefaultValue(boundingRect.right - pageRect.left), bottom: this.getDefaultValue(boundingRect.bottom - pageRect.top) };\n selectionRects.push(rectangle);\n range.detach();\n if (i === focusPageId && j === focusTextId) {\n break;\n }\n }\n if (!pageEndId) {\n pageEndId = pageStartId;\n }\n if (!pageEndOffset) {\n pageEndOffset = endOffset;\n }\n var startElementNode = this.pdfViewerBase.getElement('_text_' + i + '_' + pageStartId).childNodes[0];\n var endElementNode = this.pdfViewerBase.getElement('_text_' + i + '_' + pageEndId).childNodes[0];\n var pageRange = document.createRange();\n pageRange.setStart(startElementNode, pageStartOffset);\n pageRange.setEnd(endElementNode, pageEndOffset);\n var pageRectBounds = pageRange.getBoundingClientRect();\n var textValue = pageRange.toString();\n // eslint-disable-next-line\n var indexes = this.getIndexNumbers(i, textValue);\n // eslint-disable-next-line max-len\n var pageRectangle = { left: this.getDefaultValue(pageRectBounds.left - pageRect.left), top: this.getDefaultValue(pageRectBounds.top - pageRect.top), width: this.getDefaultValue(pageRectBounds.width), height: this.getDefaultValue(pageRectBounds.height), right: this.getDefaultValue(pageRectBounds.right - pageRect.left), bottom: this.getDefaultValue(pageRectBounds.bottom - pageRect.top) };\n // eslint-disable-next-line\n var rect = { left: pageRectangle.left, top: pageRectangle.top, right: pageRectangle.right, bottom: pageRectangle.bottom };\n pageBounds.push({ pageIndex: i, bounds: selectionRects, rect: rect, startIndex: indexes.startIndex, endIndex: indexes.endIndex, textContent: textValue });\n }\n }\n }\n selection.removeAllRanges();\n return pageBounds;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getIndexNumbers = function (pageNumber, content, parentText) {\n // eslint-disable-next-line\n var storedData = this.pdfViewerBase.getStoredData(pageNumber);\n var startIndex;\n var endIndex;\n if (storedData) {\n var previousIndex = 0;\n var pageText = storedData.pageText;\n for (var p = 0; p < pageNumber; p++) {\n if (this.pdfViewer.isExtractText) {\n // eslint-disable-next-line\n var documentIndex = this.pdfViewer.textSearchModule.documentTextCollection[p][p];\n var pageTextData = documentIndex.pageText ? documentIndex.pageText : documentIndex.PageText;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.textSearchModule && this.pdfViewer.textSearchModule.documentTextCollection && this.pdfViewer.textSearchModule.isTextRetrieved) {\n if (this.pdfViewer.textSearchModule.documentTextCollection[p]) {\n previousIndex = previousIndex + pageTextData.length;\n }\n }\n else {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.textSearchModule && this.pdfViewer.textSearchModule.documentTextCollection) {\n if (pageNumber <= this.pdfViewer.textSearchModule.documentTextCollection.length) {\n if (this.pdfViewer.textSearchModule.documentTextCollection[p]) {\n // eslint-disable-next-line max-len\n previousIndex = previousIndex + pageTextData.length;\n }\n }\n else {\n previousIndex = 0;\n break;\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(parentText)) {\n var parentIndex = pageText.indexOf(parentText);\n var initialIndex = parentText.indexOf(content);\n startIndex = (parentIndex + initialIndex) + previousIndex;\n }\n else {\n startIndex = (pageText.indexOf(content)) + previousIndex;\n }\n endIndex = startIndex + (content.length - 1);\n }\n return { startIndex: startIndex, endIndex: endIndex };\n };\n /**\n * @param pageNumber\n * @private\n */\n TextMarkupAnnotation.prototype.rerenderAnnotationsPinch = function (pageNumber) {\n var annotCanvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (annotCanvas) {\n var oldAnnotCanvas = this.pdfViewerBase.getElement('_old_annotationCanvas_' + pageNumber);\n if (oldAnnotCanvas) {\n if (annotCanvas) {\n oldAnnotCanvas.id = annotCanvas.id;\n annotCanvas.parentElement.removeChild(annotCanvas);\n }\n else {\n oldAnnotCanvas.id = this.pdfViewer.element.id + '_annotationCanvas_' + pageNumber;\n }\n annotCanvas = oldAnnotCanvas;\n }\n annotCanvas.style.width = '';\n annotCanvas.style.height = '';\n if (this.pdfViewer.restrictZoomRequest) {\n // eslint-disable-next-line max-len\n annotCanvas.style.width = this.pdfViewerBase.pageSize[pageNumber].width * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line max-len\n annotCanvas.style.height = this.pdfViewerBase.pageSize[pageNumber].height * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n annotCanvas.width = this.pdfViewerBase.pageSize[pageNumber].width * this.pdfViewerBase.getZoomFactor();\n annotCanvas.height = this.pdfViewerBase.pageSize[pageNumber].height * this.pdfViewerBase.getZoomFactor();\n }\n this.renderTextMarkupAnnotations(null, pageNumber, annotCanvas, this.pdfViewerBase.getZoomFactor());\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n TextMarkupAnnotation.prototype.rerenderAnnotations = function (pageNumber) {\n // eslint-disable-next-line\n var oldCanvasCollection = document.querySelectorAll('#' + this.pdfViewer.element.id + '_old_annotationCanvas_' + pageNumber);\n for (var i = 0; i < oldCanvasCollection.length; i++) {\n if (oldCanvasCollection[i]) {\n oldCanvasCollection[i].parentElement.removeChild(oldCanvasCollection[i]);\n }\n }\n var newCanvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (newCanvas) {\n newCanvas.style.display = 'block';\n }\n };\n /**\n * @param event\n * @private\n */\n TextMarkupAnnotation.prototype.onTextMarkupAnnotationMouseUp = function (event) {\n var pageNumber = this.pdfViewer.annotationModule.getEventPageNumber(event);\n if (!isNullOrUndefined(pageNumber) && !isNaN(pageNumber)) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (this.currentTextMarkupAnnotation) {\n this.selectedTextMarkup = this.currentTextMarkupAnnotation;\n }\n else {\n this.selectedTextMarkup = null;\n }\n this.clearCurrentSelectedAnnotation();\n var currentAnnot = this.getCurrentMarkupAnnotation(event.clientX, event.clientY, pageNumber, canvas);\n if (currentAnnot && !window.getSelection().toString()) {\n var isLock = false;\n var isSelection = false;\n if (currentAnnot.annotationSettings && currentAnnot.annotationSettings.isLock) {\n isLock = currentAnnot.annotationSettings.isLock;\n if (isLock && this.pdfViewer.annotationModule.checkAllowedInteractions('Select', currentAnnot)) {\n isLock = false;\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('PropertyChange', currentAnnot)) {\n isSelection = false;\n }\n else {\n isSelection = true;\n }\n }\n }\n if (!isLock) {\n var canvasParentPosition = canvas.parentElement.getBoundingClientRect();\n var leftClickPosition = event.clientX - canvasParentPosition.left;\n var topClickPosition = event.clientY - canvasParentPosition.top;\n this.annotationClickPosition = { x: leftClickPosition, y: topClickPosition };\n this.selectAnnotation(currentAnnot, canvas, pageNumber, event);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode && this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createPropertyTools(this.currentTextMarkupAnnotation.textMarkupAnnotationType);\n }\n this.currentTextMarkupAnnotation = currentAnnot;\n this.selectTextMarkupCurrentPage = pageNumber;\n if (!isSelection) {\n this.enableAnnotationPropertiesTool(true);\n }\n var commentPanelDiv = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentPanelDiv && commentPanelDiv.style.display === 'block') {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + (pageNumber + 1));\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var comments = document.getElementById(currentAnnot.annotName);\n if (comments) {\n comments.firstChild.click();\n }\n }\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n }\n }\n }\n else {\n this.clearCurrentAnnotation();\n }\n if (this.pdfViewer.isMaintainSelection && !this.pdfViewer.textSelectionModule.isTextSelection) {\n if (currentAnnot) {\n this.clearCurrentAnnotationSelection(pageNumber);\n }\n }\n else {\n this.clearCurrentAnnotationSelection(pageNumber);\n }\n }\n else {\n if (!this.pdfViewerBase.isClickedOnScrollBar(event, true)) {\n this.clearCurrentAnnotation();\n this.clearCurrentAnnotationSelection(pageNumber);\n }\n }\n };\n /**\n * @param event\n * @private\n */\n TextMarkupAnnotation.prototype.onTextMarkupAnnotationTouchEnd = function (event) {\n var pageNumber = this.pdfViewer.annotationModule.getEventPageNumber(event);\n if (!isNullOrUndefined(pageNumber) && !isNaN(pageNumber)) {\n if (this.currentTextMarkupAnnotation) {\n this.selectedTextMarkup = this.currentTextMarkupAnnotation;\n }\n else {\n this.selectedTextMarkup = null;\n }\n this.clearCurrentAnnotationSelection(pageNumber);\n var touchCanvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n this.clearCurrentSelectedAnnotation();\n // eslint-disable-next-line max-len\n var currentAnnot = this.getCurrentMarkupAnnotation(event.touches[0].clientX, event.touches[0].clientY, pageNumber, touchCanvas);\n if (currentAnnot) {\n var isLock = false;\n if (currentAnnot.annotationSettings && currentAnnot.annotationSettings.isLock) {\n isLock = currentAnnot.annotationSettings.isLock;\n }\n if (!isLock) {\n var canvasParentPosition = touchCanvas.parentElement.getBoundingClientRect();\n var leftClickPosition = event.touches[0].clientX - canvasParentPosition.left;\n var topClickPosition = event.touches[0].clientY - canvasParentPosition.top;\n this.annotationClickPosition = { x: leftClickPosition, y: topClickPosition };\n this.selectAnnotation(currentAnnot, touchCanvas, pageNumber, event);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode && this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createPropertyTools(this.currentTextMarkupAnnotation.textMarkupAnnotationType);\n }\n this.currentTextMarkupAnnotation = currentAnnot;\n this.selectTextMarkupCurrentPage = pageNumber;\n this.enableAnnotationPropertiesTool(true);\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + (pageNumber + 1));\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var comments = document.getElementById(currentAnnot.annotName);\n if (comments) {\n if (!Browser.isDevice) {\n comments.firstChild.click();\n }\n }\n }\n }\n else {\n this.clearCurrentAnnotation();\n }\n this.clearCurrentAnnotationSelection(pageNumber);\n }\n else if (this.selectTextMarkupCurrentPage != null && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n var number = this.selectTextMarkupCurrentPage;\n this.selectTextMarkupCurrentPage = null;\n this.clearAnnotationSelection(number);\n }\n else {\n this.clearCurrentAnnotation();\n this.clearCurrentAnnotationSelection(pageNumber);\n }\n };\n /**\n * @private\n */\n TextMarkupAnnotation.prototype.clearCurrentSelectedAnnotation = function () {\n if (this.currentTextMarkupAnnotation) {\n this.clearAnnotationSelection(this.selectTextMarkupCurrentPage);\n // eslint-disable-next-line\n var currentAnnot = this.currentTextMarkupAnnotation;\n this.pdfViewer.fireAnnotationUnSelect(currentAnnot.annotName, currentAnnot.pageNumber, currentAnnot);\n this.clearCurrentAnnotation();\n }\n };\n /**\n * @param event\n * @private\n */\n TextMarkupAnnotation.prototype.onTextMarkupAnnotationMouseMove = function (event) {\n var eventTarget = event.target;\n // eslint-disable-next-line\n var pageIndex = parseInt(eventTarget.id.split('_text_')[1]) || parseInt(eventTarget.id.split('_textLayer_')[1]) || parseInt(eventTarget.id.split('_annotationCanvas_')[1]);\n if (event.target && (eventTarget.id.indexOf('_text') > -1 || eventTarget.id.indexOf('_annotationCanvas') > -1 || eventTarget.classList.contains('e-pv-hyperlink')) && this.pdfViewer.annotation) {\n pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageIndex);\n var currentAnnot = this.getCurrentMarkupAnnotation(event.clientX, event.clientY, pageIndex, canvas);\n if (currentAnnot) {\n eventTarget.style.cursor = 'pointer';\n // eslint-disable-next-line\n var currentPosition = this.pdfViewerBase.getMousePosition(event);\n // eslint-disable-next-line\n var relativePosition = this.pdfViewerBase.relativePosition(event);\n // eslint-disable-next-line\n var viewerPositions = { left: relativePosition.x, top: relativePosition.y };\n // eslint-disable-next-line\n var mousePositions = { left: currentPosition.x, top: currentPosition.y };\n // eslint-disable-next-line\n var annotationSettings = { opacity: currentAnnot.opacity, color: currentAnnot.color, author: currentAnnot.author, subject: currentAnnot.subject, modifiedDate: currentAnnot.modifiedDate };\n // eslint-disable-next-line max-len\n this.pdfViewerBase.isMousedOver = true;\n this.pdfViewer.fireAnnotationMouseover(currentAnnot.annotName, currentAnnot.pageNumber, currentAnnot.textMarkupAnnotationType, currentAnnot.bounds, annotationSettings, mousePositions, viewerPositions);\n // this.showPopupNote(event, currentAnnot);\n }\n else {\n this.pdfViewer.annotationModule.hidePopupNote();\n if (this.pdfViewerBase.isPanMode && !this.pdfViewerBase.getAnnotationToolStatus()) {\n eventTarget.style.cursor = 'grab';\n }\n if (this.pdfViewerBase.isMousedOver && !this.pdfViewerBase.isFormFieldMousedOver) {\n this.pdfViewer.fireAnnotationMouseLeave(pageIndex);\n this.pdfViewerBase.isMousedOver = false;\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.showPopupNote = function (event, annotation) {\n if (annotation.note) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.showPopupNote(event, annotation.color, annotation.author, annotation.note, annotation.textMarkupAnnotationType);\n }\n };\n TextMarkupAnnotation.prototype.getCurrentMarkupAnnotation = function (clientX, clientY, pageNumber, canvas) {\n var currentTextMarkupAnnotations = [];\n if (canvas) {\n var canvasParentPosition = canvas.parentElement.getBoundingClientRect();\n if (canvas.clientWidth !== canvas.parentElement.clientWidth) {\n canvasParentPosition = canvas.getBoundingClientRect();\n }\n var leftClickPosition = clientX - canvasParentPosition.left;\n var topClickPosition = clientY - canvasParentPosition.top;\n var annotationList = this.getAnnotations(pageNumber, null);\n var isAnnotationGot = false;\n if (annotationList) {\n for (var i = 0; i < annotationList.length; i++) {\n var annotation = annotationList[i];\n for (var j = 0; j < annotation.bounds.length; j++) {\n // eslint-disable-next-line\n var bound = annotation.bounds[j];\n var left = bound.left ? bound.left : bound.Left;\n var top_2 = bound.top ? bound.top : bound.Top;\n var width = bound.width ? bound.width : bound.Width;\n var height = bound.height ? bound.height : bound.Height;\n // eslint-disable-next-line max-len\n if (leftClickPosition >= this.getMagnifiedValue(left, this.pdfViewerBase.getZoomFactor()) && leftClickPosition <= this.getMagnifiedValue(left + width, this.pdfViewerBase.getZoomFactor()) && topClickPosition >= this.getMagnifiedValue(top_2, this.pdfViewerBase.getZoomFactor()) && topClickPosition <= this.getMagnifiedValue(top_2 + height, this.pdfViewerBase.getZoomFactor())) {\n currentTextMarkupAnnotations.push(annotation);\n isAnnotationGot = true;\n }\n else {\n if (isAnnotationGot) {\n isAnnotationGot = false;\n break;\n }\n }\n }\n }\n }\n var currentAnnot = null;\n if (currentTextMarkupAnnotations.length > 1) {\n currentAnnot = this.compareCurrentAnnotations(currentTextMarkupAnnotations);\n }\n else if (currentTextMarkupAnnotations.length === 1) {\n currentAnnot = currentTextMarkupAnnotations[0];\n }\n return currentAnnot;\n }\n else {\n return null;\n }\n };\n TextMarkupAnnotation.prototype.compareCurrentAnnotations = function (annotations) {\n var previousX;\n var currentAnnotation = null;\n for (var i = 0; i < annotations.length; i++) {\n if (i === annotations.length - 1) {\n break;\n }\n // eslint-disable-next-line\n var firstAnnotBounds = annotations[i].bounds;\n var firstXposition = firstAnnotBounds[0].left ? firstAnnotBounds[0].left : firstAnnotBounds[0].Left;\n var firstYposition = firstAnnotBounds[0].top ? firstAnnotBounds[0].top : firstAnnotBounds[0].Top;\n // eslint-disable-next-line\n var secondAnnotBounds = annotations[i + 1].bounds;\n var secondXposition = secondAnnotBounds[0].left ? secondAnnotBounds[0].left : secondAnnotBounds[0].Left;\n var secondYposition = secondAnnotBounds[0].top ? secondAnnotBounds[0].top : secondAnnotBounds[0].Top;\n if ((firstXposition < secondXposition) || (firstYposition < secondYposition)) {\n previousX = secondXposition;\n currentAnnotation = annotations[i + 1];\n }\n else {\n previousX = firstXposition;\n currentAnnotation = annotations[i];\n }\n if (previousX && (i === (annotations.length - 2))) {\n if ((previousX === firstXposition) && (previousX === secondXposition)) {\n previousX = secondXposition;\n currentAnnotation = annotations[i + 1];\n }\n }\n }\n return currentAnnotation;\n };\n /**\n * @param pageNumber\n * @private\n */\n TextMarkupAnnotation.prototype.clearAnnotationSelection = function (pageNumber) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (canvas) {\n var context = canvas.getContext('2d');\n context.setLineDash([]);\n this.pdfViewer.annotationModule.renderAnnotations(pageNumber, null, null, null);\n }\n };\n /**\n * @param annotation\n * @param canvas\n * @param pageNumber\n * @param event\n * @param isProgrammaticSelection\n * @param annotation\n * @param canvas\n * @param pageNumber\n * @param event\n * @param isProgrammaticSelection\n * @private\n */\n // eslint-disable-next-line max-len\n TextMarkupAnnotation.prototype.selectAnnotation = function (annotation, canvas, pageNumber, event, isProgrammaticSelection) {\n if (this.pdfViewer.selectedItems.annotations[0]) {\n this.pdfViewer.clearSelection(this.pdfViewer.selectedItems.annotations[0].pageIndex);\n this.pdfViewer.clearSelection(this.selectTextMarkupCurrentPage);\n }\n var isLock = false;\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n isLock = annotation.annotationSettings.isLock;\n if (isLock && this.pdfViewer.annotationModule.checkAllowedInteractions('Select', annotation)) {\n isLock = false;\n }\n }\n if (!isLock) {\n var isCurrentTextMarkup = false;\n if (!this.currentTextMarkupAnnotation) {\n isCurrentTextMarkup = true;\n }\n if (this.selectedTextMarkup && annotation && !isProgrammaticSelection) {\n if (this.selectedTextMarkup.annotName === annotation.annotName) {\n isCurrentTextMarkup = false;\n }\n else {\n isCurrentTextMarkup = true;\n }\n }\n if (!isNaN(pageNumber)) {\n this.selectTextMarkupCurrentPage = pageNumber;\n this.currentTextMarkupAnnotation = annotation;\n annotation = this.retreiveTextIndex(annotation);\n this.currentTextMarkupAnnotation = annotation;\n }\n if (this.isSelectedAnnotation && this.pdfViewer.textSelectionModule) {\n this.pdfViewerBase.isSelection = true;\n this.updateAnnotationBounds();\n }\n // eslint-disable-next-line\n var currentEvent = event;\n if (this.isEnableTextMarkupResizer(annotation.textMarkupAnnotationType) && annotation && currentEvent && !currentEvent.touches) {\n this.updateCurrentResizerPosition(annotation);\n }\n this.drawAnnotationSelector(annotation, this.currentTextMarkupAnnotation, canvas);\n if (annotation.isMultiSelect && annotation.annotNameCollection) {\n this.selectMultiPageAnnotations(annotation);\n }\n if (annotation.annotName !== '' && !this.isNewAnnotation) {\n if (isCurrentTextMarkup) {\n var isSelected = false;\n if (!currentEvent) {\n isSelected = true;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.annotationSelect(annotation.annotName, this.selectTextMarkupCurrentPage, annotation, null, false, isSelected);\n this.selectedTextMarkup = null;\n }\n }\n if (annotation && this.isEnableTextMarkupResizer(annotation.textMarkupAnnotationType)) {\n this.isTextMarkupAnnotationMode = true;\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateCurrentResizerPosition = function (annotation) {\n if (!annotation) {\n annotation = this.currentTextMarkupAnnotation;\n }\n if (annotation) {\n if (this.isEnableTextMarkupResizer(annotation.textMarkupAnnotationType) && annotation) {\n // eslint-disable-next-line\n var textElement = this.pdfViewerBase.getElement('_textLayer_' + this.selectTextMarkupCurrentPage);\n if (textElement) {\n // eslint-disable-next-line\n var boundingRect = textElement.getBoundingClientRect();\n var left = annotation.bounds[0].left ? annotation.bounds[0].left : annotation.bounds[0].Left;\n var top_3 = annotation.bounds[0].top ? annotation.bounds[0].top : annotation.bounds[0].Top;\n this.updateLeftposition(left * this.pdfViewerBase.getZoomFactor() + boundingRect.left, (boundingRect.top + top_3), true);\n // eslint-disable-next-line\n var endPosition = annotation.bounds[annotation.bounds.length - 1];\n var endLeft = endPosition.left ? endPosition.left : endPosition.Left;\n var endTop = endPosition.top ? endPosition.top : endPosition.Top;\n var endWidth = endPosition.width ? endPosition.width : endPosition.Width;\n // eslint-disable-next-line max-len\n this.updatePosition((endLeft + endWidth) * this.pdfViewerBase.getZoomFactor() + boundingRect.left, (endTop + boundingRect.top), true);\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.drawAnnotationSelectRect = function (canvas, x, y, width, height, annotation) {\n var ratio = this.pdfViewerBase.getZoomRatio();\n if (canvas) {\n var context = canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.beginPath();\n if (typeof (annotation).annotationSelectorSettings === 'string') {\n // eslint-disable-next-line max-len\n var lineDash = JSON.parse(annotation.annotationSelectorSettings).selectorLineDashArray.length === 0 ? [4] : JSON.parse(annotation.annotationSelectorSettings).selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n context.setLineDash(lineDash);\n context.globalAlpha = 1;\n context.rect(x * ratio, y * ratio, width * ratio, height * ratio);\n context.closePath();\n // eslint-disable-next-line max-len\n var borderColor = JSON.parse(annotation.annotationSelectorSettings).selectionBorderColor === '' ? '#0000ff' : JSON.parse(annotation.annotationSelectorSettings).selectionBorderColor;\n context.strokeStyle = borderColor;\n // eslint-disable-next-line max-len\n context.lineWidth = JSON.parse(annotation.annotationSelectorSettings).selectionBorderThickness === 1 ? 1 : (annotation.annotationSelectorSettings).selectionBorderThickness;\n context.stroke();\n context.save();\n }\n else {\n // eslint-disable-next-line max-len\n var lineDash = (annotation.annotationSelectorSettings).selectorLineDashArray.length === 0 ? [4] : (annotation.annotationSelectorSettings).selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n context.setLineDash(lineDash);\n context.globalAlpha = 1;\n context.rect(x * ratio, y * ratio, width * ratio, height * ratio);\n context.closePath();\n // eslint-disable-next-line max-len\n var borderColor = (annotation.annotationSelectorSettings).selectionBorderColor === '' ? '#0000ff' : (annotation.annotationSelectorSettings).selectionBorderColor;\n context.strokeStyle = borderColor;\n // eslint-disable-next-line max-len\n context.lineWidth = (annotation.annotationSelectorSettings).selectionBorderThickness ? 1 : (annotation.annotationSelectorSettings).selectionBorderThickness;\n context.stroke();\n context.save();\n }\n }\n };\n /**\n * @param isEnable\n * @private\n */\n TextMarkupAnnotation.prototype.enableAnnotationPropertiesTool = function (isEnable) {\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.colorDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-color-container');\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n if (!Browser.isDevice) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createMobileAnnotationToolbar(isEnable);\n }\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule.isMobileAnnotEnabled && this.pdfViewer.selectedItems.annotations.length === 0) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.selectAnnotationDeleteItem(isEnable);\n var enable = isEnable;\n if (this.isTextMarkupAnnotationMode) {\n enable = true;\n }\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableTextMarkupAnnotationPropertiesTools(enable);\n if (this.currentTextMarkupAnnotation) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.updateColorInIcon(this.pdfViewer.toolbarModule.annotationToolbarModule.colorDropDownElement, this.currentTextMarkupAnnotation.color);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.updateColorInIcon(this.pdfViewer.toolbarModule.annotationToolbarModule.colorDropDownElementInBlazor, this.currentTextMarkupAnnotation.color);\n }\n }\n else {\n if (!isNullOrUndefined(this.isTextMarkupAnnotationMode) && !this.isTextMarkupAnnotationMode) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.updateColorInIcon(this.pdfViewer.toolbarModule.annotationToolbarModule.colorDropDownElement, '#000000');\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.updateColorInIcon(this.pdfViewer.toolbarModule.annotationToolbarModule.colorDropDownElementInBlazor, '#000000');\n }\n }\n else {\n this.pdfViewer.toolbarModule.annotationToolbarModule.setCurrentColorInPicker();\n }\n }\n }\n }\n };\n /**\n * @private\n */\n TextMarkupAnnotation.prototype.maintainAnnotationSelection = function () {\n if (this.currentTextMarkupAnnotation) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + this.selectTextMarkupCurrentPage);\n if (canvas) {\n this.selectAnnotation(this.currentTextMarkupAnnotation, canvas, this.selectTextMarkupCurrentPage);\n }\n }\n };\n // private storeAnnotations(pageNumber: number, annotation: ITextMarkupAnnotation): number {\n // eslint-disable-next-line\n // let storeObject: any = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n // let index: number = 0;\n // if (!storeObject) {\n // let markupAnnotation: IPageAnnotations = { pageIndex: pageNumber, annotations: [] };\n // markupAnnotation.annotations.push(annotation);\n // index = markupAnnotation.annotations.indexOf(annotation);\n // let annotationCollection: IPageAnnotations[] = [];\n // annotationCollection.push(markupAnnotation);\n // let annotationStringified: string = JSON.stringify(annotationCollection);\n // window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_textMarkup', annotationStringified);\n // } else {\n // let annotObject: IPageAnnotations[] = JSON.parse(storeObject);\n // window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n // let pageIndex: number = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n // if (annotObject[pageIndex]) {\n // (annotObject[pageIndex] as IPageAnnotations).annotations.push(annotation);\n // index = (annotObject[pageIndex] as IPageAnnotations).annotations.indexOf(annotation);\n // } else {\n // let markupAnnotation: IPageAnnotations = { pageIndex: pageNumber, annotations: [] };\n // markupAnnotation.annotations.push(annotation);\n // index = markupAnnotation.annotations.indexOf(annotation);\n // annotObject.push(markupAnnotation);\n // }\n // let annotationStringified: string = JSON.stringify(annotObject);\n // window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_textMarkup', annotationStringified);\n // }\n // return index;\n // }\n /**\n * @param pageAnnotations\n * @param pageNumber\n * @private\n */\n TextMarkupAnnotation.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_textMarkup'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_textMarkup'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_textMarkup', annotationStringified);\n }\n }\n };\n /**\n * @param pageIndex\n * @param textMarkupAnnotations\n * @param id\n * @param pageIndex\n * @param textMarkupAnnotations\n * @param id\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getAnnotations = function (pageIndex, textMarkupAnnotations, id) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n if (id == null || id == undefined) {\n id = '_annotations_textMarkup';\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + id);\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + id];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = textMarkupAnnotations;\n }\n }\n else {\n annotationCollection = textMarkupAnnotations;\n }\n return annotationCollection;\n };\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getAddedAnnotation = function (type, color, opacity, bounds, author, subject, predefinedDate, note, isCommentLock, rect, pageNumber, textContent, startIndex, endIndex, isMultiSelect, allowedInteractions) {\n // eslint-disable-next-line max-len\n var modifiedDate = predefinedDate ? predefinedDate : this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('textMarkup', pageNumber + 1, type);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n // eslint-disable-next-line\n var annotationSettings = this.getAnnotationSettings(type);\n var isPrint = this.getIsPrintValue(type);\n var annotation = {\n // eslint-disable-next-line max-len\n textMarkupAnnotationType: type, color: color, opacity: opacity, bounds: bounds, author: author, allowedInteractions: allowedInteractions, subject: subject, modifiedDate: modifiedDate, note: note, rect: rect,\n annotName: annotationName, comments: [], review: { state: '', stateModel: '', author: author, modifiedDate: modifiedDate }, shapeAnnotationType: 'textMarkup', pageNumber: pageNumber,\n // eslint-disable-next-line max-len\n textMarkupContent: textContent, textMarkupStartIndex: startIndex, textMarkupEndIndex: endIndex, isMultiSelect: isMultiSelect, annotationSelectorSettings: this.getSelector(type),\n customData: this.pdfViewer.annotation.getTextMarkupData(subject), annotationAddMode: this.annotationAddMode, annotationSettings: annotationSettings, isPrint: isPrint, isCommentLock: isCommentLock\n };\n if (isMultiSelect) {\n this.multiPageCollection.push(annotation);\n }\n var isSkip = false;\n if (isMultiSelect && this.isExtended) {\n isSkip = true;\n }\n if (document.getElementById(annotationName) && !isSkip) {\n document.getElementById(annotationName).addEventListener('mouseup', this.annotationDivSelect(annotation, pageNumber));\n }\n var storedIndex = this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotation, '_annotations_textMarkup');\n this.pdfViewer.annotationModule.addAction(pageNumber, storedIndex, annotation, 'Text Markup Added', null);\n return annotation;\n };\n TextMarkupAnnotation.prototype.getSelector = function (type) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (type === 'Highlight' && this.pdfViewer.highlightSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.highlightSettings.annotationSelectorSettings;\n }\n else if (type === 'Underline' && this.pdfViewer.underlineSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.underlineSettings.annotationSelectorSettings;\n }\n else if (type === 'Strikethrough' && this.pdfViewer.strikethroughSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.strikethroughSettings.annotationSelectorSettings;\n }\n return selector;\n };\n TextMarkupAnnotation.prototype.getAnnotationSettings = function (type) {\n var annotationSettings = { isLock: false };\n if (type === 'Highlight' && this.pdfViewer.highlightSettings.isLock) {\n annotationSettings = { isLock: true };\n }\n else if (type === 'Underline' && this.pdfViewer.underlineSettings.isLock) {\n annotationSettings = { isLock: true };\n }\n else if (type === 'Strikethrough' && this.pdfViewer.strikethroughSettings.isLock) {\n annotationSettings = { isLock: true };\n }\n else if (this.pdfViewer.annotationSettings.isLock) {\n annotationSettings = { isLock: true };\n }\n return annotationSettings;\n };\n TextMarkupAnnotation.prototype.getIsPrintValue = function (type) {\n var isPrint = true;\n if (type === 'Highlight') {\n isPrint = this.pdfViewer.highlightSettings.isPrint;\n }\n if (type === 'Underline') {\n isPrint = this.pdfViewer.underlineSettings.isPrint;\n }\n if (type === 'Strikethrough') {\n isPrint = this.pdfViewer.strikethroughSettings.isPrint;\n }\n return isPrint;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.annotationDivSelect = function (annotation, pageNumber) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n this.selectAnnotation(annotation, canvas, pageNumber);\n if (this.pdfViewer.toolbarModule) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.clearShapeMode();\n this.pdfViewer.toolbarModule.annotationToolbarModule.clearMeasureMode();\n var isLock = false;\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n isLock = annotation.annotationSettings.isLock;\n }\n if (isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('PropertyChange', annotation)) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.toolbarModule.annotationToolbarModule.setCurrentColorInPicker();\n }\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', annotation)) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.selectAnnotationDeleteItem(true);\n }\n }\n else {\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.toolbarModule.annotationToolbarModule.selectAnnotationDeleteItem(true);\n this.pdfViewer.toolbarModule.annotationToolbarModule.setCurrentColorInPicker();\n }\n this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden = true;\n if (!isBlazor()) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n }\n }\n };\n TextMarkupAnnotation.prototype.getPageContext = function (pageNumber) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n var context = null;\n if (canvas) {\n context = canvas.getContext('2d');\n }\n return context;\n };\n TextMarkupAnnotation.prototype.getDefaultValue = function (value) {\n return value / this.pdfViewerBase.getZoomFactor();\n };\n TextMarkupAnnotation.prototype.getMagnifiedValue = function (value, factor) {\n return value * factor;\n };\n /**\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.saveImportedTextMarkupAnnotations = function (annotation, pageNumber) {\n var annotationObject = null;\n annotation.Author = this.pdfViewer.annotationModule.updateAnnotationAuthor('textMarkup', annotation.Subject);\n if (annotation.AnnotationSettings && annotation.AnnotationSettings.isLock) {\n annotation.AnnotationSettings = { isLock: annotation.AnnotationSettings.isLock };\n }\n else {\n annotation.AnnotationSettings = this.getAnnotationSettings(annotation.TextMarkupAnnotationType);\n }\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n // eslint-disable-next-line max-len\n annotationObject = {\n // eslint-disable-next-line max-len\n textMarkupAnnotationType: annotation.TextMarkupAnnotationType, color: annotation.Color, opacity: annotation.Opacity, allowedInteractions: annotation.allowedInteractions, bounds: annotation.Bounds, author: annotation.Author, subject: annotation.Subject, modifiedDate: annotation.ModifiedDate, note: annotation.Note, rect: annotation.Rect,\n annotName: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n shapeAnnotationType: 'textMarkup',\n pageNumber: pageNumber, textMarkupContent: '', textMarkupStartIndex: 0,\n // eslint-disable-next-line max-len\n textMarkupEndIndex: 0, annotationSelectorSettings: this.getSettings(annotation), customData: this.pdfViewer.annotation.getCustomData(annotation),\n isMultiSelect: annotation.IsMultiSelect, annotNameCollection: annotation.AnnotNameCollection, annotpageNumbers: annotation.AnnotpageNumbers,\n // eslint-disable-next-line max-len\n annotationAddMode: this.annotationAddMode, annotationSettings: annotation.AnnotationSettings, isPrint: annotation.isPrint, isCommentLock: annotation.IsCommentLock\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_textMarkup');\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateTextMarkupAnnotationCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var annotationObject = null;\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n annotationObject = {\n // eslint-disable-next-line max-len\n textMarkupAnnotationType: annotation.TextMarkupAnnotationType, allowedInteractions: annotation.allowedInteractions, color: annotation.Color, opacity: annotation.Opacity, bounds: annotation.Bounds, author: annotation.Author, subject: annotation.Subject, modifiedDate: annotation.ModifiedDate, note: annotation.Note, rect: annotation.Rect,\n annotationId: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, shapeAnnotationType: 'textMarkup', pageNumber: pageNumber, isMultiSelect: annotation.IsMultiSelect, annotNameCollection: annotation.AnnotNameCollection, annotpageNumbers: annotation.AnnotpageNumbers, customData: this.pdfViewer.annotation.getCustomData(annotation),\n isPrint: annotation.isPrint, isCommentLock: annotation.IsCommentLock\n };\n return annotationObject;\n };\n /**\n * @param textMarkUpSettings\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateTextMarkupSettings = function (textMarkUpSettings) {\n if (textMarkUpSettings === 'highlightSettings') {\n // eslint-disable-next-line max-len\n this.highlightColor = this.pdfViewer.highlightSettings.color ? this.pdfViewer.highlightSettings.color : this.highlightColor;\n // eslint-disable-next-line max-len\n this.highlightOpacity = this.pdfViewer.highlightSettings.opacity ? this.pdfViewer.highlightSettings.opacity : this.highlightOpacity;\n }\n if (textMarkUpSettings === 'underlineSettings') {\n // eslint-disable-next-line max-len\n this.underlineColor = this.pdfViewer.underlineSettings.color ? this.pdfViewer.underlineSettings.color : this.underlineColor;\n // eslint-disable-next-line max-len\n this.underlineOpacity = this.pdfViewer.underlineSettings.opacity ? this.pdfViewer.underlineSettings.opacity : this.underlineOpacity;\n }\n if (textMarkUpSettings === 'strikethroughSettings') {\n // eslint-disable-next-line max-len\n this.strikethroughColor = this.pdfViewer.strikethroughSettings.color ? this.pdfViewer.strikethroughSettings.color : this.strikethroughColor;\n // eslint-disable-next-line max-len\n this.strikethroughOpacity = this.pdfViewer.strikethroughSettings.opacity ? this.pdfViewer.strikethroughSettings.opacity : this.strikethroughOpacity;\n }\n };\n /**\n * @private\n */\n TextMarkupAnnotation.prototype.clear = function () {\n this.selectTextMarkupCurrentPage = null;\n this.currentTextMarkupAnnotation = null;\n this.annotationClickPosition = null;\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n };\n /**\n * Get vertex points properties\n * @private\n */\n TextMarkupAnnotation.prototype.getOffsetPoints = function (points) {\n var offsetPoints = [];\n //Converting points model into vertex property\n for (var j = 0; j < points.length; j++) {\n offsetPoints[j] = { X: points[j].x, Y: points[j].y, Width: points[j].width, Height: points[j].height, Left: points[j].x, Top: points[j].y };\n }\n return offsetPoints;\n };\n /**\n * This method used to add annotations with using program.\n *\n * @param annotationType - It describes the annotation type\n * @param annotationObject - It describes type of annotation object\n * @returns Object\n * @private\n */\n TextMarkupAnnotation.prototype.updateAddAnnotationDetails = function (annotationType, annotationObject) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { pageNumber: 0 };\n }\n //Initialize the annotation settings\n var annotSelectorSettings = null;\n var annotallowedInteractions = null;\n var textMarkupAnnotationType = '';\n var annotSettings = null;\n var color = '';\n var bounds = [];\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n if (annotationType == 'Highlight') {\n //Creating annotation settings\n annotSelectorSettings = this.pdfViewer.highlightSettings.annotationSelectorSettings ? this.pdfViewer.highlightSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.highlightSettings);\n annotallowedInteractions = this.pdfViewer.highlightSettings.allowedInteractions ? this.pdfViewer.highlightSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n textMarkupAnnotationType = 'Highlight';\n color = annotationObject.color ? annotationObject.color : '#ffff00';\n }\n else if (annotationType == 'Underline') {\n //Creating annotation settings\n annotSelectorSettings = this.pdfViewer.underlineSettings.annotationSelectorSettings ? this.pdfViewer.underlineSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.underlineSettings);\n annotallowedInteractions = this.pdfViewer.underlineSettings.allowedInteractions ? this.pdfViewer.underlineSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n textMarkupAnnotationType = 'Underline';\n color = annotationObject.color ? annotationObject.color : '#00ff00';\n }\n else if (annotationType == 'Strikethrough') {\n //Creating annotation settings\n annotSelectorSettings = this.pdfViewer.strikethroughSettings.annotationSelectorSettings ? this.pdfViewer.strikethroughSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.strikethroughSettings);\n annotallowedInteractions = this.pdfViewer.strikethroughSettings.allowedInteractions ? this.pdfViewer.strikethroughSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n textMarkupAnnotationType = 'Strikethrough';\n color = annotationObject.color ? annotationObject.color : '#ff0000';\n }\n annotSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n //Creating the offset points\n if (annotationObject.bounds) {\n bounds = this.getOffsetPoints(annotationObject.bounds);\n }\n else\n bounds = [{ X: 1, Y: 1, Width: 100, Height: 14, Left: 1, Top: 1, Location: { X: 1, Y: 1 }, Size: { Height: 14, IsEmpty: false, Width: 100 } }];\n //Creating Annotation objects with it's proper properties \n var textMarkupAnnotation = [];\n var textmarkup = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : annotallowedInteractions,\n AnnotName: annotationName,\n AnnotNameCollection: null,\n AnnotType: 'textMarkup',\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotSelectorSettings,\n AnnotationSettings: annotSettings,\n Author: annotationObject.author ? annotationObject.author : 'Guest',\n Bounds: bounds,\n Color: annotationObject.color ? annotationObject.color : color,\n Comments: null,\n CreatedDate: currentDateString,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n ExistingCustomData: null,\n EnableMultiPageAnnotation: annotationObject.enableMultiPageAnnotation ? annotationObject.enableMultiPageAnnotation : false,\n EnableTextMarkupResizer: annotationObject.enableTextMarkupResizer ? annotationObject.enableTextMarkupResizer : false,\n IsCommentLock: false,\n IsMultiSelect: false,\n IsLock: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: annotationObject.isPrint ? annotationObject.isPrint : true,\n ModifiedDate: currentDateString,\n Note: '',\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n Rect: {},\n State: '',\n StateModel: '',\n Subject: textMarkupAnnotationType,\n TextMarkupAnnotationType: textMarkupAnnotationType,\n };\n //Adding the annotation object to an array and return it\n textMarkupAnnotation[0] = textmarkup;\n return { textMarkupAnnotation: textMarkupAnnotation };\n };\n return TextMarkupAnnotation;\n}());\nexport { TextMarkupAnnotation };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @hidden\n */\nvar ShapeAnnotation = /** @class */ (function () {\n function ShapeAnnotation(pdfviewer, pdfViewerBase) {\n /**\n * @private\n */\n this.shapeCount = 0;\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param shapeAnnotations\n * @param pageNumber\n * @param isImportAcion\n * @private\n */\n // eslint-disable-next-line\n ShapeAnnotation.prototype.renderShapeAnnotations = function (shapeAnnotations, pageNumber, isImportAcion) {\n if (shapeAnnotations) {\n if (shapeAnnotations.length >= 1) {\n // eslint-disable-next-line\n var shapeAnnots = this.pdfViewer.annotation.getStoredAnnotations(pageNumber, shapeAnnotations, '_annotations_shape');\n if (!shapeAnnots || isImportAcion) {\n for (var i = 0; i < shapeAnnotations.length; i++) {\n // eslint-disable-next-line\n var annotation = shapeAnnotations[i];\n annotation.annotationAddMode = this.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n var annotationObject = null;\n this.shapeCount = this.shapeCount + 1;\n if (annotation.ShapeAnnotationType) {\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var x = annotation.VertexPoints[j].X ? annotation.VertexPoints[j].X : annotation.VertexPoints[j].x;\n var y = annotation.VertexPoints[j].Y ? annotation.VertexPoints[j].Y : annotation.VertexPoints[j].y;\n var point = { x: x, y: y };\n vertexPoints.push(point);\n }\n }\n // eslint-disable-next-line\n if (annotation.Bounds && annotation.EnableShapeLabel === true) {\n // eslint-disable-next-line max-len\n annotation.LabelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBoundsFromLoadedDocument(annotation.Bounds);\n // eslint-disable-next-line max-len\n annotation.LabelBorderColor = annotation.LabelBorderColor ? annotation.LabelBorderColor : annotation.StrokeColor;\n annotation.FontColor = annotation.FontColor ? annotation.FontColor : annotation.StrokeColor;\n annotation.LabelFillColor = annotation.LabelFillColor ? annotation.LabelFillColor : annotation.FillColor;\n annotation.FontSize = annotation.FontSize ? annotation.FontSize : 16;\n // eslint-disable-next-line max-len\n annotation.LabelSettings = annotation.LabelSettings ? annotation.LabelSettings : this.pdfViewer.shapeLabelSettings;\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotation.AnnotationSelectorSettings ? annotation.AnnotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var isPrint = true;\n if (annotation.annotationAddMode === 'Imported Annotation') {\n isPrint = annotation.IsPrint;\n }\n else {\n isPrint = annotation.AnnotationSettings.isPrint;\n }\n var left = annotation.Bounds.X ? annotation.Bounds.X : annotation.Bounds.x;\n var top_1 = annotation.Bounds.Y ? annotation.Bounds.Y : annotation.Bounds.y;\n var width = annotation.Bounds.Width ? annotation.Bounds.Width : annotation.Bounds.width;\n var height = annotation.Bounds.Height ? annotation.Bounds.Height : annotation.Bounds.height;\n // eslint-disable-next-line max-len\n annotationObject = {\n id: 'shape' + this.shapeCount, shapeAnnotationType: annotation.ShapeAnnotationType, author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n // eslint-disable-next-line max-len\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, thickness: annotation.Thickness, rectangleDifference: annotation.RectangleDifference,\n borderStyle: annotation.BorderStyle, borderDashArray: annotation.BorderDashArray, rotateAngle: annotation.RotateAngle, isCloudShape: annotation.IsCloudShape,\n // eslint-disable-next-line max-len\n cloudIntensity: annotation.CloudIntensity, vertexPoints: vertexPoints, lineHeadStart: annotation.LineHeadStart, lineHeadEnd: annotation.LineHeadEnd, isLocked: annotation.IsLocked, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, annotName: annotation.AnnotName,\n bounds: { left: left, top: top_1, width: width, height: height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n // eslint-disable-next-line max-len\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n fontColor: annotation.FontColor, labelBorderColor: annotation.LabelBorderColor, fontSize: annotation.FontSize,\n // eslint-disable-next-line max-len\n labelBounds: annotation.LabelBounds, annotationSelectorSettings: this.getSettings(annotation), labelSettings: annotation.LabelSettings, annotationSettings: annotation.AnnotationSettings,\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: isPrint, isCommentLock: annotation.IsCommentLock\n };\n var annot = void 0;\n // eslint-disable-next-line\n var vPoints = annotationObject.vertexPoints;\n if (vertexPoints == null) {\n vPoints = [];\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotation.AnnotationSelectorSettings ? annotation.AnnotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annot = {\n // eslint-disable-next-line max-len\n id: 'shape' + this.shapeCount, shapeAnnotationType: this.getShapeType(annotationObject), author: annotationObject.author, allowedInteractions: annotationObject.allowedInteractions, modifiedDate: annotationObject.modifiedDate, annotName: annotationObject.annotName,\n subject: annotationObject.subject, notes: annotationObject.note, fillColor: annotationObject.fillColor, strokeColor: annotationObject.strokeColor, opacity: annotationObject.opacity,\n // eslint-disable-next-line max-len\n thickness: annotationObject.thickness, borderStyle: annotationObject.borderStyle, borderDashArray: annotationObject.borderDashArray ? annotationObject.borderDashArray.toString() : '0', rotateAngle: parseFloat(annotationObject.rotateAngle.split('Angle')[1]), comments: annotationObject.comments, review: annotationObject.review, isCloudShape: annotationObject.isCloudShape, cloudIntensity: annotationObject.cloudIntensity, taregetDecoraterShapes: this.pdfViewer.annotation.getArrowType(annotationObject.lineHeadEnd),\n // eslint-disable-next-line max-len\n sourceDecoraterShapes: this.pdfViewer.annotation.getArrowType(annotationObject.lineHeadStart), vertexPoints: vPoints, bounds: { x: annotationObject.bounds.left, y: annotationObject.bounds.top, width: annotationObject.bounds.width, height: annotationObject.bounds.height },\n pageIndex: pageNumber,\n // eslint-disable-next-line max-len\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n fontColor: annotation.FontColor, labelBorderColor: annotation.LabelBorderColor, fontSize: annotation.FontSize,\n labelBounds: annotation.LabelBounds, annotationSelectorSettings: annotation.AnnotationSelectorSettings,\n annotationSettings: annotationObject.annotationSettings, annotationAddMode: annotation.annotationAddMode,\n isPrint: isPrint, isCommentLock: annotationObject.isCommentLock\n };\n var addedAnnot = this.pdfViewer.add(annot);\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_shape');\n if (this.isAddAnnotationProgramatically) {\n var settings = {\n opacity: annot.opacity, strokeColor: annot.strokeColor, thickness: annot.thickness, modifiedDate: annot.modifiedDate,\n width: annot.bounds.width, height: annot.bounds.height\n };\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, annotation.ShapeAnnotationType, annot.bounds, settings);\n }\n }\n }\n }\n }\n else if (shapeAnnotations.shapeAnnotationType) {\n var annotationObject = this.createAnnotationObject(shapeAnnotations);\n if (!isNullOrUndefined(shapeAnnotations.formFieldAnnotationType) && shapeAnnotations.formFieldAnnotationType !== \"\")\n this.pdfViewer.annotationModule.isFormFieldShape = true;\n else\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_shape');\n this.pdfViewer.annotationModule.triggerAnnotationAdd(shapeAnnotations);\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n ShapeAnnotation.prototype.getSettings = function (annotation) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else {\n selector = this.getSelector(annotation.ShapeAnnotationType, annotation.Subject);\n }\n return selector;\n };\n /**\n * @param type\n * @private\n */\n ShapeAnnotation.prototype.setAnnotationType = function (type) {\n this.updateShapeProperties();\n this.pdfViewerBase.disableTextSelectionMode();\n var author = 'Guest';\n switch (type) {\n case 'Line':\n this.currentAnnotationMode = 'Line';\n // eslint-disable-next-line max-len\n var modifiedDateLine = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.lineSettings.author ? this.pdfViewer.lineSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: this.setShapeType('Line'), fillColor: this.lineFillColor, notes: '', strokeColor: this.lineStrokeColor, opacity: this.lineOpacity,\n thickness: this.lineThickness, modifiedDate: modifiedDateLine, borderDashArray: this.lineDashArray.toString(),\n // eslint-disable-next-line max-len\n sourceDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.lineStartHead.toString()), taregetDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.lineEndHead.toString()),\n author: author, subject: 'Line', lineHeadStart: this.lineStartHead, lineHeadEnd: this.lineEndHead, isCommentLock: false\n };\n this.pdfViewer.tool = 'Line';\n break;\n case 'Arrow':\n this.currentAnnotationMode = 'Arrow';\n // eslint-disable-next-line max-len\n var modifiedDateArrow = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.arrowSettings.author ? this.pdfViewer.arrowSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n shapeAnnotationType: this.setShapeType('Arrow'), opacity: this.arrowOpacity,\n // eslint-disable-next-line max-len\n sourceDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.arrowStartHead.toString()),\n taregetDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.arrowEndHead.toString()),\n // eslint-disable-next-line max-len\n fillColor: this.arrowFillColor, strokeColor: this.arrowStrokeColor, notes: '', thickness: this.arrowThickness,\n borderDashArray: this.arrowDashArray.toString(), author: author, subject: 'Arrow',\n // eslint-disable-next-line max-len\n modifiedDate: modifiedDateArrow, lineHeadStart: this.arrowStartHead, lineHeadEnd: this.arrowEndHead, isCommentLock: false\n };\n this.pdfViewer.tool = 'Line';\n break;\n case 'Rectangle':\n this.currentAnnotationMode = 'Rectangle';\n // eslint-disable-next-line max-len\n var modifiedDateRect = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.rectangleSettings.author ? this.pdfViewer.rectangleSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n shapeAnnotationType: this.setShapeType('Rectangle'), strokeColor: this.rectangleStrokeColor,\n fillColor: this.rectangleFillColor, opacity: this.rectangleOpacity, notes: '',\n thickness: this.rectangleThickness, borderDashArray: '0', modifiedDate: modifiedDateRect,\n author: author, subject: 'Rectangle', isCommentLock: false\n };\n this.pdfViewer.tool = 'DrawTool';\n break;\n case 'Circle':\n this.currentAnnotationMode = 'Circle';\n // eslint-disable-next-line max-len\n var modifiedDateCir = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.circleSettings.author ? this.pdfViewer.circleSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n shapeAnnotationType: this.setShapeType('Circle'), strokeColor: this.circleStrokeColor,\n fillColor: this.circleFillColor, opacity: this.circleOpacity, notes: '',\n thickness: this.circleThickness, borderDashArray: '0', modifiedDate: modifiedDateCir,\n author: author, subject: 'Circle', isCommentLock: false\n };\n this.pdfViewer.tool = 'DrawTool';\n break;\n case 'Polygon':\n this.currentAnnotationMode = 'Polygon';\n // eslint-disable-next-line max-len\n var modifiedDatePolygon = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.polygonSettings.author ? this.pdfViewer.polygonSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n strokeColor: this.polygonStrokeColor, fillColor: this.polygonFillColor,\n opacity: this.polygonOpacity, thickness: this.polygonThickness, borderDashArray: '0',\n notes: '', author: author, subject: 'Polygon',\n modifiedDate: modifiedDatePolygon, borderStyle: '', isCommentLock: false\n };\n this.pdfViewer.tool = 'Polygon';\n break;\n }\n };\n ShapeAnnotation.prototype.updateShapeProperties = function () {\n this.lineFillColor = this.pdfViewer.lineSettings.fillColor ? this.pdfViewer.lineSettings.fillColor : '#ffffff00';\n this.lineStrokeColor = this.pdfViewer.lineSettings.strokeColor ? this.pdfViewer.lineSettings.strokeColor : '#ff0000';\n this.lineThickness = this.pdfViewer.lineSettings.thickness ? this.pdfViewer.lineSettings.thickness : 1;\n this.lineOpacity = this.pdfViewer.lineSettings.opacity ? this.pdfViewer.lineSettings.opacity : 1;\n this.lineDashArray = this.pdfViewer.lineSettings.borderDashArray ? this.pdfViewer.lineSettings.borderDashArray : 0;\n this.lineStartHead = this.pdfViewer.lineSettings.lineHeadStartStyle ? this.pdfViewer.lineSettings.lineHeadStartStyle : 'None';\n this.lineEndHead = this.pdfViewer.lineSettings.lineHeadEndStyle ? this.pdfViewer.lineSettings.lineHeadEndStyle : 'None';\n this.arrowFillColor = this.pdfViewer.arrowSettings.fillColor ? this.pdfViewer.arrowSettings.fillColor : '#ffffff00';\n this.arrowStrokeColor = this.pdfViewer.arrowSettings.strokeColor ? this.pdfViewer.arrowSettings.strokeColor : '#ff0000';\n this.arrowThickness = this.pdfViewer.arrowSettings.thickness ? this.pdfViewer.arrowSettings.thickness : 1;\n this.arrowOpacity = this.pdfViewer.arrowSettings.opacity ? this.pdfViewer.arrowSettings.opacity : 1;\n this.arrowDashArray = this.pdfViewer.arrowSettings.borderDashArray ? this.pdfViewer.arrowSettings.borderDashArray : 0;\n this.arrowStartHead = this.pdfViewer.arrowSettings.lineHeadStartStyle ? this.pdfViewer.arrowSettings.lineHeadStartStyle : 'Closed';\n this.arrowEndHead = this.pdfViewer.arrowSettings.lineHeadEndStyle ? this.pdfViewer.arrowSettings.lineHeadEndStyle : 'Closed';\n this.rectangleFillColor = this.pdfViewer.rectangleSettings.fillColor ? this.pdfViewer.rectangleSettings.fillColor : '#ffffff00';\n this.rectangleStrokeColor = this.pdfViewer.rectangleSettings.strokeColor ? this.pdfViewer.rectangleSettings.strokeColor : '#ff0000';\n this.rectangleThickness = this.pdfViewer.rectangleSettings.thickness ? this.pdfViewer.rectangleSettings.thickness : 1;\n this.rectangleOpacity = this.pdfViewer.rectangleSettings.opacity ? this.pdfViewer.rectangleSettings.opacity : 1;\n this.circleFillColor = this.pdfViewer.circleSettings.fillColor ? this.pdfViewer.circleSettings.fillColor : '#ffffff00';\n this.circleStrokeColor = this.pdfViewer.circleSettings.strokeColor ? this.pdfViewer.circleSettings.strokeColor : '#ff0000';\n this.circleThickness = this.pdfViewer.circleSettings.thickness ? this.pdfViewer.circleSettings.thickness : 1;\n this.circleOpacity = this.pdfViewer.circleSettings.opacity ? this.pdfViewer.circleSettings.opacity : 1;\n this.polygonFillColor = this.pdfViewer.polygonSettings.fillColor ? this.pdfViewer.polygonSettings.fillColor : '#ffffff00';\n this.polygonStrokeColor = this.pdfViewer.polygonSettings.strokeColor ? this.pdfViewer.polygonSettings.strokeColor : '#ff0000';\n this.polygonThickness = this.pdfViewer.polygonSettings.thickness ? this.pdfViewer.polygonSettings.thickness : 1;\n this.polygonOpacity = this.pdfViewer.polygonSettings.opacity ? this.pdfViewer.polygonSettings.opacity : 1;\n };\n ShapeAnnotation.prototype.setShapeType = function (shape) {\n var shapeType;\n switch (shape) {\n case 'Line':\n shapeType = 'Line';\n break;\n case 'Circle':\n shapeType = 'Ellipse';\n break;\n case 'Square':\n shapeType = 'Rectangle';\n break;\n case 'Polyline':\n shapeType = 'Line';\n break;\n case 'Arrow':\n shapeType = 'LineWidthArrowHead';\n break;\n }\n return shapeType;\n };\n ShapeAnnotation.prototype.getShapeType = function (shape) {\n var shapeType;\n switch (shape.shapeAnnotationType) {\n case 'Line':\n shapeType = 'Line';\n break;\n case 'Circle':\n shapeType = 'Ellipse';\n break;\n case 'Square':\n shapeType = 'Rectangle';\n break;\n case 'Polyline':\n shapeType = 'Line';\n break;\n case 'Polygon':\n shapeType = 'Polygon';\n break;\n }\n // eslint-disable-next-line max-len\n if ((shape.shapeAnnotationType === 'Line' || shape.shapeAnnotationType === 'Polyline') && (shape.lineHeadStart !== 'None' || shape.lineHeadEnd !== 'None')) {\n shapeType = 'LineWidthArrowHead';\n }\n return shapeType;\n };\n ShapeAnnotation.prototype.getShapeAnnotType = function (shape) {\n var shapeType;\n switch (shape) {\n case 'Line':\n case 'LineWidthArrowHead':\n shapeType = 'Line';\n break;\n case 'Rectangle':\n shapeType = 'Square';\n break;\n case 'Ellipse':\n shapeType = 'Circle';\n break;\n case 'Polygon':\n shapeType = 'Polygon';\n break;\n }\n return shapeType;\n };\n /**\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @private\n */\n // eslint-disable-next-line\n ShapeAnnotation.prototype.modifyInCollection = function (property, pageNumber, annotationBase) {\n if (!isNullOrUndefined(annotationBase.formFieldAnnotationType) && annotationBase.formFieldAnnotationType !== \"\")\n this.pdfViewer.annotationModule.isFormFieldShape = true;\n else\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n var currentAnnotObject = null;\n if (annotationBase) {\n if (property === 'bounds') {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationModifiedDate(annotationBase, true);\n }\n }\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.id === pageAnnotations[i].id) {\n if (property === 'bounds') {\n if (pageAnnotations[i].shapeAnnotationType === 'Line') {\n pageAnnotations[i].vertexPoints = annotationBase.vertexPoints;\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n else if (pageAnnotations[i].shapeAnnotationType === 'Polygon') {\n pageAnnotations[i].vertexPoints = annotationBase.vertexPoints;\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n else {\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n if (pageAnnotations[i].enableShapeLabel === true && annotationBase.wrapper) {\n var labelTop = 0;\n var labelLeft = 0;\n var labelWidth = 0;\n var labelHeight = 24.6;\n var labelMaxWidth = 151;\n if (annotationBase.wrapper.bounds.width) {\n // eslint-disable-next-line max-len\n labelWidth = (annotationBase.wrapper.bounds.width / 2);\n labelWidth = (labelWidth > 0 && labelWidth < labelMaxWidth) ? labelWidth : labelMaxWidth;\n }\n if (annotationBase.wrapper.bounds.left) {\n // eslint-disable-next-line max-len\n labelLeft = (annotationBase.wrapper.bounds.left + (annotationBase.wrapper.bounds.width / 2) - (labelWidth / 2));\n }\n if (annotationBase.wrapper.bounds.top) {\n // eslint-disable-next-line max-len\n labelTop = (annotationBase.wrapper.bounds.top + (annotationBase.wrapper.bounds.height / 2) - 12.3);\n }\n // eslint-disable-next-line max-len\n pageAnnotations[i].labelBounds = { left: labelLeft, top: labelTop, width: labelWidth, height: labelHeight, right: 0, bottom: 0 };\n }\n }\n else if (property === 'fill') {\n pageAnnotations[i].fillColor = annotationBase.wrapper.children[0].style.fill;\n }\n else if (property === 'stroke') {\n pageAnnotations[i].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n }\n else if (property === 'opacity') {\n pageAnnotations[i].opacity = annotationBase.wrapper.children[0].style.opacity;\n }\n else if (property === 'thickness') {\n pageAnnotations[i].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n }\n else if (property === 'dashArray') {\n pageAnnotations[i].borderDashArray = annotationBase.wrapper.children[0].style.strokeDashArray;\n pageAnnotations[i].borderStyle = annotationBase.borderStyle;\n }\n else if (property === 'startArrow') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].lineHeadStart = this.pdfViewer.annotation.getArrowTypeForCollection(annotationBase.sourceDecoraterShapes);\n }\n else if (property === 'endArrow') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].lineHeadEnd = this.pdfViewer.annotation.getArrowTypeForCollection(annotationBase.taregetDecoraterShapes);\n }\n else if (property === 'notes') {\n pageAnnotations[i].note = annotationBase.notes;\n }\n else if (property === 'delete') {\n currentAnnotObject = pageAnnotations.splice(i, 1)[0];\n break;\n }\n else if (property === 'labelContent') {\n pageAnnotations[i].note = annotationBase.labelContent;\n pageAnnotations[i].labelContent = annotationBase.labelContent;\n break;\n }\n else if (property === 'fontColor') {\n pageAnnotations[i].fontColor = annotationBase.fontColor;\n }\n else if (property === 'fontSize') {\n pageAnnotations[i].fontSize = annotationBase.fontSize;\n }\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], pageNumber);\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n /**\n * @param pageNumber\n * @param annotationBase\n * @param pageNumber\n * @param annotationBase\n * @private\n */\n ShapeAnnotation.prototype.addInCollection = function (pageNumber, annotationBase) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n pageAnnotations.push(annotationBase);\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n };\n /**\n * @private\n */\n ShapeAnnotation.prototype.saveShapeAnnotations = function () {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape'];\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject && !this.pdfViewer.annotationSettings.skipDownload) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n if (!this.pdfViewerBase.checkFormFieldCollection(pageAnnotationObject.annotations[z].id)) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n var strokeColorString = pageAnnotationObject.annotations[z].strokeColor;\n pageAnnotationObject.annotations[z].strokeColor = JSON.stringify(this.getRgbCode(strokeColorString));\n var fillColorString = pageAnnotationObject.annotations[z].fillColor;\n pageAnnotationObject.annotations[z].fillColor = JSON.stringify(this.getRgbCode(fillColorString));\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].vertexPoints = JSON.stringify(this.pdfViewer.annotation.getVertexPoints(pageAnnotationObject.annotations[z].vertexPoints, pageAnnotationObject.pageIndex));\n if (pageAnnotationObject.annotations[z].rectangleDifference !== null) {\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].rectangleDifference = JSON.stringify(pageAnnotationObject.annotations[z].rectangleDifference);\n }\n if (pageAnnotationObject.annotations[z].enableShapeLabel === true) {\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].labelBounds = JSON.stringify(this.pdfViewer.annotationModule.inputElementModule.calculateLabelBounds(JSON.parse(pageAnnotationObject.annotations[z].bounds)));\n var labelFillColorString = pageAnnotationObject.annotations[z].labelFillColor;\n pageAnnotationObject.annotations[z].labelFillColor = JSON.stringify(this.getRgbCode(labelFillColorString));\n var labelBorderColorString = pageAnnotationObject.annotations[z].labelBorderColor;\n pageAnnotationObject.annotations[z].labelBorderColor = JSON.stringify(this.getRgbCode(labelBorderColorString));\n pageAnnotationObject.annotations[z].labelSettings.fillColor = labelFillColorString;\n var fontColorString = pageAnnotationObject.annotations[z].labelSettings.fontColor;\n pageAnnotationObject.annotations[z].fontColor = JSON.stringify(this.getRgbCode(fontColorString));\n }\n }\n else {\n pageAnnotationObject.annotations[z] = \"\";\n }\n }\n pageAnnotationObject.annotations = pageAnnotationObject.annotations.filter(function (item) { return item; });\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n ShapeAnnotation.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_shape');\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_shape', annotationStringified);\n }\n }\n };\n ShapeAnnotation.prototype.createAnnotationObject = function (annotationModel) {\n var bound;\n var labelBound;\n var annotationName = this.pdfViewer.annotation.createGUID();\n if (!annotationModel.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('shape', (annotationModel.pageIndex + 1), annotationModel.shapeAnnotationType);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n }\n annotationModel.annotName = annotationName;\n if (annotationModel.wrapper.bounds) {\n bound = {\n // eslint-disable-next-line max-len\n left: annotationModel.wrapper.bounds.x, top: annotationModel.wrapper.bounds.y, height: annotationModel.wrapper.bounds.height, width: annotationModel.wrapper.bounds.width,\n right: annotationModel.wrapper.bounds.right, bottom: annotationModel.wrapper.bounds.bottom\n };\n labelBound = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBounds(annotationModel.wrapper.bounds);\n }\n else {\n bound = { left: 0, top: 0, height: 0, width: 0, right: 0, bottom: 0 };\n labelBound = { left: 0, top: 0, height: 0, width: 0, right: 0, bottom: 0 };\n }\n if (annotationModel.subject === 'Line' && annotationModel.shapeAnnotationType === 'Polygon') {\n annotationModel.author = this.pdfViewer.annotationModule.updateAnnotationAuthor('shape', 'Polygon');\n }\n else {\n annotationModel.author = this.pdfViewer.annotationModule.updateAnnotationAuthor('shape', annotationModel.subject);\n }\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(annotationName, annotationModel.notes);\n // eslint-disable-next-line radix\n var borderDashArray = parseInt(annotationModel.borderDashArray);\n borderDashArray = isNaN(borderDashArray) ? 0 : borderDashArray;\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.annotationModule.findAnnotationSettings(annotationModel, true);\n annotationModel.isPrint = annotationSettings.isPrint;\n var setting = this.pdfViewer.shapeLabelSettings;\n var labelSettings = { borderColor: annotationModel.strokeColor, fillColor: annotationModel.fillColor, fontColor: annotationModel.fontColor,\n fontSize: annotationModel.fontSize, labelContent: annotationModel.labelContent, labelHeight: setting.labelHeight, labelWidth: setting.labelMaxWidth, opacity: annotationModel.opacity\n };\n return {\n // eslint-disable-next-line max-len\n id: annotationModel.id, shapeAnnotationType: this.getShapeAnnotType(annotationModel.shapeAnnotationType), author: annotationModel.author, allowedInteractions: this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotationModel), subject: annotationModel.subject, note: annotationModel.notes,\n strokeColor: annotationModel.strokeColor, annotName: annotationName, comments: [], review: { state: '', stateModel: '', modifiedDate: this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime(), author: annotationModel.author },\n fillColor: annotationModel.fillColor, opacity: annotationModel.opacity, thickness: annotationModel.thickness,\n // eslint-disable-next-line max-len\n borderStyle: annotationModel.borderStyle, borderDashArray: borderDashArray, bounds: bound, modifiedDate: this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime(),\n rotateAngle: 'RotateAngle' + annotationModel.rotateAngle, isCloudShape: annotationModel.isCloudShape, cloudIntensity: annotationModel.cloudIntensity,\n // eslint-disable-next-line max-len\n vertexPoints: annotationModel.vertexPoints, lineHeadStart: this.pdfViewer.annotation.getArrowTypeForCollection(annotationModel.sourceDecoraterShapes),\n lineHeadEnd: this.pdfViewer.annotation.getArrowTypeForCollection(annotationModel.taregetDecoraterShapes), rectangleDifference: [], isLocked: annotationSettings.isLock,\n // eslint-disable-next-line max-len\n labelContent: annotationModel.labelContent, enableShapeLabel: annotationModel.enableShapeLabel, labelFillColor: annotationModel.labelFillColor,\n fontColor: annotationModel.fontColor, labelBorderColor: annotationModel.labelBorderColor, fontSize: annotationModel.fontSize,\n // eslint-disable-next-line max-len\n labelBounds: labelBound, annotationSelectorSettings: this.getSelector(annotationModel.shapeAnnotationType, annotationModel.subject), labelSettings: labelSettings, annotationSettings: annotationSettings,\n customData: this.pdfViewer.annotation.getShapeData(annotationModel.shapeAnnotationType, annotationModel.subject), isPrint: annotationModel.isPrint, isCommentLock: annotationModel.isCommentLock\n };\n };\n ShapeAnnotation.prototype.getSelector = function (type, subject) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (type === 'Line' && subject !== 'Arrow' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.lineSettings.annotationSelectorSettings;\n }\n else if ((type === 'LineWidthArrowHead' || subject === 'Arrow') && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.arrowSettings.annotationSelectorSettings;\n }\n else if ((type === 'Rectangle' || type === 'Square') && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.rectangleSettings.annotationSelectorSettings;\n }\n else if ((type === 'Ellipse' || type === 'Circle') && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.circleSettings.annotationSelectorSettings;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.polygonSettings.annotationSelectorSettings;\n }\n return selector;\n };\n // eslint-disable-next-line\n ShapeAnnotation.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n // eslint-disable-next-line\n ShapeAnnotation.prototype.getRgbCode = function (colorString) {\n if (!colorString.match(/#([a-z0-9]+)/gi) && !colorString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n colorString = this.pdfViewer.annotationModule.nameToHash(colorString);\n }\n var stringArray = colorString.split(',');\n if (isNullOrUndefined(stringArray[1])) {\n colorString = this.pdfViewer.annotationModule.getValue(colorString, 'rgba');\n stringArray = colorString.split(',');\n }\n // eslint-disable-next-line radix\n var r = parseInt(stringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var g = parseInt(stringArray[1]);\n // eslint-disable-next-line radix\n var b = parseInt(stringArray[2]);\n // eslint-disable-next-line radix\n var a = parseFloat(stringArray[3]);\n return { r: r, g: g, b: b, a: a };\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n ShapeAnnotation.prototype.saveImportedShapeAnnotations = function (annotation, pageNumber) {\n var annotationObject = null;\n var vertexPoints = null;\n annotation.Author = this.pdfViewer.annotationModule.updateAnnotationAuthor('shape', annotation.Subject);\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n if (annotation.Bounds && annotation.EnableShapeLabel === true) {\n // eslint-disable-next-line max-len\n annotation.LabelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBoundsFromLoadedDocument(annotation.Bounds);\n // eslint-disable-next-line max-len\n annotation.LabelBorderColor = annotation.LabelBorderColor ? annotation.LabelBorderColor : annotation.StrokeColor;\n annotation.FontColor = annotation.FontColor ? annotation.FontColor : annotation.StrokeColor;\n annotation.LabelFillColor = annotation.LabelFillColor ? annotation.LabelFillColor : annotation.FillColor;\n annotation.FontSize = annotation.FontSize ? annotation.FontSize : 16;\n annotation.LabelSettings = annotation.LabelSettings ? annotation.LabelSettings : this.pdfViewer.shapeLabelSettings;\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n // eslint-disable-next-line max-len\n annotationObject = {\n id: 'shape', shapeAnnotationType: annotation.ShapeAnnotationType, author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n // eslint-disable-next-line max-len\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, thickness: annotation.Thickness, rectangleDifference: annotation.RectangleDifference,\n borderStyle: annotation.BorderStyle, borderDashArray: annotation.BorderDashArray, rotateAngle: annotation.RotateAngle, isCloudShape: annotation.IsCloudShape,\n // eslint-disable-next-line max-len\n cloudIntensity: annotation.CloudIntensity, vertexPoints: vertexPoints, lineHeadStart: annotation.LineHeadStart, lineHeadEnd: annotation.LineHeadEnd, isLocked: annotation.IsLocked, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, annotName: annotation.AnnotName,\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n labelBorderColor: annotation.LabelBorderColor, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n // eslint-disable-next-line max-len\n labelBounds: annotation.LabelBounds, annotationSelectorSettings: this.getSettings(annotation), labelSettings: annotation.LabelSettings, annotationSettings: annotation.AnnotationSettings,\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_shape');\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n ShapeAnnotation.prototype.updateShapeAnnotationCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var annotationObject = null;\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n if (annotation.Bounds && annotation.EnableShapeLabel === true) {\n // eslint-disable-next-line max-len\n annotation.LabelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBoundsFromLoadedDocument(annotation.Bounds);\n // eslint-disable-next-line max-len\n annotation.LabelBorderColor = annotation.LabelBorderColor ? annotation.LabelBorderColor : annotation.StrokeColor;\n annotation.FontColor = annotation.FontColor ? annotation.FontColor : annotation.StrokeColor;\n annotation.LabelFillColor = annotation.LabelFillColor ? annotation.LabelFillColor : annotation.FillColor;\n annotation.FontSize = annotation.FontSize ? annotation.FontSize : 16;\n var settings = this.pdfViewer.shapeLabelSettings;\n var labelSettings = { borderColor: annotation.StrokeColor, fillColor: annotation.FillColor, fontColor: annotation.FontColor,\n fontSize: annotation.FontSize, labelContent: annotation.LabelContent, labelHeight: settings.labelHeight, labelWidth: settings.labelWidth, opacity: annotation.Opacity\n };\n annotation.LabelSettings = annotation.LabelSettings ? annotation.LabelSettings : labelSettings;\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n if (annotation.IsLocked) {\n annotation.AnnotationSettings.isLock = annotation.IsLocked;\n }\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n // eslint-disable-next-line max-len\n annotationObject = {\n id: 'shape', shapeAnnotationType: annotation.ShapeAnnotationType, author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n // eslint-disable-next-line max-len\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, thickness: annotation.Thickness, rectangleDifference: annotation.RectangleDifference,\n borderStyle: annotation.BorderStyle, borderDashArray: annotation.BorderDashArray, rotateAngle: annotation.RotateAngle, isCloudShape: annotation.IsCloudShape,\n // eslint-disable-next-line max-len\n cloudIntensity: annotation.CloudIntensity, vertexPoints: vertexPoints, lineHeadStart: annotation.LineHeadStart, lineHeadEnd: annotation.LineHeadEnd, isLocked: annotation.IsLocked, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, annotationId: annotation.AnnotName,\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n labelBorderColor: annotation.LabelBorderColor, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n // eslint-disable-next-line max-len\n labelBounds: annotation.LabelBounds, pageNumber: pageNumber, labelSettings: annotation.LabelSettings, annotationSettings: annotation.AnnotationSettings,\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.IsPrint\n };\n return annotationObject;\n };\n /**\n * This method used to add annotations with using program.\n *\n * @param annotationType - It describes the annotation type\n * @param annotationObject - It describes type of annotation object\n * @param offset - It describes about the annotation bounds or location\n * @returns Object\n * @private\n */\n ShapeAnnotation.prototype.updateAddAnnotationDetails = function (annotationType, annotationObject, offset) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { offset: { x: 10, y: 10 }, pageNumber: 0, width: undefined, height: undefined };\n offset = annotationObject.offset;\n }\n else if (!annotationObject.offset)\n offset = { x: 10, y: 10 };\n else\n offset = annotationObject.offset;\n //Initialize the annotation settings\n var annotationSelectorSettings = null;\n var allowedInteractions = null;\n var annotationSettings = null;\n var shapeAnnotationType = '';\n var isArrow = false;\n var vertexPoints = null;\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n if (annotationType == 'Line') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.lineSettings.annotationSelectorSettings ? this.pdfViewer.lineSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.lineSettings);\n allowedInteractions = this.pdfViewer.lineSettings.allowedInteractions ? this.pdfViewer.lineSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n shapeAnnotationType = 'Line';\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [{ x: offset.x, y: offset.y }, { x: offset.x + 100, y: offset.y }];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n else if (annotationType == 'Arrow') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.arrowSettings.annotationSelectorSettings ? this.pdfViewer.arrowSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.arrowSettings);\n allowedInteractions = this.pdfViewer.arrowSettings.allowedInteractions ? this.pdfViewer.arrowSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n shapeAnnotationType = 'Line';\n isArrow = true;\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [{ x: offset.x, y: offset.y }, { x: offset.x + 100, y: offset.y }];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n else if (annotationType == 'Rectangle') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.rectangleSettings.annotationSelectorSettings ? this.pdfViewer.rectangleSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.rectangleSettings);\n allowedInteractions = this.pdfViewer.rectangleSettings.allowedInteractions ? this.pdfViewer.rectangleSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n shapeAnnotationType = 'Square';\n annotationObject.width = annotationObject.width ? annotationObject.width : 150;\n annotationObject.height = annotationObject.height ? annotationObject.height : 75;\n }\n else if (annotationType == 'Circle') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.circleSettings.annotationSelectorSettings ? this.pdfViewer.circleSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.circleSettings);\n allowedInteractions = this.pdfViewer.circleSettings.allowedInteractions ? this.pdfViewer.circleSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n shapeAnnotationType = 'Circle';\n annotationObject.width = annotationObject.width ? annotationObject.width : 100;\n annotationObject.height = annotationObject.height ? annotationObject.height : 90;\n }\n else if (annotationType == 'Polygon') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.polygonSettings.annotationSelectorSettings ? this.pdfViewer.polygonSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.polygonSettings);\n allowedInteractions = this.pdfViewer.polygonSettings.allowedInteractions ? this.pdfViewer.polygonSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n shapeAnnotationType = 'Polygon';\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [{ x: offset.x, y: offset.y }, { x: offset.x + 42, y: offset.y - 29 }, { x: offset.x + 89, y: offset.y - 1 }, { x: offset.x + 78, y: offset.y + 42 }, { x: offset.x + 11, y: offset.y + 42 }, { x: offset.x, y: offset.y }];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n annotationSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n annotationSettings.minHeight = annotationObject.minHeight ? annotationObject.minHeight : 0;\n annotationSettings.minWidth = annotationObject.minWidth ? annotationObject.minWidth : 0;\n annotationSettings.maxWidth = annotationObject.maxWidth ? annotationObject.maxWidth : 0;\n annotationSettings.maxHeight = annotationObject.maxHeight ? annotationObject.maxHeight : 0;\n //Converting points model into vertex property\n if (vertexPoints)\n vertexPoints = this.pdfViewer.annotation.getVertexPointsXY(vertexPoints);\n //Creating Annotation objects with it's proper properties\n var shapeAnnotation = [];\n var shape = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : allowedInteractions,\n AnnotName: annotationName,\n AnnotType: 'shape',\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotationSelectorSettings,\n AnnotationSettings: annotationSettings,\n Author: annotationObject.author ? annotationObject.author : 'Guest',\n BorderDashArray: annotationObject.borderDashArray ? annotationObject.borderDashArray : 0,\n BorderStyle: 'Solid',\n Bounds: { X: offset.x, Y: offset.y, Width: annotationObject.width, Height: annotationObject.height, Left: offset.x, Top: offset.y, Location: { X: offset.x, Y: offset.y }, Size: { Height: annotationObject.height, IsEmpty: false, Width: annotationObject.width } },\n CloudIntensity: 0,\n Comments: null,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n CreatedDate: currentDateString,\n EnableShapeLabel: false,\n ExistingCustomData: null,\n FillColor: annotationObject.fillColor ? annotationObject.fillColor : '#ffffff00',\n FontColor: null,\n FontSize: 0,\n IsCloudShape: false,\n IsCommentLock: false,\n IsLocked: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: annotationObject.isPrint ? annotationObject.isPrint : true,\n LabelBorderColor: null,\n LabelBounds: { X: 0, Y: 0, Width: 0, Height: 0 },\n LabelContent: null,\n LabelFillColor: null,\n LabelSettings: null,\n LineHeadEnd: annotationObject.lineHeadStartStyle ? annotationObject.lineHeadStartStyle : isArrow ? 'ClosedArrow' : 'None',\n LineHeadStart: annotationObject.lineHeadEndStyle ? annotationObject.lineHeadEndStyle : isArrow ? 'ClosedArrow' : 'None',\n ModifiedDate: '',\n Note: '',\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n RectangleDifference: null,\n RotateAngle: 'RotateAngle0',\n ShapeAnnotationType: shapeAnnotationType,\n State: '',\n StateModel: '',\n StrokeColor: annotationObject.strokeColor ? annotationObject.strokeColor : '#ff0000',\n Subject: annotationType.toString(),\n Thickness: annotationObject.thickness ? annotationObject.thickness : 1,\n VertexPoints: vertexPoints\n };\n //Adding the annotation object to an array and return it\n shapeAnnotation[0] = shape;\n return { shapeAnnotation: shapeAnnotation };\n };\n return ShapeAnnotation;\n}());\nexport { ShapeAnnotation };\n","import { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { createElement, Browser, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Point } from '@syncfusion/ej2-drawings';\n/**\n * @hidden\n */\nvar MeasureAnnotation = /** @class */ (function () {\n function MeasureAnnotation(pdfviewer, pdfViewerBase) {\n /**\n * @private\n */\n this.measureShapeCount = 0;\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n Object.defineProperty(MeasureAnnotation.prototype, \"pixelToPointFactor\", {\n /**\n * @private\n */\n get: function () {\n return (72 / 96);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param shapeAnnotations\n * @param pageNumber\n * @param isImportAction\n * @param shapeAnnotations\n * @param pageNumber\n * @param isImportAction\n * @private\n */\n // eslint-disable-next-line\n MeasureAnnotation.prototype.renderMeasureShapeAnnotations = function (shapeAnnotations, pageNumber, isImportAction) {\n if (shapeAnnotations) {\n if (shapeAnnotations.length >= 1) {\n // eslint-disable-next-line\n var measureAnnots = this.pdfViewer.annotation.getStoredAnnotations(pageNumber, shapeAnnotations, '_annotations_shape_measure');\n if (!measureAnnots || isImportAction) {\n for (var i = 0; i < shapeAnnotations.length; i++) {\n // eslint-disable-next-line\n var annotation = shapeAnnotations[i];\n var annotationObject = null;\n this.measureShapeCount = this.measureShapeCount + 1;\n // eslint-disable-next-line max-len\n annotation.annotationAddMode = this.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n if (annotation.ShapeAnnotationType) {\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var x = annotation.VertexPoints[j].X ? annotation.VertexPoints[j].X : annotation.VertexPoints[j].x;\n var y = annotation.VertexPoints[j].Y ? annotation.VertexPoints[j].Y : annotation.VertexPoints[j].y;\n var point = { x: x, y: y };\n vertexPoints.push(point);\n }\n }\n if (annotation.Bounds && annotation.EnableShapeLabel === true) {\n // eslint-disable-next-line max-len\n annotation.LabelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBoundsFromLoadedDocument(annotation.Bounds);\n annotation.LabelBorderColor = annotation.LabelBorderColor ? annotation.LabelBorderColor : annotation.StrokeColor;\n annotation.FontColor = annotation.FontColor ? annotation.FontColor : annotation.StrokeColor;\n annotation.LabelFillColor = annotation.LabelFillColor ? annotation.LabelFillColor : annotation.FillColor;\n annotation.FontSize = annotation.FontSize ? annotation.FontSize : 16;\n // eslint-disable-next-line max-len\n annotation.LabelSettings = annotation.LabelSettings ? annotation.LabelSettings : this.pdfViewer.shapeLabelSettings;\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var isPrint = annotation.AnnotationSettings.isPrint;\n var measureObject = {\n // eslint-disable-next-line max-len\n ratio: annotation.Calibrate.Ratio, x: this.getNumberFormatArray(annotation.Calibrate.X), distance: this.getNumberFormatArray(annotation.Calibrate.Distance), area: this.getNumberFormatArray(annotation.Calibrate.Area), angle: this.getNumberFormatArray(annotation.Calibrate.Angle), volume: this.getNumberFormatArray(annotation.Calibrate.Volume),\n targetUnitConversion: annotation.Calibrate.TargetUnitConversion\n };\n if (annotation.Calibrate.Depth) {\n measureObject.depth = annotation.Calibrate.Depth;\n }\n var left = annotation.Bounds.X ? annotation.Bounds.X : annotation.Bounds.x;\n var top_1 = annotation.Bounds.Y ? annotation.Bounds.Y : annotation.Bounds.y;\n var width = annotation.Bounds.Width ? annotation.Bounds.Width : annotation.Bounds.width;\n var height = annotation.Bounds.Height ? annotation.Bounds.Height : annotation.Bounds.height;\n annotationObject = {\n // eslint-disable-next-line max-len\n id: 'measure' + this.measureShapeCount, shapeAnnotationType: annotation.ShapeAnnotationType, author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, thickness: annotation.Thickness, rectangleDifference: annotation.RectangleDifference,\n // eslint-disable-next-line max-len\n borderStyle: annotation.BorderStyle, borderDashArray: annotation.BorderDashArray, rotateAngle: annotation.RotateAngle, isCloudShape: annotation.IsCloudShape,\n cloudIntensity: annotation.CloudIntensity, vertexPoints: vertexPoints, lineHeadStart: annotation.LineHeadStart, lineHeadEnd: annotation.LineHeadEnd, isLocked: annotation.IsLocked,\n // eslint-disable-next-line max-len\n bounds: { left: left, top: top_1, width: width, height: height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n caption: annotation.Caption, captionPosition: annotation.CaptionPosition, calibrate: measureObject, leaderLength: annotation.LeaderLength, leaderLineExtension: annotation.LeaderLineExtension,\n // eslint-disable-next-line max-len\n leaderLineOffset: annotation.LeaderLineOffset, indent: annotation.Indent, annotName: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author),\n review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n // eslint-disable-next-line max-len\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n fontColor: annotation.FontColor, labelBorderColor: annotation.LabelBorderColor, fontSize: annotation.FontSize,\n // eslint-disable-next-line max-len\n labelBounds: annotation.LabelBounds, annotationSelectorSettings: this.getSettings(annotation), labelSettings: annotation.LabelSettings, annotationSettings: annotation.AnnotationSettings,\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: isPrint, isCommentLock: annotation.IsCommentLock\n };\n var annot = void 0;\n // eslint-disable-next-line\n var vPoints = annotationObject.vertexPoints;\n if (vertexPoints == null) {\n vPoints = [];\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotation.AnnotationSelectorSettings ? annotation.AnnotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n annot = {\n // eslint-disable-next-line max-len\n id: 'measure' + this.measureShapeCount, shapeAnnotationType: this.getShapeType(annotationObject), author: annotationObject.author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotationObject.modifiedDate,\n subject: annotationObject.subject, notes: annotationObject.note, fillColor: annotationObject.fillColor, strokeColor: annotationObject.strokeColor, opacity: annotationObject.opacity,\n // eslint-disable-next-line max-len\n thickness: annotationObject.thickness, borderStyle: annotationObject.borderStyle, borderDashArray: annotationObject.borderDashArray.toString(), rotateAngle: parseFloat(annotationObject.rotateAngle.split('Angle')[1]),\n isCloudShape: annotationObject.isCloudShape, cloudIntensity: annotationObject.cloudIntensity, taregetDecoraterShapes: this.pdfViewer.annotation.getArrowType(annotationObject.lineHeadEnd), sourceDecoraterShapes: this.pdfViewer.annotation.getArrowType(annotationObject.lineHeadStart),\n // eslint-disable-next-line max-len\n vertexPoints: vPoints, bounds: { x: annotationObject.bounds.left, y: annotationObject.bounds.top, width: annotationObject.bounds.width, height: annotationObject.bounds.height }, leaderHeight: annotationObject.leaderLength,\n pageIndex: pageNumber, annotName: annotationObject.annotName, comments: annotationObject.comments, review: annotationObject.review,\n measureType: this.getMeasureType(annotationObject),\n // eslint-disable-next-line max-len\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n fontColor: annotation.FontColor, labelBorderColor: annotation.LabelBorderColor, fontSize: annotation.FontSize,\n labelBounds: annotation.LabelBounds, annotationSelectorSettings: annotation.AnnotationSelectorSettings,\n annotationSettings: annotationObject.annotationSettings, annotationAddMode: annotation.annotationAddMode,\n isPrint: isPrint, isCommentLock: annotationObject.isCommentLock\n };\n this.pdfViewer.annotation.storeAnnotations(pageNumber, annotationObject, '_annotations_shape_measure');\n if (this.isAddAnnotationProgramatically) {\n var settings = {\n opacity: annot.opacity, strokeColor: annot.strokeColor, thickness: annot.thickness, modifiedDate: annot.modifiedDate,\n width: annot.bounds.width, height: annot.bounds.height\n };\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, annotation.ShapeAnnotationType, annot.bounds, settings);\n }\n this.pdfViewer.add(annot);\n }\n }\n }\n }\n else if (shapeAnnotations.shapeAnnotationType) {\n var annotationObject = this.createAnnotationObject(shapeAnnotations);\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_shape_measure');\n this.pdfViewer.annotationModule.triggerAnnotationAdd(shapeAnnotations);\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n MeasureAnnotation.prototype.getSettings = function (annotation) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else {\n selector = this.getSelector(annotation.Subject);\n }\n return selector;\n };\n /**\n * @param type\n * @private\n */\n MeasureAnnotation.prototype.setAnnotationType = function (type) {\n var author = 'Guest';\n this.updateMeasureproperties();\n this.pdfViewerBase.disableTextSelectionMode();\n switch (type) {\n case 'Distance':\n this.currentAnnotationMode = 'Distance';\n var modifiedDateDist = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.distanceSettings.author ? this.pdfViewer.distanceSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n sourceDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.distanceStartHead),\n taregetDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.distanceEndHead), measureType: 'Distance',\n fillColor: this.distanceFillColor, notes: '', strokeColor: this.distanceStrokeColor, leaderHeight: this.leaderLength,\n opacity: this.distanceOpacity, thickness: this.distanceThickness, borderDashArray: this.distanceDashArray.toString(),\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Distance', author: author, subject: 'Distance calculation', isCommentLock: false\n };\n this.pdfViewer.tool = 'Distance';\n break;\n case 'Perimeter':\n this.currentAnnotationMode = 'Perimeter';\n var modifiedDatePeri = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.perimeterSettings.author ? this.pdfViewer.perimeterSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'LineWidthArrowHead', fillColor: this.perimeterFillColor, notes: '', strokeColor: this.perimeterStrokeColor, opacity: this.perimeterOpacity,\n thickness: this.perimeterThickness, sourceDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.perimeterStartHead),\n // eslint-disable-next-line max-len\n taregetDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.perimeterEndHead), measureType: 'Perimeter', borderDashArray: this.perimeterDashArray.toString(),\n author: author, subject: 'Perimeter calculation', isCommentLock: false\n };\n this.pdfViewer.tool = 'Perimeter';\n break;\n case 'Area':\n this.currentAnnotationMode = 'Area';\n var modifiedDateArea = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.areaSettings.author ? this.pdfViewer.areaSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Polygon', fillColor: this.areaFillColor, notes: '', strokeColor: this.areaStrokeColor,\n thickness: this.areaThickness, opacity: this.areaOpacity, measureType: 'Area',\n modifiedDate: modifiedDateArea, borderStyle: '', borderDashArray: '0',\n author: author, subject: 'Area calculation', isCommentLock: false\n };\n this.pdfViewer.tool = 'Polygon';\n break;\n case 'Radius':\n this.currentAnnotationMode = 'Radius';\n var modifiedDateRad = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.radiusSettings.author ? this.pdfViewer.radiusSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Radius', fillColor: this.radiusFillColor, notes: '', strokeColor: this.radiusStrokeColor, opacity: this.radiusOpacity,\n thickness: this.radiusThickness, measureType: 'Radius', modifiedDate: modifiedDateRad, borderStyle: '', borderDashArray: '0',\n author: author, subject: 'Radius calculation', isCommentLock: false\n };\n this.pdfViewer.tool = 'DrawTool';\n break;\n case 'Volume':\n this.currentAnnotationMode = 'Volume';\n var modifiedDateVol = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.volumeSettings.author ? this.pdfViewer.volumeSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Polygon', notes: '', fillColor: this.volumeFillColor, strokeColor: this.volumeStrokeColor,\n opacity: this.volumeOpacity, thickness: this.volumeThickness, measureType: 'Volume',\n modifiedDate: modifiedDateVol, borderStyle: '', borderDashArray: '0',\n author: author, subject: 'Volume calculation', isCommentLock: false\n };\n this.pdfViewer.tool = 'Polygon';\n break;\n }\n };\n MeasureAnnotation.prototype.updateMeasureproperties = function () {\n this.distanceFillColor = this.pdfViewer.distanceSettings.fillColor ? this.pdfViewer.distanceSettings.fillColor : '#ff0000';\n this.distanceStrokeColor = this.pdfViewer.distanceSettings.strokeColor ? this.pdfViewer.distanceSettings.strokeColor : '#ff0000';\n this.distanceOpacity = this.pdfViewer.distanceSettings.opacity ? this.pdfViewer.distanceSettings.opacity : 1;\n this.distanceThickness = this.pdfViewer.distanceSettings.thickness ? this.pdfViewer.distanceSettings.thickness : 1;\n this.distanceDashArray = this.pdfViewer.distanceSettings.borderDashArray ? this.pdfViewer.distanceSettings.borderDashArray : 0;\n this.leaderLength = this.pdfViewer.distanceSettings.leaderLength != null ? this.pdfViewer.distanceSettings.leaderLength : 40;\n // eslint-disable-next-line max-len\n this.distanceStartHead = this.pdfViewer.distanceSettings.lineHeadStartStyle ? this.pdfViewer.distanceSettings.lineHeadStartStyle : 'Closed';\n this.distanceEndHead = this.pdfViewer.distanceSettings.lineHeadEndStyle ? this.pdfViewer.distanceSettings.lineHeadEndStyle : 'Closed';\n this.perimeterFillColor = this.pdfViewer.perimeterSettings.fillColor ? this.pdfViewer.perimeterSettings.fillColor : '#ffffff00';\n this.perimeterStrokeColor = this.pdfViewer.perimeterSettings.strokeColor ? this.pdfViewer.perimeterSettings.strokeColor : '#ff0000';\n this.perimeterOpacity = this.pdfViewer.perimeterSettings.opacity ? this.pdfViewer.perimeterSettings.opacity : 1;\n this.perimeterThickness = this.pdfViewer.perimeterSettings.thickness ? this.pdfViewer.perimeterSettings.thickness : 1;\n this.perimeterDashArray = this.pdfViewer.perimeterSettings.borderDashArray ? this.pdfViewer.perimeterSettings.borderDashArray : 0;\n // eslint-disable-next-line max-len\n this.perimeterStartHead = this.pdfViewer.perimeterSettings.lineHeadStartStyle ? this.pdfViewer.perimeterSettings.lineHeadStartStyle : 'Open';\n this.perimeterEndHead = this.pdfViewer.perimeterSettings.lineHeadEndStyle ? this.pdfViewer.perimeterSettings.lineHeadEndStyle : 'Open';\n this.areaFillColor = this.pdfViewer.areaSettings.fillColor ? this.pdfViewer.areaSettings.fillColor : '#ffffff00';\n this.areaStrokeColor = this.pdfViewer.areaSettings.strokeColor ? this.pdfViewer.areaSettings.strokeColor : '#ff0000';\n this.areaOpacity = this.pdfViewer.areaSettings.opacity ? this.pdfViewer.areaSettings.opacity : 1;\n this.areaThickness = this.pdfViewer.areaSettings.thickness ? this.pdfViewer.areaSettings.thickness : 1;\n this.radiusFillColor = this.pdfViewer.radiusSettings.fillColor ? this.pdfViewer.radiusSettings.fillColor : '#ffffff00';\n this.radiusStrokeColor = this.pdfViewer.radiusSettings.strokeColor ? this.pdfViewer.radiusSettings.strokeColor : '#ff0000';\n this.radiusOpacity = this.pdfViewer.radiusSettings.opacity ? this.pdfViewer.radiusSettings.opacity : 1;\n this.radiusThickness = this.pdfViewer.radiusSettings.thickness ? this.pdfViewer.radiusSettings.thickness : 1;\n this.volumeFillColor = this.pdfViewer.volumeSettings.fillColor ? this.pdfViewer.volumeSettings.fillColor : '#ffffff00';\n this.volumeStrokeColor = this.pdfViewer.volumeSettings.strokeColor ? this.pdfViewer.volumeSettings.strokeColor : '#ff0000';\n this.volumeOpacity = this.pdfViewer.volumeSettings.opacity ? this.pdfViewer.volumeSettings.opacity : 1;\n this.volumeThickness = this.pdfViewer.volumeSettings.thickness ? this.pdfViewer.volumeSettings.thickness : 1;\n this.unit = this.pdfViewer.measurementSettings.conversionUnit.toLowerCase();\n this.displayUnit = this.pdfViewer.measurementSettings.displayUnit.toLowerCase();\n this.ratio = this.pdfViewer.measurementSettings.scaleRatio;\n this.volumeDepth = this.pdfViewer.measurementSettings.depth;\n this.scaleRatioString = '1 ' + this.unit + ' = ' + this.ratio.toString() + ' ' + this.displayUnit;\n };\n MeasureAnnotation.prototype.createAnnotationObject = function (annotationModel) {\n var bound;\n var labelBound;\n var annotationName = this.pdfViewer.annotation.createGUID();\n // eslint-disable-next-line max-len\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('shape_measure', (annotationModel.pageIndex + 1), annotationModel.measureType);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n annotationModel.annotName = annotationName;\n annotationModel.author = this.pdfViewer.annotationModule.updateAnnotationAuthor('measure', annotationModel.subject);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(annotationName, annotationModel.notes);\n if (annotationModel.wrapper.bounds) {\n bound = {\n // eslint-disable-next-line max-len\n left: annotationModel.wrapper.bounds.x, top: annotationModel.wrapper.bounds.y, height: annotationModel.wrapper.bounds.height, width: annotationModel.wrapper.bounds.width,\n right: annotationModel.wrapper.bounds.right, bottom: annotationModel.wrapper.bounds.bottom\n };\n labelBound = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBounds(annotationModel.wrapper.bounds);\n }\n else {\n bound = { left: 0, top: 0, height: 0, width: 0, right: 0, bottom: 0 };\n labelBound = { left: 0, top: 0, height: 0, width: 0, right: 0, bottom: 0 };\n }\n // eslint-disable-next-line radix\n var borderDashArray = parseInt(annotationModel.borderDashArray);\n borderDashArray = isNaN(borderDashArray) ? 0 : borderDashArray;\n // eslint-disable-next-line max-len\n var measure = { ratio: this.scaleRatioString, x: [this.createNumberFormat('x')], distance: [this.createNumberFormat('d')], area: [this.createNumberFormat('a')] };\n if (annotationModel.measureType === 'Volume') {\n measure.depth = this.volumeDepth;\n }\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.annotationModule.findAnnotationSettings(annotationModel, true);\n // eslint-disable-next-line\n var allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotationModel);\n annotationModel.isPrint = annotationSettings.isPrint;\n var setting = this.pdfViewer.shapeLabelSettings;\n var labelSettings = { borderColor: annotationModel.strokeColor, fillColor: annotationModel.fillColor, fontColor: annotationModel.fontColor,\n fontSize: annotationModel.fontSize, labelContent: annotationModel.labelContent, labelHeight: setting.labelHeight, labelWidth: setting.labelMaxWidth, opacity: annotationModel.opacity\n };\n return {\n // eslint-disable-next-line max-len\n id: annotationModel.id, shapeAnnotationType: this.getShapeAnnotType(annotationModel.measureType), author: annotationModel.author, allowedInteractions: allowedInteractions,\n subject: annotationModel.subject, note: annotationModel.notes, strokeColor: annotationModel.strokeColor,\n fillColor: annotationModel.fillColor, opacity: annotationModel.opacity, thickness: annotationModel.thickness,\n // eslint-disable-next-line max-len\n borderStyle: annotationModel.borderStyle, borderDashArray: borderDashArray, bounds: bound,\n // eslint-disable-next-line max-len\n modifiedDate: this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime(),\n rotateAngle: 'RotateAngle' + annotationModel.rotateAngle, isCloudShape: annotationModel.isCloudShape, cloudIntensity: annotationModel.cloudIntensity,\n // eslint-disable-next-line max-len\n vertexPoints: annotationModel.vertexPoints, lineHeadStart: this.pdfViewer.annotation.getArrowTypeForCollection(annotationModel.sourceDecoraterShapes),\n lineHeadEnd: this.pdfViewer.annotation.getArrowTypeForCollection(annotationModel.taregetDecoraterShapes), rectangleDifference: [], isLocked: annotationSettings.isLock,\n // eslint-disable-next-line max-len\n leaderLength: annotationModel.leaderHeight, leaderLineExtension: 2, leaderLineOffset: 0, calibrate: measure, caption: true, captionPosition: 'Top',\n indent: this.getIndent(annotationModel.measureType), annotName: annotationName, comments: [], review: { state: '', stateModel: '', modifiedDate: this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime(), author: annotationModel.author },\n // eslint-disable-next-line max-len\n labelContent: annotationModel.labelContent, enableShapeLabel: annotationModel.enableShapeLabel, labelFillColor: annotationModel.labelFillColor,\n labelBorderColor: annotationModel.labelBorderColor, fontColor: annotationModel.fontColor, fontSize: annotationModel.fontSize,\n // eslint-disable-next-line max-len\n labelBounds: labelBound, annotationSelectorSettings: this.getSelector(annotationModel.subject), labelSettings: labelSettings, annotationSettings: annotationSettings,\n customData: this.pdfViewer.annotation.getMeasureData(annotationModel.subject), isPrint: annotationModel.isPrint, isCommentLock: annotationModel.isCommentLock\n };\n };\n MeasureAnnotation.prototype.getSelector = function (type) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if ((type === 'Distance calculation') && this.pdfViewer.distanceSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.distanceSettings.annotationSelectorSettings;\n }\n else if ((type === 'Perimeter calculation') && this.pdfViewer.perimeterSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.perimeterSettings.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n }\n else if ((type === 'Area calculation') && this.pdfViewer.areaSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.areaSettings.annotationSelectorSettings;\n }\n else if ((type === 'Radius calculation') && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.radiusSettings.annotationSelectorSettings;\n }\n else if ((type === 'Volume calculation') && this.pdfViewer.volumeSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.volumeSettings.annotationSelectorSettings;\n }\n return selector;\n };\n MeasureAnnotation.prototype.getShapeAnnotType = function (measureType) {\n var annotationType;\n switch (measureType) {\n case 'Distance':\n annotationType = 'Line';\n break;\n case 'Perimeter':\n annotationType = 'Polyline';\n break;\n case 'Area':\n case 'Volume':\n annotationType = 'Polygon';\n break;\n case 'Radius':\n annotationType = 'Circle';\n break;\n }\n return annotationType;\n };\n MeasureAnnotation.prototype.getShapeType = function (shape) {\n var shapeType;\n if (shape.shapeAnnotationType === 'Line') {\n shapeType = 'Distance';\n }\n else if (shape.shapeAnnotationType === 'Polyline') {\n shapeType = 'LineWidthArrowHead';\n }\n else if (shape.shapeAnnotationType === 'Polygon' && shape.indent === 'PolygonDimension') {\n shapeType = 'Polygon';\n // eslint-disable-next-line max-len\n }\n else if ((shape.shapeAnnotationType === 'Polygon' && shape.indent === 'PolygonRadius') || shape.shapeAnnotationType === 'Circle') {\n shapeType = 'Radius';\n }\n else if (shape.shapeAnnotationType === 'Polygon' && shape.indent === 'PolygonVolume') {\n shapeType = 'Polygon';\n }\n return shapeType;\n };\n MeasureAnnotation.prototype.getMeasureType = function (shape) {\n var measureType;\n if (shape.shapeAnnotationType === 'Line') {\n measureType = 'Distance';\n }\n else if (shape.shapeAnnotationType === 'Polyline') {\n measureType = 'Perimeter';\n }\n else if (shape.shapeAnnotationType === 'Polygon' && shape.indent === 'PolygonDimension') {\n measureType = 'Area';\n // eslint-disable-next-line max-len\n }\n else if ((shape.shapeAnnotationType === 'Polygon' && shape.indent === 'PolygonRadius') || shape.shapeAnnotationType === 'Circle') {\n measureType = 'Radius';\n }\n else if (shape.shapeAnnotationType === 'Polygon' && shape.indent === 'PolygonVolume') {\n measureType = 'Volume';\n }\n return measureType;\n };\n MeasureAnnotation.prototype.getIndent = function (measureType) {\n var indent;\n switch (measureType) {\n case 'Distance':\n indent = 'LineDimension';\n break;\n case 'Perimeter':\n indent = 'PolyLineDimension';\n break;\n case 'Area':\n indent = 'PolygonDimension';\n break;\n case 'Radius':\n indent = 'PolygonRadius';\n break;\n case 'Volume':\n indent = 'PolygonVolume';\n break;\n }\n return indent;\n };\n // eslint-disable-next-line\n MeasureAnnotation.prototype.getNumberFormatArray = function (list) {\n // eslint-disable-next-line\n var numberFormatArray = new Array();\n if (list) {\n for (var i = 0; i < list.length; i++) {\n // eslint-disable-next-line max-len\n numberFormatArray[i] = { unit: list[i].Unit, fractionalType: list[i].FractionalType, conversionFactor: list[i].ConversionFactor, denominator: list[i].Denominator, formatDenominator: list[i].FormatDenominator };\n }\n }\n return numberFormatArray;\n };\n MeasureAnnotation.prototype.createNumberFormat = function (type) {\n var cFactor = 1;\n var unit = this.displayUnit;\n if (type === 'x') {\n cFactor = this.getFactor(this.unit);\n }\n if (type === 'a') {\n unit = 'sq ' + this.displayUnit;\n }\n // eslint-disable-next-line max-len\n var numberFormat = { unit: unit, fractionalType: 'D', conversionFactor: cFactor, denominator: 100, formatDenominator: false };\n return numberFormat;\n };\n /**\n * @private\n */\n MeasureAnnotation.prototype.saveMeasureShapeAnnotations = function () {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape_measure');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape_measure'];\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject && !this.pdfViewer.annotationSettings.skipDownload) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n var strokeColorString = pageAnnotationObject.annotations[z].strokeColor;\n pageAnnotationObject.annotations[z].strokeColor = JSON.stringify(this.getRgbCode(strokeColorString));\n var fillColorString = pageAnnotationObject.annotations[z].fillColor;\n pageAnnotationObject.annotations[z].fillColor = JSON.stringify(this.getRgbCode(fillColorString));\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].vertexPoints = JSON.stringify(this.pdfViewer.annotation.getVertexPoints(pageAnnotationObject.annotations[z].vertexPoints, pageAnnotationObject.pageIndex));\n if (pageAnnotationObject.annotations[z].rectangleDifference !== null) {\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].rectangleDifference = JSON.stringify(pageAnnotationObject.annotations[z].rectangleDifference);\n }\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].calibrate = this.getStringifiedMeasure(pageAnnotationObject.annotations[z].calibrate);\n if (pageAnnotationObject.annotations[z].enableShapeLabel === true) {\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].labelBounds = JSON.stringify(this.pdfViewer.annotationModule.inputElementModule.calculateLabelBounds(JSON.parse(pageAnnotationObject.annotations[z].bounds), pageAnnotationObject.pageIndex));\n var labelFillColorString = pageAnnotationObject.annotations[z].labelFillColor;\n pageAnnotationObject.annotations[z].labelFillColor = JSON.stringify(this.getRgbCode(labelFillColorString));\n var labelBorderColorString = pageAnnotationObject.annotations[z].labelBorderColor;\n pageAnnotationObject.annotations[z].labelBorderColor = JSON.stringify(this.getRgbCode(labelBorderColorString));\n pageAnnotationObject.annotations[z].labelSettings.fillColor = labelFillColorString;\n var fontColorString = pageAnnotationObject.annotations[z].labelSettings.fontColor;\n pageAnnotationObject.annotations[z].fontColor = JSON.stringify(this.getRgbCode(fontColorString));\n }\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n /**\n * @private\n */\n MeasureAnnotation.prototype.createScaleRatioWindow = function () {\n var _this = this;\n if (!isBlazor()) {\n var elementID = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n var dialogDiv = createElement('div', { id: elementID + '_scale_ratio_window', className: 'e-pv-scale-ratio-window' });\n this.pdfViewerBase.pageContainer.appendChild(dialogDiv);\n var contentElement = this.createRatioUI();\n this.scaleRatioDialog = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true, header: this.pdfViewer.localeObj.getConstant('Scale Ratio'),\n target: this.pdfViewer.element, content: contentElement, close: function () {\n _this.sourceTextBox.destroy();\n _this.convertUnit.destroy();\n _this.destTextBox.destroy();\n _this.dispUnit.destroy();\n _this.scaleRatioDialog.destroy();\n var dialogElement = _this.pdfViewerBase.getElement('_scale_ratio_window');\n dialogElement.parentElement.removeChild(dialogElement);\n }\n });\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.scaleRatioDialog.buttons = [\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.onOkClicked.bind(this) },\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.onCancelClicked.bind(this) }\n ];\n }\n else {\n this.scaleRatioDialog.buttons = [\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.onCancelClicked.bind(this) },\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.onOkClicked.bind(this) }\n ];\n }\n if (this.pdfViewer.enableRtl) {\n this.scaleRatioDialog.enableRtl = true;\n }\n this.scaleRatioDialog.appendTo(dialogDiv);\n this.convertUnit.content = this.createContent(this.pdfViewer.localeObj.getConstant(this.unit)).outerHTML;\n this.dispUnit.content = this.createContent(this.pdfViewer.localeObj.getConstant(this.displayUnit)).outerHTML;\n this.depthUnit.content = this.createContent(this.pdfViewer.localeObj.getConstant(this.displayUnit)).outerHTML;\n }\n else {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenScaleRatioDialog');\n }\n };\n MeasureAnnotation.prototype.createRatioUI = function () {\n var element = createElement('div');\n var elementID = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n var items = [{ text: this.pdfViewer.localeObj.getConstant('pt'), label: 'pt' }, { text: this.pdfViewer.localeObj.getConstant('in'), label: 'in' }, { text: this.pdfViewer.localeObj.getConstant('mm'), label: 'mm' }, { text: this.pdfViewer.localeObj.getConstant('cm'), label: 'cm' }, { text: this.pdfViewer.localeObj.getConstant('p'), label: 'p' }, { text: this.pdfViewer.localeObj.getConstant('ft'), label: 'ft' }, { text: this.pdfViewer.localeObj.getConstant('ft_in'), label: 'ft_in' }, { text: this.pdfViewer.localeObj.getConstant('m'), label: 'm' }];\n var labelText = createElement('div', { id: elementID + '_scale_ratio_label', className: 'e-pv-scale-ratio-text' });\n labelText.textContent = this.pdfViewer.localeObj.getConstant('Scale Ratio');\n element.appendChild(labelText);\n var sourceContainer = createElement('div', { id: elementID + '_scale_src_container' });\n element.appendChild(sourceContainer);\n // eslint-disable-next-line max-len\n var srcInputElement = this.createInputElement('input', 'e-pv-scale-ratio-src-input', elementID + '_src_input', sourceContainer);\n this.sourceTextBox = new NumericTextBox({ value: 1, format: '##', cssClass: 'e-pv-scale-ratio-src-input', min: 1, max: 100 }, srcInputElement);\n // eslint-disable-next-line max-len\n var srcUnitElement = this.createInputElement('button', 'e-pv-scale-ratio-src-unit', elementID + '_src_unit', sourceContainer);\n this.convertUnit = new DropDownButton({ items: items, cssClass: 'e-pv-scale-ratio-src-unit' }, srcUnitElement);\n this.convertUnit.select = this.convertUnitSelect.bind(this);\n var destinationContainer = createElement('div', { id: elementID + '_scale_dest_container' });\n // eslint-disable-next-line max-len\n var destInputElement = this.createInputElement('input', 'e-pv-scale-ratio-dest-input', elementID + '_dest_input', destinationContainer);\n this.destTextBox = new NumericTextBox({ value: 1, format: '##', cssClass: 'e-pv-scale-ratio-dest-input', min: 1, max: 100 }, destInputElement);\n // eslint-disable-next-line max-len\n var destUnitElement = this.createInputElement('button', 'e-pv-scale-ratio-dest-unit', elementID + '_dest_unit', destinationContainer);\n this.dispUnit = new DropDownButton({ items: items, cssClass: 'e-pv-scale-ratio-dest-unit' }, destUnitElement);\n this.dispUnit.select = this.dispUnitSelect.bind(this);\n element.appendChild(destinationContainer);\n var depthLabelText = createElement('div', { id: elementID + '_depth_label', className: 'e-pv-depth-text' });\n depthLabelText.textContent = this.pdfViewer.localeObj.getConstant('Depth');\n element.appendChild(depthLabelText);\n var depthContainer = createElement('div', { id: elementID + '_depth_container' });\n element.appendChild(depthContainer);\n // eslint-disable-next-line max-len\n var depthInputElement = this.createInputElement('input', 'e-pv-depth-input', elementID + '_depth_input', depthContainer);\n this.depthTextBox = new NumericTextBox({ value: this.volumeDepth, format: '##', cssClass: 'e-pv-depth-input', min: 1 }, depthInputElement);\n // eslint-disable-next-line max-len\n var depthUnitElement = this.createInputElement('button', 'e-pv-depth-unit', elementID + '_depth_unit', depthContainer);\n this.depthUnit = new DropDownButton({ items: items, cssClass: 'e-pv-depth-unit' }, depthUnitElement);\n this.depthUnit.select = this.depthUnitSelect.bind(this);\n return element;\n };\n MeasureAnnotation.prototype.convertUnitSelect = function (args) {\n this.convertUnit.content = this.createContent(args.item.text).outerHTML;\n };\n MeasureAnnotation.prototype.dispUnitSelect = function (args) {\n this.dispUnit.content = this.createContent(args.item.text).outerHTML;\n this.depthUnit.content = this.createContent(args.item.text).outerHTML;\n };\n MeasureAnnotation.prototype.depthUnitSelect = function (args) {\n this.depthUnit.content = this.createContent(args.item.text).outerHTML;\n };\n MeasureAnnotation.prototype.createContent = function (text) {\n var divElement = createElement('div', { className: 'e-pv-scale-unit-content' });\n divElement.textContent = text;\n return divElement;\n };\n MeasureAnnotation.prototype.createInputElement = function (input, className, idString, parentElement) {\n var container = createElement('div', { id: idString + '_container', className: className + '-container' });\n var textBoxInput = createElement(input, { id: idString });\n if (input === 'input') {\n textBoxInput.type = 'text';\n }\n container.appendChild(textBoxInput);\n parentElement.appendChild(container);\n return textBoxInput;\n };\n /**\n * @private\n */\n MeasureAnnotation.prototype.onOkClicked = function () {\n if (isBlazor()) {\n // eslint-disable-next-line\n var unitElement = document.querySelector('#' + this.pdfViewer.element.id + '_src_unit');\n // eslint-disable-next-line\n var displayElement = document.querySelector('#' + this.pdfViewer.element.id + '_dest_unit');\n // eslint-disable-next-line\n var sourceTextBox = document.querySelector('#' + this.pdfViewer.element.id + '_ratio_input');\n // eslint-disable-next-line\n var destTextBox = document.querySelector('#' + this.pdfViewer.element.id + '_dest_input');\n // eslint-disable-next-line\n var depthTextBox = document.querySelector('#' + this.pdfViewer.element.id + '_depth_input');\n if (unitElement && displayElement && sourceTextBox && destTextBox && depthTextBox) {\n this.unit = unitElement.value;\n this.displayUnit = displayElement.value;\n // eslint-disable-next-line\n this.ratio = parseInt(destTextBox.value) / parseInt(sourceTextBox.value);\n // eslint-disable-next-line\n this.volumeDepth = parseInt(depthTextBox.value);\n }\n // eslint-disable-next-line\n this.scaleRatioString = parseInt(sourceTextBox.value) + ' ' + this.unit + ' = ' + parseInt(destTextBox.value) + ' ' + this.displayUnit;\n this.updateMeasureValues(this.scaleRatioString, this.displayUnit, this.unit, this.volumeDepth);\n }\n else {\n this.unit = this.getContent(this.convertUnit.content);\n this.displayUnit = this.getContent(this.dispUnit.content);\n this.ratio = this.destTextBox.value / this.sourceTextBox.value;\n this.volumeDepth = this.depthTextBox.value;\n this.scaleRatioString = this.sourceTextBox.value + ' ' + this.unit + ' = ' + this.destTextBox.value + ' ' + this.displayUnit;\n this.scaleRatioDialog.hide();\n var originalUnit = void 0;\n var originalDisplayUnit = void 0;\n originalUnit = this.restoreUnit(this.convertUnit);\n originalDisplayUnit = this.restoreUnit(this.dispUnit);\n this.updateMeasureValues(this.scaleRatioString, originalDisplayUnit, originalUnit, this.volumeDepth);\n }\n };\n MeasureAnnotation.prototype.restoreUnit = function (dropdownObject) {\n var calibUnit;\n for (var i = 0; i < dropdownObject.items.length; i++) {\n var convertUnitItem = dropdownObject.items[i];\n if (this.unit === convertUnitItem.text) {\n calibUnit = convertUnitItem.label;\n }\n }\n return calibUnit;\n };\n /**\n * @param ratio\n * @param displayUnit\n * @param conversionUnit\n * @param depth\n * @private\n */\n MeasureAnnotation.prototype.updateMeasureValues = function (ratio, displayUnit, conversionUnit, depth) {\n this.scaleRatioString = ratio;\n this.displayUnit = displayUnit;\n this.unit = conversionUnit;\n this.volumeDepth = depth;\n for (var i = 0; i < this.pdfViewerBase.pageCount; i++) {\n var pageAnnotations = this.getAnnotations(i, null);\n if (pageAnnotations) {\n for (var j = 0; j < pageAnnotations.length; j++) {\n pageAnnotations = this.getAnnotations(i, null);\n var measureObject = pageAnnotations[j];\n if (!measureObject.annotationSettings.isLock) {\n measureObject.calibrate.ratio = ratio;\n measureObject.calibrate.x[0].unit = displayUnit;\n measureObject.calibrate.distance[0].unit = displayUnit;\n measureObject.calibrate.area[0].unit = displayUnit;\n measureObject.calibrate.x[0].conversionFactor = this.getFactor(conversionUnit);\n if (measureObject.indent === 'PolygonVolume') {\n measureObject.calibrate.depth = depth;\n }\n pageAnnotations[j] = measureObject;\n this.manageAnnotations(pageAnnotations, i);\n this.pdfViewer.annotation.updateCalibrateValues(this.getAnnotationBaseModel(measureObject.id));\n }\n }\n }\n this.pdfViewer.annotation.renderAnnotations(i, null, null, null, null, false);\n }\n };\n MeasureAnnotation.prototype.getAnnotationBaseModel = function (id) {\n var annotationBase = null;\n for (var i = 0; i < this.pdfViewer.annotations.length; i++) {\n if (id === this.pdfViewer.annotations[i].id) {\n annotationBase = this.pdfViewer.annotations[i];\n break;\n }\n }\n return annotationBase;\n };\n MeasureAnnotation.prototype.getContent = function (unit) {\n return unit.split('')[0].split('\">')[1];\n };\n /**\n * @param value\n * @param currentAnnot\n * @private\n */\n // eslint-disable-next-line\n MeasureAnnotation.prototype.setConversion = function (value, currentAnnot) {\n // eslint-disable-next-line\n var values;\n if (currentAnnot) {\n var pageIndex = currentAnnot.pageIndex;\n if (currentAnnot.id === 'diagram_helper') {\n pageIndex = currentAnnot.pageIndex ? currentAnnot.pageIndex : this.pdfViewerBase.activeElements.activePageID;\n currentAnnot = this.getCurrentObject(pageIndex, null, currentAnnot.annotName);\n }\n if (currentAnnot) {\n values = this.getCurrentValues(currentAnnot.id, pageIndex);\n }\n else {\n values = this.getCurrentValues();\n }\n }\n else {\n values = this.getCurrentValues();\n }\n var scaledValue = value * values.ratio;\n return this.convertPointToUnits(values.factor, scaledValue, values.unit);\n };\n MeasureAnnotation.prototype.onCancelClicked = function () {\n this.scaleRatioDialog.hide();\n };\n /**\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewlyAdded\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewlyAdded\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewlyAdded\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewlyAdded\n * @private\n */\n // eslint-disable-next-line\n MeasureAnnotation.prototype.modifyInCollection = function (property, pageNumber, annotationBase, isNewlyAdded) {\n if (!isNewlyAdded) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n }\n var currentAnnotObject = null;\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.id === pageAnnotations[i].id) {\n if (property === 'bounds') {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationModifiedDate(annotationBase, true);\n if (pageAnnotations[i].shapeAnnotationType === 'Line' || pageAnnotations[i].shapeAnnotationType === 'Polyline') {\n pageAnnotations[i].vertexPoints = annotationBase.vertexPoints;\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n else if (pageAnnotations[i].shapeAnnotationType === 'Polygon') {\n pageAnnotations[i].vertexPoints = annotationBase.vertexPoints;\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n else {\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n if (pageAnnotations[i].enableShapeLabel === true && annotationBase.wrapper) {\n // eslint-disable-next-line max-len\n pageAnnotations[i].labelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBounds(annotationBase.wrapper.bounds);\n }\n }\n else if (property === 'fill') {\n pageAnnotations[i].fillColor = annotationBase.wrapper.children[0].style.fill;\n if (this.pdfViewer.enableShapeLabel) {\n pageAnnotations[i].labelFillColor = annotationBase.wrapper.children[0].style.fill;\n }\n }\n else if (property === 'stroke') {\n pageAnnotations[i].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n }\n else if (property === 'opacity') {\n pageAnnotations[i].opacity = annotationBase.wrapper.children[0].style.opacity;\n }\n else if (property === 'thickness') {\n pageAnnotations[i].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n }\n else if (property === 'dashArray') {\n pageAnnotations[i].borderDashArray = annotationBase.wrapper.children[0].style.strokeDashArray;\n pageAnnotations[i].borderStyle = annotationBase.borderStyle;\n }\n else if (property === 'startArrow') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].lineHeadStart = this.pdfViewer.annotation.getArrowTypeForCollection(annotationBase.sourceDecoraterShapes);\n }\n else if (property === 'endArrow') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].lineHeadEnd = this.pdfViewer.annotation.getArrowTypeForCollection(annotationBase.taregetDecoraterShapes);\n }\n else if (property === 'leaderLength') {\n pageAnnotations[i].leaderLength = annotationBase.leaderHeight;\n }\n else if (property === 'notes') {\n pageAnnotations[i].note = annotationBase.notes;\n if (pageAnnotations[i].enableShapeLabel === true) {\n pageAnnotations[i].labelContent = annotationBase.notes;\n }\n }\n else if (property === 'delete') {\n currentAnnotObject = pageAnnotations.splice(i, 1)[0];\n break;\n }\n else if (property === 'labelContent') {\n pageAnnotations[i].note = annotationBase.labelContent;\n pageAnnotations[i].labelContent = annotationBase.labelContent;\n break;\n }\n else if (property === 'fontColor') {\n pageAnnotations[i].fontColor = annotationBase.fontColor;\n }\n else if (property === 'fontSize') {\n pageAnnotations[i].fontSize = annotationBase.fontSize;\n }\n // eslint-disable-next-line max-len\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], pageNumber);\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n /**\n * @param pageNumber\n * @param annotationBase\n * @param pageNumber\n * @param annotationBase\n * @private\n */\n MeasureAnnotation.prototype.addInCollection = function (pageNumber, annotationBase) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n pageAnnotations.push(annotationBase);\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n };\n MeasureAnnotation.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape_measure');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape_measure'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_shape_measure');\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape_measure'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_shape_measure', annotationStringified);\n }\n }\n };\n // eslint-disable-next-line\n MeasureAnnotation.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape_measure');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape_measure'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n MeasureAnnotation.prototype.getCurrentObject = function (pageNumber, id, annotName) {\n var currentAnnotObject = null;\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (id) {\n if (id === pageAnnotations[i].id) {\n currentAnnotObject = pageAnnotations[i];\n break;\n }\n }\n else if (annotName) {\n if (annotName === pageAnnotations[i].annotName) {\n currentAnnotObject = pageAnnotations[i];\n break;\n }\n }\n }\n }\n return currentAnnotObject;\n };\n // eslint-disable-next-line\n MeasureAnnotation.prototype.getCurrentValues = function (id, pageNumber) {\n var ratio;\n var unit;\n var factor;\n var depth;\n if (id && !isNaN(pageNumber)) {\n var currentAnnotObject = this.getCurrentObject(pageNumber, id);\n if (currentAnnotObject) {\n ratio = this.getCurrentRatio(currentAnnotObject.calibrate.ratio);\n unit = currentAnnotObject.calibrate.x[0].unit;\n factor = currentAnnotObject.calibrate.x[0].conversionFactor;\n depth = currentAnnotObject.calibrate.depth;\n }\n else {\n ratio = this.ratio;\n unit = this.displayUnit;\n factor = this.getFactor(this.unit);\n depth = this.volumeDepth;\n }\n }\n else {\n ratio = this.ratio;\n unit = this.displayUnit;\n factor = this.getFactor(this.unit);\n depth = this.volumeDepth;\n }\n return { ratio: ratio, unit: unit, factor: factor, depth: depth };\n };\n MeasureAnnotation.prototype.getCurrentRatio = function (ratioString) {\n var stringArray = ratioString.split(' ');\n if (stringArray[3] === '=') {\n return parseFloat(stringArray[4]) / parseFloat(stringArray[0]);\n }\n else {\n return parseFloat(stringArray[3]) / parseFloat(stringArray[0]);\n }\n };\n /**\n * @param points\n * @param id\n * @param pageNumber\n * @param points\n * @param id\n * @param pageNumber\n * @param points\n * @param id\n * @param pageNumber\n * @private\n */\n MeasureAnnotation.prototype.calculateArea = function (points, id, pageNumber) {\n // eslint-disable-next-line\n var values = this.getCurrentValues(id, pageNumber);\n var area = this.getArea(points, values.factor, values.unit) * values.ratio;\n if (values.unit === 'ft_in') {\n // eslint-disable-next-line\n var calculateValue = Math.round(area * 100) / 100;\n if (calculateValue >= 12) {\n calculateValue = (Math.round(calculateValue / 12 * 100) / 100).toString();\n calculateValue = calculateValue.split('.');\n if (calculateValue[1]) {\n // eslint-disable-next-line\n var inchValue = 0;\n if (calculateValue[1].charAt(1)) {\n // eslint-disable-next-line\n inchValue = parseInt(calculateValue[1].charAt(0)) + '.' + parseInt(calculateValue[1].charAt(1));\n inchValue = Math.round(inchValue);\n }\n else {\n inchValue = calculateValue[1];\n }\n if (!inchValue) {\n return (calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant('ft'));\n }\n else {\n return (calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant('ft') + ' ' + inchValue + ' ' + this.pdfViewer.localeObj.getConstant('in'));\n }\n }\n else {\n return (calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant('ft'));\n }\n }\n else {\n return (Math.round(area * 100) / 100) + ' ' + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant('in');\n }\n }\n if (values.unit === 'm') {\n return ((area * 100) / 100) + ' ' + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant(values.unit);\n }\n return (Math.round(area * 100) / 100) + ' ' + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant(values.unit);\n };\n MeasureAnnotation.prototype.getArea = function (points, factor, unit) {\n var area = 0;\n var j = points.length - 1;\n for (var i = 0; i < points.length; i++) {\n // eslint-disable-next-line max-len\n area += (points[j].x * this.pixelToPointFactor * factor + points[i].x * this.pixelToPointFactor * factor) * (points[j].y * this.pixelToPointFactor * factor - points[i].y * this.pixelToPointFactor * factor);\n j = i;\n }\n if (unit === 'ft_in') {\n return (Math.abs((area) * 2.0));\n }\n else {\n return (Math.abs((area) / 2.0));\n }\n };\n /**\n * @param points\n * @param id\n * @param pageNumber\n * @param points\n * @param id\n * @param pageNumber\n * @param points\n * @param id\n * @param pageNumber\n * @private\n */\n MeasureAnnotation.prototype.calculateVolume = function (points, id, pageNumber) {\n // eslint-disable-next-line\n var values = this.getCurrentValues(id, pageNumber);\n var depth = values.depth ? values.depth : this.volumeDepth;\n var area = this.getArea(points, values.factor, values.unit);\n var volume = area * ((depth * this.convertUnitToPoint(values.unit)) * values.factor) * values.ratio;\n if (values.unit === 'ft_in') {\n // eslint-disable-next-line\n var calculateValue = Math.round(volume * 100) / 100;\n if (calculateValue >= 12) {\n calculateValue = (Math.round(calculateValue / 12 * 100) / 100).toString();\n calculateValue = calculateValue.split('.');\n if (calculateValue[1]) {\n // eslint-disable-next-line\n var inchValue = 0;\n if (calculateValue[1].charAt(1)) {\n // eslint-disable-next-line\n inchValue = parseInt(calculateValue[1].charAt(0)) + '.' + parseInt(calculateValue[1].charAt(1));\n inchValue = Math.round(inchValue);\n }\n else {\n inchValue = calculateValue[1];\n }\n if (!inchValue) {\n return (calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('cu') + ' ' + this.pdfViewer.localeObj.getConstant('ft'));\n }\n else {\n return (calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('cu') + ' ' + this.pdfViewer.localeObj.getConstant('ft') + ' ' + inchValue + ' ' + this.pdfViewer.localeObj.getConstant('in'));\n }\n }\n else {\n return (calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('cu') + ' ' + this.pdfViewer.localeObj.getConstant('ft'));\n }\n }\n else {\n return (Math.round(volume * 100) / 100) + ' ' + this.pdfViewer.localeObj.getConstant('cu') + ' ' + this.pdfViewer.localeObj.getConstant('in');\n }\n }\n return (Math.round(volume * 100) / 100) + ' ' + this.pdfViewer.localeObj.getConstant('cu') + ' ' + this.pdfViewer.localeObj.getConstant(values.unit);\n };\n /**\n * @param pdfAnnotationBase\n * @private\n */\n MeasureAnnotation.prototype.calculatePerimeter = function (pdfAnnotationBase) {\n var perimeter = Point.getLengthFromListOfPoints(pdfAnnotationBase.vertexPoints);\n return this.setConversion(perimeter * this.pixelToPointFactor, pdfAnnotationBase);\n };\n MeasureAnnotation.prototype.getFactor = function (unit) {\n var factor;\n switch (unit) {\n case 'in':\n factor = (1 / 72);\n break;\n case 'cm':\n factor = (1 / 28.346);\n break;\n case 'mm':\n factor = (1 / 2.835);\n break;\n case 'pt':\n factor = 1;\n break;\n case 'p':\n factor = 1 / 12;\n break;\n case 'ft':\n factor = 1 / 864;\n break;\n case 'ft_in':\n factor = 1 / 72;\n break;\n case 'm':\n factor = (1 / 2834.64567);\n break;\n }\n return factor;\n };\n MeasureAnnotation.prototype.convertPointToUnits = function (factor, value, unit) {\n var convertedValue;\n if (unit === 'ft_in') {\n // eslint-disable-next-line\n var calculateValue = Math.round((value * factor) * 100) / 100;\n if (calculateValue >= 12) {\n calculateValue = (Math.round(calculateValue / 12 * 100) / 100).toString();\n calculateValue = calculateValue.split('.');\n if (calculateValue[1]) {\n // eslint-disable-next-line\n var inchValue = 0;\n if (calculateValue[1].charAt(1)) {\n // eslint-disable-next-line\n inchValue = parseInt(calculateValue[1].charAt(0)) + '.' + parseInt(calculateValue[1].charAt(1));\n inchValue = Math.round(inchValue);\n }\n else {\n inchValue = calculateValue[1];\n }\n if (!inchValue) {\n convertedValue = calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('ft');\n }\n else {\n convertedValue = calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('ft') + ' ' + inchValue + ' ' + this.pdfViewer.localeObj.getConstant('in');\n }\n }\n else {\n convertedValue = calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('ft');\n }\n }\n else {\n convertedValue = Math.round((value * factor) * 100) / 100 + ' ' + this.pdfViewer.localeObj.getConstant('in');\n }\n }\n else {\n convertedValue = Math.round((value * factor) * 100) / 100 + ' ' + this.pdfViewer.localeObj.getConstant(unit);\n }\n return convertedValue;\n };\n MeasureAnnotation.prototype.convertUnitToPoint = function (unit) {\n var factor;\n switch (unit) {\n case 'in':\n factor = 72;\n break;\n case 'cm':\n factor = 28.346;\n break;\n case 'mm':\n factor = 2.835;\n break;\n case 'pt':\n factor = 1;\n break;\n case 'p':\n factor = 12;\n break;\n case 'ft':\n factor = 864;\n break;\n case 'ft_in':\n factor = 72;\n break;\n case 'm':\n factor = 2834.64567;\n break;\n }\n return factor;\n };\n // eslint-disable-next-line\n MeasureAnnotation.prototype.getStringifiedMeasure = function (measure) {\n if (!isNullOrUndefined(measure)) {\n measure.angle = JSON.stringify(measure.angle);\n measure.area = JSON.stringify(measure.area);\n measure.distance = JSON.stringify(measure.distance);\n measure.volume = JSON.stringify(measure.volume);\n }\n return JSON.stringify(measure);\n };\n // eslint-disable-next-line\n MeasureAnnotation.prototype.getRgbCode = function (colorString) {\n if (!colorString.match(/#([a-z0-9]+)/gi) && !colorString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n colorString = this.pdfViewer.annotationModule.nameToHash(colorString);\n }\n var stringArray = colorString.split(',');\n if (isNullOrUndefined(stringArray[1])) {\n colorString = this.pdfViewer.annotationModule.getValue(colorString, 'rgba');\n stringArray = colorString.split(',');\n }\n // eslint-disable-next-line radix\n var r = parseInt(stringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var g = parseInt(stringArray[1]);\n // eslint-disable-next-line radix\n var b = parseInt(stringArray[2]);\n // eslint-disable-next-line radix\n var a = parseInt(stringArray[3]);\n return { r: r, g: g, b: b, a: a };\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n MeasureAnnotation.prototype.saveImportedMeasureAnnotations = function (annotation, pageNumber) {\n var annotationObject = null;\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n var measureObject = {\n // eslint-disable-next-line max-len\n ratio: annotation.Calibrate.Ratio, x: this.getNumberFormatArray(annotation.Calibrate.X), distance: this.getNumberFormatArray(annotation.Calibrate.Distance), area: this.getNumberFormatArray(annotation.Calibrate.Area), angle: this.getNumberFormatArray(annotation.Calibrate.Angle), volume: this.getNumberFormatArray(annotation.Calibrate.Volume),\n targetUnitConversion: annotation.Calibrate.TargetUnitConversion\n };\n if (annotation.Calibrate.Depth) {\n measureObject.depth = annotation.Calibrate.Depth;\n }\n if (annotation.Bounds && annotation.EnableShapeLabel === true) {\n // eslint-disable-next-line max-len\n annotation.LabelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBoundsFromLoadedDocument(annotation.Bounds);\n annotation.LabelBorderColor = annotation.LabelBorderColor ? annotation.LabelBorderColor : annotation.StrokeColor;\n annotation.FontColor = annotation.FontColor ? annotation.FontColor : annotation.StrokeColor;\n annotation.LabelFillColor = annotation.LabelFillColor ? annotation.LabelFillColor : annotation.FillColor;\n annotation.FontSize = annotation.FontSize ? annotation.FontSize : 16;\n annotation.LabelSettings = annotation.LabelSettings ? annotation.LabelSettings : this.pdfViewer.shapeLabelSettings;\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n annotation.Author = this.pdfViewer.annotationModule.updateAnnotationAuthor('measure', annotation.Subject);\n annotationObject = {\n // eslint-disable-next-line max-len\n id: 'measure', shapeAnnotationType: annotation.ShapeAnnotationType, author: annotation.Author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, thickness: annotation.Thickness, rectangleDifference: annotation.RectangleDifference,\n // eslint-disable-next-line max-len\n borderStyle: annotation.BorderStyle, borderDashArray: annotation.BorderDashArray, rotateAngle: annotation.RotateAngle, isCloudShape: annotation.IsCloudShape,\n cloudIntensity: annotation.CloudIntensity, vertexPoints: vertexPoints, lineHeadStart: annotation.LineHeadStart, lineHeadEnd: annotation.LineHeadEnd, isLocked: annotation.IsLocked,\n // eslint-disable-next-line max-len\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n caption: annotation.Caption, captionPosition: annotation.CaptionPosition, calibrate: measureObject, leaderLength: annotation.LeaderLength, leaderLineExtension: annotation.LeaderLineExtension,\n // eslint-disable-next-line max-len\n leaderLineOffset: annotation.LeaderLineOffset, indent: annotation.Indent, annotName: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author),\n review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n labelBorderColor: annotation.LabelBorderColor, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n // eslint-disable-next-line max-len\n labelBounds: annotation.LabelBounds, annotationSelectorSettings: this.getSettings(annotation), labelSettings: annotation.LabelSettings, annotationSettings: annotation.AnnotationSettings,\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_shape_measure');\n };\n /**\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n MeasureAnnotation.prototype.updateMeasureAnnotationCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var annotationObject = null;\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n var measureObject = {\n // eslint-disable-next-line max-len\n ratio: annotation.Calibrate.Ratio, x: this.getNumberFormatArray(annotation.Calibrate.X), distance: this.getNumberFormatArray(annotation.Calibrate.Distance), area: this.getNumberFormatArray(annotation.Calibrate.Area), angle: this.getNumberFormatArray(annotation.Calibrate.Angle), volume: this.getNumberFormatArray(annotation.Calibrate.Volume),\n targetUnitConversion: annotation.Calibrate.TargetUnitConversion\n };\n if (annotation.Calibrate.Depth) {\n measureObject.depth = annotation.Calibrate.Depth;\n }\n if (annotation.Bounds && annotation.EnableShapeLabel === true) {\n // eslint-disable-next-line max-len\n annotation.LabelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBoundsFromLoadedDocument(annotation.Bounds);\n annotation.LabelBorderColor = annotation.LabelBorderColor ? annotation.LabelBorderColor : annotation.StrokeColor;\n annotation.FontColor = annotation.FontColor ? annotation.FontColor : annotation.StrokeColor;\n annotation.LabelFillColor = annotation.LabelFillColor ? annotation.LabelFillColor : annotation.FillColor;\n annotation.FontSize = annotation.FontSize ? annotation.FontSize : 16;\n var settings = this.pdfViewer.shapeLabelSettings;\n var labelSettings = { borderColor: annotation.StrokeColor, fillColor: annotation.FillColor, fontColor: annotation.FontColor,\n fontSize: annotation.FontSize, labelContent: annotation.LabelContent, labelHeight: settings.labelHeight, labelWidth: settings.labelWidth, opacity: annotation.Opacity\n };\n annotation.LabelSettings = annotation.LabelSettings ? annotation.LabelSettings : labelSettings;\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotation.AnnotationSelectorSettings ? annotation.AnnotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n if (annotation.IsLocked) {\n annotation.AnnotationSettings.isLock = annotation.IsLocked;\n }\n annotationObject = {\n // eslint-disable-next-line max-len\n id: 'measure', shapeAnnotationType: annotation.ShapeAnnotationType, author: annotation.Author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, thickness: annotation.Thickness, rectangleDifference: annotation.RectangleDifference,\n // eslint-disable-next-line max-len\n borderStyle: annotation.BorderStyle, borderDashArray: annotation.BorderDashArray, rotateAngle: annotation.RotateAngle, isCloudShape: annotation.IsCloudShape,\n cloudIntensity: annotation.CloudIntensity, vertexPoints: vertexPoints, lineHeadStart: annotation.LineHeadStart, lineHeadEnd: annotation.LineHeadEnd, isLocked: annotation.IsLocked,\n // eslint-disable-next-line max-len\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n caption: annotation.Caption, captionPosition: annotation.CaptionPosition, calibrate: measureObject, leaderLength: annotation.LeaderLength, leaderLineExtension: annotation.LeaderLineExtension,\n // eslint-disable-next-line max-len\n leaderLineOffset: annotation.LeaderLineOffset, indent: annotation.Indent, annotationId: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author),\n review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n labelBorderColor: annotation.LabelBorderColor, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n // eslint-disable-next-line max-len\n labelBounds: annotation.LabelBounds, pageNumber: pageNumber, annotationSelectorSettings: annotation.AnnotationSelectorSettings, labelSettings: annotation.labelSettings, annotationSettings: annotation.AnnotationSettings,\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.IsPrint\n };\n return annotationObject;\n };\n /**\n * This method used to add annotations with using program.\n *\n * @param annotationType - It describes the annotation type\n * @param annotationObject - It describes type of annotation object\n * @param offset - It describes about the annotation bounds or location\n * @returns Object\n * @private\n */\n MeasureAnnotation.prototype.updateAddAnnotationDetails = function (annotationType, annotationObject, offset) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { offset: { x: 10, y: 10 }, pageNumber: 0, width: undefined, height: undefined };\n offset = annotationObject.offset;\n }\n else if (!annotationObject.offset)\n offset = { x: 10, y: 10 };\n else\n offset = annotationObject.offset;\n //Initialize the annotation settings\n var annotationSelectorSettings = null;\n var allowedInteractions = null;\n var annotationSettings = null;\n var measureAnnotationType = '';\n var shapeAnnotationType = '';\n var subject = '';\n var isArrow = false;\n var vertexPoints = [];\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n if (annotationType == 'Distance') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.lineSettings.annotationSelectorSettings ? this.pdfViewer.lineSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.lineSettings);\n allowedInteractions = this.pdfViewer.lineSettings.allowedInteractions ? this.pdfViewer.lineSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n measureAnnotationType = 'LineDimension';\n shapeAnnotationType = 'Line';\n subject = 'Distance calculation';\n isArrow = true;\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [{ x: offset.x, y: offset.y }, { x: offset.x + 100, y: offset.y }];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n else if (annotationType == 'Perimeter') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.arrowSettings.annotationSelectorSettings ? this.pdfViewer.arrowSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.arrowSettings);\n allowedInteractions = this.pdfViewer.arrowSettings.allowedInteractions ? this.pdfViewer.arrowSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n measureAnnotationType = 'PolyLineDimension';\n shapeAnnotationType = 'Polyline';\n subject = 'Perimeter calculation';\n isArrow = true;\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [{ x: offset.x, y: offset.y },\n { x: offset.x + 85, y: offset.y },\n { x: offset.x + 86, y: offset.y + 62 }];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n else if (annotationType == 'Area') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.rectangleSettings.annotationSelectorSettings ? this.pdfViewer.rectangleSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.rectangleSettings);\n allowedInteractions = this.pdfViewer.rectangleSettings.allowedInteractions ? this.pdfViewer.rectangleSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n measureAnnotationType = 'PolygonDimension';\n shapeAnnotationType = 'Polygon';\n subject = 'Area calculation';\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [{ x: offset.x, y: offset.y },\n { x: offset.x + 88, y: offset.y - 1 },\n { x: offset.x + 89, y: offset.y + 53 },\n { x: offset.x, y: offset.y }];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n else if (annotationType == 'Radius') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.circleSettings.annotationSelectorSettings ? this.pdfViewer.circleSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.circleSettings);\n allowedInteractions = this.pdfViewer.circleSettings.allowedInteractions ? this.pdfViewer.circleSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n measureAnnotationType = 'PolygonRadius';\n shapeAnnotationType = 'Circle';\n subject = 'Radius calculation';\n annotationObject.width = annotationObject.width ? annotationObject.width : 100;\n annotationObject.height = annotationObject.height ? annotationObject.height : 100;\n vertexPoints = null;\n }\n else if (annotationType == 'Volume') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.polygonSettings.annotationSelectorSettings ? this.pdfViewer.polygonSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.polygonSettings);\n allowedInteractions = this.pdfViewer.polygonSettings.allowedInteractions ? this.pdfViewer.polygonSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n measureAnnotationType = 'PolygonVolume';\n shapeAnnotationType = 'Polygon';\n subject = 'Volume calculation';\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [\n { x: offset.x, y: offset.y },\n { x: offset.x, y: offset.y + 109 },\n { x: offset.x + 120, y: offset.y + 109 },\n { x: offset.x + 120, y: offset.y - 1 },\n { x: offset.x, y: offset.y }\n ];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n annotationSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n annotationSettings.minHeight = annotationObject.minHeight ? annotationObject.minHeight : 0;\n annotationSettings.minWidth = annotationObject.minWidth ? annotationObject.minWidth : 0;\n annotationSettings.maxWidth = annotationObject.maxWidth ? annotationObject.maxWidth : 0;\n annotationSettings.maxHeight = annotationObject.maxHeight ? annotationObject.maxHeight : 0;\n //Calculating area for all the measurements\n var values = { depth: 96,\n factor: 0.013888888888888888,\n ratio: 1,\n unit: 'in' };\n var notes = '';\n if (vertexPoints || annotationType == 'Radius' || annotationType == 'Volume') {\n if (annotationType == 'Distance' || annotationType == 'Perimeter' || annotationType == 'Radius') {\n var length_1 = 0;\n if (annotationType == 'Radius') {\n length_1 = (annotationObject.width / 2) * this.pixelToPointFactor;\n }\n else {\n for (var i_1 = 0; i_1 < vertexPoints.length - 1; i_1++) {\n length_1 += Math.sqrt(Math.pow((vertexPoints[i_1].x - vertexPoints[i_1 + 1].x), 2) + Math.pow((vertexPoints[i_1].y - vertexPoints[i_1 + 1].y), 2));\n }\n length_1 = length_1 * this.pixelToPointFactor;\n }\n var scaledValue = length_1 * values.ratio;\n notes = this.convertPointToUnits(values.factor, scaledValue, values.unit);\n }\n else if (annotationType == 'Area' || annotationType == 'Volume') {\n var area = 0;\n var j = vertexPoints.length - 1;\n for (var i = 0; i < vertexPoints.length; i++) {\n area += (vertexPoints[j].x * this.pixelToPointFactor * values.factor + vertexPoints[i].x * this.pixelToPointFactor * values.factor) * (vertexPoints[j].y * this.pixelToPointFactor * values.factor - vertexPoints[i].y * this.pixelToPointFactor * values.factor);\n j = i;\n }\n area = (Math.abs((area) / 2.0));\n if (annotationType == 'Volume') {\n area = area * ((values.depth * this.convertUnitToPoint(values.unit)) * values.factor) * values.ratio;\n notes = Math.round(area * 100) / 100 + this.pdfViewer.localeObj.getConstant('cu') + ' ' + this.pdfViewer.localeObj.getConstant(values.unit);\n }\n else\n notes = Math.round(area * 100) / 100 + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant(values.unit);\n }\n }\n //Converting points model into vertex property\n if (vertexPoints)\n vertexPoints = this.pdfViewer.annotation.getVertexPointsXY(vertexPoints);\n //Creating Annotation objects with it's proper properties\n var measureShapeAnnotation = [];\n var shape = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : allowedInteractions,\n AnnotName: annotationName,\n AnnotType: 'shape_measure',\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotationSelectorSettings,\n AnnotationSettings: annotationSettings,\n Author: annotationObject.author ? annotationObject.author : 'Guest',\n BorderDashArray: annotationObject.borderDashArray ? annotationObject.borderDashArray : 0,\n BorderStyle: 'Solid',\n Bounds: { X: offset.x, Y: offset.y, Width: annotationObject.width, Height: annotationObject.height, Left: offset.x, Top: offset.y, Location: { X: offset.x, Y: offset.y }, Size: { Height: annotationObject.height, IsEmpty: false, Width: annotationObject.width } },\n Calibrate: {\n Area: [{ ConversionFactor: 1, Denominator: 100, FormatDenominator: false, FractionalType: 'D', Unit: 'sq in' }],\n Depth: annotationObject.depth ? annotationObject.depth : 0,\n Distance: [{ ConversionFactor: 1, Denominator: 100, FormatDenominator: false, FractionalType: 'D', Unit: 'in' }],\n Ratio: '1 in = 1 in',\n TargetUnitConversion: 0,\n Volume: null,\n X: [{ ConversionFactor: 0.013888889, Denominator: 100, FormatDenominator: false, FractionalType: 'D', Unit: 'in' }]\n },\n Caption: true,\n CaptionPosition: 'Top',\n CloudIntensity: 0,\n Comments: null,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n CreatedDate: currentDateString,\n EnableShapeLabel: false,\n ExistingCustomData: null,\n FillColor: annotationObject.fillColor ? annotationObject.fillColor : '#ffffff00',\n FontColor: null,\n FontSize: 0,\n Indent: measureAnnotationType,\n IsCloudShape: false,\n IsCommentLock: false,\n IsLocked: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: annotationObject.isPrint ? annotationObject.isPrint : true,\n LabelBorderColor: null,\n LabelBounds: { X: 0, Y: 0, Width: 0, Height: 0 },\n LabelContent: null,\n LabelFillColor: null,\n LabelSettings: null,\n LeaderLength: 0,\n LeaderLineExtension: 0,\n LeaderLineOffset: 0,\n LineHeadEnd: annotationObject.lineHeadStartStyle ? annotationObject.lineHeadStartStyle : isArrow ? 'ClosedArrow' : 'None',\n LineHeadStart: annotationObject.lineHeadEndStyle ? annotationObject.lineHeadEndStyle : isArrow ? 'ClosedArrow' : 'None',\n ModifiedDate: '',\n Note: notes,\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n RectangleDifference: null,\n RotateAngle: 'RotateAngle0',\n ShapeAnnotationType: shapeAnnotationType,\n State: '',\n StateModel: '',\n StrokeColor: annotationObject.strokeColor ? annotationObject.strokeColor : '#ff0000',\n Subject: subject,\n Thickness: annotationObject.thickness ? annotationObject.thickness : 1,\n VertexPoints: vertexPoints\n };\n //Adding the annotation object to an array and return it\n measureShapeAnnotation[0] = shape;\n return { measureShapeAnnotation: measureShapeAnnotation };\n };\n return MeasureAnnotation;\n}());\nexport { MeasureAnnotation };\n","import { DynamicStampItem, SignStampItem, StandardBusinessStampItem } from '../../index';\nimport { splitArrayCollection, processPathData } from '@syncfusion/ej2-drawings';\nimport { Browser } from '@syncfusion/ej2-base';\n/**\n * The `StampAnnotation` module is used to handle annotation actions of PDF viewer.\n *\n * @hidden\n */\nvar StampAnnotation = /** @class */ (function () {\n function StampAnnotation(pdfviewer, pdfViewerBase) {\n /**\n * @private\n */\n this.isStampAddMode = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.stampPageNumber = [];\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n /**\n * @private\n */\n this.customStampName = null;\n this.dynamicText = '';\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param stampAnnotations\n * @param pageNumber\n * @param canvass\n * @param isImport\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.renderStampAnnotations = function (stampAnnotations, pageNumber, canvass, isImport) {\n var isStampAdded = false;\n for (var p = 0; p < this.stampPageNumber.length; p++) {\n if (this.stampPageNumber[p] === pageNumber) {\n isStampAdded = true;\n break;\n }\n }\n if (isImport) {\n isStampAdded = false;\n }\n if (stampAnnotations && !isStampAdded) {\n this.stampPageNumber.push(pageNumber);\n var _loop_1 = function (s) {\n // eslint-disable-next-line\n var annotation = stampAnnotations[s];\n annotation.annotationAddMode = this_1.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n // eslint-disable-next-line\n var Apperance = annotation['Apperarance'];\n // eslint-disable-next-line\n var position = annotation['Rect'];\n // eslint-disable-next-line\n var opacity = annotation['Opacity'];\n // eslint-disable-next-line\n var annotationSelectorSettings = annotation[\"AnnotationSelectorSettings\"];\n // eslint-disable-next-line\n var pageIndex = parseFloat(stampAnnotations[s]['pageNumber']);\n /* eslint-disable */\n if (isNaN(pageIndex)) {\n pageIndex = stampAnnotations[s]['PageNumber'];\n }\n // eslint-disable-next-line\n var stampName = annotation['IsDynamic'];\n var pageDiv = document.getElementById(this_1.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n // eslint-disable-next-line\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this_1.pdfViewer.annotationModule.updateSettings(this_1.pdfViewer.stampSettings);\n // eslint-disable-next-line\n if (stampName && annotation['Subject'] && annotation['Subject'] !== 'Draft') {\n // eslint-disable-next-line\n this_1.retrieveDynamicStampAnnotation(annotation['Subject']);\n this_1.isExistingStamp = true;\n var currentLocation = this_1.calculateImagePosition(position, true);\n // eslint-disable-next-line\n var rotation = annotation['RotateAngle'];\n for (var d = 0; d < Apperance.length; d++) {\n // eslint-disable-next-line\n var stampShapes = Apperance[d];\n // eslint-disable-next-line\n var stampType = stampShapes['type'];\n // eslint-disable-next-line\n if (stampType === 'string' && stampShapes['text'] !== undefined) {\n // eslint-disable-next-line\n var text = void 0;\n if (!isImport) {\n // eslint-disable-next-line\n text = stampShapes['text'].split('(')[1].split(')')[0];\n }\n else {\n // eslint-disable-next-line\n text = stampShapes['text'];\n }\n if (text.split('(').length === 2) {\n if (text.split('(')[1].split(')')[0].toLowerCase() !== annotation['Subject'].toLowerCase()) {\n this_1.dynamicText += text.split('(')[1].split(')')[0];\n }\n }\n else if (text.toLowerCase() !== annotation['Subject'].toLowerCase()) {\n this_1.dynamicText += text;\n }\n }\n }\n // eslint-disable-next-line max-len\n this_1.renderStamp(currentLocation.left, currentLocation.top, currentLocation.width, currentLocation.height, pageIndex, opacity, rotation, canvass, annotation, true);\n }\n // eslint-disable-next-line\n else if (annotation['Subject']) {\n // eslint-disable-next-line\n this_1.retrievestampAnnotation(annotation['Subject']);\n this_1.isExistingStamp = true;\n var currentLocation = this_1.calculateImagePosition(position, true);\n // eslint-disable-next-line\n var rotation = annotation['RotateAngle'];\n // eslint-disable-next-line max-len\n this_1.renderStamp(currentLocation.left, currentLocation.top, currentLocation.width, currentLocation.height, pageIndex, opacity, rotation, canvass, annotation);\n this_1.isExistingStamp = false;\n }\n else {\n if (Apperance) {\n var _loop_2 = function (j) {\n // eslint-disable-next-line\n var stampShapes = Apperance[j];\n // eslint-disable-next-line\n var imageData = stampShapes['imagedata'];\n // eslint-disable-next-line\n var matrix = stampShapes['matrix'];\n // eslint-disable-next-line\n var currentDate = stampShapes['CreationDate'];\n // eslint-disable-next-line\n var modifiedDate = stampShapes['ModifiedDate'];\n // eslint-disable-next-line\n var rotationAngle = stampShapes['RotateAngle'];\n if (imageData) {\n var image_1 = new Image();\n // eslint-disable-next-line\n var proxy_1 = this_1;\n image_1.onload = function () {\n if (position) {\n var y = parseFloat(position.y ? position.y : position.Y);\n if (y < 0) {\n position.Y = (proxy_1.pdfViewerBase.pageSize[pageIndex].height + y) * (72 / 96);\n }\n }\n var currentLocation = proxy_1.calculateImagePosition(position, true);\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : proxy_1.pdfViewer.customStampSettings.annotationSettings;\n // eslint-disable-next-line max-len\n proxy_1.renderCustomImage(currentLocation, pageIndex, image_1, currentDate, modifiedDate, rotationAngle, opacity, canvass, true, annotation);\n };\n image_1.src = imageData;\n }\n };\n for (var j = 0; j < Apperance.length; j++) {\n _loop_2(j);\n }\n }\n }\n };\n var this_1 = this;\n for (var s = 0; s < stampAnnotations.length; s++) {\n _loop_1(s);\n }\n }\n };\n /**\n * @private\n */\n StampAnnotation.prototype.moveStampElement = function (X, Y, pageIndex) {\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n X = X / zoomFactor;\n Y = Y / zoomFactor;\n // eslint-disable-next-line max-len\n var author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stampSettings.author ? this.pdfViewer.stampSettings.author : 'Guest';\n if (this.pdfViewerBase.isDynamicStamp) {\n if (this.pdfViewer.dateTimeFormat) {\n var dateTime = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n this.dynamicText = 'By ' + author + ' at ' + dateTime.split(' ')[1] + dateTime.split(' ')[2] + ' , ' + dateTime.split(' ')[0] + ' ';\n }\n else {\n // eslint-disable-next-line\n var today = (new Date()).toString().split(' ').splice(1, 3).join(' ');\n // eslint-disable-next-line\n var time = (new Date()).toLocaleTimeString();\n this.dynamicText = 'By ' + author + ' at ' + time + ' , ' + today + ' ';\n }\n }\n var annot;\n // eslint-disable-next-line\n var annotation = this.currentStampAnnotation;\n if (annotation && annotation.shapeAnnotationType === 'Image') {\n annot = {\n // eslint-disable-next-line max-len\n id: 'stamp' + this.pdfViewerBase.customStampCount, bounds: { x: X, y: Y, width: annotation.bounds.width, height: annotation.bounds.height }, pageIndex: pageIndex, data: annotation.data, modifiedDate: annotation.modifiedDate,\n shapeAnnotationType: 'Image', opacity: annotation.opacity, rotateAngle: annotation.RotationAngle, annotName: annotation.annotationName, comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: annotation.author }\n };\n }\n else if (annotation) {\n annot = {\n // eslint-disable-next-line max-len\n id: 'stamp' + this.pdfViewerBase.customStampCount, bounds: { x: X, y: Y, width: annotation.width, height: annotation.height }, pageIndex: pageIndex, data: annotation.pathdata,\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Stamp', strokeColor: annotation.strokeColor, fillColor: annotation.fillColor, opacity: 0.5, stampFillColor: annotation.stampFillColor, stampStrokeColor: annotation.stampStrokeColor, rotateAngle: annotation.RotateAngle, isDynamicStamp: this.pdfViewerBase.isDynamicStamp, dynamicText: this.dynamicText, subject: annotation.iconName,\n annotationSelectorSettings: this.pdfViewer.annotationSelectorSettings\n };\n }\n if (this.pdfViewerBase.currentSignatureAnnot) {\n annotation = this.pdfViewerBase.currentSignatureAnnot;\n if (annotation.shapeAnnotationType === 'SignatureText') {\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: X, y: Y, width: annotation.bounds.width, height: annotation.bounds.height }, pageIndex: pageIndex, data: annotation.data, modifiedDate: '',\n shapeAnnotationType: 'SignatureText', thickness: annotation.thickness, strokeColor: annotation.strokeColor, opacity: annotation.opacity, signatureName: annotation.signatureName, fontFamily: annotation.fontFamily, fontSize: (annotation.bounds.height / 2)\n };\n }\n else if (annotation.shapeAnnotationType === 'SignatureImage') {\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: X, y: Y, width: annotation.bounds.width, height: annotation.bounds.height }, pageIndex: pageIndex, data: annotation.data, modifiedDate: '',\n shapeAnnotationType: 'SignatureImage', thickness: annotation.thickness, strokeColor: annotation.strokeColor, opacity: annotation.opacity, signatureName: annotation.signatureName,\n };\n }\n else {\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: X, y: Y, width: annotation.bounds.width, height: annotation.bounds.height }, pageIndex: pageIndex, data: annotation.data,\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'HandWrittenSignature', thickness: annotation.thickness, strokeColor: annotation.strokeColor, opacity: annotation.opacity, signatureName: annotation.signatureName,\n };\n }\n }\n return annot;\n };\n // eslint-disable-next-line\n StampAnnotation.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n // eslint-disable-next-line\n StampAnnotation.prototype.calculateImagePosition = function (position, flags) {\n var positions = { width: 0, height: 0, left: 0, top: 0 };\n var x = parseFloat(position.x ? position.x : position.X);\n var y = parseFloat(position.y ? position.y : position.Y);\n var newWidth = parseFloat(position.width ? position.width : position.Width);\n var newHeight = parseFloat(position.height ? position.height : position.Height);\n if (flags) {\n var width = this.ConvertPointToPixel(newWidth);\n var height = this.ConvertPointToPixel(newHeight);\n var left = this.ConvertPointToPixel(x);\n var top_1 = this.ConvertPointToPixel(y);\n positions = { width: width, height: height, left: left, top: top_1 };\n }\n else {\n positions = { width: newWidth, height: newHeight, left: x, top: y };\n }\n return positions;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.createCustomStampAnnotation = function (imageSource, annotName) {\n var _this = this;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var image = new Image();\n // eslint-disable-next-line\n var proxy = this;\n image.onload = function () {\n var zoomFactor = _this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line max-len\n var customStampWidth = _this.pdfViewer.customStampSettings.width > 0 ? _this.pdfViewer.customStampSettings.width : 100;\n var customStampHeight = _this.pdfViewer.customStampSettings.height > 0 ? _this.pdfViewer.customStampSettings.height : 100;\n var customStampleft = 0;\n var customStamptop = 0;\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.customStampSettings.left > 0 && _this.pdfViewer.customStampSettings.left < parseFloat(pageDiv.style.width)) {\n customStampleft = _this.pdfViewer.customStampSettings.left;\n }\n else {\n customStampleft = ((parseFloat(pageDiv.style.width) / 2) - (customStampWidth / 2)) / zoomFactor;\n }\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.customStampSettings.top > 0 && _this.pdfViewer.customStampSettings.top < parseFloat(pageDiv.style.height)) {\n customStamptop = _this.pdfViewer.customStampSettings.top;\n }\n else {\n customStamptop = ((parseFloat(pageDiv.style.height) / 2) - (customStampHeight / 2)) / zoomFactor;\n }\n // eslint-disable-next-line max-len\n var positions = { width: customStampWidth, height: customStampHeight, left: customStampleft, top: customStamptop };\n // eslint-disable-next-line\n var currentDate = new Date().toLocaleDateString();\n // eslint-disable-next-line\n var modifiedDate = _this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var rotationAngle = 0;\n proxy.renderCustomImage(positions, pageIndex, image, currentDate, modifiedDate, rotationAngle, 1, null, null, null, annotName);\n };\n image.src = imageSource;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.renderStamp = function (X, Y, width, height, pageIndex, opacity, rotation, canvass, existingAnnotation, isDynamic) {\n if (Browser.isDevice) {\n this.pdfViewerBase.customStampCount += 1;\n }\n // eslint-disable-next-line max-len\n var author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stampSettings.author ? this.pdfViewer.stampSettings.author : 'Guest';\n if (this.pdfViewerBase.isDynamicStamp) {\n // eslint-disable-next-line\n var today = (new Date()).toString().split(' ').splice(1, 3).join(' ');\n // eslint-disable-next-line\n var time = (new Date()).toLocaleTimeString();\n this.dynamicText = 'By ' + author + ' at ' + time + ' , ' + today + ' ';\n }\n if (isDynamic) {\n this.dynamicText += ' ';\n this.pdfViewerBase.isDynamicStamp = true;\n }\n var annot;\n var annotationObject = null;\n // eslint:disable-next-line\n var annotationAddMode = existingAnnotation ? existingAnnotation.annotationAddMode : 'UI Drawn Annotation';\n // eslint-disable-next-line\n var annotation = this.currentStampAnnotation;\n if (annotation) {\n if (width !== null && height !== null) {\n annotation.width = width;\n annotation.height = height;\n annotation.Opacity = opacity;\n annotation.RotateAngle = rotation;\n // eslint-disable-next-line\n var annotationName = existingAnnotation['AnnotName'];\n annotation.AnnotName = annotationName;\n // eslint-disable-next-line\n var state = existingAnnotation['State'];\n annotation.State = state;\n // eslint-disable-next-line\n var annotationSettings = existingAnnotation[\"AnnotationSettings\"];\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotationSettings ? annotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n // eslint-disable-next-line\n var annotationSelectorSettings = existingAnnotation['AnnotationSelectorSettings'];\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotationSelectorSettings ? annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line\n var modifiedDate = existingAnnotation['ModifiedDate'];\n annotation.ModifiedDate = modifiedDate;\n // eslint-disable-next-line\n var stateModel = existingAnnotation['StateNodel'];\n annotation.StateModel = stateModel;\n // eslint-disable-next-line\n var lock = existingAnnotation['IsCommentLock'];\n annotation.IsCommentLock = lock;\n // eslint-disable-next-line\n var text = existingAnnotation['Note'];\n annotation.Note = text;\n // eslint-disable-next-line\n var author_1 = existingAnnotation['Author'];\n annotation.Author = author_1;\n // eslint-disable-next-line\n var subject = existingAnnotation['Subject'];\n annotation.Subject = subject;\n // eslint-disable-next-line\n var customData = this.pdfViewer.annotation.getCustomData(existingAnnotation);\n // eslint-disable-next-line\n annotation.allowedInteractions = existingAnnotation['AllowedInteractions'] ? existingAnnotation['AllowedInteractions'] : existingAnnotation['allowedInteractions'] ? existingAnnotation['allowedInteractions'] : ['None'];\n annotation.CustomData = customData;\n // eslint-disable-next-line\n var isPrint = true;\n if (annotation.annotationAddMode === 'Imported Annotation') {\n isPrint = existingAnnotation['IsPrint'];\n }\n else {\n isPrint = existingAnnotation.AnnotationSettings.isPrint;\n }\n annotation.isPrint = isPrint;\n if (annotation.Author === null) {\n // eslint-disable-next-line max-len\n annotation.Author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stampSettings.author ? this.pdfViewer.stampSettings.author : 'Guest';\n }\n // eslint-disable-next-line\n var annotationComments = existingAnnotation['Comments'];\n annotation.Comments = this.pdfViewer.annotationModule.getAnnotationComments(annotationComments, existingAnnotation, author_1);\n }\n else {\n var annotationName = this.pdfViewer.annotation.createGUID();\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('stamp', pageIndex + 1);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n annotation.AnnotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stampSettings);\n annotation.AnnotName = annotationName;\n annotation.Comments = [];\n annotation.State = '';\n annotation.StateModel = '';\n annotation.Note = '';\n annotation.Opacity = 1;\n annotation.RotateAngle = 0;\n annotation.ModifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n annotation.Author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stampSettings.author ? this.pdfViewer.stampSettings.author : 'Guest';\n }\n // eslint-disable-next-line\n var collectionData = processPathData(annotation.pathdata);\n // eslint-disable-next-line\n var csData = splitArrayCollection(collectionData);\n // eslint:disable-next-line\n var annotationAddMode_1 = existingAnnotation ? existingAnnotation.annotationAddMode : 'UI Drawn Annotation';\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotation.AnnotationSelectorSettings ? annotation.AnnotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annot = {\n // eslint-disable-next-line max-len\n id: 'stamp' + this.pdfViewerBase.customStampCount, bounds: { x: X, y: Y, width: annotation.width, height: annotation.height }, pageIndex: pageIndex, data: annotation.pathdata, modifiedDate: annotation.ModifiedDate,\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Stamp', strokeColor: annotation.strokeColor, fillColor: annotation.fillColor, opacity: annotation.Opacity, stampFillColor: annotation.stampFillColor, stampStrokeColor: annotation.stampStrokeColor, rotateAngle: annotation.RotateAngle, isDynamicStamp: this.pdfViewerBase.isDynamicStamp, dynamicText: this.dynamicText, annotName: annotation.AnnotName, notes: annotation.Note,\n comments: annotation.Comments, review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, subject: annotation.iconName,\n // eslint-disable-next-line\n annotationSelectorSettings: annotation.AnnotationSelectorSettings, annotationSettings: annotation.AnnotationSettings, allowedInteractions: annotation.allowedInteractions,\n annotationAddMode: annotationAddMode_1, isPrint: annotation.isPrint, isCommentLock: annotation.IsCommentLock\n };\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'path', author: annotation.Author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.strokeColor, fillColor: annotation.fillColor, opacity: annotation.Opacity, stampFillcolor: annotation.stampFillColor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.RotateAngle, creationDate: annotation.creationDate, pageNumber: pageIndex, icon: annotation.iconName, stampAnnotationPath: csData, randomId: 'stamp' + this.pdfViewerBase.customStampCount, isDynamicStamp: this.pdfViewerBase.isDynamicStamp, dynamicText: this.dynamicText,\n bounds: { left: X, top: Y, width: annotation.width, height: annotation.height, }, annotName: annotation.AnnotName, comments: annotation.Comments, review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.Author, modifiedDate: annotation.ModifiedDate }, shapeAnnotationType: 'stamp',\n // eslint-disable-next-line max-len\n annotationSelectorSettings: this.getSettings(annotation), annotationSettings: annotation.AnnotationSettings, customData: this.pdfViewer.annotation.getCustomData(annotation), allowedInteractions: annotation.allowedInteractions, isPrint: annotation.isPrint, isCommentLock: annotation.IsCommentLock,\n isMaskedImage: annotation.IsMaskedImage, customStampName: ''\n };\n this.storeStampInSession(pageIndex, annotationObject);\n if (this.isAddAnnotationProgramatically) {\n this.triggerAnnotationAdd(annot, annotation);\n }\n this.pdfViewer.add(annot);\n // eslint-disable-next-line\n if (canvass != undefined && canvass != null) {\n canvass = canvass;\n }\n else {\n canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n }\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, pageIndex);\n if (this.pdfViewerBase.stampAdded) {\n this.triggerAnnotationAdd(annot, annotation);\n this.pdfViewerBase.isNewStamp = true;\n this.pdfViewer.annotation.addAction(pageIndex, null, annot, 'Addition', '', annot, annot);\n }\n this.pdfViewerBase.stampAdded = false;\n if (!this.isExistingStamp) {\n annotation.creationDate = new Date().toLocaleDateString();\n // eslint-disable-next-line max-len\n annotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n }\n }\n this.resetAnnotation();\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.getSettings = function (annotation) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else if (this.pdfViewer.stampSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.stampSettings.annotationSelectorSettings;\n }\n return selector;\n };\n /**\n * @private\n */\n StampAnnotation.prototype.resetAnnotation = function () {\n this.pdfViewerBase.isDynamicStamp = false;\n this.dynamicText = '';\n this.currentStampAnnotation = null;\n if (!Browser.isDevice) {\n this.pdfViewerBase.customStampCount += 1;\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.updateDeleteItems = function (pageNumber, annotation, opacity) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n var annotationObject = null;\n var isStampSaved = false;\n annotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n annotation.author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stampSettings.author ? this.pdfViewer.stampSettings.author : 'Guest';\n if (opacity) {\n var annotationName = this.pdfViewer.annotation.createGUID();\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('stamp', pageNumber + 1);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n annotation.annotName = annotationName;\n annotation.Comments = [];\n annotation.State = '';\n annotation.StateModel = '';\n annotation.Note = '';\n annotation.Opacity = 1;\n annotation.RotateAngle = 0;\n }\n if (annotation.shapeAnnotationType === 'Stamp') {\n annotation.isPrint = this.pdfViewer.stampSettings.isPrint;\n }\n // eslint-disable-next-line\n var annotationSelectorSettings = this.pdfViewer.stampSettings.annotationSelectorSettings ? this.pdfViewer.stampSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line\n var allowedInteractions = this.pdfViewer.stampSettings.allowedInteractions ? this.pdfViewer.stampSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n if (annotation.shapeAnnotationType === 'Image') {\n // eslint-disable-next-line max-len\n annotation.Author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.customStampSettings.author ? this.pdfViewer.customStampSettings.author : 'Guest';\n annotation.isPrint = this.pdfViewer.customStampSettings.isPrint;\n this.customStampName = this.customStampName ? this.customStampName : this.currentStampAnnotation.signatureName ? this.currentStampAnnotation.signatureName : annotation.id;\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'image', author: annotation.author, modifiedDate: annotation.modifiedDate, subject: '',\n note: '', strokeColor: '', fillColor: '', opacity: opacity,\n // eslint-disable-next-line max-len\n rotateAngle: '0', creationDate: annotation.currentDate, pageNumber: pageNumber, icon: '', stampAnnotationPath: annotation.data, randomId: 'stamp' + this.pdfViewerBase.customStampCount,\n // eslint-disable-next-line max-len\n bounds: { left: annotation.bounds.x, top: annotation.bounds.y, width: annotation.bounds.width, height: annotation.bounds.height }, stampFillcolor: '', isDynamicStamp: false, annotName: annotation.annotName, comments: [], review: { state: '', stateModel: '', author: annotation.author, modifiedDate: annotation.modifiedDate }, shapeAnnotationType: 'stamp',\n // eslint-disable-next-line max-len\n annotationSelectorSettings: annotationSelectorSettings, annotationSettings: this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.customStampSettings), customData: this.pdfViewer.annotationModule.getData('image'), isPrint: annotation.isPrint,\n allowedInteractions: allowedInteractions, isCommentLock: false, isMaskedImage: annotation.isMaskedImage, customStampName: this.customStampName\n };\n }\n else if (annotation.stampAnnotationType) {\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: annotation.stampAnnotationType, author: annotation.author, modifiedDate: annotation.modifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.strokeColor, fillColor: annotation.fillColor, opacity: annotation.opacity, stampFillcolor: annotation.stampFillcolor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.rotateAngle, creationDate: annotation.creationDate, pageNumber: annotation.pageNumber, icon: annotation.icon, stampAnnotationPath: annotation.stampAnnotationPath, randomId: annotation.randomId, isDynamicStamp: annotation.isDynamicStamp, dynamicText: annotation.dynamicText,\n bounds: { left: annotation.bounds.left, top: annotation.bounds.top, width: annotation.bounds.width, height: annotation.bounds.height }, annotName: annotation.annotName, comments: annotation.Comments, review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.author, modifiedDate: annotation.ModifiedDate }, shapeAnnotationType: 'stamp',\n // eslint-disable-next-line max-len\n annotationSelectorSettings: annotationSelectorSettings, annotationSettings: this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stampSettings), customData: this.pdfViewer.annotationModule.getData(annotation.stampAnnotationType), isPrint: annotation.isPrint,\n allowedInteractions: allowedInteractions, isCommentLock: annotation.isCommentLock, isMaskedImage: annotation.isMaskedImage, customStampName: ''\n };\n }\n else {\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: annotation.shapeAnnotationType, author: annotation.author, modifiedDate: annotation.modifiedDate, subject: annotation.subject,\n note: annotation.notes, strokeColor: annotation.strokeColor, fillColor: annotation.fillColor, opacity: annotation.opacity, stampFillcolor: annotation.stampFillColor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.rotateAngle, creationDate: annotation.creationDate, pageNumber: annotation.pageIndex, icon: annotation.subject, stampAnnotationPath: annotation.data, randomId: annotation.id, isDynamicStamp: annotation.isDynamicStamp, dynamicText: annotation.dynamicText, shapeAnnotationType: 'stamp',\n bounds: { left: annotation.bounds.x, top: annotation.bounds.y, width: annotation.bounds.width, height: annotation.bounds.height, }, annotName: annotation.annotName, comments: annotation.Comments, review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.author, modifiedDate: annotation.ModifiedDate },\n // eslint-disable-next-line max-len\n annotationSelectorSettings: annotationSelectorSettings, annotationSettings: this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stampSettings), customData: this.pdfViewer.annotationModule.getData(annotation.shapeAnnotationType), isPrint: annotation.isPrint,\n allowedInteractions: allowedInteractions, isCommentLock: annotation.isCommentLock, isMaskedImage: annotation.isMaskedImage, customStampName: ''\n };\n }\n if (opacity) {\n if (annotation.shapeAnnotationType !== 'Image') {\n // eslint-disable-next-line\n var collectionData = processPathData(annotation.data);\n // eslint-disable-next-line\n var csData = splitArrayCollection(collectionData);\n annotationObject.stampAnnotationPath = csData;\n }\n annotation.creationDate = new Date().toLocaleDateString();\n if (!Browser.isDevice) {\n annotationObject.bounds.width = annotation.wrapper.actualSize.width;\n annotationObject.bounds.height = annotation.wrapper.actualSize.height;\n annotationObject.bounds.left = annotation.wrapper.bounds.x;\n annotationObject.bounds.top = annotation.wrapper.bounds.y;\n }\n annotationObject.opacity = opacity;\n if (this.pdfViewerBase.stampAdded) {\n this.storeStampInSession(pageNumber, annotationObject);\n isStampSaved = true;\n // eslint-disable-next-line\n var bounds = { left: annotationObject.bounds.left, top: annotationObject.bounds.top, width: annotationObject.bounds.width, height: annotationObject.bounds.height };\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n var settings = { opacity: annotationObject.opacity, author: annotationObject.author, modifiedDate: annotationObject.modifiedDate };\n if (annotation.shapeAnnotationType === 'Image') {\n this.pdfViewerBase.stampAdded = false;\n this.pdfViewer.fireAnnotationAdd(annotationObject.pageNumber, annotationObject.annotName, 'Image', bounds, settings, null, null, null, null, null, this.customStampName);\n this.customStampName = null;\n }\n else {\n this.pdfViewer.fireAnnotationAdd(annotationObject.pageNumber, annotationObject.annotName, 'Stamp', bounds, settings);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageNumber, null, annotation, 'Addition', '', annotation, annotationObject);\n }\n }\n if (!isStampSaved) {\n this.storeStampInSession(pageNumber, annotationObject);\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.renderCustomImage = function (position, pageIndex, image, currentDate, modifiedDate, RotationAngle, opacity, canvas, isExistingStamp, annotation, annotName) {\n var annot;\n var annotationObject = null;\n var annotationName;\n var author;\n var isCommentsLock;\n // eslint-disable-next-line\n var isCustomStamp = this.pdfViewer.customStampSettings.left > 0 && this.pdfViewer.customStampSettings.top > 0 ? true : false;\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.customStampSettings);\n // eslint-disable-next-line\n var allowedInteractions = this.pdfViewer.stampSettings.allowedInteractions ? this.pdfViewer.stampSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n if (Browser.isDevice) {\n this.pdfViewerBase.customStampCount += 1;\n }\n if (isExistingStamp) {\n annotationName = annotation.AnnotName;\n author = annotation.Author;\n isCommentsLock = annotation.IsCommentLock;\n // eslint-disable-next-line max-len\n annotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.customStampSettings);\n // eslint-disable-next-line max-len\n allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n if (author === null) {\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.customStampSettings.author ? this.pdfViewer.customStampSettings.author : 'Guest';\n }\n }\n else {\n annotationName = this.pdfViewer.annotation.createGUID();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.customStampSettings.author ? this.pdfViewer.customStampSettings.author : 'Guest';\n isCommentsLock = false;\n }\n if (!modifiedDate) {\n modifiedDate = annotation.ModifiedDate ? annotation.ModifiedDate : new Date().toLocaleString();\n }\n var annotationAddMode = annotation ? annotation.annotationAddMode : 'UI Drawn Annotation ';\n var isPrint = true;\n if (!isExistingStamp) {\n isPrint = this.pdfViewer.customStampSettings.isPrint;\n }\n else {\n if (annotation.annotationAddMode === 'Imported Annotation') {\n isPrint = annotation.IsPrint;\n }\n else {\n isPrint = annotation.AnnotationSettings.isPrint;\n }\n }\n annot = {\n // eslint-disable-next-line max-len\n id: 'stamp' + this.pdfViewerBase.customStampCount, allowedInteractions: allowedInteractions, bounds: { x: position.left, y: position.top, width: position.width, height: position.height }, pageIndex: pageIndex, data: image.src, modifiedDate: modifiedDate,\n shapeAnnotationType: 'Image', opacity: opacity, rotateAngle: RotationAngle, annotName: annotationName, comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: author },\n // eslint-disable-next-line max-len\n annotationSettings: annotationSettings, annotationAddMode: annotationAddMode, signatureName: annotName, isPrint: isPrint, isCommentLock: isCommentsLock\n };\n this.currentStampAnnotation = annot;\n // eslint-disable-next-line\n var annotationSelectorSettings = this.pdfViewer.stampSettings.annotationSelectorSettings ? this.pdfViewer.stampSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n if (isExistingStamp || isCustomStamp) {\n if (!annotation) {\n this.isStampAnnotSelected = false;\n annotation = annot;\n // eslint-disable-next-line\n annotation.Note = '';\n // eslint-disable-next-line\n annotation.State = '';\n // eslint-disable-next-line\n annotation.StateModel = '';\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('stamp', pageIndex + 1);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n }\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'image', author: author, allowedInteractions: allowedInteractions, modifiedDate: modifiedDate, subject: '',\n note: annotation.Note, strokeColor: '', fillColor: '', opacity: opacity,\n // eslint-disable-next-line max-len\n rotateAngle: '0', creationDate: currentDate, pageNumber: pageIndex, icon: '', stampAnnotationPath: image.src, randomId: 'stamp' + this.pdfViewerBase.customStampCount,\n // eslint-disable-next-line max-len\n bounds: { left: position.left, top: position.top, width: position.width, height: position.height }, stampFillcolor: '', isDynamicStamp: false,\n annotName: annotationName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, author: author, modifiedDate: modifiedDate }, shapeAnnotationType: 'stamp',\n // eslint-disable-next-line max-len\n annotationSelectorSettings: annotationSelectorSettings, annotationSettings: annotationSettings, customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: isPrint, isCommentLock: isCommentsLock, isMaskedImage: annotation.IsMaskedImage, customStampName: annotation.CustomStampName\n };\n this.storeStampInSession(pageIndex, annotationObject);\n annot.comments = this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author);\n annot.review = { state: annotation.State, stateModel: annotation.StateModel, author: author, modifiedDate: modifiedDate };\n if (this.isAddAnnotationProgramatically) {\n // eslint-disable-next-line\n var settings = {\n opacity: annot.opacity, borderColor: annot.strokeColor, borderWidth: annot.thickness, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n // eslint-disable-next-line\n fillColor: annot.fillColor, fontSize: annot.fontSize, width: annot.bounds.width, height: annot.bounds.height, fontColor: annot.fontColor, fontFamily: annot.fontFamily, defaultText: annot.dynamicText, fontStyle: annot.font, textAlignment: annot.textAlign\n };\n this.customStampName = this.customStampName ? this.customStampName : this.currentStampAnnotation.signatureName ? this.currentStampAnnotation.signatureName : annotation.id;\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'Image', annot.bounds, settings, null, null, null, null, null, this.customStampName);\n this.customStampName = null;\n }\n this.pdfViewer.add(annot);\n // eslint-disable-next-line\n if (canvas != undefined && canvas != null) {\n canvas = canvas;\n }\n else {\n canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n }\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvas, pageIndex);\n if (this.pdfViewerBase.stampAdded) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, null, annot, 'Addition', '', annot, annot);\n }\n }\n if (!Browser.isDevice) {\n this.pdfViewerBase.customStampCount += 1;\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.retrieveDynamicStampAnnotation = function (icontype) {\n var stampCollection;\n if (icontype) {\n switch (icontype.trim()) {\n case 'Revised':\n {\n stampCollection = {\n iconName: 'Revised',\n // eslint-disable-next-line max-len\n pathdata: 'M19.68,21.22a3.94,3.94,0,0,1-1.1-1.9L16,11.87l-.21-.64a20.77,20.77,0,0,0,2.11-.58,7.24,7.24,0,0,0,2-1.09,5.65,5.65,0,0,0,1.72-2.12,5.4,5.4,0,0,0,.52-2.2A4.15,4.15,0,0,0,19.1,1.05a14.58,14.58,0,0,0-4.72-.6H5.31v.86a7,7,0,0,1,2,.33c.3.14.45.48.45,1a6.1,6.1,0,0,1-.14,1.08l-.21.8L3.31,19.32a3.35,3.35,0,0,1-.94,1.78,3.58,3.58,0,0,1-1.74.57v.86h9.83v-.86a6.22,6.22,0,0,1-2-.35c-.29-.15-.43-.52-.43-1.11,0-.1,0-.21,0-.31a2.36,2.36,0,0,1,0-.28l.28-1.14,1.95-6.86h.93l3.56,10.91h6.25v-.88A3.05,3.05,0,0,1,19.68,21.22ZM13.29,10.31a14,14,0,0,1-2.63.23l2-7.56a2.67,2.67,0,0,1,.52-1.17,1.4,1.4,0,0,1,1-.3,2.74,2.74,0,0,1,2.33.91,3.72,3.72,0,0,1,.69,2.3,6.4,6.4,0,0,1-.49,2.52,6.72,6.72,0,0,1-1.06,1.82A4.11,4.11,0,0,1,13.29,10.31ZM26,.45H43.74l-1.4,6.27-.88-.15a6,6,0,0,0-.78-3.4c-.84-1.12-2.54-1.69-5.11-1.69a2.9,2.9,0,0,0-1.68.32A2.34,2.34,0,0,0,33.26,3l-1.95,7.33a13.55,13.55,0,0,0,4.48-.56c.68-.32,1.44-1.3,2.27-2.92l.91.11-2.44,9-.91-.16a7.27,7.27,0,0,0,.09-.82q0-.35,0-.57a2.69,2.69,0,0,0-1-2.4A7.57,7.57,0,0,0,31,11.38l-2.17,8c0,.2-.09.38-.12.57a2.62,2.62,0,0,0,0,.43.92.92,0,0,0,.35.74,2.54,2.54,0,0,0,1.49.29,13.84,13.84,0,0,0,5.11-.84A9.85,9.85,0,0,0,40.73,16l.81.14-1.95,6.42h-18v-.9a3.43,3.43,0,0,0,1.42-.53A3.42,3.42,0,0,0,24,19.32L28,4.51c.1-.37.18-.72.25-1a4.23,4.23,0,0,0,.09-.78c0-.56-.15-.91-.44-1.06a6.85,6.85,0,0,0-2-.34ZM63.4,3.37,51,23.15H49.9L47.39,6.34a17.25,17.25,0,0,0-.93-4.24c-.25-.43-.93-.7-2.05-.79V.45h9.86v.86a5.47,5.47,0,0,0-1.72.19,1.14,1.14,0,0,0-.81,1.16,3,3,0,0,0,0,.31l0,.32L53.5,16.43l6.24-9.85c.49-.79.94-1.57,1.33-2.36a4.45,4.45,0,0,0,.6-1.85.88.88,0,0,0-.61-.9,6.11,6.11,0,0,0-1.52-.16V.45h6.34v.86a3.88,3.88,0,0,0-1.16.5A5.73,5.73,0,0,0,63.4,3.37ZM70.08,20c0,.11,0,.22,0,.31,0,.56.15.91.45,1.06a6.39,6.39,0,0,0,1.95.35v.86H62.63v-.86a3.58,3.58,0,0,0,1.74-.57,3.35,3.35,0,0,0,.94-1.78l4-14.81q.18-.63.27-1a3.78,3.78,0,0,0,.09-.75c0-.56-.16-.91-.47-1.06a7,7,0,0,0-2-.34V.45h9.83v.86a3.61,3.61,0,0,0-1.75.58,3.37,3.37,0,0,0-.91,1.78L70.4,18.48l-.26,1.14Zm19.26-7.23a6.37,6.37,0,0,1,1.07,3.62,6.58,6.58,0,0,1-2.06,4.71,7.54,7.54,0,0,1-5.65,2.1A10.15,10.15,0,0,1,80.89,23a11.42,11.42,0,0,1-1.8-.49l-.83-.3-.58-.2a2,2,0,0,0-.38,0,1,1,0,0,0-.78.26,3.89,3.89,0,0,0-.52.92H75l1.19-7.4,1,.07a14.63,14.63,0,0,0,.28,2.3,5.27,5.27,0,0,0,2.79,3.44,4.73,4.73,0,0,0,2.06.44,3.85,3.85,0,0,0,3.07-1.26,4.39,4.39,0,0,0,1.09-2.94q0-2.09-4.05-5.25c-2.7-2.22-4-4.26-4-6.14a6.31,6.31,0,0,1,1.78-4.53,6.51,6.51,0,0,1,5-1.87,9.67,9.67,0,0,1,1.82.18A6.54,6.54,0,0,1,88,.45l.84.28.56.13a2.59,2.59,0,0,0,.52.06,1.4,1.4,0,0,0,.88-.24,2.2,2.2,0,0,0,.53-.6h1L91,6.69l-.85-.12L90,5.49a6,6,0,0,0-1-2.62,3.82,3.82,0,0,0-3.38-1.73A3,3,0,0,0,82.9,2.53a3.6,3.6,0,0,0-.58,2,3.44,3.44,0,0,0,.59,2,6,6,0,0,0,1,1l2.85,2.33A12.75,12.75,0,0,1,89.34,12.72ZM110.27,16l.81.14-2,6.42H90.85v-.86a3.66,3.66,0,0,0,1.74-.57,3.42,3.42,0,0,0,.93-1.78l4-14.81c.1-.37.18-.72.25-1a4.23,4.23,0,0,0,.09-.78c0-.56-.14-.91-.44-1.06a6.85,6.85,0,0,0-2-.34V.45h17.77l-1.4,6.27L111,6.57a6,6,0,0,0-.78-3.4c-.84-1.12-2.54-1.69-5.1-1.69a2.92,2.92,0,0,0-1.69.32A2.34,2.34,0,0,0,102.8,3l-2,7.33a13.55,13.55,0,0,0,4.48-.56c.69-.32,1.44-1.3,2.27-2.92l.92.11-2.45,9-.91-.16a7.27,7.27,0,0,0,.09-.82q0-.35,0-.57a2.69,2.69,0,0,0-1-2.4,7.57,7.57,0,0,0-3.79-.64l-2.17,8c0,.2-.09.38-.12.57a2.62,2.62,0,0,0,0,.43.92.92,0,0,0,.35.74,2.54,2.54,0,0,0,1.49.29,13.84,13.84,0,0,0,5.11-.84A9.81,9.81,0,0,0,110.27,16Zm22.65-13Q130.39.45,125.52.45h-9.58v.86a7,7,0,0,1,2,.34c.31.15.47.5.47,1.06a3.61,3.61,0,0,1-.09.74c-.06.29-.15.64-.26,1.06L114,19.31a3.18,3.18,0,0,1-1.15,1.91,3.57,3.57,0,0,1-1.53.45v.86h9.47a14.87,14.87,0,0,0,10.95-4.14,12,12,0,0,0,3.75-8.77A8.94,8.94,0,0,0,132.92,2.94ZM129,15.36q-2.62,6.06-8.52,6.05a2.46,2.46,0,0,1-1.42-.29,1.05,1.05,0,0,1-.4-.93,2.24,2.24,0,0,1,0-.34,2.65,2.65,0,0,1,.08-.43l4.55-16.67a2,2,0,0,1,.54-.92,2.2,2.2,0,0,1,1.44-.35,4.74,4.74,0,0,1,4.47,2.22,7.9,7.9,0,0,1,.83,3.9A19.32,19.32,0,0,1,129,15.36Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 127.47, height: 55.84601, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Reviewed':\n {\n stampCollection = {\n iconName: 'Reviewed',\n // eslint-disable-next-line max-len\n pathdata: 'M17.37,18.25a3.47,3.47,0,0,1-1-1.67L14.17,10c0-.07-.1-.26-.19-.56A14.71,14.71,0,0,0,15.83,9a6.08,6.08,0,0,0,1.76-1A4.92,4.92,0,0,0,19.1,6.14a4.71,4.71,0,0,0,.46-1.93A3.65,3.65,0,0,0,16.86.52,12.83,12.83,0,0,0,12.72,0h-8V.75a6.62,6.62,0,0,1,1.72.3c.26.12.39.41.39.88a4.56,4.56,0,0,1-.13.94c0,.2-.1.44-.17.7L3,16.58a2.87,2.87,0,0,1-.82,1.56,3.15,3.15,0,0,1-1.53.51v.75H9.27v-.75a5.88,5.88,0,0,1-1.74-.31c-.25-.13-.37-.46-.37-1a2.53,2.53,0,0,1,0-.28,1.44,1.44,0,0,1,0-.24l.24-1,1.71-6H10l3.13,9.59h5.49v-.77A2.71,2.71,0,0,1,17.37,18.25ZM11.75,8.67a12.06,12.06,0,0,1-2.3.19L11.2,2.22a2.2,2.2,0,0,1,.46-1,1.19,1.19,0,0,1,.87-.27,2.41,2.41,0,0,1,2.05.8,3.29,3.29,0,0,1,.6,2A5.63,5.63,0,0,1,14.75,6a6.06,6.06,0,0,1-.93,1.59A3.65,3.65,0,0,1,11.75,8.67ZM22.9,0H38.52L37.29,5.51l-.78-.13a5.34,5.34,0,0,0-.68-3c-.74-1-2.24-1.48-4.49-1.48a2.68,2.68,0,0,0-1.49.27,2.09,2.09,0,0,0-.54,1L27.59,8.67a12.08,12.08,0,0,0,3.94-.5,5.69,5.69,0,0,0,2-2.56l.81.1-2.16,7.93-.79-.15c0-.27.06-.51.08-.71s0-.37,0-.5a2.34,2.34,0,0,0-.85-2.11A6.61,6.61,0,0,0,27.3,9.6l-1.91,7.08a4.91,4.91,0,0,0-.1.5,2,2,0,0,0,0,.38.83.83,0,0,0,.31.65,2.29,2.29,0,0,0,1.31.25,12.21,12.21,0,0,0,4.49-.73,8.69,8.69,0,0,0,4.51-4.09l.71.12L34.86,19.4H19.05v-.79a2.88,2.88,0,0,0,1.28-.47,2.94,2.94,0,0,0,.82-1.56l3.56-13q.13-.49.21-.9A3.26,3.26,0,0,0,25,2q0-.73-.39-.93A6.44,6.44,0,0,0,22.9.75ZM55.79,2.57,44.86,20h-.93L41.72,5.17a16.05,16.05,0,0,0-.81-3.73c-.22-.37-.82-.6-1.81-.69V0h8.67V.75a5,5,0,0,0-1.52.17,1,1,0,0,0-.7,1,2.53,2.53,0,0,0,0,.28l0,.27L47.09,14l5.48-8.66C53,4.69,53.4,4,53.75,3.32a4,4,0,0,0,.52-1.63.78.78,0,0,0-.54-.8A5.88,5.88,0,0,0,52.4.75V0H58V.75a3.55,3.55,0,0,0-1,.44A5.18,5.18,0,0,0,55.79,2.57ZM62,18.34a6,6,0,0,0,1.71.31v.75H55.12v-.75a3.15,3.15,0,0,0,1.53-.51,2.94,2.94,0,0,0,.82-1.56L61,3.57c.1-.37.18-.68.23-.93A2.81,2.81,0,0,0,61.34,2c0-.49-.13-.8-.41-.93a6.61,6.61,0,0,0-1.71-.3V0h8.63V.75a3.17,3.17,0,0,0-1.53.51,3,3,0,0,0-.8,1.57l-3.58,13-.22,1a2.74,2.74,0,0,0,0,.28,1.41,1.41,0,0,0,0,.28C61.64,17.9,61.78,18.21,62,18.34ZM69.13,0H84.75L83.52,5.51l-.78-.13a5.34,5.34,0,0,0-.68-3c-.74-1-2.24-1.48-4.49-1.48a2.68,2.68,0,0,0-1.49.27,2.09,2.09,0,0,0-.54,1L73.82,8.67a12.08,12.08,0,0,0,3.94-.5,5.69,5.69,0,0,0,2-2.56l.81.1L78.4,13.64l-.79-.15c0-.27.07-.51.08-.71s0-.37,0-.5a2.34,2.34,0,0,0-.85-2.11,6.61,6.61,0,0,0-3.33-.57l-1.91,7.08a4.91,4.91,0,0,0-.1.5,2,2,0,0,0,0,.38.83.83,0,0,0,.31.65,2.29,2.29,0,0,0,1.31.25,12.21,12.21,0,0,0,4.49-.73,8.69,8.69,0,0,0,4.51-4.09l.71.12L81.1,19.4H65v-.75a3.15,3.15,0,0,0,1.53-.51,2.94,2.94,0,0,0,.82-1.56l3.56-13q.14-.49.21-.9A3.26,3.26,0,0,0,71.24,2q0-.73-.39-.93a6.44,6.44,0,0,0-1.72-.3Zm39.15,2.83L100,20h-.84L97.41,5.85,90.67,20h-.84L87.58,3.13A3.83,3.83,0,0,0,87,1.23,2.84,2.84,0,0,0,85.33.71V0h8.06V.75A2.55,2.55,0,0,0,92.27,1a1.33,1.33,0,0,0-.66,1.31c0,.06,0,.13,0,.19s0,.15,0,.26l1.15,10.16,4.32-9a1,1,0,0,0,0-.27,3.33,3.33,0,0,0-.64-2.38A2.5,2.5,0,0,0,95.06.71V0h7.78V.71a2.9,2.9,0,0,0-1.4.34c-.27.19-.41.6-.41,1.24,0,.13,0,.32,0,.55,0,.4.08.88.14,1.47l1,8.47,4.51-9.42a7.12,7.12,0,0,0,.29-.74,2.48,2.48,0,0,0,.14-.79.9.9,0,0,0-.48-.93,3.25,3.25,0,0,0-1.34-.19V0h5.41V.71a2.34,2.34,0,0,0-1.1.35A4.56,4.56,0,0,0,108.28,2.83Zm16.45,10.81.71.12-1.71,5.64H107.66v-.75a3.15,3.15,0,0,0,1.53-.51,2.87,2.87,0,0,0,.82-1.56l3.57-13q.12-.49.21-.9a3.17,3.17,0,0,0,.08-.69q0-.73-.39-.93a6.44,6.44,0,0,0-1.72-.3V0h15.62l-1.23,5.51-.78-.13a5.26,5.26,0,0,0-.68-3C124,1.4,122.46.91,120.2.91a2.64,2.64,0,0,0-1.48.27,2.09,2.09,0,0,0-.55,1l-1.72,6.45a12,12,0,0,0,3.94-.5,5.62,5.62,0,0,0,2-2.56l.81.1L121,13.64l-.79-.15c0-.27.06-.51.07-.71s0-.37,0-.5a2.34,2.34,0,0,0-.86-2.11,6.57,6.57,0,0,0-3.32-.57l-1.91,7.08a5,5,0,0,0-.11.5,3.14,3.14,0,0,0,0,.38.8.8,0,0,0,.31.65,2.25,2.25,0,0,0,1.3.25,12.26,12.26,0,0,0,4.5-.73A8.67,8.67,0,0,0,124.73,13.64ZM144.64,2.19Q142.41,0,138.14,0h-8.42V.75a6.61,6.61,0,0,1,1.71.3c.28.13.41.44.41.93a2.81,2.81,0,0,1-.08.66c0,.25-.12.56-.23.93l-3.56,13a2.78,2.78,0,0,1-1,1.68,3.44,3.44,0,0,1-1.35.4v.75h8.32a13.06,13.06,0,0,0,9.63-3.64,10.49,10.49,0,0,0,3.3-7.7A7.87,7.87,0,0,0,144.64,2.19ZM141.2,13.1q-2.31,5.32-7.48,5.32a2.27,2.27,0,0,1-1.26-.25,1,1,0,0,1-.34-.82,1.62,1.62,0,0,1,0-.3,2.16,2.16,0,0,1,.08-.38l4-14.65a1.63,1.63,0,0,1,.47-.81A2,2,0,0,1,138,.91a4.16,4.16,0,0,1,3.93,1.95,7,7,0,0,1,.72,3.42A16.82,16.82,0,0,1,141.2,13.1Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 127.70402, height: 55.84601, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Received':\n {\n stampCollection = {\n iconName: 'Received',\n // eslint-disable-next-line max-len\n pathdata: 'M18.17,8.76a5,5,0,0,0,1.57-1.93,5,5,0,0,0,.47-2A3.76,3.76,0,0,0,17.42,1,13,13,0,0,0,13.13.48H4.89v.78a6.49,6.49,0,0,1,1.77.31c.27.12.41.43.41.91a5.87,5.87,0,0,1-.13,1c-.05.2-.12.44-.19.72L3.06,17.64a3,3,0,0,1-.84,1.61,3.36,3.36,0,0,1-1.59.53v.77H9.57v-.77a6.17,6.17,0,0,1-1.8-.32c-.26-.14-.39-.48-.39-1a2.46,2.46,0,0,1,0-.28,1.78,1.78,0,0,1,0-.26l.25-1,1.78-6.25h.84l3.24,9.92h5.66v-.8A2.76,2.76,0,0,1,18,19.36a3.57,3.57,0,0,1-1-1.72l-2.31-6.78c0-.07-.09-.27-.19-.58.87-.2,1.51-.38,1.92-.52A6.56,6.56,0,0,0,18.17,8.76Zm-2.93-2.1a6.19,6.19,0,0,1-1,1.65,3.85,3.85,0,0,1-2.14,1.14,12.92,12.92,0,0,1-2.39.2l1.81-6.87A2.5,2.5,0,0,1,12,1.72a1.27,1.27,0,0,1,.9-.27,2.5,2.5,0,0,1,2.12.83,3.35,3.35,0,0,1,.62,2.09A5.81,5.81,0,0,1,15.24,6.66ZM30.3,2.78,28.52,9.45a12.53,12.53,0,0,0,4.08-.51,5.91,5.91,0,0,0,2-2.66l.84.11-2.23,8.2-.82-.15c0-.28.07-.53.08-.74a5.17,5.17,0,0,0,0-.52A2.43,2.43,0,0,0,31.66,11a6.87,6.87,0,0,0-3.44-.58l-2,7.32a3.61,3.61,0,0,0-.11.51,2.31,2.31,0,0,0,0,.4.83.83,0,0,0,.32.67,2.32,2.32,0,0,0,1.35.26,12.58,12.58,0,0,0,4.65-.76,9,9,0,0,0,4.67-4.23l.73.13-1.77,5.83H19.8v-.83A2.83,2.83,0,0,0,21,19.25a3.09,3.09,0,0,0,.85-1.61L25.54,4.17c.09-.34.16-.65.22-.93a3.35,3.35,0,0,0,.09-.71c0-.5-.13-.82-.4-1a6.34,6.34,0,0,0-1.78-.31V.48H39.82l-1.27,5.7-.81-.13A5.44,5.44,0,0,0,37,3Q35.9,1.42,32.4,1.42a2.69,2.69,0,0,0-1.54.29A2.08,2.08,0,0,0,30.3,2.78ZM56.56,6.1c0-.07,0-.18,0-.33a4.89,4.89,0,0,0-1.12-3.53,3.75,3.75,0,0,0-2.82-1.16c-2.33,0-4.35,1.55-6.07,4.63a17.09,17.09,0,0,0-2.31,8.43c0,2.08.47,3.5,1.43,4.27a4.89,4.89,0,0,0,3.11,1.15,6.84,6.84,0,0,0,4.14-1.45A11.51,11.51,0,0,0,55,16l.91.66A10.08,10.08,0,0,1,52.26,20a9.33,9.33,0,0,1-4.34,1.11A8.56,8.56,0,0,1,42,19a7.25,7.25,0,0,1-2.35-5.67A13.53,13.53,0,0,1,43.22,4a11.19,11.19,0,0,1,8.56-4A12.34,12.34,0,0,1,55,.44,13.17,13.17,0,0,0,56.9.88a1,1,0,0,0,.71-.24A2.94,2.94,0,0,0,58.06,0H59L57.45,7l-.94-.18C56.54,6.42,56.55,6.17,56.56,6.1Zm18,8.49.74.13-1.78,5.83H56.87v-.77a3.31,3.31,0,0,0,1.58-.53,3.09,3.09,0,0,0,.85-1.61L63,4.17c.09-.34.16-.65.22-.93a3.35,3.35,0,0,0,.09-.71c0-.5-.14-.82-.4-1a6.34,6.34,0,0,0-1.78-.31V.48H77.26L76,6.18l-.81-.13A5.44,5.44,0,0,0,74.48,3q-1.14-1.54-4.64-1.54a2.69,2.69,0,0,0-1.54.29,2.08,2.08,0,0,0-.56,1.07L66,9.45A12.53,12.53,0,0,0,70,8.94a5.91,5.91,0,0,0,2-2.66l.84.11-2.23,8.2-.82-.15c0-.28.07-.53.08-.74a5.17,5.17,0,0,0,0-.52A2.43,2.43,0,0,0,69.1,11a6.87,6.87,0,0,0-3.44-.58l-2,7.32a3.61,3.61,0,0,0-.11.51,2.31,2.31,0,0,0,0,.4.83.83,0,0,0,.32.67,2.32,2.32,0,0,0,1.35.26,12.58,12.58,0,0,0,4.65-.76A8.91,8.91,0,0,0,74.52,14.59Zm31-11.45-11.31,18h-1L91,5.83A16.56,16.56,0,0,0,90.12,2c-.2-.34-.71-.56-1.51-.67a3,3,0,0,0-1.31.48,3.08,3.08,0,0,0-.82,1.62l-3.7,13.47-.24,1c0,.1,0,.2-.05.3s0,.2,0,.28c0,.51.14.83.41,1a6.21,6.21,0,0,0,1.77.32v.77H75.72v-.77a3.31,3.31,0,0,0,1.58-.53,3.09,3.09,0,0,0,.85-1.61L81.83,4.17c.11-.38.19-.7.25-.95a3.75,3.75,0,0,0,.08-.69c0-.5-.15-.82-.43-1A6.49,6.49,0,0,0,80,1.26V.48H97.22v.78a4.92,4.92,0,0,0-1.57.18,1,1,0,0,0-.73,1.05,2.81,2.81,0,0,0,0,.29l0,.28,1.56,12,5.67-9a24.21,24.21,0,0,0,1.21-2.14,4.07,4.07,0,0,0,.54-1.68.79.79,0,0,0-.55-.82A5.69,5.69,0,0,0,102,1.26V.48h5.76v.78a3.5,3.5,0,0,0-1,.46A5.16,5.16,0,0,0,105.52,3.14Zm16.83,11.45.73.13-1.77,5.83H104.69v-.77a3.31,3.31,0,0,0,1.58-.53,3,3,0,0,0,.85-1.61l3.69-13.47c.08-.34.16-.65.22-.93a4,4,0,0,0,.08-.71c0-.5-.13-.82-.4-1a6.34,6.34,0,0,0-1.78-.31V.48h16.16l-1.28,5.7-.8-.13A5.43,5.43,0,0,0,122.3,3q-1.14-1.54-4.64-1.54a2.67,2.67,0,0,0-1.53.29,2.16,2.16,0,0,0-.57,1.07l-1.78,6.67a12.53,12.53,0,0,0,4.08-.51,5.91,5.91,0,0,0,2.06-2.66l.83.11-2.22,8.2-.82-.15c0-.28.06-.53.08-.74s0-.38,0-.52a2.45,2.45,0,0,0-.88-2.18,6.9,6.9,0,0,0-3.44-.58l-2,7.32c-.05.18-.08.35-.11.51a3.58,3.58,0,0,0,0,.4.81.81,0,0,0,.32.67,2.28,2.28,0,0,0,1.35.26,12.62,12.62,0,0,0,4.65-.76A9,9,0,0,0,122.35,14.59ZM142.94,2.75Q140.63.48,136.21.48h-8.7v.78a6.66,6.66,0,0,1,1.77.31q.42.21.42,1a2.91,2.91,0,0,1-.08.68q-.08.39-.24,1L125.7,17.62a2.93,2.93,0,0,1-1,1.75,3.54,3.54,0,0,1-1.39.41v.77h8.61a13.5,13.5,0,0,0,10-3.76,10.84,10.84,0,0,0,3.41-8A8.14,8.14,0,0,0,142.94,2.75ZM139.38,14q-2.38,5.51-7.74,5.5a2.35,2.35,0,0,1-1.29-.26,1,1,0,0,1-.36-.85,1.78,1.78,0,0,1,0-.31,2.08,2.08,0,0,1,.08-.39l4.13-15.15a1.76,1.76,0,0,1,.49-.84A2,2,0,0,1,136,1.42a4.32,4.32,0,0,1,4.07,2A7.17,7.17,0,0,1,140.83,7,17.49,17.49,0,0,1,139.38,14Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 127.70402, height: 55.84601, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Approved':\n {\n stampCollection = {\n iconName: 'Approved',\n // eslint-disable-next-line max-len\n pathdata: 'M19,20.22H10.55v-.71a4.26,4.26,0,0,0,1.79-.41,1.37,1.37,0,0,0,.53-1.29c0-.22,0-.75-.16-1.58,0-.17-.11-.89-.29-2.15H6.06l-1.72,3a4,4,0,0,0-.31.66,2,2,0,0,0-.14.69c0,.41.12.67.37.78a5.42,5.42,0,0,0,1.53.3v.71H0v-.71A4,4,0,0,0,1.21,19a5.68,5.68,0,0,0,1.28-1.56L13.45.07h.76L17,17a4.35,4.35,0,0,0,.7,2.08,2.4,2.4,0,0,0,1.31.44Zm-6.83-7.31L11.13,5.73,6.76,12.91Zm7.18,6.52a3,3,0,0,0,1.33-.49,3,3,0,0,0,.84-1.59L25.19,4.11c.07-.3.14-.6.2-.9a3.14,3.14,0,0,0,.1-.72,1,1,0,0,0-.58-1,5.68,5.68,0,0,0-1.57-.23V.48h8.47a9.68,9.68,0,0,1,3.57.57,4,4,0,0,1,2.71,4,4.93,4.93,0,0,1-2.2,4.22,9.53,9.53,0,0,1-5.69,1.58l-.85,0-1.71-.11L26,16.6l-.25,1a1,1,0,0,0-.05.3,2.83,2.83,0,0,0,0,.29c0,.5.14.81.4.94a6.31,6.31,0,0,0,1.76.31v.76H19.39Zm8.52-9.66.54.06h.48a5.81,5.81,0,0,0,2.3-.36,3.47,3.47,0,0,0,1.4-1.18,6.24,6.24,0,0,0,.86-2,8.94,8.94,0,0,0,.3-2,3.29,3.29,0,0,0-.58-2,2.3,2.3,0,0,0-2-.79,1.23,1.23,0,0,0-.93.28,2.71,2.71,0,0,0-.46,1Zm8,9.69a3.19,3.19,0,0,0,1.55-.52,3,3,0,0,0,.84-1.59L42,4.11c.07-.3.14-.6.2-.9a3.14,3.14,0,0,0,.1-.72,1,1,0,0,0-.58-1,5.68,5.68,0,0,0-1.57-.23V.48h8.47a9.68,9.68,0,0,1,3.57.57,4,4,0,0,1,2.71,4,4.93,4.93,0,0,1-2.2,4.22A9.53,9.53,0,0,1,47,10.87l-.85,0-1.71-.11L42.79,16.6l-.25,1a1.45,1.45,0,0,0,0,.3,2.83,2.83,0,0,0,0,.29c0,.5.14.81.4.94a6.31,6.31,0,0,0,1.76.31v.76h-8.7Zm8.74-9.69.54.06h.48A5.81,5.81,0,0,0,48,9.48a3.41,3.41,0,0,0,1.4-1.18,6.24,6.24,0,0,0,.86-2,9,9,0,0,0,.31-2,3.29,3.29,0,0,0-.59-2,2.3,2.3,0,0,0-2-.79,1.23,1.23,0,0,0-.93.28,2.88,2.88,0,0,0-.46,1Zm7.95,9.69a3.27,3.27,0,0,0,1.56-.52A3.06,3.06,0,0,0,55,17.35L58.64,4.11l.18-.71a4.72,4.72,0,0,0,.13-1c0-.47-.13-.77-.4-.9a6.74,6.74,0,0,0-1.74-.3V.48h8.11A13,13,0,0,1,69.14,1a3.7,3.7,0,0,1,2.74,3.75,4.8,4.8,0,0,1-.46,2,5,5,0,0,1-1.54,1.9,6.55,6.55,0,0,1-1.79,1,19.35,19.35,0,0,1-1.89.52c.1.3.16.49.2.57l2.27,6.66a3.49,3.49,0,0,0,1,1.7,3.08,3.08,0,0,0,1.6.41v.76H65.33l-3.19-9.76h-.83L59.57,16.6l-.25,1a1.87,1.87,0,0,0,0,.25,2.64,2.64,0,0,0,0,.28q0,.8.39,1a5.88,5.88,0,0,0,1.76.32v.76H52.62ZM63.94,9.3a3.79,3.79,0,0,0,2.11-1.13A6,6,0,0,0,67,6.55a5.84,5.84,0,0,0,.44-2.26,3.31,3.31,0,0,0-.61-2,2.47,2.47,0,0,0-2.09-.81,1.25,1.25,0,0,0-.88.26,2.34,2.34,0,0,0-.47,1.05L61.59,9.5A13.42,13.42,0,0,0,63.94,9.3ZM76.39,4.53Q80.26,0,85,0a7.34,7.34,0,0,1,5.23,1.92,6.76,6.76,0,0,1,2,5.19,13.9,13.9,0,0,1-3.62,9.07q-3.86,4.61-8.88,4.6a7.06,7.06,0,0,1-5.13-1.92,6.86,6.86,0,0,1-2-5.14A14,14,0,0,1,76.39,4.53ZM77.3,18a2.56,2.56,0,0,0,2.57,1.78A4.62,4.62,0,0,0,83,18.47,14.42,14.42,0,0,0,86,13.54a27.18,27.18,0,0,0,1.52-4.83,20.67,20.67,0,0,0,.54-4.11,4.38,4.38,0,0,0-.73-2.55A2.62,2.62,0,0,0,85,1q-3.68,0-6.19,6.54a24.29,24.29,0,0,0-1.9,8.26A5.91,5.91,0,0,0,77.3,18ZM102.23.48v.76a5.19,5.19,0,0,0-1.55.17,1,1,0,0,0-.72,1,2.46,2.46,0,0,0,0,.28L100,3l1.52,11.76L107.11,6c.44-.71.84-1.41,1.2-2.11a4.06,4.06,0,0,0,.53-1.66.79.79,0,0,0-.55-.81,6.11,6.11,0,0,0-1.35-.14V.48h5.67v.76a3.31,3.31,0,0,0-1,.45,5.33,5.33,0,0,0-1.18,1.4L99.26,20.78h-.94l-2.25-15A15.49,15.49,0,0,0,95.24,2c-.22-.39-.84-.62-1.83-.71V.48Zm7.35,19a3.19,3.19,0,0,0,1.55-.52,3,3,0,0,0,.84-1.59l3.62-13.24c.09-.34.16-.64.22-.92a3.27,3.27,0,0,0,.09-.7c0-.5-.14-.81-.4-.94a6.13,6.13,0,0,0-1.75-.31V.48h15.89l-1.25,5.6L127.6,6a5.32,5.32,0,0,0-.7-3q-1.12-1.52-4.56-1.51a2.61,2.61,0,0,0-1.51.28,2.12,2.12,0,0,0-.56,1.06L118.52,9.3a12.1,12.1,0,0,0,4-.51,5.8,5.8,0,0,0,2-2.61l.82.1-2.19,8.07-.81-.14c0-.28.07-.52.08-.73s0-.37,0-.51a2.4,2.4,0,0,0-.87-2.15,6.76,6.76,0,0,0-3.38-.57l-1.94,7.2a3.34,3.34,0,0,0-.11.51,3.67,3.67,0,0,0,0,.39.81.81,0,0,0,.32.66,2.3,2.3,0,0,0,1.33.26,12.39,12.39,0,0,0,4.57-.75A8.84,8.84,0,0,0,127,14.35l.72.13-1.74,5.74H109.58Zm18.27,0a3.27,3.27,0,0,0,1.37-.41,2.85,2.85,0,0,0,1-1.71l3.63-13.23c.1-.38.18-.69.23-1a3,3,0,0,0,.09-.67c0-.5-.15-.81-.42-.94A6.38,6.38,0,0,0,132,1.24V.48h8.57c2.9,0,5.1.74,6.62,2.22a8,8,0,0,1,2.26,6,10.72,10.72,0,0,1-3.35,7.84,13.3,13.3,0,0,1-9.8,3.7h-8.47ZM144.4,3.39a4.23,4.23,0,0,0-4-2,2,2,0,0,0-1.29.31,1.74,1.74,0,0,0-.48.83l-4.07,14.9a3.24,3.24,0,0,0-.07.39,1.69,1.69,0,0,0,0,.3,1,1,0,0,0,.36.84,2.27,2.27,0,0,0,1.27.26q5.26,0,7.62-5.42a17.25,17.25,0,0,0,1.43-6.94A7,7,0,0,0,144.4,3.39Z',\n opacity: 1, strokeColor: '', fillColor: '#516c30', width: 127.70402, height: 55.84601, stampFillColor: '#e6eddf', stampStrokeColor: '',\n };\n }\n break;\n case 'Confidential':\n {\n stampCollection = {\n iconName: 'Confidential',\n // eslint-disable-next-line max-len\n pathdata: 'M13.71,0,12.63,6.9,12,6.73c0-.41,0-.66,0-.73s0-.18,0-.32a6.16,6.16,0,0,0-.79-3.47,2.37,2.37,0,0,0-2-1.14c-1.64,0-3.07,1.51-4.29,4.55a22,22,0,0,0-1.64,8.29c0,2,.34,3.44,1,4.2A3,3,0,0,0,6.5,19.24a4.08,4.08,0,0,0,2.93-1.43,10.47,10.47,0,0,0,1.5-2.09l.64.65A8.84,8.84,0,0,1,9,19.72a5.24,5.24,0,0,1-3.08,1.09,5.16,5.16,0,0,1-4.21-2.08A8.68,8.68,0,0,1,0,13.16,16.5,16.5,0,0,1,2.55,3.92Q5.1,0,8.61,0a6.35,6.35,0,0,1,2.25.43,6.62,6.62,0,0,0,1.38.43.55.55,0,0,0,.5-.23A2.61,2.61,0,0,0,13.06,0ZM27.49,7.11a17.19,17.19,0,0,1-2.61,9.07q-2.77,4.61-6.39,4.6a4.42,4.42,0,0,1-3.7-1.92,8.47,8.47,0,0,1-1.43-5.14A17.31,17.31,0,0,1,16,4.53C17.88,1.51,20,0,22.25,0A4.53,4.53,0,0,1,26,1.92,8.27,8.27,0,0,1,27.49,7.11ZM24.42,4.6a5.71,5.71,0,0,0-.53-2.55A1.76,1.76,0,0,0,22.24,1q-2.65,0-4.45,6.54a31.93,31.93,0,0,0-1.37,8.26A8.15,8.15,0,0,0,16.67,18c.34,1.19,1,1.78,1.85,1.78a2.9,2.9,0,0,0,2.28-1.29,15.85,15.85,0,0,0,2.13-4.93A34.08,34.08,0,0,0,24,8.71,28.5,28.5,0,0,0,24.42,4.6ZM42.75,1.3l.3-.06V.48H38.69v.76a2.55,2.55,0,0,1,1.16.33,1.8,1.8,0,0,1,.51,1.48,10.11,10.11,0,0,1-.13,1.34c-.06.41-.14.87-.24,1.39l-1.65,8.34L33.73.48H29.45v.76a2.66,2.66,0,0,1,1,.24,1.88,1.88,0,0,1,.65,1.06l.09.3L28.81,15a20.72,20.72,0,0,1-1,3.61,1.61,1.61,0,0,1-1.19.9v.76h4.42v-.76a2.55,2.55,0,0,1-1.13-.32,1.67,1.67,0,0,1-.56-1.44,7.13,7.13,0,0,1,.05-.79c.06-.43.17-1.09.34-2L31.89,4.38l5.52,16.33h.52l3-15a22.58,22.58,0,0,1,.87-3.42A1.42,1.42,0,0,1,42.75,1.3ZM55.53.48H44.23v.76a3.63,3.63,0,0,1,1.26.3c.19.13.29.42.29.9a7.08,7.08,0,0,1-.09,1c0,.2-.08.44-.13.71L43,17.34a3.47,3.47,0,0,1-.59,1.58,1.91,1.91,0,0,1-1.13.54v.76h6.29v-.76a2.13,2.13,0,0,1-1-.19A1.23,1.23,0,0,1,46,18.1c0-.1,0-.21,0-.31s0-.23.05-.35l1.4-7.21a3.15,3.15,0,0,1,2.37.64A3.21,3.21,0,0,1,50.38,13c0,.11,0,.28,0,.49s0,.46-.06.75l.58.14,1.58-8.07-.59-.1a5.79,5.79,0,0,1-1.43,2.59,6.17,6.17,0,0,1-2.77.52l1.26-6.54a2.06,2.06,0,0,1,.42-1.08,1.39,1.39,0,0,1,1-.26c1.62,0,2.7.51,3.24,1.54a7.11,7.11,0,0,1,.49,3l.57.13Zm3.69,17.71c0-.08,0-.17,0-.27s0-.2,0-.3l.17-1L62.06,3.36a3.44,3.44,0,0,1,.59-1.6,2,2,0,0,1,1.12-.52V.48H57.44v.76a3.47,3.47,0,0,1,1.26.31c.2.13.3.44.3.94a4.25,4.25,0,0,1-.06.67c0,.26-.09.57-.17,1L56.16,17.35a3.52,3.52,0,0,1-.6,1.59,2,2,0,0,1-1.12.52v.76h6.33v-.76a3.3,3.3,0,0,1-1.26-.32C59.32,19,59.22,18.69,59.22,18.19Zm18-9.51a13,13,0,0,1-2.42,7.84,8.31,8.31,0,0,1-7,3.7H61.6v-.76a2,2,0,0,0,1-.41,3.14,3.14,0,0,0,.73-1.71L65.93,4.11c.08-.38.13-.69.17-1a4.36,4.36,0,0,0,.06-.67c0-.5-.1-.81-.3-.94a3.47,3.47,0,0,0-1.26-.31V.48h6.17A5.52,5.52,0,0,1,75.53,2.7,9.91,9.91,0,0,1,77.17,8.68ZM74,6.87a9.22,9.22,0,0,0-.53-3.48,2.91,2.91,0,0,0-2.87-2,1.12,1.12,0,0,0-.93.31,1.81,1.81,0,0,0-.35.83l-2.93,14.9a3,3,0,0,0-.05.39c0,.11,0,.21,0,.3a1.17,1.17,0,0,0,.25.84,1.3,1.3,0,0,0,.92.26q3.8,0,5.49-5.42A23.26,23.26,0,0,0,74,6.87Zm11.3,11.65a6.72,6.72,0,0,1-3.29.75,1.3,1.3,0,0,1-1-.26,1,1,0,0,1-.23-.66,3.28,3.28,0,0,1,0-.39,4.88,4.88,0,0,1,.08-.51l1.4-7.2a3.73,3.73,0,0,1,2.43.57A2.87,2.87,0,0,1,85.43,13c0,.14,0,.31,0,.51s0,.45-.06.73l.59.14,1.57-8.07-.59-.1a5.79,5.79,0,0,1-1.46,2.61,6.5,6.5,0,0,1-2.89.51l1.26-6.56a2.41,2.41,0,0,1,.41-1.06c.16-.19.52-.28,1.08-.28,1.65,0,2.75.5,3.29,1.51a7,7,0,0,1,.5,3l.57.13.9-5.6H79.14v.76a3.35,3.35,0,0,1,1.26.31c.19.13.29.44.29.94a5,5,0,0,1-.07.7c0,.28-.09.58-.15.92L77.86,17.35a3.52,3.52,0,0,1-.6,1.59,2,2,0,0,1-1.13.52v.76H87.91l1.25-5.74-.52-.13A7.69,7.69,0,0,1,85.34,18.52ZM105.8,1.24V.48h-4.37v.76a2.55,2.55,0,0,1,1.16.33,1.77,1.77,0,0,1,.52,1.48A10.58,10.58,0,0,1,103,4.39c-.06.41-.13.87-.23,1.39l-1.66,8.34L96.47.48H92.19v.76a2.61,2.61,0,0,1,1,.24,1.83,1.83,0,0,1,.65,1.06l.1.3L91.55,15a19,19,0,0,1-1,3.61,1.61,1.61,0,0,1-1.19.9v.76h4.42v-.76a2.59,2.59,0,0,1-1.13-.32,1.67,1.67,0,0,1-.56-1.44,7.13,7.13,0,0,1,0-.79c.06-.43.17-1.09.35-2L94.63,4.38l5.52,16.33h.53l2.95-15a22.93,22.93,0,0,1,.86-3.42,1.42,1.42,0,0,1,1-1Zm11.4,4.9L118,.48H106.28l-.82,5,.55.2a8,8,0,0,1,1.87-3.16,3.7,3.7,0,0,1,2.7-1.06l-3.12,15.85a2.94,2.94,0,0,1-.87,1.85,2.48,2.48,0,0,1-1.34.26v.76h7v-.76a4.24,4.24,0,0,1-1.43-.3c-.23-.13-.34-.45-.34-.95a2.26,2.26,0,0,1,0-.26c0-.09,0-.2,0-.33l.18-1,3-15.1a2.73,2.73,0,0,1,1.79.63c.75.7,1.13,2,1.17,3.94Zm3.57,12.05c0-.08,0-.17,0-.27s0-.2,0-.3l.17-1,2.62-13.24a3.44,3.44,0,0,1,.59-1.6,2,2,0,0,1,1.12-.52V.48H119v.76a3.47,3.47,0,0,1,1.26.31c.2.13.3.44.3.94a4.25,4.25,0,0,1-.06.67c0,.26-.09.57-.17,1l-2.61,13.24a3.52,3.52,0,0,1-.6,1.59,2,2,0,0,1-1.12.52v.76h6.33v-.76a3.36,3.36,0,0,1-1.26-.32C120.87,19,120.77,18.69,120.77,18.19Zm28.86-3.71-1.24,5.74H130.3v-.71a2.48,2.48,0,0,0,1.3-.41,1.64,1.64,0,0,0,.37-1.29c0-.22,0-.75-.11-1.58,0-.17-.08-.89-.21-2.15h-4.58l-1.24,3a5.1,5.1,0,0,0-.22.66,2.45,2.45,0,0,0-.1.69c0,.41.09.67.26.78a3.05,3.05,0,0,0,1.11.3v.71h-4.17v-.71a2.66,2.66,0,0,0,.87-.53,5.79,5.79,0,0,0,.92-1.56L132.39.07h.55L135,17a5.53,5.53,0,0,0,.5,2.08,1.67,1.67,0,0,0,1.14.46v0a1.93,1.93,0,0,0,1.12-.52,3.52,3.52,0,0,0,.6-1.6l2.61-13.23c.08-.38.13-.69.17-1a4.36,4.36,0,0,0,.06-.67c0-.5-.1-.81-.3-.94a3.47,3.47,0,0,0-1.26-.31V.48h6.73v.76a3.23,3.23,0,0,0-1.49.48,3.06,3.06,0,0,0-.64,1.64l-2.77,14.08c0,.16-.05.3-.07.44s0,.29,0,.47a.79.79,0,0,0,.31.71,1.55,1.55,0,0,0,.87.21,6.83,6.83,0,0,0,3.79-1,8.42,8.42,0,0,0,2.81-3.88ZM131.5,12.91l-.78-7.18-3.14,7.18Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 127.70402, height: 55.84601, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'NotApproved':\n case 'Not Approved':\n {\n stampCollection = {\n iconName: 'Not Approved',\n // eslint-disable-next-line max-len\n pathdata: 'M0,19.46a1.56,1.56,0,0,0,1.16-.9A19.84,19.84,0,0,0,2.1,15L4.42,2.84l-.09-.3a1.82,1.82,0,0,0-.64-1.06,2.41,2.41,0,0,0-1-.24V.48H6.88l4.49,13.64L13,5.78c.09-.52.17-1,.22-1.39a10.11,10.11,0,0,0,.13-1.34,1.83,1.83,0,0,0-.49-1.48,2.49,2.49,0,0,0-1.13-.33V.48H16v.76l-.29.06a1.42,1.42,0,0,0-1,1,23.7,23.7,0,0,0-.84,3.42L11,20.71h-.51L5.1,4.38,3,15c-.17.87-.28,1.53-.33,2a5.32,5.32,0,0,0,0,.79,1.69,1.69,0,0,0,.54,1.44,2.48,2.48,0,0,0,1.1.32v.76H0ZM17.73,4.53C19.54,1.51,21.55,0,23.79,0a4.4,4.4,0,0,1,3.66,1.92,8.52,8.52,0,0,1,1.43,5.19,17.56,17.56,0,0,1-2.53,9.07q-2.7,4.61-6.21,4.6a4.24,4.24,0,0,1-3.6-1.92,8.6,8.6,0,0,1-1.39-5.14A17.68,17.68,0,0,1,17.73,4.53ZM18.37,18c.33,1.19.93,1.78,1.8,1.78a2.83,2.83,0,0,0,2.22-1.29,16.41,16.41,0,0,0,2.06-4.93,35.53,35.53,0,0,0,1.06-4.83A28.26,28.26,0,0,0,25.9,4.6a5.86,5.86,0,0,0-.52-2.55A1.7,1.7,0,0,0,23.78,1Q21.2,1,19.45,7.53a33,33,0,0,0-1.33,8.26A8.15,8.15,0,0,0,18.37,18Zm11.08,1.48a2.34,2.34,0,0,0,1.3-.26,3,3,0,0,0,.85-1.85l3-15.85A3.54,3.54,0,0,0,32,2.56a8,8,0,0,0-1.82,3.16l-.53-.2.8-5H41.81l-.74,5.66-.54-.07c0-1.92-.41-3.24-1.13-3.94a2.6,2.6,0,0,0-1.74-.63L34.79,16.6l-.17,1a2.43,2.43,0,0,0,0,.33,2.26,2.26,0,0,0,0,.26c0,.5.11.82.33.95a3.94,3.94,0,0,0,1.39.3v.76H29.45Zm26.65.76H50.18v-.71a2.28,2.28,0,0,0,1.25-.41,1.64,1.64,0,0,0,.37-1.29c0-.22,0-.75-.11-1.58,0-.17-.08-.89-.2-2.15H47l-1.2,3c-.08.2-.15.42-.22.66a2.84,2.84,0,0,0-.09.69c0,.41.08.67.25.78a2.91,2.91,0,0,0,1.08.3v.71H42.79v-.71a2.44,2.44,0,0,0,.85-.53,5.59,5.59,0,0,0,.9-1.56L52.21.07h.53l2,16.88A5.46,5.46,0,0,0,55.2,19a1.36,1.36,0,0,0,.9.43Zm-4.76-7.31-.76-7.18-3,7.18Zm4.95,6.53a1.82,1.82,0,0,0,1-.5,3.56,3.56,0,0,0,.58-1.59L60.42,4.11c.06-.3.1-.6.15-.9a5.46,5.46,0,0,0,.06-.72c0-.52-.13-.86-.4-1a2.88,2.88,0,0,0-1.1-.23V.48h5.93a5,5,0,0,1,2.5.57c1.26.73,1.9,2.07,1.9,4a5.81,5.81,0,0,1-1.54,4.22,5.32,5.32,0,0,1-4,1.58l-.59,0-1.2-.11L61,16.6l-.17,1a2.72,2.72,0,0,0,0,.3,2.81,2.81,0,0,0,0,.29c0,.5.09.81.28.94a3.26,3.26,0,0,0,1.23.31v.76h-6Zm6-9.67.38.06H63a3,3,0,0,0,1.62-.36,2.87,2.87,0,0,0,1-1.18,7.28,7.28,0,0,0,.6-2,11.67,11.67,0,0,0,.22-2,4.4,4.4,0,0,0-.41-2,1.44,1.44,0,0,0-1.39-.79.71.71,0,0,0-.65.28,3.7,3.7,0,0,0-.32,1Zm5.61,9.69A1.86,1.86,0,0,0,69,18.94a3.54,3.54,0,0,0,.59-1.59L72.15,4.11q.09-.45.15-.9a5.73,5.73,0,0,0,.07-.72,1.1,1.1,0,0,0-.41-1,2.88,2.88,0,0,0-1.1-.23V.48h5.93a5,5,0,0,1,2.5.57c1.27.73,1.9,2.07,1.9,4a5.77,5.77,0,0,1-1.54,4.22,5.31,5.31,0,0,1-4,1.58l-.6,0-1.2-.11L72.74,16.6l-.17,1a2.72,2.72,0,0,0,0,.3c0,.1,0,.19,0,.29,0,.5.1.81.29.94a3.15,3.15,0,0,0,1.23.31v.76h-6.1Zm6.12-9.69.38.06h.33a3,3,0,0,0,1.62-.36,3,3,0,0,0,1-1.18,7.67,7.67,0,0,0,.59-2,11.67,11.67,0,0,0,.22-2,4.4,4.4,0,0,0-.41-2,1.43,1.43,0,0,0-1.38-.79.73.73,0,0,0-.66.28,3.7,3.7,0,0,0-.32,1Zm5.57,9.69a1.9,1.9,0,0,0,1.09-.52,3.56,3.56,0,0,0,.58-1.59L83.84,4.11c0-.27.09-.51.13-.71a7.08,7.08,0,0,0,.09-1c0-.47-.1-.77-.28-.9a3.53,3.53,0,0,0-1.22-.3V.48h5.68a6.57,6.57,0,0,1,3,.53q1.92,1,1.92,3.75a6.79,6.79,0,0,1-.32,2,5.23,5.23,0,0,1-1.08,1.9,4.56,4.56,0,0,1-1.25,1,11.62,11.62,0,0,1-1.33.52c.07.3.12.49.14.57l1.59,6.66a4.07,4.07,0,0,0,.69,1.7,1.72,1.72,0,0,0,1.13.41v.76H88.52l-2.23-9.76h-.58L84.49,16.6l-.17,1a1,1,0,0,0,0,.25,2.62,2.62,0,0,0,0,.28c0,.53.09.86.26,1a3.11,3.11,0,0,0,1.24.32v.76H79.63ZM87.55,9.3A2.59,2.59,0,0,0,89,8.17a7.24,7.24,0,0,0,.66-1.62A8.18,8.18,0,0,0,90,4.29a4.32,4.32,0,0,0-.43-2,1.5,1.5,0,0,0-1.45-.81.71.71,0,0,0-.62.26,2.78,2.78,0,0,0-.33,1.05L85.91,9.5A6.63,6.63,0,0,0,87.55,9.3Zm8.72-4.77Q99,0,102.32,0A4.37,4.37,0,0,1,106,1.92a8.46,8.46,0,0,1,1.44,5.19,17.58,17.58,0,0,1-2.54,9.07q-2.7,4.61-6.21,4.6a4.27,4.27,0,0,1-3.6-1.92,8.67,8.67,0,0,1-1.38-5.14A17.68,17.68,0,0,1,96.27,4.53ZM96.9,18c.33,1.19.93,1.78,1.8,1.78a2.83,2.83,0,0,0,2.22-1.29A16.63,16.63,0,0,0,103,13.54a37.1,37.1,0,0,0,1.06-4.83,29.49,29.49,0,0,0,.38-4.11,5.86,5.86,0,0,0-.51-2.55A1.71,1.71,0,0,0,102.31,1C100.6,1,99.15,3.17,98,7.53a33.42,33.42,0,0,0-1.33,8.26A8.57,8.57,0,0,0,96.9,18ZM114.35.48v.76a2.57,2.57,0,0,0-1.08.17,1.07,1.07,0,0,0-.5,1,2.53,2.53,0,0,0,0,.28,2.64,2.64,0,0,0,0,.28l1.07,11.76L117.77,6c.31-.71.59-1.41.84-2.11A5.25,5.25,0,0,0,119,2.19a.85.85,0,0,0-.38-.81,3.09,3.09,0,0,0-.95-.14V.48h4v.76a2.08,2.08,0,0,0-.73.45,5.35,5.35,0,0,0-.82,1.4l-7.79,17.69h-.66L110,5.74A22,22,0,0,0,109.46,2c-.16-.39-.58-.62-1.28-.71V.48Zm5.15,19a1.83,1.83,0,0,0,1.08-.52,3.42,3.42,0,0,0,.59-1.59l2.54-13.24c.06-.34.11-.64.15-.92a4.83,4.83,0,0,0,.06-.7c0-.5-.09-.81-.28-.94a3.14,3.14,0,0,0-1.22-.31V.48h11.12l-.87,5.6L132.11,6a7,7,0,0,0-.49-3c-.52-1-1.59-1.51-3.19-1.51-.55,0-.9.09-1.06.28A2.44,2.44,0,0,0,127,2.74L125.76,9.3a6.21,6.21,0,0,0,2.81-.51A6,6,0,0,0,130,6.18l.58.1L129,14.35l-.56-.14c0-.28,0-.52,0-.73s0-.37,0-.51a2.92,2.92,0,0,0-.61-2.15,3.55,3.55,0,0,0-2.37-.57l-1.36,7.2a4.79,4.79,0,0,0-.07.51,3.28,3.28,0,0,0,0,.39,1,1,0,0,0,.22.66,1.24,1.24,0,0,0,.93.26,6.43,6.43,0,0,0,3.21-.75,7.67,7.67,0,0,0,3.21-4.17l.5.13-1.22,5.74H119.5Zm12.79,0a1.87,1.87,0,0,0,1-.41,3.23,3.23,0,0,0,.71-1.71L136.5,4.11c.07-.38.13-.69.17-1a5.89,5.89,0,0,0,.05-.67c0-.5-.1-.81-.29-.94a3.32,3.32,0,0,0-1.22-.31V.48h6a5.35,5.35,0,0,1,4.63,2.22,10.11,10.11,0,0,1,1.58,6,13.3,13.3,0,0,1-2.34,7.84,8,8,0,0,1-6.86,3.7h-5.93ZM143.87,3.39a2.84,2.84,0,0,0-2.79-2,1.08,1.08,0,0,0-.91.31,1.93,1.93,0,0,0-.34.83L137,17.44a3.1,3.1,0,0,0-.06.39c0,.11,0,.21,0,.3a1.22,1.22,0,0,0,.24.84,1.26,1.26,0,0,0,.9.26q3.67,0,5.33-5.42a23.91,23.91,0,0,0,1-6.94A9.45,9.45,0,0,0,143.87,3.39Z',\n opacity: 1, strokeColor: '', fillColor: '#8a251a', width: 127.70402, height: 55.84601, stampFillColor: '#f6dedd', stampStrokeColor: ''\n };\n }\n break;\n }\n if (stampCollection) {\n stampCollection.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.currentStampAnnotation = stampCollection;\n return stampCollection;\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.retrievestampAnnotation = function (icontype) {\n if (icontype) {\n var stampCollection = void 0;\n switch (icontype.trim()) {\n // eslint-disable-next-line\n case 'Approved':\n {\n stampCollection = {\n iconName: 'Approved',\n // eslint-disable-next-line max-len\n pathdata: 'M19,20.22H10.55v-.71a4.26,4.26,0,0,0,1.79-.41,1.37,1.37,0,0,0,.53-1.29c0-.22,0-.75-.16-1.58,0-.17-.11-.89-.29-2.15H6.06l-1.72,3a4,4,0,0,0-.31.66,2,2,0,0,0-.14.69c0,.41.12.67.37.78a5.42,5.42,0,0,0,1.53.3v.71H0v-.71A4,4,0,0,0,1.21,19a5.68,5.68,0,0,0,1.28-1.56L13.45.07h.76L17,17a4.35,4.35,0,0,0,.7,2.08,2.4,2.4,0,0,0,1.31.44Zm-6.83-7.31L11.13,5.73,6.76,12.91Zm7.18,6.52a3,3,0,0,0,1.33-.49,3,3,0,0,0,.84-1.59L25.19,4.11c.07-.3.14-.6.2-.9a3.14,3.14,0,0,0,.1-.72,1,1,0,0,0-.58-1,5.68,5.68,0,0,0-1.57-.23V.48h8.47a9.68,9.68,0,0,1,3.57.57,4,4,0,0,1,2.71,4,4.93,4.93,0,0,1-2.2,4.22,9.53,9.53,0,0,1-5.69,1.58l-.85,0-1.71-.11L26,16.6l-.25,1a1,1,0,0,0-.05.3,2.83,2.83,0,0,0,0,.29c0,.5.14.81.4.94a6.31,6.31,0,0,0,1.76.31v.76H19.39Zm8.52-9.66.54.06h.48a5.81,5.81,0,0,0,2.3-.36,3.47,3.47,0,0,0,1.4-1.18,6.24,6.24,0,0,0,.86-2,8.94,8.94,0,0,0,.3-2,3.29,3.29,0,0,0-.58-2,2.3,2.3,0,0,0-2-.79,1.23,1.23,0,0,0-.93.28,2.71,2.71,0,0,0-.46,1Zm8,9.69a3.19,3.19,0,0,0,1.55-.52,3,3,0,0,0,.84-1.59L42,4.11c.07-.3.14-.6.2-.9a3.14,3.14,0,0,0,.1-.72,1,1,0,0,0-.58-1,5.68,5.68,0,0,0-1.57-.23V.48h8.47a9.68,9.68,0,0,1,3.57.57,4,4,0,0,1,2.71,4,4.93,4.93,0,0,1-2.2,4.22A9.53,9.53,0,0,1,47,10.87l-.85,0-1.71-.11L42.79,16.6l-.25,1a1.45,1.45,0,0,0,0,.3,2.83,2.83,0,0,0,0,.29c0,.5.14.81.4.94a6.31,6.31,0,0,0,1.76.31v.76h-8.7Zm8.74-9.69.54.06h.48A5.81,5.81,0,0,0,48,9.48a3.41,3.41,0,0,0,1.4-1.18,6.24,6.24,0,0,0,.86-2,9,9,0,0,0,.31-2,3.29,3.29,0,0,0-.59-2,2.3,2.3,0,0,0-2-.79,1.23,1.23,0,0,0-.93.28,2.88,2.88,0,0,0-.46,1Zm7.95,9.69a3.27,3.27,0,0,0,1.56-.52A3.06,3.06,0,0,0,55,17.35L58.64,4.11l.18-.71a4.72,4.72,0,0,0,.13-1c0-.47-.13-.77-.4-.9a6.74,6.74,0,0,0-1.74-.3V.48h8.11A13,13,0,0,1,69.14,1a3.7,3.7,0,0,1,2.74,3.75,4.8,4.8,0,0,1-.46,2,5,5,0,0,1-1.54,1.9,6.55,6.55,0,0,1-1.79,1,19.35,19.35,0,0,1-1.89.52c.1.3.16.49.2.57l2.27,6.66a3.49,3.49,0,0,0,1,1.7,3.08,3.08,0,0,0,1.6.41v.76H65.33l-3.19-9.76h-.83L59.57,16.6l-.25,1a1.87,1.87,0,0,0,0,.25,2.64,2.64,0,0,0,0,.28q0,.8.39,1a5.88,5.88,0,0,0,1.76.32v.76H52.62ZM63.94,9.3a3.79,3.79,0,0,0,2.11-1.13A6,6,0,0,0,67,6.55a5.84,5.84,0,0,0,.44-2.26,3.31,3.31,0,0,0-.61-2,2.47,2.47,0,0,0-2.09-.81,1.25,1.25,0,0,0-.88.26,2.34,2.34,0,0,0-.47,1.05L61.59,9.5A13.42,13.42,0,0,0,63.94,9.3ZM76.39,4.53Q80.26,0,85,0a7.34,7.34,0,0,1,5.23,1.92,6.76,6.76,0,0,1,2,5.19,13.9,13.9,0,0,1-3.62,9.07q-3.86,4.61-8.88,4.6a7.06,7.06,0,0,1-5.13-1.92,6.86,6.86,0,0,1-2-5.14A14,14,0,0,1,76.39,4.53ZM77.3,18a2.56,2.56,0,0,0,2.57,1.78A4.62,4.62,0,0,0,83,18.47,14.42,14.42,0,0,0,86,13.54a27.18,27.18,0,0,0,1.52-4.83,20.67,20.67,0,0,0,.54-4.11,4.38,4.38,0,0,0-.73-2.55A2.62,2.62,0,0,0,85,1q-3.68,0-6.19,6.54a24.29,24.29,0,0,0-1.9,8.26A5.91,5.91,0,0,0,77.3,18ZM102.23.48v.76a5.19,5.19,0,0,0-1.55.17,1,1,0,0,0-.72,1,2.46,2.46,0,0,0,0,.28L100,3l1.52,11.76L107.11,6c.44-.71.84-1.41,1.2-2.11a4.06,4.06,0,0,0,.53-1.66.79.79,0,0,0-.55-.81,6.11,6.11,0,0,0-1.35-.14V.48h5.67v.76a3.31,3.31,0,0,0-1,.45,5.33,5.33,0,0,0-1.18,1.4L99.26,20.78h-.94l-2.25-15A15.49,15.49,0,0,0,95.24,2c-.22-.39-.84-.62-1.83-.71V.48Zm7.35,19a3.19,3.19,0,0,0,1.55-.52,3,3,0,0,0,.84-1.59l3.62-13.24c.09-.34.16-.64.22-.92a3.27,3.27,0,0,0,.09-.7c0-.5-.14-.81-.4-.94a6.13,6.13,0,0,0-1.75-.31V.48h15.89l-1.25,5.6L127.6,6a5.32,5.32,0,0,0-.7-3q-1.12-1.52-4.56-1.51a2.61,2.61,0,0,0-1.51.28,2.12,2.12,0,0,0-.56,1.06L118.52,9.3a12.1,12.1,0,0,0,4-.51,5.8,5.8,0,0,0,2-2.61l.82.1-2.19,8.07-.81-.14c0-.28.07-.52.08-.73s0-.37,0-.51a2.4,2.4,0,0,0-.87-2.15,6.76,6.76,0,0,0-3.38-.57l-1.94,7.2a3.34,3.34,0,0,0-.11.51,3.67,3.67,0,0,0,0,.39.81.81,0,0,0,.32.66,2.3,2.3,0,0,0,1.33.26,12.39,12.39,0,0,0,4.57-.75A8.84,8.84,0,0,0,127,14.35l.72.13-1.74,5.74H109.58Zm18.27,0a3.27,3.27,0,0,0,1.37-.41,2.85,2.85,0,0,0,1-1.71l3.63-13.23c.1-.38.18-.69.23-1a3,3,0,0,0,.09-.67c0-.5-.15-.81-.42-.94A6.38,6.38,0,0,0,132,1.24V.48h8.57c2.9,0,5.1.74,6.62,2.22a8,8,0,0,1,2.26,6,10.72,10.72,0,0,1-3.35,7.84,13.3,13.3,0,0,1-9.8,3.7h-8.47ZM144.4,3.39a4.23,4.23,0,0,0-4-2,2,2,0,0,0-1.29.31,1.74,1.74,0,0,0-.48.83l-4.07,14.9a3.24,3.24,0,0,0-.07.39,1.69,1.69,0,0,0,0,.3,1,1,0,0,0,.36.84,2.27,2.27,0,0,0,1.27.26q5.26,0,7.62-5.42a17.25,17.25,0,0,0,1.43-6.94A7,7,0,0,0,144.4,3.39Z',\n opacity: 1, strokeColor: '', fillColor: '#516c30', width: 149.474, height: 20.783, stampFillColor: '#e6eddf', stampStrokeColor: '',\n };\n }\n break;\n case 'Confidential':\n {\n stampCollection = {\n iconName: 'Confidential',\n // eslint-disable-next-line max-len\n pathdata: 'M13.71,0,12.63,6.9,12,6.73c0-.41,0-.66,0-.73s0-.18,0-.32a6.16,6.16,0,0,0-.79-3.47,2.37,2.37,0,0,0-2-1.14c-1.64,0-3.07,1.51-4.29,4.55a22,22,0,0,0-1.64,8.29c0,2,.34,3.44,1,4.2A3,3,0,0,0,6.5,19.24a4.08,4.08,0,0,0,2.93-1.43,10.47,10.47,0,0,0,1.5-2.09l.64.65A8.84,8.84,0,0,1,9,19.72a5.24,5.24,0,0,1-3.08,1.09,5.16,5.16,0,0,1-4.21-2.08A8.68,8.68,0,0,1,0,13.16,16.5,16.5,0,0,1,2.55,3.92Q5.1,0,8.61,0a6.35,6.35,0,0,1,2.25.43,6.62,6.62,0,0,0,1.38.43.55.55,0,0,0,.5-.23A2.61,2.61,0,0,0,13.06,0ZM27.49,7.11a17.19,17.19,0,0,1-2.61,9.07q-2.77,4.61-6.39,4.6a4.42,4.42,0,0,1-3.7-1.92,8.47,8.47,0,0,1-1.43-5.14A17.31,17.31,0,0,1,16,4.53C17.88,1.51,20,0,22.25,0A4.53,4.53,0,0,1,26,1.92,8.27,8.27,0,0,1,27.49,7.11ZM24.42,4.6a5.71,5.71,0,0,0-.53-2.55A1.76,1.76,0,0,0,22.24,1q-2.65,0-4.45,6.54a31.93,31.93,0,0,0-1.37,8.26A8.15,8.15,0,0,0,16.67,18c.34,1.19,1,1.78,1.85,1.78a2.9,2.9,0,0,0,2.28-1.29,15.85,15.85,0,0,0,2.13-4.93A34.08,34.08,0,0,0,24,8.71,28.5,28.5,0,0,0,24.42,4.6ZM42.75,1.3l.3-.06V.48H38.69v.76a2.55,2.55,0,0,1,1.16.33,1.8,1.8,0,0,1,.51,1.48,10.11,10.11,0,0,1-.13,1.34c-.06.41-.14.87-.24,1.39l-1.65,8.34L33.73.48H29.45v.76a2.66,2.66,0,0,1,1,.24,1.88,1.88,0,0,1,.65,1.06l.09.3L28.81,15a20.72,20.72,0,0,1-1,3.61,1.61,1.61,0,0,1-1.19.9v.76h4.42v-.76a2.55,2.55,0,0,1-1.13-.32,1.67,1.67,0,0,1-.56-1.44,7.13,7.13,0,0,1,.05-.79c.06-.43.17-1.09.34-2L31.89,4.38l5.52,16.33h.52l3-15a22.58,22.58,0,0,1,.87-3.42A1.42,1.42,0,0,1,42.75,1.3ZM55.53.48H44.23v.76a3.63,3.63,0,0,1,1.26.3c.19.13.29.42.29.9a7.08,7.08,0,0,1-.09,1c0,.2-.08.44-.13.71L43,17.34a3.47,3.47,0,0,1-.59,1.58,1.91,1.91,0,0,1-1.13.54v.76h6.29v-.76a2.13,2.13,0,0,1-1-.19A1.23,1.23,0,0,1,46,18.1c0-.1,0-.21,0-.31s0-.23.05-.35l1.4-7.21a3.15,3.15,0,0,1,2.37.64A3.21,3.21,0,0,1,50.38,13c0,.11,0,.28,0,.49s0,.46-.06.75l.58.14,1.58-8.07-.59-.1a5.79,5.79,0,0,1-1.43,2.59,6.17,6.17,0,0,1-2.77.52l1.26-6.54a2.06,2.06,0,0,1,.42-1.08,1.39,1.39,0,0,1,1-.26c1.62,0,2.7.51,3.24,1.54a7.11,7.11,0,0,1,.49,3l.57.13Zm3.69,17.71c0-.08,0-.17,0-.27s0-.2,0-.3l.17-1L62.06,3.36a3.44,3.44,0,0,1,.59-1.6,2,2,0,0,1,1.12-.52V.48H57.44v.76a3.47,3.47,0,0,1,1.26.31c.2.13.3.44.3.94a4.25,4.25,0,0,1-.06.67c0,.26-.09.57-.17,1L56.16,17.35a3.52,3.52,0,0,1-.6,1.59,2,2,0,0,1-1.12.52v.76h6.33v-.76a3.3,3.3,0,0,1-1.26-.32C59.32,19,59.22,18.69,59.22,18.19Zm18-9.51a13,13,0,0,1-2.42,7.84,8.31,8.31,0,0,1-7,3.7H61.6v-.76a2,2,0,0,0,1-.41,3.14,3.14,0,0,0,.73-1.71L65.93,4.11c.08-.38.13-.69.17-1a4.36,4.36,0,0,0,.06-.67c0-.5-.1-.81-.3-.94a3.47,3.47,0,0,0-1.26-.31V.48h6.17A5.52,5.52,0,0,1,75.53,2.7,9.91,9.91,0,0,1,77.17,8.68ZM74,6.87a9.22,9.22,0,0,0-.53-3.48,2.91,2.91,0,0,0-2.87-2,1.12,1.12,0,0,0-.93.31,1.81,1.81,0,0,0-.35.83l-2.93,14.9a3,3,0,0,0-.05.39c0,.11,0,.21,0,.3a1.17,1.17,0,0,0,.25.84,1.3,1.3,0,0,0,.92.26q3.8,0,5.49-5.42A23.26,23.26,0,0,0,74,6.87Zm11.3,11.65a6.72,6.72,0,0,1-3.29.75,1.3,1.3,0,0,1-1-.26,1,1,0,0,1-.23-.66,3.28,3.28,0,0,1,0-.39,4.88,4.88,0,0,1,.08-.51l1.4-7.2a3.73,3.73,0,0,1,2.43.57A2.87,2.87,0,0,1,85.43,13c0,.14,0,.31,0,.51s0,.45-.06.73l.59.14,1.57-8.07-.59-.1a5.79,5.79,0,0,1-1.46,2.61,6.5,6.5,0,0,1-2.89.51l1.26-6.56a2.41,2.41,0,0,1,.41-1.06c.16-.19.52-.28,1.08-.28,1.65,0,2.75.5,3.29,1.51a7,7,0,0,1,.5,3l.57.13.9-5.6H79.14v.76a3.35,3.35,0,0,1,1.26.31c.19.13.29.44.29.94a5,5,0,0,1-.07.7c0,.28-.09.58-.15.92L77.86,17.35a3.52,3.52,0,0,1-.6,1.59,2,2,0,0,1-1.13.52v.76H87.91l1.25-5.74-.52-.13A7.69,7.69,0,0,1,85.34,18.52ZM105.8,1.24V.48h-4.37v.76a2.55,2.55,0,0,1,1.16.33,1.77,1.77,0,0,1,.52,1.48A10.58,10.58,0,0,1,103,4.39c-.06.41-.13.87-.23,1.39l-1.66,8.34L96.47.48H92.19v.76a2.61,2.61,0,0,1,1,.24,1.83,1.83,0,0,1,.65,1.06l.1.3L91.55,15a19,19,0,0,1-1,3.61,1.61,1.61,0,0,1-1.19.9v.76h4.42v-.76a2.59,2.59,0,0,1-1.13-.32,1.67,1.67,0,0,1-.56-1.44,7.13,7.13,0,0,1,0-.79c.06-.43.17-1.09.35-2L94.63,4.38l5.52,16.33h.53l2.95-15a22.93,22.93,0,0,1,.86-3.42,1.42,1.42,0,0,1,1-1Zm11.4,4.9L118,.48H106.28l-.82,5,.55.2a8,8,0,0,1,1.87-3.16,3.7,3.7,0,0,1,2.7-1.06l-3.12,15.85a2.94,2.94,0,0,1-.87,1.85,2.48,2.48,0,0,1-1.34.26v.76h7v-.76a4.24,4.24,0,0,1-1.43-.3c-.23-.13-.34-.45-.34-.95a2.26,2.26,0,0,1,0-.26c0-.09,0-.2,0-.33l.18-1,3-15.1a2.73,2.73,0,0,1,1.79.63c.75.7,1.13,2,1.17,3.94Zm3.57,12.05c0-.08,0-.17,0-.27s0-.2,0-.3l.17-1,2.62-13.24a3.44,3.44,0,0,1,.59-1.6,2,2,0,0,1,1.12-.52V.48H119v.76a3.47,3.47,0,0,1,1.26.31c.2.13.3.44.3.94a4.25,4.25,0,0,1-.06.67c0,.26-.09.57-.17,1l-2.61,13.24a3.52,3.52,0,0,1-.6,1.59,2,2,0,0,1-1.12.52v.76h6.33v-.76a3.36,3.36,0,0,1-1.26-.32C120.87,19,120.77,18.69,120.77,18.19Zm28.86-3.71-1.24,5.74H130.3v-.71a2.48,2.48,0,0,0,1.3-.41,1.64,1.64,0,0,0,.37-1.29c0-.22,0-.75-.11-1.58,0-.17-.08-.89-.21-2.15h-4.58l-1.24,3a5.1,5.1,0,0,0-.22.66,2.45,2.45,0,0,0-.1.69c0,.41.09.67.26.78a3.05,3.05,0,0,0,1.11.3v.71h-4.17v-.71a2.66,2.66,0,0,0,.87-.53,5.79,5.79,0,0,0,.92-1.56L132.39.07h.55L135,17a5.53,5.53,0,0,0,.5,2.08,1.67,1.67,0,0,0,1.14.46v0a1.93,1.93,0,0,0,1.12-.52,3.52,3.52,0,0,0,.6-1.6l2.61-13.23c.08-.38.13-.69.17-1a4.36,4.36,0,0,0,.06-.67c0-.5-.1-.81-.3-.94a3.47,3.47,0,0,0-1.26-.31V.48h6.73v.76a3.23,3.23,0,0,0-1.49.48,3.06,3.06,0,0,0-.64,1.64l-2.77,14.08c0,.16-.05.3-.07.44s0,.29,0,.47a.79.79,0,0,0,.31.71,1.55,1.55,0,0,0,.87.21,6.83,6.83,0,0,0,3.79-1,8.42,8.42,0,0,0,2.81-3.88ZM131.5,12.91l-.78-7.18-3.14,7.18Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 149.633, height: 20.811, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Witness':\n {\n stampCollection = {\n iconName: 'Witness',\n // eslint-disable-next-line max-len\n pathdata: 'M19.63,2.67,12.77,16.84h-.69L10.63,5.17,5.05,16.84H4.36L2.5,2.92A3.13,3.13,0,0,0,2,1.35,2.38,2.38,0,0,0,.63.91V.33H7.3V1a2.27,2.27,0,0,0-.92.17A1.11,1.11,0,0,0,5.84,2.2v.16c0,.05,0,.13,0,.22L6.81,11l3.57-7.48a.79.79,0,0,0,0-.23,2.78,2.78,0,0,0-.53-2A2.23,2.23,0,0,0,8.68.91V.33h6.45V.91A2.42,2.42,0,0,0,14,1.2c-.23.16-.34.5-.34,1,0,.11,0,.26,0,.46s.07.73.12,1.21l.8,7L18.3,3.11c.09-.19.17-.4.25-.62a2.11,2.11,0,0,0,.11-.65.73.73,0,0,0-.4-.76,2.73,2.73,0,0,0-1.1-.17V.33h4.47V.91a1.92,1.92,0,0,0-.91.3A3.66,3.66,0,0,0,19.63,2.67ZM29.76.33H22.62V1A5.07,5.07,0,0,1,24,1.2c.23.11.34.36.34.77a2.86,2.86,0,0,1-.06.54c0,.21-.11.47-.19.77L21.17,14.05a2.47,2.47,0,0,1-.68,1.29,2.62,2.62,0,0,1-1.27.42v.62h7.15v-.62A5.09,5.09,0,0,1,25,15.51c-.22-.11-.33-.37-.33-.77a2,2,0,0,1,0-.23c0-.08,0-.16,0-.24l.19-.83,3-10.77a2.5,2.5,0,0,1,.66-1.3A2.76,2.76,0,0,1,29.76,1ZM41.9,4.88l.63,0,.86-4.6H30.2l-.93,4.1.62.16A6.6,6.6,0,0,1,32,2a5.22,5.22,0,0,1,3.06-.86L31.53,14.05a2.24,2.24,0,0,1-1,1.5,3.67,3.67,0,0,1-1.51.21v.62H37v-.62a6,6,0,0,1-1.62-.24c-.26-.1-.39-.36-.39-.77,0-.07,0-.14,0-.21s0-.16.05-.27l.2-.83L38.57,1.16a3.76,3.76,0,0,1,2,.52A3.69,3.69,0,0,1,41.9,4.88ZM59.24,1,59.58,1V.33H54.65V1A3.78,3.78,0,0,1,56,1.22a1.25,1.25,0,0,1,.58,1.2,6.26,6.26,0,0,1-.15,1.09c-.07.33-.16.71-.27,1.13l-1.87,6.79L49.05.33H44.21V1a3.51,3.51,0,0,1,1.13.2,1.51,1.51,0,0,1,.74.85l.1.25L43.49,12.1A13.5,13.5,0,0,1,42.4,15a1.87,1.87,0,0,1-1.35.72v.62h5v-.62a3.62,3.62,0,0,1-1.28-.26,1.19,1.19,0,0,1-.64-1.17,3.55,3.55,0,0,1,.06-.64q.11-.53.39-1.59L47,3.5,53.2,16.78h.59L57.13,4.6a15.29,15.29,0,0,1,1-2.78A1.51,1.51,0,0,1,59.24,1Zm7.26.31a2.11,2.11,0,0,1,1.23-.23c1.87,0,3.1.41,3.71,1.23A4.39,4.39,0,0,1,72,4.78l.64.11,1-4.56H60.75V1a5,5,0,0,1,1.42.25c.22.11.32.36.32.77a2.73,2.73,0,0,1-.07.57c0,.22-.1.47-.17.74l-3,10.77a2.47,2.47,0,0,1-.68,1.29,2.62,2.62,0,0,1-1.27.42v.62h13.3l1.42-4.66-.59-.11A7.1,7.1,0,0,1,67.75,15a10,10,0,0,1-3.72.61A1.86,1.86,0,0,1,63,15.4a.67.67,0,0,1-.26-.54,2.36,2.36,0,0,1,0-.32,3.38,3.38,0,0,1,.09-.41l1.58-5.86a5.48,5.48,0,0,1,2.75.47,2,2,0,0,1,.71,1.75c0,.11,0,.25,0,.41s0,.37-.06.6l.65.11L70.2,5.05,69.54,5a4.69,4.69,0,0,1-1.65,2.12,10.06,10.06,0,0,1-3.26.41l1.42-5.33A1.75,1.75,0,0,1,66.5,1.31ZM80.88.83a2.77,2.77,0,0,1,2.46,1.26A4.36,4.36,0,0,1,84,4l.08.78.62.08,1-4.8H85a1.77,1.77,0,0,1-.38.43A1,1,0,0,1,84,.67a2.76,2.76,0,0,1-.37,0l-.41-.1-.61-.2a4.78,4.78,0,0,0-.79-.2A6.71,6.71,0,0,0,80.46,0a4.76,4.76,0,0,0-3.62,1.36,4.61,4.61,0,0,0-1.29,3.29q0,2.05,2.94,4.47t2.94,3.82a3.19,3.19,0,0,1-.79,2.14,2.8,2.8,0,0,1-2.23.92,3.43,3.43,0,0,1-1.5-.33,3.82,3.82,0,0,1-2-2.5,10.33,10.33,0,0,1-.2-1.67L74,11.45l-.87,5.38h.73a2.85,2.85,0,0,1,.38-.67A.75.75,0,0,1,74.8,16a1.12,1.12,0,0,1,.27,0l.42.15.61.22a8.62,8.62,0,0,0,1.3.35,7.53,7.53,0,0,0,1.32.12,5.48,5.48,0,0,0,4.11-1.53,4.77,4.77,0,0,0,1.49-3.43,4.59,4.59,0,0,0-.77-2.63,9.31,9.31,0,0,0-1.87-2L79.61,5.5a4.31,4.31,0,0,1-.74-.77,2.55,2.55,0,0,1-.43-1.45,2.68,2.68,0,0,1,.42-1.44A2.23,2.23,0,0,1,80.88.83Zm12.31,0a2.8,2.8,0,0,1,2.47,1.26A4.49,4.49,0,0,1,96.35,4l.08.78.62.08,1-4.8h-.71a1.62,1.62,0,0,1-.39.43,1,1,0,0,1-.64.18,2.9,2.9,0,0,1-.38,0l-.41-.1-.61-.2a4.65,4.65,0,0,0-.78-.2A6.88,6.88,0,0,0,92.77,0a4.73,4.73,0,0,0-3.61,1.36,4.57,4.57,0,0,0-1.3,3.29q0,2.05,2.94,4.47c2,1.54,3,2.81,3,3.82a3.2,3.2,0,0,1-.8,2.14,2.78,2.78,0,0,1-2.23.92,3.36,3.36,0,0,1-1.49-.33A3.68,3.68,0,0,1,88,14.73a3.76,3.76,0,0,1-.81-1.56A10.6,10.6,0,0,1,87,11.5l-.7-.05-.86,5.38h.72a2.85,2.85,0,0,1,.38-.67.78.78,0,0,1,.57-.19,1.12,1.12,0,0,1,.27,0l.42.15.61.22a8.74,8.74,0,0,0,1.31.35,7.37,7.37,0,0,0,1.32.12,5.49,5.49,0,0,0,4.11-1.53,4.81,4.81,0,0,0,1.49-3.43,4.67,4.67,0,0,0-.77-2.63A9.57,9.57,0,0,0,94,7.2L91.93,5.5a4,4,0,0,1-.74-.77,2.48,2.48,0,0,1-.43-1.45,2.68,2.68,0,0,1,.42-1.44A2.2,2.2,0,0,1,93.19.83Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 97.39, height: 16.84, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'InitialHere':\n case 'Initial Here':\n {\n stampCollection = {\n iconName: 'Initial Here',\n // eslint-disable-next-line max-len\n pathdata: 'M6.36,15.51a5.09,5.09,0,0,0,1.42.25v.62H.63v-.62a2.62,2.62,0,0,0,1.27-.42,2.47,2.47,0,0,0,.68-1.29l3-10.77c.08-.3.15-.56.19-.77A2.86,2.86,0,0,0,5.78,2c0-.41-.11-.66-.34-.77A5.07,5.07,0,0,0,4,1V.33h7.14V1a2.76,2.76,0,0,0-1.27.42,2.5,2.5,0,0,0-.66,1.3l-3,10.77-.19.83c0,.08,0,.16,0,.24a2,2,0,0,0,0,.23C6,15.14,6.14,15.4,6.36,15.51ZM27,1,27.36,1V.33H22.43V1a3.78,3.78,0,0,1,1.31.27,1.25,1.25,0,0,1,.58,1.2,6.26,6.26,0,0,1-.15,1.09c-.07.33-.16.71-.27,1.13L22,11.43,16.83.33H12V1a3.49,3.49,0,0,1,1.12.2,1.51,1.51,0,0,1,.74.85l.11.25-2.7,9.85A13,13,0,0,1,10.18,15a1.85,1.85,0,0,1-1.35.72v.62h5v-.62a3.62,3.62,0,0,1-1.28-.26,1.19,1.19,0,0,1-.63-1.17,4.72,4.72,0,0,1,.05-.64q.1-.53.39-1.59l2.39-8.6L21,16.78h.6L24.91,4.6a15.29,15.29,0,0,1,1-2.78A1.51,1.51,0,0,1,27,1ZM35.78.33H28.64V1a5.16,5.16,0,0,1,1.41.25c.23.11.34.36.34.77a2.86,2.86,0,0,1-.06.54c0,.21-.11.47-.19.77L27.19,14.05a2.47,2.47,0,0,1-.68,1.29,2.66,2.66,0,0,1-1.27.42v.62h7.15v-.62A5.09,5.09,0,0,1,31,15.51c-.22-.11-.33-.37-.33-.77a2,2,0,0,1,0-.23,2,2,0,0,1,0-.24l.19-.83,3-10.77a2.5,2.5,0,0,1,.66-1.3A2.76,2.76,0,0,1,35.78,1Zm12.76,4.6.87-4.6H36.22l-.93,4.1.62.16A6.52,6.52,0,0,1,38,2a5.21,5.21,0,0,1,3-.86L37.55,14.05a2.24,2.24,0,0,1-1,1.5,3.7,3.7,0,0,1-1.51.21v.62H43v-.62a5.79,5.79,0,0,1-1.61-.24c-.26-.1-.39-.36-.39-.77a1.48,1.48,0,0,1,0-.21,2,2,0,0,1,0-.27l.2-.83L44.58,1.16a3.77,3.77,0,0,1,2,.52,3.74,3.74,0,0,1,1.31,3.2Zm4,9.81a.93.93,0,0,1,0-.23,2,2,0,0,1,0-.24l.18-.83,3-10.77a2.42,2.42,0,0,1,.67-1.3A2.72,2.72,0,0,1,57.72,1V.33H50.57V1A5.26,5.26,0,0,1,52,1.2c.23.11.34.36.34.77a2.28,2.28,0,0,1-.07.54,7.71,7.71,0,0,1-.19.77l-3,10.77a2.4,2.4,0,0,1-.68,1.29,2.58,2.58,0,0,1-1.26.42v.62h7.14v-.62a5.07,5.07,0,0,1-1.41-.25C52.69,15.4,52.58,15.14,52.58,14.74Zm32-3.13.57.11-1.4,4.66H63.34v-.57a3.65,3.65,0,0,0,1.46-.34c.29-.16.43-.51.43-1,0-.18,0-.61-.13-1.29,0-.14-.09-.73-.23-1.75H59.69l-1.4,2.44a3.38,3.38,0,0,0-.25.54,1.64,1.64,0,0,0-.11.56q0,.5.3.63a4.41,4.41,0,0,0,1.25.25v.57H54.76v-.57a3.36,3.36,0,0,0,1-.43,4.58,4.58,0,0,0,1-1.27L65.7,0h.62l2.3,13.72a3.49,3.49,0,0,0,.56,1.7,2.34,2.34,0,0,0,1.29.37v0a2.58,2.58,0,0,0,1.26-.42,2.46,2.46,0,0,0,.68-1.3L75.35,3.28c.09-.3.16-.56.2-.77A2.86,2.86,0,0,0,75.61,2c0-.41-.11-.66-.34-.77A5.17,5.17,0,0,0,73.85,1V.33h7.61V1a4.77,4.77,0,0,0-1.69.39A2.27,2.27,0,0,0,79,2.67L75.92,14.12c0,.13,0,.25-.07.36a2.21,2.21,0,0,0,0,.39.59.59,0,0,0,.35.57,2.33,2.33,0,0,0,1,.17,10.06,10.06,0,0,0,4.28-.84A7.67,7.67,0,0,0,84.6,11.61ZM64.7,10.44,63.81,4.6l-3.55,5.84Zm38,4.32a.71.71,0,0,1,0-.16s0-.16.07-.34l.2-.83L106,2.67a2.43,2.43,0,0,1,.79-1.39A2.78,2.78,0,0,1,107.9,1V.33h-7.15V1a4.45,4.45,0,0,1,1.27.19.81.81,0,0,1,.47.83,2.73,2.73,0,0,1-.07.57c0,.22-.1.47-.17.74l-1.14,4.16h-5.7L96.7,2.67a2.27,2.27,0,0,1,.73-1.33A4.77,4.77,0,0,1,99.12,1V.33H91.51V1a5.09,5.09,0,0,1,1.42.25c.22.11.33.36.33.77a2.93,2.93,0,0,1-.08.58c-.05.24-.1.48-.17.73L90.07,14a2.73,2.73,0,0,1-.65,1.29,2.47,2.47,0,0,1-1.3.43v.62h7.15v-.62a5.13,5.13,0,0,1-1.42-.24c-.21-.1-.31-.34-.31-.72a3.11,3.11,0,0,1,0-.57c0-.16.1-.43.19-.8L95.12,8.5h5.7L99.31,14a2.21,2.21,0,0,1-.74,1.33,4.36,4.36,0,0,1-1.69.39v.62h7.63v-.62a4.72,4.72,0,0,1-1.25-.17A.8.8,0,0,1,102.73,14.76Zm13.38.24a10.07,10.07,0,0,1-3.72.61,1.86,1.86,0,0,1-1.08-.21.67.67,0,0,1-.26-.54,2.36,2.36,0,0,1,0-.32,3.38,3.38,0,0,1,.09-.41l1.58-5.86a5.51,5.51,0,0,1,2.75.47,2,2,0,0,1,.7,1.75c0,.11,0,.25,0,.41s0,.37-.07.6l.66.11,1.78-6.56L117.89,5a4.63,4.63,0,0,1-1.65,2.12A10,10,0,0,1,113,7.5l1.43-5.33a1.6,1.6,0,0,1,.45-.86,2.07,2.07,0,0,1,1.23-.23c1.86,0,3.1.41,3.71,1.23a4.32,4.32,0,0,1,.56,2.47l.65.11,1-4.56H109.1V1a5.1,5.1,0,0,1,1.43.25c.21.11.32.36.32.77a3.63,3.63,0,0,1-.07.57c0,.22-.11.47-.18.74l-2.95,10.77a2.4,2.4,0,0,1-.68,1.29,2.58,2.58,0,0,1-1.26.42v.62H119l1.42-4.66-.58-.11A7.17,7.17,0,0,1,116.11,15ZM144.36,2.17,142.93,7.5a10.13,10.13,0,0,0,3.27-.41A4.69,4.69,0,0,0,147.84,5l.67.08-1.78,6.56-.66-.11c0-.23.06-.43.07-.6s0-.3,0-.41a2,2,0,0,0-.7-1.75,5.51,5.51,0,0,0-2.75-.47l-1.58,5.86a3.38,3.38,0,0,0-.09.41,2.36,2.36,0,0,0,0,.32.67.67,0,0,0,.26.54,1.86,1.86,0,0,0,1.08.21,10.07,10.07,0,0,0,3.72-.61,7.14,7.14,0,0,0,3.73-3.39l.58.11L149,16.38H131l-2.59-7.93h-.68l-1.42,5-.2.83,0,.2a1.77,1.77,0,0,0,0,.23c0,.43.1.7.31.81a4.87,4.87,0,0,0,1.43.25v.62h-7.14v-.62a2.58,2.58,0,0,0,1.26-.42,2.4,2.4,0,0,0,.68-1.29l3-10.77.15-.57a4.09,4.09,0,0,0,.1-.79c0-.38-.11-.62-.32-.72A4.8,4.8,0,0,0,124,1V.33h6.6a10.58,10.58,0,0,1,3.42.43,3,3,0,0,1,2.24,3.05,4,4,0,0,1-.38,1.6A4,4,0,0,1,134.66,7a5.47,5.47,0,0,1-1.45.8c-.33.11-.85.25-1.54.42a4.73,4.73,0,0,0,.16.46l1.85,5.42a2.81,2.81,0,0,0,.8,1.38,2.42,2.42,0,0,0,1.23.32,2.53,2.53,0,0,0,1.22-.41,2.47,2.47,0,0,0,.68-1.29l2.94-10.77c.07-.27.13-.52.18-.74A2.73,2.73,0,0,0,140.8,2c0-.41-.11-.66-.32-.77A5.1,5.1,0,0,0,139.05,1V.33H152l-1,4.56-.65-.11a4.32,4.32,0,0,0-.56-2.47c-.61-.82-1.85-1.23-3.71-1.23a2.07,2.07,0,0,0-1.23.23A1.67,1.67,0,0,0,144.36,2.17ZM131.54,6.59a5,5,0,0,0,.77-1.32,4.68,4.68,0,0,0,.36-1.84,2.74,2.74,0,0,0-.5-1.67,2,2,0,0,0-1.7-.66,1,1,0,0,0-.72.22,2,2,0,0,0-.38.85l-1.45,5.49a10.33,10.33,0,0,0,1.91-.16A3.07,3.07,0,0,0,131.54,6.59Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 151.345, height: 16.781, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'SignHere':\n case 'Sign Here':\n {\n stampCollection = {\n iconName: 'Sign Here',\n // eslint-disable-next-line max-len\n pathdata: 'M6.38,1.9A2.56,2.56,0,0,0,6,3.34a2.49,2.49,0,0,0,.44,1.45,3.9,3.9,0,0,0,.73.76l2.07,1.7a9.34,9.34,0,0,1,1.87,2.06,4.6,4.6,0,0,1,.78,2.63,4.78,4.78,0,0,1-1.5,3.43A5.46,5.46,0,0,1,6.23,16.9a7.34,7.34,0,0,1-1.31-.12,7.48,7.48,0,0,1-1.31-.36L3,16.2l-.42-.14a1.12,1.12,0,0,0-.27,0,.71.71,0,0,0-.57.19,2.85,2.85,0,0,0-.38.67H.63l.87-5.38.69,0a10.34,10.34,0,0,0,.2,1.68,3.82,3.82,0,0,0,2,2.5,3.42,3.42,0,0,0,1.5.32,2.76,2.76,0,0,0,2.23-.92A3.14,3.14,0,0,0,8.94,13c0-1-1-2.29-2.94-3.82S3.06,6.08,3.06,4.71A4.59,4.59,0,0,1,4.35,1.42,4.76,4.76,0,0,1,8,.06,6.71,6.71,0,0,1,9.29.19a4.78,4.78,0,0,1,.79.2l.61.2.41.1a2.76,2.76,0,0,0,.37,0,1,1,0,0,0,.65-.18A1.75,1.75,0,0,0,12.5.12h.72l-1,4.8-.62-.08-.09-.79a4.45,4.45,0,0,0-.69-1.91A2.78,2.78,0,0,0,8.39.89,2.2,2.2,0,0,0,6.38,1.9ZM22.8.39H15.66V1a4.71,4.71,0,0,1,1.41.25c.23.11.34.36.34.77a2.86,2.86,0,0,1-.06.54c0,.21-.11.47-.19.77L14.21,14.11a2.47,2.47,0,0,1-.68,1.29,2.62,2.62,0,0,1-1.27.42v.62h7.15v-.62A4.63,4.63,0,0,1,18,15.56c-.22-.1-.33-.36-.33-.77a1.8,1.8,0,0,1,0-.22c0-.08,0-.16,0-.24l.19-.83,3-10.77a2.5,2.5,0,0,1,.66-1.3A2.76,2.76,0,0,1,22.8,1ZM38.09,9.14V8.52H31.18v.62a5.05,5.05,0,0,1,1.44.28c.22.1.32.35.32.75a13.35,13.35,0,0,1-.54,2.54,19.13,19.13,0,0,1-.54,1.87A1.85,1.85,0,0,1,31,15.66a3.77,3.77,0,0,1-1.78.35A3.71,3.71,0,0,1,27,15.38c-1.09-.77-1.64-2.13-1.64-4.08a13.74,13.74,0,0,1,1.78-6.69q2.05-3.72,5-3.72a2.93,2.93,0,0,1,3,1.86,6.09,6.09,0,0,1,.4,2.48l.69.08L37.44,0h-.71a2.44,2.44,0,0,1-.41.53.82.82,0,0,1-.58.2A9.14,9.14,0,0,1,34.33.36,9.23,9.23,0,0,0,31.73,0a9.4,9.4,0,0,0-7.46,3.42,10.46,10.46,0,0,0-2.65,7,5.88,5.88,0,0,0,2.2,4.83,7.77,7.77,0,0,0,5,1.64A13.06,13.06,0,0,0,32,16.52a14.26,14.26,0,0,0,2.33-.75l.67-.3,1.2-4.36a4.15,4.15,0,0,1,.62-1.59A2.28,2.28,0,0,1,38.09,9.14ZM50.36,1a3.36,3.36,0,0,1,1.31.27,1.25,1.25,0,0,1,.58,1.2,6.26,6.26,0,0,1-.15,1.09c-.07.33-.16.7-.27,1.13L50,11.48,44.76.39H39.93V1a3.49,3.49,0,0,1,1.12.2,1.51,1.51,0,0,1,.74.85l.1.25L39.2,12.16a12.62,12.62,0,0,1-1.09,2.93,1.86,1.86,0,0,1-1.35.73v.62h5v-.62a3.62,3.62,0,0,1-1.28-.26,1.21,1.21,0,0,1-.63-1.17,4.72,4.72,0,0,1,0-.64q.1-.52.39-1.59l2.39-8.6,6.23,13.28h.6L52.84,4.66a15.29,15.29,0,0,1,1-2.78A1.52,1.52,0,0,1,55,1.05l.34,0V.39H50.36Zm22.33,13.8a.66.66,0,0,1,0-.15c0-.05,0-.16.07-.34l.2-.83L75.91,2.73a2.43,2.43,0,0,1,.79-1.39A2.78,2.78,0,0,1,77.86,1V.39H70.71V1A4.45,4.45,0,0,1,72,1.2a.81.81,0,0,1,.47.83,2.73,2.73,0,0,1-.07.57c0,.22-.1.47-.17.74L71.07,7.5h-5.7l1.29-4.77a2.27,2.27,0,0,1,.73-1.33A4.36,4.36,0,0,1,69.08,1V.39H61.47V1a4.73,4.73,0,0,1,1.42.25c.22.11.33.36.33.77a2.93,2.93,0,0,1-.08.58c0,.24-.1.48-.17.73L60,14.1a2.73,2.73,0,0,1-.65,1.29,2.47,2.47,0,0,1-1.3.43v.62h7.15v-.62a5.13,5.13,0,0,1-1.42-.24c-.21-.1-.31-.34-.31-.72a3,3,0,0,1,0-.57c0-.16.1-.43.19-.8l1.35-4.94h5.7L69.27,14.1a2.21,2.21,0,0,1-.74,1.33,4.77,4.77,0,0,1-1.69.39v.62h7.63v-.62a4.72,4.72,0,0,1-1.25-.17A.82.82,0,0,1,72.69,14.81Zm13.38.25a10.28,10.28,0,0,1-3.72.61,1.86,1.86,0,0,1-1.08-.21.67.67,0,0,1-.26-.54,2.23,2.23,0,0,1,0-.32,3.38,3.38,0,0,1,.09-.41l1.58-5.86a5.51,5.51,0,0,1,2.75.47,2,2,0,0,1,.7,1.75c0,.11,0,.24,0,.41s0,.37-.07.59l.66.12,1.78-6.56L87.85,5a4.75,4.75,0,0,1-1.64,2.12,10.13,10.13,0,0,1-3.27.41l1.43-5.33a1.56,1.56,0,0,1,.45-.86,2.07,2.07,0,0,1,1.23-.23c1.86,0,3.1.41,3.71,1.23a4.32,4.32,0,0,1,.56,2.47L91,5,92,.39H79.06V1a4.75,4.75,0,0,1,1.43.25c.21.11.32.36.32.77a2.73,2.73,0,0,1-.07.57c0,.22-.11.47-.18.74l-3,10.77a2.4,2.4,0,0,1-.68,1.29,2.58,2.58,0,0,1-1.26.42v.62H89l1.41-4.66-.58-.11A7.22,7.22,0,0,1,86.07,15.06ZM114.32,2.23l-1.43,5.33a10.13,10.13,0,0,0,3.27-.41A4.75,4.75,0,0,0,117.8,5l.67.08-1.78,6.56-.66-.12c0-.22.06-.42.07-.59s0-.3,0-.41a2,2,0,0,0-.71-1.75,5.51,5.51,0,0,0-2.75-.47l-1.58,5.86a3.38,3.38,0,0,0-.09.41,2.23,2.23,0,0,0,0,.32.67.67,0,0,0,.26.54,1.86,1.86,0,0,0,1.08.21,10.28,10.28,0,0,0,3.72-.61,7.22,7.22,0,0,0,3.73-3.39l.58.11-1.41,4.66h-18L98.33,8.51h-.68l-1.42,5-.2.83,0,.2a1.77,1.77,0,0,0,0,.23c0,.43.1.7.31.8a4.51,4.51,0,0,0,1.43.26v.62H90.59v-.62a2.58,2.58,0,0,0,1.26-.42,2.4,2.4,0,0,0,.68-1.29l3-10.77.15-.57a4.09,4.09,0,0,0,.1-.79c0-.38-.11-.62-.32-.73A5.3,5.3,0,0,0,94,1V.39h6.6A10.58,10.58,0,0,1,104,.82a3,3,0,0,1,2.24,3.05,4,4,0,0,1-.38,1.6A4.06,4.06,0,0,1,104.62,7a5.32,5.32,0,0,1-1.45.8c-.33.11-.84.25-1.54.42.08.24.13.4.16.46l1.85,5.42a2.81,2.81,0,0,0,.8,1.38,2.42,2.42,0,0,0,1.23.32,2.64,2.64,0,0,0,1.22-.41,2.47,2.47,0,0,0,.68-1.29l2.94-10.77c.07-.27.13-.52.18-.74a2.73,2.73,0,0,0,.07-.57c0-.41-.11-.66-.32-.77A4.75,4.75,0,0,0,109,1V.39h12.93l-1,4.56-.64-.11a4.39,4.39,0,0,0-.57-2.47c-.61-.82-1.85-1.23-3.71-1.23a2.07,2.07,0,0,0-1.23.23A1.7,1.7,0,0,0,114.32,2.23ZM101.5,6.64a4.76,4.76,0,0,0,.77-1.31,4.68,4.68,0,0,0,.36-1.84,2.72,2.72,0,0,0-.5-1.67,2,2,0,0,0-1.7-.66.94.94,0,0,0-.71.22,1.81,1.81,0,0,0-.39.85L97.88,7.72a10.33,10.33,0,0,0,1.91-.16A3,3,0,0,0,101.5,6.64Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 121.306, height: 16.899, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Accepted':\n {\n stampCollection = {\n iconName: 'Accepted',\n // eslint-disable-next-line max-len\n pathdata: 'M22.409294,0.00021190348 C22.64747,0.0056831966 22.875833,0.11701412 23.023336,0.32638185 23.631345,1.1873664 25.36437,2.8183636 27.4584,4.1123583 28.000408,4.4483535 28.015407,5.227338 27.477398,5.5713293 23.803344,7.9272954 12.881201,15.464245 9.4751583,23.800168 9.2091556,24.452168 8.3321453,24.542164 7.9521352,23.95016 6.0691143,21.014182 1.8990528,14.526234 0.095028103,11.832258 -0.13796928,11.485277 0.081027784,11.023275 0.49603404,10.97927 1.9670546,10.824272 4.8490969,10.421291,6.5811144,9.5293013 6.9811216,9.3233086 7.4691268,9.5782811 7.5601316,10.019287 7.847138,11.400286 8.4021459,13.83224 8.952148,14.781236 8.952148,14.781236 16.385246,3.2303471 21.985326,0.10638282 22.119951,0.031756414 22.266389,-0.003070501 22.409294,0.00021190348 z',\n opacity: 1, strokeColor: '', fillColor: '#516c30', width: 27.873, height: 24.346, stampFillColor: '#e6eddf', stampStrokeColor: '',\n };\n }\n break;\n case 'Rejected':\n {\n stampCollection = {\n iconName: 'Rejected',\n // eslint-disable-next-line max-len\n pathdata: 'M3.8779989,0 L11.294,7.4140023 18.710001,0 22.588001,3.8779911 15.172998,11.293032 22.588001,18.707033 18.710001,22.586 11.294,15.169985 3.8779989,22.586 0,18.707033 7.4150017,11.293032 0,3.8779911 z',\n opacity: 1, strokeColor: '', fillColor: '#8a251a', width: 22.588, height: 22.586, stampFillColor: '#f6dedd', stampStrokeColor: '',\n };\n }\n break;\n case 'Rejected_with_border':\n {\n stampCollection = {\n iconName: 'Rejected_with_border',\n // eslint-disable-next-line max-len\n pathdata: 'M3.8779989,0 L11.294,7.4140023 18.710001,0 22.588001,3.8779911 15.172998,11.293032 22.588001,18.707033 18.710001,22.586 11.294,15.169985 3.8779989,22.586 0,18.707033 7.4150017,11.293032 0,3.8779911 z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 22.588, height: 24.346, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'NotApproved':\n case 'Not Approved':\n {\n stampCollection = {\n iconName: 'Not Approved',\n // eslint-disable-next-line max-len\n pathdata: 'M0,19.46a1.56,1.56,0,0,0,1.16-.9A19.84,19.84,0,0,0,2.1,15L4.42,2.84l-.09-.3a1.82,1.82,0,0,0-.64-1.06,2.41,2.41,0,0,0-1-.24V.48H6.88l4.49,13.64L13,5.78c.09-.52.17-1,.22-1.39a10.11,10.11,0,0,0,.13-1.34,1.83,1.83,0,0,0-.49-1.48,2.49,2.49,0,0,0-1.13-.33V.48H16v.76l-.29.06a1.42,1.42,0,0,0-1,1,23.7,23.7,0,0,0-.84,3.42L11,20.71h-.51L5.1,4.38,3,15c-.17.87-.28,1.53-.33,2a5.32,5.32,0,0,0,0,.79,1.69,1.69,0,0,0,.54,1.44,2.48,2.48,0,0,0,1.1.32v.76H0ZM17.73,4.53C19.54,1.51,21.55,0,23.79,0a4.4,4.4,0,0,1,3.66,1.92,8.52,8.52,0,0,1,1.43,5.19,17.56,17.56,0,0,1-2.53,9.07q-2.7,4.61-6.21,4.6a4.24,4.24,0,0,1-3.6-1.92,8.6,8.6,0,0,1-1.39-5.14A17.68,17.68,0,0,1,17.73,4.53ZM18.37,18c.33,1.19.93,1.78,1.8,1.78a2.83,2.83,0,0,0,2.22-1.29,16.41,16.41,0,0,0,2.06-4.93,35.53,35.53,0,0,0,1.06-4.83A28.26,28.26,0,0,0,25.9,4.6a5.86,5.86,0,0,0-.52-2.55A1.7,1.7,0,0,0,23.78,1Q21.2,1,19.45,7.53a33,33,0,0,0-1.33,8.26A8.15,8.15,0,0,0,18.37,18Zm11.08,1.48a2.34,2.34,0,0,0,1.3-.26,3,3,0,0,0,.85-1.85l3-15.85A3.54,3.54,0,0,0,32,2.56a8,8,0,0,0-1.82,3.16l-.53-.2.8-5H41.81l-.74,5.66-.54-.07c0-1.92-.41-3.24-1.13-3.94a2.6,2.6,0,0,0-1.74-.63L34.79,16.6l-.17,1a2.43,2.43,0,0,0,0,.33,2.26,2.26,0,0,0,0,.26c0,.5.11.82.33.95a3.94,3.94,0,0,0,1.39.3v.76H29.45Zm26.65.76H50.18v-.71a2.28,2.28,0,0,0,1.25-.41,1.64,1.64,0,0,0,.37-1.29c0-.22,0-.75-.11-1.58,0-.17-.08-.89-.2-2.15H47l-1.2,3c-.08.2-.15.42-.22.66a2.84,2.84,0,0,0-.09.69c0,.41.08.67.25.78a2.91,2.91,0,0,0,1.08.3v.71H42.79v-.71a2.44,2.44,0,0,0,.85-.53,5.59,5.59,0,0,0,.9-1.56L52.21.07h.53l2,16.88A5.46,5.46,0,0,0,55.2,19a1.36,1.36,0,0,0,.9.43Zm-4.76-7.31-.76-7.18-3,7.18Zm4.95,6.53a1.82,1.82,0,0,0,1-.5,3.56,3.56,0,0,0,.58-1.59L60.42,4.11c.06-.3.1-.6.15-.9a5.46,5.46,0,0,0,.06-.72c0-.52-.13-.86-.4-1a2.88,2.88,0,0,0-1.1-.23V.48h5.93a5,5,0,0,1,2.5.57c1.26.73,1.9,2.07,1.9,4a5.81,5.81,0,0,1-1.54,4.22,5.32,5.32,0,0,1-4,1.58l-.59,0-1.2-.11L61,16.6l-.17,1a2.72,2.72,0,0,0,0,.3,2.81,2.81,0,0,0,0,.29c0,.5.09.81.28.94a3.26,3.26,0,0,0,1.23.31v.76h-6Zm6-9.67.38.06H63a3,3,0,0,0,1.62-.36,2.87,2.87,0,0,0,1-1.18,7.28,7.28,0,0,0,.6-2,11.67,11.67,0,0,0,.22-2,4.4,4.4,0,0,0-.41-2,1.44,1.44,0,0,0-1.39-.79.71.71,0,0,0-.65.28,3.7,3.7,0,0,0-.32,1Zm5.61,9.69A1.86,1.86,0,0,0,69,18.94a3.54,3.54,0,0,0,.59-1.59L72.15,4.11q.09-.45.15-.9a5.73,5.73,0,0,0,.07-.72,1.1,1.1,0,0,0-.41-1,2.88,2.88,0,0,0-1.1-.23V.48h5.93a5,5,0,0,1,2.5.57c1.27.73,1.9,2.07,1.9,4a5.77,5.77,0,0,1-1.54,4.22,5.31,5.31,0,0,1-4,1.58l-.6,0-1.2-.11L72.74,16.6l-.17,1a2.72,2.72,0,0,0,0,.3c0,.1,0,.19,0,.29,0,.5.1.81.29.94a3.15,3.15,0,0,0,1.23.31v.76h-6.1Zm6.12-9.69.38.06h.33a3,3,0,0,0,1.62-.36,3,3,0,0,0,1-1.18,7.67,7.67,0,0,0,.59-2,11.67,11.67,0,0,0,.22-2,4.4,4.4,0,0,0-.41-2,1.43,1.43,0,0,0-1.38-.79.73.73,0,0,0-.66.28,3.7,3.7,0,0,0-.32,1Zm5.57,9.69a1.9,1.9,0,0,0,1.09-.52,3.56,3.56,0,0,0,.58-1.59L83.84,4.11c0-.27.09-.51.13-.71a7.08,7.08,0,0,0,.09-1c0-.47-.1-.77-.28-.9a3.53,3.53,0,0,0-1.22-.3V.48h5.68a6.57,6.57,0,0,1,3,.53q1.92,1,1.92,3.75a6.79,6.79,0,0,1-.32,2,5.23,5.23,0,0,1-1.08,1.9,4.56,4.56,0,0,1-1.25,1,11.62,11.62,0,0,1-1.33.52c.07.3.12.49.14.57l1.59,6.66a4.07,4.07,0,0,0,.69,1.7,1.72,1.72,0,0,0,1.13.41v.76H88.52l-2.23-9.76h-.58L84.49,16.6l-.17,1a1,1,0,0,0,0,.25,2.62,2.62,0,0,0,0,.28c0,.53.09.86.26,1a3.11,3.11,0,0,0,1.24.32v.76H79.63ZM87.55,9.3A2.59,2.59,0,0,0,89,8.17a7.24,7.24,0,0,0,.66-1.62A8.18,8.18,0,0,0,90,4.29a4.32,4.32,0,0,0-.43-2,1.5,1.5,0,0,0-1.45-.81.71.71,0,0,0-.62.26,2.78,2.78,0,0,0-.33,1.05L85.91,9.5A6.63,6.63,0,0,0,87.55,9.3Zm8.72-4.77Q99,0,102.32,0A4.37,4.37,0,0,1,106,1.92a8.46,8.46,0,0,1,1.44,5.19,17.58,17.58,0,0,1-2.54,9.07q-2.7,4.61-6.21,4.6a4.27,4.27,0,0,1-3.6-1.92,8.67,8.67,0,0,1-1.38-5.14A17.68,17.68,0,0,1,96.27,4.53ZM96.9,18c.33,1.19.93,1.78,1.8,1.78a2.83,2.83,0,0,0,2.22-1.29A16.63,16.63,0,0,0,103,13.54a37.1,37.1,0,0,0,1.06-4.83,29.49,29.49,0,0,0,.38-4.11,5.86,5.86,0,0,0-.51-2.55A1.71,1.71,0,0,0,102.31,1C100.6,1,99.15,3.17,98,7.53a33.42,33.42,0,0,0-1.33,8.26A8.57,8.57,0,0,0,96.9,18ZM114.35.48v.76a2.57,2.57,0,0,0-1.08.17,1.07,1.07,0,0,0-.5,1,2.53,2.53,0,0,0,0,.28,2.64,2.64,0,0,0,0,.28l1.07,11.76L117.77,6c.31-.71.59-1.41.84-2.11A5.25,5.25,0,0,0,119,2.19a.85.85,0,0,0-.38-.81,3.09,3.09,0,0,0-.95-.14V.48h4v.76a2.08,2.08,0,0,0-.73.45,5.35,5.35,0,0,0-.82,1.4l-7.79,17.69h-.66L110,5.74A22,22,0,0,0,109.46,2c-.16-.39-.58-.62-1.28-.71V.48Zm5.15,19a1.83,1.83,0,0,0,1.08-.52,3.42,3.42,0,0,0,.59-1.59l2.54-13.24c.06-.34.11-.64.15-.92a4.83,4.83,0,0,0,.06-.7c0-.5-.09-.81-.28-.94a3.14,3.14,0,0,0-1.22-.31V.48h11.12l-.87,5.6L132.11,6a7,7,0,0,0-.49-3c-.52-1-1.59-1.51-3.19-1.51-.55,0-.9.09-1.06.28A2.44,2.44,0,0,0,127,2.74L125.76,9.3a6.21,6.21,0,0,0,2.81-.51A6,6,0,0,0,130,6.18l.58.1L129,14.35l-.56-.14c0-.28,0-.52,0-.73s0-.37,0-.51a2.92,2.92,0,0,0-.61-2.15,3.55,3.55,0,0,0-2.37-.57l-1.36,7.2a4.79,4.79,0,0,0-.07.51,3.28,3.28,0,0,0,0,.39,1,1,0,0,0,.22.66,1.24,1.24,0,0,0,.93.26,6.43,6.43,0,0,0,3.21-.75,7.67,7.67,0,0,0,3.21-4.17l.5.13-1.22,5.74H119.5Zm12.79,0a1.87,1.87,0,0,0,1-.41,3.23,3.23,0,0,0,.71-1.71L136.5,4.11c.07-.38.13-.69.17-1a5.89,5.89,0,0,0,.05-.67c0-.5-.1-.81-.29-.94a3.32,3.32,0,0,0-1.22-.31V.48h6a5.35,5.35,0,0,1,4.63,2.22,10.11,10.11,0,0,1,1.58,6,13.3,13.3,0,0,1-2.34,7.84,8,8,0,0,1-6.86,3.7h-5.93ZM143.87,3.39a2.84,2.84,0,0,0-2.79-2,1.08,1.08,0,0,0-.91.31,1.93,1.93,0,0,0-.34.83L137,17.44a3.1,3.1,0,0,0-.06.39c0,.11,0,.21,0,.3a1.22,1.22,0,0,0,.24.84,1.26,1.26,0,0,0,.9.26q3.67,0,5.33-5.42a23.91,23.91,0,0,0,1-6.94A9.45,9.45,0,0,0,143.87,3.39Z',\n opacity: 1, strokeColor: '', fillColor: '#8a251a', width: 147.425, height: 20.783, stampFillColor: '#f6dedd', stampStrokeColor: ''\n };\n }\n break;\n case 'Draft':\n {\n stampCollection = {\n iconName: 'Draft',\n // eslint-disable-next-line max-len\n pathdata: 'M24.92,3Q22,.46,16.4.46h-11v.87a9.38,9.38,0,0,1,2.24.35q.54.23.54,1.08a3.24,3.24,0,0,1-.1.76c-.07.29-.17.65-.31,1.08L3.08,19.69a3.26,3.26,0,0,1-1.32,1.95A4.67,4.67,0,0,1,0,22.1V23H10.91q7.8,0,12.61-4.22a11.56,11.56,0,0,0,4.32-8.94A8.58,8.58,0,0,0,24.92,3ZM20.41,15.66a10.18,10.18,0,0,1-9.8,6.18A3.18,3.18,0,0,1,9,21.54a1,1,0,0,1-.46-.95,2.47,2.47,0,0,1,0-.35,3,3,0,0,1,.1-.44l5.24-17a1.91,1.91,0,0,1,.62-.95,2.81,2.81,0,0,1,1.66-.35c2.44,0,4.15.76,5.15,2.27a7.29,7.29,0,0,1,.94,4A17.63,17.63,0,0,1,20.41,15.66ZM49.75,9.74a5.84,5.84,0,0,0,2-2.16,5.1,5.1,0,0,0,.59-2.24c0-2.1-1.18-3.53-3.54-4.27A18.67,18.67,0,0,0,43.36.46H32.92v.87a8.79,8.79,0,0,1,2.24.35c.35.14.52.48.52,1a5.36,5.36,0,0,1-.17,1.11c-.06.23-.14.5-.23.8L30.61,19.7a3.26,3.26,0,0,1-1.08,1.81,4.44,4.44,0,0,1-2,.59V23H38.85V22.1a8.54,8.54,0,0,1-2.28-.36c-.32-.15-.49-.53-.49-1.13,0-.11,0-.21,0-.32a1.15,1.15,0,0,1,.06-.28l.31-1.16,2.25-7h1.07L43.89,23h7.64V22.1a4.27,4.27,0,0,1-2.07-.47,3.91,3.91,0,0,1-1.27-1.93l-2.92-7.6a4.67,4.67,0,0,1-.25-.65c1.1-.23,1.91-.42,2.43-.59A8.49,8.49,0,0,0,49.75,9.74ZM46,7.39a6.73,6.73,0,0,1-1.21,1.84,5,5,0,0,1-2.72,1.29,19.56,19.56,0,0,1-3,.23L41.38,3A2.54,2.54,0,0,1,42,1.85a1.76,1.76,0,0,1,1.14-.31,3.38,3.38,0,0,1,2.69.93,3.52,3.52,0,0,1,.79,2.34A5.94,5.94,0,0,1,46,7.39Zm27.9,11.85L70.29,0h-1L55.21,19.78a6.61,6.61,0,0,1-1.66,1.78,5.3,5.3,0,0,1-1.55.6V23h7.45v-.81a8,8,0,0,1-2-.34.85.85,0,0,1-.47-.89,2,2,0,0,1,.17-.79,5.32,5.32,0,0,1,.4-.75L59.8,16H68c.22,1.44.35,2.25.37,2.45a16,16,0,0,1,.2,1.81,1.51,1.51,0,0,1-.67,1.47,6.38,6.38,0,0,1-2.31.46V23H77.1v-.81a4.28,4.28,0,0,1-2.28-.55A4.47,4.47,0,0,1,73.93,19.24ZM60.7,14.64l5.62-8.19,1.4,8.19ZM84,.46h20.2l-1.61,6.39-1-.15a5.61,5.61,0,0,0-.88-3.43Q99.2,1.52,94.86,1.51a3.56,3.56,0,0,0-1.76.3A2.05,2.05,0,0,0,92.34,3L90.1,10.5A16.53,16.53,0,0,0,95,9.91c.77-.33,1.62-1.32,2.56-3l1.06.12-2.82,9.2-1-.17c0-.33.08-.61.1-.85s0-.43,0-.56a2.76,2.76,0,0,0-1-2.38c-.66-.49-2.07-.73-4.23-.73l-2.5,8.22a3.56,3.56,0,0,0-.09.39,1.55,1.55,0,0,0,0,.37,1.32,1.32,0,0,0,1,1.33,5.52,5.52,0,0,0,1.78.21V23H78.58V22.1a4.35,4.35,0,0,0,2-.61,3.33,3.33,0,0,0,1.06-1.8L86.32,4.6c.09-.31.16-.58.23-.81a5.05,5.05,0,0,0,.16-1.1c0-.53-.17-.87-.52-1A8.7,8.7,0,0,0,84,1.33Zm24.1,0h20.89l-1.37,6.46-1-.08c-.07-2.2-.76-3.69-2.09-4.49a6.61,6.61,0,0,0-3.2-.72L116,18.84,115.7,20a2.63,2.63,0,0,0-.07.38,1.51,1.51,0,0,0,0,.3c0,.57.2.94.61,1.08a11.19,11.19,0,0,0,2.56.34V23H106.2V22.1a6.49,6.49,0,0,0,2.4-.3,3.19,3.19,0,0,0,1.56-2.1l5.58-18.07a9.07,9.07,0,0,0-4.83,1.2,9.52,9.52,0,0,0-3.34,3.61l-1-.23Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 128.941, height: 22.97, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Final':\n {\n stampCollection = {\n iconName: 'Final',\n // eslint-disable-next-line max-len\n pathdata: 'M24.94,6l-1.06-.13a4.37,4.37,0,0,0-.91-3q-1.51-1.54-6-1.54a4.28,4.28,0,0,0-1.83.26,1.8,1.8,0,0,0-.78,1.08L12,9.21a20.26,20.26,0,0,0,5.15-.52A6.49,6.49,0,0,0,19.8,6.1l1.1.1L18,14.27l-1.09-.15a6.34,6.34,0,0,0,.11-.74c0-.22,0-.38,0-.5a2.26,2.26,0,0,0-1-2.09c-.68-.42-2.15-.63-4.39-.63L9,17.37a3.09,3.09,0,0,0-.1.34,1.22,1.22,0,0,0,0,.32,1.18,1.18,0,0,0,1,1.17,7,7,0,0,0,1.86.18v.77H0v-.77a5.14,5.14,0,0,0,2.11-.53,3,3,0,0,0,1.1-1.58L8.06,4c.09-.27.17-.5.23-.7a3.74,3.74,0,0,0,.18-1,.83.83,0,0,0-.55-.89,10.94,10.94,0,0,0-2.33-.3V.4h21Zm8.54,12.11a1.49,1.49,0,0,1,0-.28,2.46,2.46,0,0,1,.07-.29l.3-1L38.76,3.29a2.93,2.93,0,0,1,1.09-1.6A5.42,5.42,0,0,1,42,1.17V.4H30.17v.77a10.52,10.52,0,0,1,2.34.31.88.88,0,0,1,.56.94,2.58,2.58,0,0,1-.11.67c-.07.26-.18.57-.32,1L27.79,17.28a2.94,2.94,0,0,1-1.12,1.59,5.28,5.28,0,0,1-2.09.51v.77H36.36v-.77A10.22,10.22,0,0,1,34,19.07.89.89,0,0,1,33.48,18.12ZM66.19,2.24a2.53,2.53,0,0,1,1.87-1l.56-.06V.4H60.5v.77a8,8,0,0,1,2.16.33,1.47,1.47,0,0,1,1,1.48,5.61,5.61,0,0,1-.25,1.34c-.11.4-.25.87-.43,1.38l-3.08,8.35L51.26.4h-8v.77a8.44,8.44,0,0,1,1.86.24,2.26,2.26,0,0,1,1.22,1.05l.17.31L42.11,14.88a13.74,13.74,0,0,1-1.8,3.61,3.36,3.36,0,0,1-2.22.89v.77h8.23v-.77a7.75,7.75,0,0,1-2.1-.31,1.45,1.45,0,0,1-1-1.44,3.56,3.56,0,0,1,.1-.79,16.15,16.15,0,0,1,.64-2L47.85,4.31,58.11,20.64h1l5.5-15A15.48,15.48,0,0,1,66.19,2.24Zm23,17.13v.78H78.08v-.71A7.47,7.47,0,0,0,80.49,19a1.25,1.25,0,0,0,.7-1.29A13.26,13.26,0,0,0,81,16.16c0-.18-.16-.89-.39-2.15H72.06l-2.3,3a3.7,3.7,0,0,0-.42.66,1.54,1.54,0,0,0-.18.69.74.74,0,0,0,.49.78,10.28,10.28,0,0,0,2.06.3v.71H63.94v-.71a6.43,6.43,0,0,0,1.63-.53,6.63,6.63,0,0,0,1.72-1.56L82,0h1l3.78,16.88A3.69,3.69,0,0,0,87.7,19,3.53,3.53,0,0,0,89.24,19.37Zm-8.93-6.53L78.86,5.65,73,12.84Zm32.8,1.44a11.51,11.51,0,0,1-5.23,3.88,21.36,21.36,0,0,1-7,1A4.88,4.88,0,0,1,99.22,19a.74.74,0,0,1-.58-.71,2.33,2.33,0,0,1,0-.48c0-.13.08-.28.13-.43L104,3.29a2.72,2.72,0,0,1,1.19-1.64,9.4,9.4,0,0,1,2.79-.48V.4H95.4v.77a10.42,10.42,0,0,1,2.34.31.88.88,0,0,1,.56.94,2.58,2.58,0,0,1-.11.67c-.07.25-.17.57-.31.94L93,17.27a2.92,2.92,0,0,1-1.12,1.6,4.59,4.59,0,0,1-1.71.47v.81h21.55l2.32-5.74Z',\n opacity: 1, strokeColor: '', fillColor: '#516c30', width: 114.058, height: 20.639, stampFillColor: '#e6eddf', stampStrokeColor: '',\n };\n }\n break;\n case 'Completed':\n {\n stampCollection = {\n iconName: 'Completed',\n // eslint-disable-next-line max-len\n pathdata: 'M16.37,0,15.08,6.9l-.79-.17c0-.41,0-.66,0-.73a2.73,2.73,0,0,0,0-.32,5.33,5.33,0,0,0-.94-3.47A3,3,0,0,0,11,1.07c-2,0-3.68,1.51-5.13,4.55a18.84,18.84,0,0,0-2,8.29q0,3.06,1.2,4.2a3.82,3.82,0,0,0,2.64,1.13,5.3,5.3,0,0,0,3.51-1.43,10.75,10.75,0,0,0,1.78-2.09l.77.65a9.32,9.32,0,0,1-3.12,3.35A7,7,0,0,1,7,20.81a6.66,6.66,0,0,1-5-2.08,7.72,7.72,0,0,1-2-5.57A14.57,14.57,0,0,1,3.05,3.92Q6.1,0,10.29,0A8.92,8.92,0,0,1,13,.43a9.09,9.09,0,0,0,1.65.43.72.72,0,0,0,.6-.23A2.55,2.55,0,0,0,15.6,0ZM32.83,7.11a15.24,15.24,0,0,1-3.11,9.07q-3.31,4.61-7.63,4.6a5.63,5.63,0,0,1-4.42-1.92A7.47,7.47,0,0,1,16,13.72a15.27,15.27,0,0,1,3.18-9.19Q22.46,0,26.57,0a5.82,5.82,0,0,1,4.5,1.92A7.35,7.35,0,0,1,32.83,7.11ZM29.16,4.6a4.92,4.92,0,0,0-.63-2.55,2.14,2.14,0,0,0-2-1.06Q23.4,1,21.24,7.53a27.45,27.45,0,0,0-1.63,8.26A6.68,6.68,0,0,0,19.92,18a2.24,2.24,0,0,0,2.2,1.78,3.71,3.71,0,0,0,2.73-1.29,15,15,0,0,0,2.54-4.93,30.56,30.56,0,0,0,1.3-4.83A23,23,0,0,0,29.16,4.6Zm21.2,13.62a3.83,3.83,0,0,1,.08-.75,8.6,8.6,0,0,1,.19-.88L53.75,3.31a3,3,0,0,1,.85-1.67,2.72,2.72,0,0,1,1.21-.4V.48H50.42L42.66,14.39,41.21.48h-5.8v.76a4.65,4.65,0,0,1,1.45.21c.26.11.38.37.38.78a4.57,4.57,0,0,1-.08.75c-.06.28-.13.61-.23,1L34.34,15a16.85,16.85,0,0,1-1.16,3.65,1.9,1.9,0,0,1-1.42.86v.76h5.3v-.76a3.22,3.22,0,0,1-1.32-.29A1.48,1.48,0,0,1,35,17.74a8.32,8.32,0,0,1,.17-1.42c.07-.37.17-.82.3-1.37L38.06,4.23l1.71,16.38h.71L50,3.76l-3.2,13.58A2.84,2.84,0,0,1,46,19a4.06,4.06,0,0,1-1.76.49v.76h7.93v-.76a4.79,4.79,0,0,1-1.49-.31Q50.36,19,50.36,18.22ZM67.69,9.29a7.39,7.39,0,0,1-4.89,1.58l-.73,0-1.48-.11L59.21,16.6l-.21,1a1,1,0,0,0,0,.3,2.83,2.83,0,0,0,0,.29c0,.5.12.81.35.94a4.74,4.74,0,0,0,1.51.31v.76H53.31v-.76a2.52,2.52,0,0,0,1.33-.52,3.18,3.18,0,0,0,.72-1.59L58.48,4.11q.1-.45.18-.9a4.48,4.48,0,0,0,.08-.72,1,1,0,0,0-.49-1,4.36,4.36,0,0,0-1.36-.23V.48h7.29a7.29,7.29,0,0,1,3.07.57,4,4,0,0,1,2.33,4A5.22,5.22,0,0,1,67.69,9.29Zm-1.8-5a3.65,3.65,0,0,0-.51-2,1.85,1.85,0,0,0-1.7-.79,1,1,0,0,0-.8.28,3.27,3.27,0,0,0-.4,1l-1.66,7,.47.06h.41a4.37,4.37,0,0,0,2-.36,3.14,3.14,0,0,0,1.2-1.18,6.51,6.51,0,0,0,.74-2A9.87,9.87,0,0,0,65.89,4.25Zm16.9,10.1a8.71,8.71,0,0,1-3.35,3.88,9.36,9.36,0,0,1-4.53,1,2.15,2.15,0,0,1-1-.21.75.75,0,0,1-.37-.71,3.18,3.18,0,0,1,0-.47c0-.14,0-.28.08-.44l3.3-14.08a2.94,2.94,0,0,1,.77-1.64,4.47,4.47,0,0,1,1.79-.48V.48h-8v.76a4.8,4.8,0,0,1,1.5.31c.23.13.35.44.35.94a4.36,4.36,0,0,1-.06.67c0,.26-.12.57-.21,1L69.9,17.34a3.18,3.18,0,0,1-.72,1.6,2.53,2.53,0,0,1-1.34.52v.76H81.91l1.49-5.74ZM85.73,1.24a4.59,4.59,0,0,1,1.5.31c.23.13.34.44.34.94a3.84,3.84,0,0,1-.07.7c0,.28-.11.58-.19.92L84.2,17.35a3.18,3.18,0,0,1-.72,1.59,2.27,2.27,0,0,1-1.06.47h-.07v.8H96.2l1.5-5.74-.62-.13a8.14,8.14,0,0,1-3.94,4.17,9.39,9.39,0,0,1-3.94.75A1.75,1.75,0,0,1,88.06,19a.87.87,0,0,1-.27-.66,3.28,3.28,0,0,1,0-.39,5,5,0,0,1,.09-.51l1.67-7.2a5.16,5.16,0,0,1,2.91.57A2.58,2.58,0,0,1,93.24,13c0,.14,0,.31,0,.51s0,.45-.07.73l.7.14,1.88-8.07L95,6.18a5.62,5.62,0,0,1-1.74,2.61,9.05,9.05,0,0,1-3.45.51l1.51-6.56a2.23,2.23,0,0,1,.47-1.06,2,2,0,0,1,1.3-.28c2,0,3.29.5,3.93,1.51a6.13,6.13,0,0,1,.6,3l.68.13L99.4.48H85.73ZM114,6.14l.92-5.66h-14l-1,5,.66.2a7.81,7.81,0,0,1,2.23-3.16,4.91,4.91,0,0,1,3.23-1.06l-3.73,15.85a2.84,2.84,0,0,1-1,1.85,3.48,3.48,0,0,1-1.6.26v.76h8.4v-.76a5.82,5.82,0,0,1-1.71-.3c-.27-.13-.41-.45-.41-.95a2.26,2.26,0,0,1,0-.26c0-.09,0-.2,0-.33l.21-1,3.53-15.1a3.65,3.65,0,0,1,2.14.63c.89.7,1.35,2,1.39,3.94Zm9.44,12.38a9.39,9.39,0,0,1-3.94.75,1.77,1.77,0,0,1-1.14-.26.87.87,0,0,1-.27-.66,3.28,3.28,0,0,1,0-.39,5,5,0,0,1,.09-.51l1.67-7.2a5.12,5.12,0,0,1,2.91.57,2.58,2.58,0,0,1,.75,2.15c0,.14,0,.31,0,.51s0,.45-.07.73l.7.14L126,6.28l-.7-.1a5.78,5.78,0,0,1-1.74,2.61,9.16,9.16,0,0,1-3.46.51l1.51-6.56a2.14,2.14,0,0,1,.48-1.06,2,2,0,0,1,1.3-.28c2,0,3.28.5,3.92,1.51a6,6,0,0,1,.6,3l.68.13,1.08-5.6H116v.76a4.67,4.67,0,0,1,1.51.31c.22.13.34.44.34.94a4,4,0,0,1-.08.7c0,.28-.11.58-.18.92l-3.12,13.24a3.18,3.18,0,0,1-.72,1.59,2.56,2.56,0,0,1-1.34.52v.76h14.06l1.5-5.74-.62-.13A8.14,8.14,0,0,1,123.39,18.52Zm23.32-9.84a11.62,11.62,0,0,1-2.89,7.84,10.6,10.6,0,0,1-8.42,3.7h-7.29v-.76a2.58,2.58,0,0,0,1.18-.41,2.94,2.94,0,0,0,.88-1.71l3.11-13.23c.09-.38.16-.69.21-1a4.49,4.49,0,0,0,.07-.67c0-.5-.12-.81-.36-.94a4.8,4.8,0,0,0-1.5-.31V.48h7.36a7.16,7.16,0,0,1,5.69,2.22A8.72,8.72,0,0,1,146.71,8.68ZM143,6.87a8,8,0,0,0-.64-3.48,3.52,3.52,0,0,0-3.44-2,1.52,1.52,0,0,0-1.11.31,1.75,1.75,0,0,0-.41.83l-3.5,14.9c0,.14,0,.27-.07.39s0,.21,0,.3a1.06,1.06,0,0,0,.3.84,1.75,1.75,0,0,0,1.1.26q4.53,0,6.55-5.42A19.84,19.84,0,0,0,143,6.87Z',\n opacity: 1, strokeColor: '', fillColor: '#516c30', width: 146.706, height: 20.811, stampFillColor: '#e6eddf', stampStrokeColor: '',\n };\n }\n break;\n case 'ForPublicRelease':\n case 'For Public Release':\n {\n stampCollection = {\n iconName: 'For Public Release',\n // eslint-disable-next-line max-len\n pathdata: 'M10.33.48l-.65,5.6L9.27,6a9.74,9.74,0,0,0-.36-3A2.27,2.27,0,0,0,6.57,1.4a.85.85,0,0,0-.71.26,2.67,2.67,0,0,0-.3,1.08L4.65,9.28a3.45,3.45,0,0,0,2-.52,6.65,6.65,0,0,0,1-2.59l.43.1L7,14.34l-.42-.14c0-.29,0-.54,0-.75s0-.38,0-.49a4.17,4.17,0,0,0-.39-2.09,1.91,1.91,0,0,0-1.71-.64l-1,7.21c0,.13,0,.24,0,.35s0,.21,0,.31a1.45,1.45,0,0,0,.38,1.17,1.17,1.17,0,0,0,.72.19v.76H0v-.76a1.31,1.31,0,0,0,.82-.54,4.39,4.39,0,0,0,.42-1.58L3.13,4.11c0-.27.06-.51.09-.71,0-.41.07-.73.07-1a1.34,1.34,0,0,0-.21-.9,2.13,2.13,0,0,0-.91-.3V.48ZM20.5,7.11a22.43,22.43,0,0,1-1.88,9.07q-2,4.61-4.62,4.6a3,3,0,0,1-2.67-1.92,10.91,10.91,0,0,1-1-5.14,22.46,22.46,0,0,1,1.92-9.19Q14.23,0,16.71,0a3.11,3.11,0,0,1,2.72,1.92A10.72,10.72,0,0,1,20.5,7.11ZM18.28,4.6a7.7,7.7,0,0,0-.38-2.55c-.26-.7-.65-1-1.19-1-1.28,0-2.35,2.17-3.22,6.53a43.69,43.69,0,0,0-1,8.26,10.72,10.72,0,0,0,.19,2.2c.24,1.18.69,1.77,1.33,1.77s1.16-.43,1.65-1.29a19.35,19.35,0,0,0,1.54-4.93A48.7,48.7,0,0,0,18,8.71,38.21,38.21,0,0,0,18.28,4.6Zm11.59.16a8.73,8.73,0,0,1-.24,2,5.64,5.64,0,0,1-.8,1.9,3.49,3.49,0,0,1-.93,1,7.31,7.31,0,0,1-1,.52c0,.3.08.49.1.57l1.18,6.66a4.54,4.54,0,0,0,.52,1.7,1.1,1.1,0,0,0,.83.41v.76H26.46l-1.65-9.76h-.43l-.91,6.14-.13,1a2,2,0,0,0,0,.25,2.62,2.62,0,0,0,0,.28,1.57,1.57,0,0,0,.2,1,1.77,1.77,0,0,0,.92.32v.76H19.86v-.76a1.33,1.33,0,0,0,.81-.52,4.35,4.35,0,0,0,.43-1.59L23,4.11c0-.27.07-.51.09-.71a8.23,8.23,0,0,0,.07-1,1.3,1.3,0,0,0-.21-.9,2.08,2.08,0,0,0-.91-.3V.48h4.22A3.79,3.79,0,0,1,28.44,1C29.4,1.66,29.87,2.91,29.87,4.76Zm-2.31-.47a5.77,5.77,0,0,0-.32-2,1.12,1.12,0,0,0-1.09-.81.5.5,0,0,0-.46.26,3.87,3.87,0,0,0-.24,1.05L24.52,9.5a3.73,3.73,0,0,0,1.22-.2,2.1,2.1,0,0,0,1.1-1.13,8.41,8.41,0,0,0,.49-1.62A10.75,10.75,0,0,0,27.56,4.29Zm14.92.78a7.06,7.06,0,0,1-1.14,4.22,3.5,3.5,0,0,1-3,1.58l-.44,0-.89-.11-.84,5.86-.12,1a1.45,1.45,0,0,0,0,.3,2.81,2.81,0,0,0,0,.29,1.38,1.38,0,0,0,.21.94,1.93,1.93,0,0,0,.91.31v.76H32.65v-.76a1.28,1.28,0,0,0,.8-.52,4.3,4.3,0,0,0,.44-1.59L35.77,4.11c0-.3.08-.6.11-.9a5.21,5.21,0,0,0,0-.72,1.29,1.29,0,0,0-.3-1,1.82,1.82,0,0,0-.81-.23V.48h4.4a3,3,0,0,1,1.86.57C42,1.78,42.48,3.12,42.48,5.07Zm-2.23-.82a5.74,5.74,0,0,0-.3-2,1.07,1.07,0,0,0-1-.79.5.5,0,0,0-.49.28,5.11,5.11,0,0,0-.24,1l-1,7,.28.06h.25a1.79,1.79,0,0,0,1.2-.36,2.88,2.88,0,0,0,.73-1.18,10.56,10.56,0,0,0,.44-2A15.74,15.74,0,0,0,40.25,4.25Zm12.91-3V.48H50v.76a1.46,1.46,0,0,1,.82.32A2,2,0,0,1,51.24,3a15,15,0,0,1-.14,1.57q0-.17-.15,1.17l-.89,6.16a29.63,29.63,0,0,1-1,4.77c-.55,1.63-1.31,2.44-2.28,2.44a1.59,1.59,0,0,1-1.38-.77,4.16,4.16,0,0,1-.5-2.23q0-.63.15-2c.06-.5.15-1.14.27-1.93l1.26-8.84a4.13,4.13,0,0,1,.46-1.66,1.66,1.66,0,0,1,1-.46V.48H43.34v.76a2,2,0,0,1,.9.3,1.3,1.3,0,0,1,.21.9,7.27,7.27,0,0,1,0,.75c0,.29-.07.59-.11.92l-1,7.24c-.16,1.14-.27,1.93-.32,2.38a19.16,19.16,0,0,0-.12,2,6.13,6.13,0,0,0,1,3.71,2.93,2.93,0,0,0,2.43,1.33c1.39,0,2.45-.9,3.17-2.69a29.58,29.58,0,0,0,1.23-5.61l1-6.74A24.45,24.45,0,0,1,52.3,2.1,1.22,1.22,0,0,1,53.16,1.24Zm7.14,9.82a5.87,5.87,0,0,1,.68,3,8.55,8.55,0,0,1-1,4.27,3.68,3.68,0,0,1-3.48,1.84H51.82v-.76a1.3,1.3,0,0,0,.72-.4,3.94,3.94,0,0,0,.52-1.71L55,4.1c0-.39.09-.72.12-1s0-.46,0-.6c0-.53-.07-.86-.23-1A1.64,1.64,0,0,0,54,1.24V.48h4.17a3.4,3.4,0,0,1,2.67,1,4.91,4.91,0,0,1,1,3.38,5.33,5.33,0,0,1-1.17,3.61,4.8,4.8,0,0,1-1.68,1.22A4.84,4.84,0,0,1,60.3,11.06Zm-1.66,2.45a3.81,3.81,0,0,0-.73-2.74,2.63,2.63,0,0,0-1.58-.52l-1,7.2a4,4,0,0,0-.05.4c0,.15,0,.32,0,.51a.9.9,0,0,0,.33.82,1.13,1.13,0,0,0,.59.12c1,0,1.67-.87,2.1-2.59A13.54,13.54,0,0,0,58.64,13.51Zm.12-5.29A5.92,5.92,0,0,0,59.4,6.1a12.74,12.74,0,0,0,.13-1.74,6.54,6.54,0,0,0-.29-2.11,1.11,1.11,0,0,0-1.13-.81.49.49,0,0,0-.49.32,3.52,3.52,0,0,0-.23,1l-.94,6.62A7.45,7.45,0,0,0,58,9,1.8,1.8,0,0,0,58.76,8.22Zm11.71,6.14a8.78,8.78,0,0,1-2,3.87,4,4,0,0,1-2.74,1,.89.89,0,0,1-.63-.21.93.93,0,0,1-.22-.7,3.4,3.4,0,0,1,0-.48c0-.14,0-.28,0-.44l2-14.08a3.8,3.8,0,0,1,.47-1.64,1.94,1.94,0,0,1,1.08-.48V.48H63.6v.76a2,2,0,0,1,.91.31,1.36,1.36,0,0,1,.22.94c0,.2,0,.42,0,.67s-.07.57-.13,1L62.68,17.34a4.31,4.31,0,0,1-.44,1.6,1.28,1.28,0,0,1-.8.52v.76h8.5l.9-5.74ZM76.89.48H72.32v.76a1.92,1.92,0,0,1,.9.31c.15.13.22.44.22.94a5.56,5.56,0,0,1,0,.67c0,.26-.07.57-.12,1L71.39,17.35A4.35,4.35,0,0,1,71,18.94a1.33,1.33,0,0,1-.81.52v.76h4.57v-.76a1.81,1.81,0,0,1-.91-.32,1.39,1.39,0,0,1-.21-.94c0-.09,0-.18,0-.28l0-.3.12-1L75.65,3.36a4.43,4.43,0,0,1,.43-1.6,1.3,1.3,0,0,1,.81-.52Zm8.46.15A.38.38,0,0,1,85,.87a4.12,4.12,0,0,1-1-.44A3.51,3.51,0,0,0,82.37,0Q79.84,0,78,3.92a21.42,21.42,0,0,0-1.84,9.24,11.15,11.15,0,0,0,1.2,5.57,3.51,3.51,0,0,0,3.05,2.08,3.15,3.15,0,0,0,2.21-1.09,8.92,8.92,0,0,0,1.89-3.35L84,15.72A11.08,11.08,0,0,1,83,17.81a2.71,2.71,0,0,1-2.12,1.43,2,2,0,0,1-1.59-1.13,8.33,8.33,0,0,1-.74-4.2A29.46,29.46,0,0,1,79.7,5.62Q81,1.08,82.8,1.07c.59,0,1.07.38,1.45,1.14a8,8,0,0,1,.57,3.47,2.73,2.73,0,0,1,0,.32c0,.08,0,.32,0,.73l.48.17L86.05,0h-.47A2.93,2.93,0,0,1,85.35.63Zm21.41,13.73.37.12-.9,5.74H94.72l-1.66-9.76h-.43l-.91,6.14-.13,1c0,.08,0,.16,0,.25s0,.19,0,.28a1.57,1.57,0,0,0,.2,1,1.81,1.81,0,0,0,.92.32v.76H88.11v-.76a1.3,1.3,0,0,0,.81-.52,4.35,4.35,0,0,0,.43-1.59L91.24,4.11c0-.27.07-.51.09-.71a8.23,8.23,0,0,0,.07-1,1.3,1.3,0,0,0-.21-.9,2.08,2.08,0,0,0-.91-.3V.48h4.23A3.81,3.81,0,0,1,96.7,1c1,.65,1.43,1.9,1.43,3.75a8.73,8.73,0,0,1-.24,2,5.66,5.66,0,0,1-.81,1.9,3.49,3.49,0,0,1-.93,1,6.73,6.73,0,0,1-1,.52c0,.3.09.49.1.57l1.18,6.66a4.74,4.74,0,0,0,.52,1.7,1,1,0,0,0,.78.39,1.23,1.23,0,0,0,.78-.5A4.3,4.3,0,0,0,99,17.35l1.88-13.24c.05-.34.09-.64.12-.92a6.28,6.28,0,0,0,0-.7,1.45,1.45,0,0,0-.2-.94,2,2,0,0,0-.91-.31V.48h8.26l-.65,5.6L107.1,6a9.57,9.57,0,0,0-.36-3,2.3,2.3,0,0,0-2.38-1.51c-.41,0-.67.09-.78.28a2.87,2.87,0,0,0-.29,1.06l-.91,6.56a3.57,3.57,0,0,0,2.08-.51,6.59,6.59,0,0,0,1.06-2.61l.42.1-1.14,8.08-.42-.15c0-.28,0-.52.05-.73s0-.37,0-.51a3.6,3.6,0,0,0-.46-2.15,2.14,2.14,0,0,0-1.75-.57l-1,7.2a4.7,4.7,0,0,0-.06.51c0,.16,0,.29,0,.39a1.12,1.12,0,0,0,.17.66.77.77,0,0,0,.69.26,3.77,3.77,0,0,0,2.37-.75A7.71,7.71,0,0,0,106.76,14.36ZM95.09,8.17a7.75,7.75,0,0,0,.49-1.62,10.75,10.75,0,0,0,.23-2.26,5.77,5.77,0,0,0-.32-2,1.11,1.11,0,0,0-1.08-.81.48.48,0,0,0-.46.26,3.44,3.44,0,0,0-.25,1.05L92.78,9.5A3.78,3.78,0,0,0,94,9.3,2.08,2.08,0,0,0,95.09,8.17Zm21.32,6.19a8.67,8.67,0,0,1-2,3.87,4,4,0,0,1-2.73,1,.89.89,0,0,1-.63-.21.93.93,0,0,1-.23-.7c0-.19,0-.35,0-.48s0-.28,0-.44l2-14.08a3.84,3.84,0,0,1,.46-1.64,2,2,0,0,1,1.08-.48V.48h-4.86v.76a2,2,0,0,1,.91.31,1.38,1.38,0,0,1,.21.94,5.56,5.56,0,0,1,0,.67c0,.26-.07.57-.12,1l-1.89,13.23a4.16,4.16,0,0,1-.43,1.6,1.27,1.27,0,0,1-.81.52v.76h8.51l.9-5.74Zm8.64,0a7.71,7.71,0,0,1-2.38,4.16,3.82,3.82,0,0,1-2.38.75.77.77,0,0,1-.69-.26,1.2,1.2,0,0,1-.17-.66c0-.1,0-.23,0-.39a4.7,4.7,0,0,1,.06-.51l1-7.2a2.17,2.17,0,0,1,1.76.57,3.69,3.69,0,0,1,.45,2.15c0,.14,0,.31,0,.51s0,.45,0,.73l.42.15,1.13-8.08-.42-.1a6.79,6.79,0,0,1-1,2.61,3.63,3.63,0,0,1-2.09.51l.91-6.56a2.87,2.87,0,0,1,.29-1.06c.12-.19.38-.28.78-.28A2.3,2.3,0,0,1,125,2.91a9.57,9.57,0,0,1,.36,3l.41.13.65-5.6h-8.26v.76a1.93,1.93,0,0,1,.91.31,1.45,1.45,0,0,1,.2.94,6.28,6.28,0,0,1,0,.7c0,.28-.07.58-.11.92l-1.89,13.24a4.35,4.35,0,0,1-.43,1.59,1.33,1.33,0,0,1-.81.52v.76h8.5l.91-5.74Zm10.29,5.15v.71h-4.65v-.71a1.44,1.44,0,0,0,.93-.41,2.08,2.08,0,0,0,.27-1.29c0-.22,0-.75-.08-1.58,0-.17-.06-.89-.15-2.15h-3.31l-.89,3a5.32,5.32,0,0,0-.16.66,3.4,3.4,0,0,0-.08.69,1.06,1.06,0,0,0,.2.78,1.68,1.68,0,0,0,.79.3v.71h-3v-.71a1.8,1.8,0,0,0,.63-.53,6.45,6.45,0,0,0,.67-1.56L132.19.07h.4L134.06,17a7.15,7.15,0,0,0,.36,2.08A1.13,1.13,0,0,0,135.34,19.51Zm-3.79-6.6L131,5.73l-2.27,7.18Zm9.6-4-1.32-2.09a4.57,4.57,0,0,1-.47-.94,5.12,5.12,0,0,1-.28-1.78,5.57,5.57,0,0,1,.27-1.77c.27-.83.7-1.24,1.29-1.24s1.21.51,1.57,1.54A8.78,8.78,0,0,1,142.65,5l.06,1,.39.1.63-5.91h-.46a2.09,2.09,0,0,1-.25.54.46.46,0,0,1-.41.21.57.57,0,0,1-.24-.05,1.23,1.23,0,0,1-.26-.12l-.39-.24a2.34,2.34,0,0,0-.5-.25,2.41,2.41,0,0,0-.85-.16,2.55,2.55,0,0,0-2.31,1.67,9.11,9.11,0,0,0-.83,4.05,10.47,10.47,0,0,0,1.88,5.5A9.21,9.21,0,0,1,141,16a6.49,6.49,0,0,1-.5,2.63,1.59,1.59,0,0,1-1.43,1.14,1.42,1.42,0,0,1-1-.4,3.55,3.55,0,0,1-.78-1.16,7.09,7.09,0,0,1-.52-1.92c-.05-.43-.1-1.12-.13-2.06l-.44-.06-.55,6.62h.46a4.11,4.11,0,0,1,.25-.82.36.36,0,0,1,.36-.23.47.47,0,0,1,.17,0,2.38,2.38,0,0,1,.27.18l.39.27a3.52,3.52,0,0,0,.84.43,2.48,2.48,0,0,0,.84.15,2.91,2.91,0,0,0,2.63-1.88,9.24,9.24,0,0,0,1-4.21,9.85,9.85,0,0,0-.49-3.24A12.1,12.1,0,0,0,141.15,8.92Zm7.75-7.24c.12-.19.38-.28.78-.28a2.3,2.3,0,0,1,2.38,1.51,9.57,9.57,0,0,1,.36,3l.41.13.65-5.6h-8.26v.76a1.93,1.93,0,0,1,.91.31c.14.13.2.44.2.94a6.28,6.28,0,0,1,0,.7c0,.28-.07.58-.11.92l-1.89,13.24a4.35,4.35,0,0,1-.43,1.59,1.33,1.33,0,0,1-.81.52v.76h8.5l.91-5.74-.38-.12a7.71,7.71,0,0,1-2.38,4.16,3.82,3.82,0,0,1-2.38.75.77.77,0,0,1-.69-.26,1.2,1.2,0,0,1-.17-.66c0-.1,0-.23,0-.39a4.7,4.7,0,0,1,.06-.51l1-7.2a2.17,2.17,0,0,1,1.76.57,3.69,3.69,0,0,1,.45,2.15c0,.14,0,.31,0,.51s0,.45,0,.73l.42.15,1.14-8.08-.43-.1a6.79,6.79,0,0,1-1.05,2.61,3.63,3.63,0,0,1-2.09.51l.91-6.56A2.87,2.87,0,0,1,148.9,1.68Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 153.485, height: 20.812, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'NotForPublicRelease':\n case 'Not For Public Release':\n {\n stampCollection = {\n iconName: 'Not For Public Release',\n // eslint-disable-next-line max-len\n pathdata: 'M9,2.35q-.21.9-.51,3.48L6.69,21.05H6.38L3.11,4.45,1.85,15.19c-.1.89-.17,1.56-.2,2s0,.55,0,.81A2.39,2.39,0,0,0,2,19.45a1.09,1.09,0,0,0,.67.33v.77H0v-.77a1.22,1.22,0,0,0,.71-.91,33.91,33.91,0,0,0,.57-3.68L2.7,2.88l-.06-.3a2.09,2.09,0,0,0-.39-1.07,1,1,0,0,0-.59-.25V.48H4.2L6.93,14.36l1-8.49c.06-.53.11-1,.14-1.4.06-.63.08-1.08.08-1.37a2.67,2.67,0,0,0-.3-1.5,1.07,1.07,0,0,0-.69-.34V.48H9.73v.78l-.18.06C9.29,1.41,9.09,1.75,9,2.35ZM16.74,2a13.19,13.19,0,0,1,.87,5.28,27.45,27.45,0,0,1-1.54,9.22q-1.65,4.66-3.79,4.67-1.35,0-2.19-1.95a13.31,13.31,0,0,1-.85-5.23A27.59,27.59,0,0,1,10.82,4.6C11.91,1.53,13.15,0,14.51,0,15.41,0,16.16.65,16.74,2Zm-.95,2.73a9.33,9.33,0,0,0-.31-2.59c-.21-.72-.54-1.08-1-1.08-1.05,0-1.92,2.21-2.64,6.64a54.69,54.69,0,0,0-.81,8.4,14.21,14.21,0,0,0,.15,2.23c.2,1.2.57,1.8,1.1,1.8s.95-.43,1.35-1.31a22.84,22.84,0,0,0,1.26-5c.28-1.55.49-3.19.65-4.91S15.79,5.74,15.79,4.68Zm2.3.93.32.21A10.7,10.7,0,0,1,19.52,2.6a1.87,1.87,0,0,1,1.6-1.08L19.27,17.63a4,4,0,0,1-.52,1.88,1,1,0,0,1-.79.27v.77h4.17v-.77a1.72,1.72,0,0,1-.85-.3,1.56,1.56,0,0,1-.2-1,2.44,2.44,0,0,1,0-.27c0-.08,0-.2,0-.33l.11-1L23,1.52A1.31,1.31,0,0,1,24,2.17a8.49,8.49,0,0,1,.69,4l.33.07L25.5.48H18.57ZM28.75.48v.78a1.39,1.39,0,0,1,.74.31,1.44,1.44,0,0,1,.18.9q0,.36-.06,1c0,.2-.05.44-.07.71L28,17.62a5.34,5.34,0,0,1-.35,1.61,1.05,1.05,0,0,1-.67.55v.77H30.7v-.77a.82.82,0,0,1-.6-.2,1.69,1.69,0,0,1-.31-1.18c0-.11,0-.22,0-.32l0-.35.83-7.33a1.42,1.42,0,0,1,1.4.64,5,5,0,0,1,.33,2.13c0,.12,0,.28,0,.5s0,.47,0,.76l.34.15.94-8.21-.35-.1a8.12,8.12,0,0,1-.85,2.64,2.42,2.42,0,0,1-1.64.52l.74-6.65a3.34,3.34,0,0,1,.25-1.1.64.64,0,0,1,.59-.26A1.91,1.91,0,0,1,34.28,3a11.32,11.32,0,0,1,.29,3.06l.34.13.54-5.7Zm15,6.75a27.46,27.46,0,0,1-1.55,9.22q-1.65,4.66-3.79,4.67-1.35,0-2.19-1.95a13.49,13.49,0,0,1-.85-5.23A27.59,27.59,0,0,1,37,4.6Q38.65,0,40.69,0c.91,0,1.65.65,2.23,2A13.17,13.17,0,0,1,43.8,7.23ZM42,4.68a9.3,9.3,0,0,0-.32-2.59c-.21-.72-.53-1.08-1-1.08Q39.12,1,38,7.65a54.69,54.69,0,0,0-.81,8.4,13,13,0,0,0,.16,2.23c.2,1.2.56,1.8,1.09,1.8s1-.43,1.35-1.31a23.28,23.28,0,0,0,1.27-5c.27-1.55.49-3.19.64-4.91S42,5.74,42,4.68ZM50.32,1c.78.66,1.17,1.93,1.17,3.8a11,11,0,0,1-.19,2,7.2,7.2,0,0,1-.66,1.93,3.45,3.45,0,0,1-.77,1,5.58,5.58,0,0,1-.8.52c0,.31.07.51.08.58l1,6.78a5.63,5.63,0,0,0,.42,1.72.85.85,0,0,0,.69.42v.77H48.69l-1.36-9.92H47l-.75,6.25-.1,1c0,.08,0,.16,0,.26v.28a1.94,1.94,0,0,0,.16,1,1.39,1.39,0,0,0,.75.32v.77H43.27v-.77a1.07,1.07,0,0,0,.66-.53,4.83,4.83,0,0,0,.36-1.61L45.84,4.18c0-.28.06-.52.08-.72,0-.42,0-.75,0-1a1.48,1.48,0,0,0-.17-.91,1.39,1.39,0,0,0-.74-.31V.48h3.46A2.67,2.67,0,0,1,50.32,1Zm-.73,3.34a7.2,7.2,0,0,0-.26-2.09c-.18-.55-.47-.83-.89-.83a.4.4,0,0,0-.38.27,4.46,4.46,0,0,0-.2,1.06L47.1,9.65a2.39,2.39,0,0,0,1-.2A2,2,0,0,0,49,8.31a10,10,0,0,0,.4-1.65A12.71,12.71,0,0,0,49.59,4.37Zm11.1-3.3c.77.74,1.16,2.1,1.16,4.09a8.51,8.51,0,0,1-.94,4.28A2.78,2.78,0,0,1,58.48,11h-.36l-.73-.12-.69,6-.11,1c0,.1,0,.2,0,.3s0,.2,0,.3a1.7,1.7,0,0,0,.17.95,1.47,1.47,0,0,0,.75.32v.77H53.77v-.77a1.07,1.07,0,0,0,.66-.53,4.83,4.83,0,0,0,.36-1.61L56.34,4.17l.09-.9c0-.31,0-.55,0-.74a1.58,1.58,0,0,0-.25-1,1.33,1.33,0,0,0-.67-.23V.48h3.62A2.11,2.11,0,0,1,60.69,1.07ZM60,4.32a7,7,0,0,0-.25-2.06c-.17-.53-.45-.8-.84-.8a.4.4,0,0,0-.4.29,6.14,6.14,0,0,0-.2,1L57.5,9.93l.23.06h.21a1.3,1.3,0,0,0,1-.36,3.17,3.17,0,0,0,.6-1.2,12.69,12.69,0,0,0,.36-2A19.64,19.64,0,0,0,60,4.32Zm10.6-3.06V.48H68v.78a1.17,1.17,0,0,1,.68.32A2.43,2.43,0,0,1,69,3.05c0,.32,0,.85-.11,1.6,0-.12,0,.27-.12,1.18l-.73,6.26a36.28,36.28,0,0,1-.8,4.86c-.45,1.65-1.07,2.47-1.87,2.47a1.27,1.27,0,0,1-1.13-.78,5.05,5.05,0,0,1-.41-2.27c0-.43,0-1.1.13-2,.05-.51.12-1.17.21-2l1-9a4.69,4.69,0,0,1,.38-1.69,1.24,1.24,0,0,1,.8-.47V.48H62.55v.78a1.39,1.39,0,0,1,.74.31,1.56,1.56,0,0,1,.17.91c0,.21,0,.47,0,.76s-.06.6-.1.94l-.85,7.36c-.14,1.15-.23,2-.27,2.42-.06.76-.1,1.44-.1,2a7.4,7.4,0,0,0,.81,3.78,2.35,2.35,0,0,0,2,1.35c1.14,0,2-.91,2.6-2.74a35.69,35.69,0,0,0,1-5.7l.79-6.85a30.83,30.83,0,0,1,.58-3.7A1.15,1.15,0,0,1,70.61,1.26Zm5.86,10a7.16,7.16,0,0,1,.56,3.1,10.31,10.31,0,0,1-.86,4.34,2.93,2.93,0,0,1-2.86,1.87h-3.8v-.77a1.07,1.07,0,0,0,.59-.41,4.64,4.64,0,0,0,.43-1.73L72.08,4.17c0-.4.08-.73.1-1s0-.46,0-.61a1.83,1.83,0,0,0-.19-1,1.22,1.22,0,0,0-.73-.28V.48h3.43a2.58,2.58,0,0,1,2.19,1.06A5.92,5.92,0,0,1,77.69,5a6.3,6.3,0,0,1-1,3.67,4.18,4.18,0,0,1-1.39,1.24A4.36,4.36,0,0,1,76.47,11.24Zm-1.36,2.49a4.59,4.59,0,0,0-.6-2.79,2,2,0,0,0-1.3-.52l-.84,7.32c0,.12,0,.25,0,.4s0,.33,0,.52a1.06,1.06,0,0,0,.27.84.77.77,0,0,0,.48.11c.8,0,1.38-.87,1.73-2.63A17.3,17.3,0,0,0,75.11,13.73Zm.1-5.38a7.33,7.33,0,0,0,.52-2.15,15,15,0,0,0,.11-1.77,7.89,7.89,0,0,0-.24-2.14c-.16-.55-.46-.83-.93-.83a.42.42,0,0,0-.4.33,4.42,4.42,0,0,0-.19,1l-.77,6.73a5.23,5.23,0,0,0,1.27-.36A1.77,1.77,0,0,0,75.21,8.35Zm9.61,6.24a9.73,9.73,0,0,1-1.66,3.94,2.93,2.93,0,0,1-2.25,1,.64.64,0,0,1-.51-.21,1,1,0,0,1-.19-.71c0-.19,0-.35,0-.49s0-.29,0-.44L81.91,3.41a4.53,4.53,0,0,1,.38-1.66,1.47,1.47,0,0,1,.88-.49V.48h-4v.78a1.39,1.39,0,0,1,.75.32,1.59,1.59,0,0,1,.18.95c0,.2,0,.43,0,.68s0,.58-.1,1L78.42,17.62a5.28,5.28,0,0,1-.35,1.63,1.12,1.12,0,0,1-.67.53v.77h7l.73-5.83ZM90.09,1.26V.48H86.34v.78a1.38,1.38,0,0,1,.74.32,1.59,1.59,0,0,1,.18.95q0,.3,0,.69c0,.25-.06.57-.11.95L85.58,17.64a5.41,5.41,0,0,1-.36,1.61,1.07,1.07,0,0,1-.66.53v.77h3.75v-.77a1.47,1.47,0,0,1-.75-.32,1.78,1.78,0,0,1-.17-1c0-.08,0-.18,0-.28s0-.2,0-.3l.1-1L89.07,3.41a5.68,5.68,0,0,1,.35-1.62A1.1,1.1,0,0,1,90.09,1.26Zm7-.62a.33.33,0,0,1-.3.24,3.1,3.1,0,0,1-.82-.44A2.5,2.5,0,0,0,94.59,0Q92.51,0,91,4a26.57,26.57,0,0,0-1.51,9.39,13.57,13.57,0,0,0,1,5.67c.66,1.41,1.49,2.11,2.5,2.11A2.46,2.46,0,0,0,94.79,20a9.66,9.66,0,0,0,1.55-3.4L96,16a12.68,12.68,0,0,1-.89,2.13c-.54,1-1.12,1.45-1.74,1.45-.47,0-.91-.39-1.31-1.15a10.33,10.33,0,0,1-.6-4.27,36.59,36.59,0,0,1,1-8.43c.72-3.08,1.57-4.63,2.54-4.63.48,0,.88.39,1.19,1.16a10,10,0,0,1,.47,3.53V6.1c0,.07,0,.32,0,.74L97,7l.64-7h-.38A4.28,4.28,0,0,1,97,.64Zm17.57,14,.31.13-.75,5.83h-9.45l-1.35-9.92H103l-.74,6.25-.11,1c0,.08,0,.16,0,.26v.28a1.94,1.94,0,0,0,.16,1,1.39,1.39,0,0,0,.75.32v.77H99.3v-.77a1.12,1.12,0,0,0,.67-.53,5.18,5.18,0,0,0,.35-1.61l1.55-13.46c0-.28.06-.52.08-.72,0-.42,0-.75,0-1a1.48,1.48,0,0,0-.17-.91,1.39,1.39,0,0,0-.74-.31V.48h3.46a2.64,2.64,0,0,1,1.8.55c.78.66,1.17,1.93,1.17,3.8a11,11,0,0,1-.19,2,6.57,6.57,0,0,1-.66,1.93,3.61,3.61,0,0,1-.76,1,6.48,6.48,0,0,1-.81.52c0,.31.07.51.08.58l1,6.78a5.63,5.63,0,0,0,.42,1.72.84.84,0,0,0,.65.4,1.06,1.06,0,0,0,.64-.51,5.41,5.41,0,0,0,.36-1.61l1.54-13.47c0-.34.07-.65.1-.92s0-.52,0-.72a1.61,1.61,0,0,0-.17-.95,1.31,1.31,0,0,0-.74-.32V.48h6.78l-.53,5.7-.34-.13a11.8,11.8,0,0,0-.3-3.09,1.92,1.92,0,0,0-2-1.54c-.33,0-.55.1-.64.29a3.46,3.46,0,0,0-.24,1.07L111,9.45a2.6,2.6,0,0,0,1.72-.51,7.79,7.79,0,0,0,.86-2.66l.35.11-.93,8.2-.35-.15c0-.28,0-.53,0-.74v-.52a4.42,4.42,0,0,0-.37-2.18,1.56,1.56,0,0,0-1.44-.58l-.83,7.32c0,.18,0,.35,0,.51s0,.3,0,.4a1.45,1.45,0,0,0,.13.67c.09.18.28.26.57.26a2.72,2.72,0,0,0,2-.76A8.33,8.33,0,0,0,114.61,14.59ZM105,8.31a9.81,9.81,0,0,0,.41-1.65,13.72,13.72,0,0,0,.18-2.29,6.87,6.87,0,0,0-.26-2.09c-.17-.55-.47-.83-.89-.83a.4.4,0,0,0-.38.27,5.05,5.05,0,0,0-.2,1.06l-.76,6.87a2.39,2.39,0,0,0,1-.2A2,2,0,0,0,105,8.31Zm17.51,6.28a9.86,9.86,0,0,1-1.67,3.94,2.93,2.93,0,0,1-2.25,1,.64.64,0,0,1-.51-.21,1.1,1.1,0,0,1-.19-.71c0-.19,0-.35,0-.49s0-.29,0-.44l1.64-14.32A4.53,4.53,0,0,1,120,1.75a1.47,1.47,0,0,1,.89-.49V.48h-4v.78a1.39,1.39,0,0,1,.75.32,1.59,1.59,0,0,1,.18.95c0,.2,0,.43,0,.68s0,.58-.1,1l-1.55,13.45a5.28,5.28,0,0,1-.35,1.63,1.1,1.1,0,0,1-.66.53v.77h7l.74-5.83Zm7.09,0a8.33,8.33,0,0,1-2,4.23,2.73,2.73,0,0,1-2,.76c-.29,0-.48-.08-.57-.26a1.45,1.45,0,0,1-.13-.67c0-.1,0-.23,0-.4s0-.33,0-.51l.83-7.32a1.58,1.58,0,0,1,1.44.58,4.42,4.42,0,0,1,.37,2.18c0,.14,0,.31,0,.52s0,.46,0,.74l.34.15.94-8.2-.35-.11a7.71,7.71,0,0,1-.87,2.66,2.56,2.56,0,0,1-1.71.51l.75-6.67A3.46,3.46,0,0,1,127,1.71c.09-.19.31-.29.64-.29a1.92,1.92,0,0,1,2,1.54,11.8,11.8,0,0,1,.3,3.09l.33.13.54-5.7H124v.78a1.31,1.31,0,0,1,.75.32,1.7,1.7,0,0,1,.17.95,6.75,6.75,0,0,1,0,.72c0,.27-.05.58-.09.92l-1.55,13.47a5.18,5.18,0,0,1-.35,1.61,1.12,1.12,0,0,1-.67.53v.77h7l.75-5.83Zm8.45,5.24v.72h-3.83v-.72a1.11,1.11,0,0,0,.77-.41,2.52,2.52,0,0,0,.23-1.31c0-.23,0-.77-.07-1.62,0-.17-.05-.9-.13-2.18h-2.71l-.74,3c0,.2-.09.43-.13.67a4.44,4.44,0,0,0-.06.71,1.27,1.27,0,0,0,.16.79,1.35,1.35,0,0,0,.65.3v.72h-2.47v-.72a1.66,1.66,0,0,0,.52-.54,7.25,7.25,0,0,0,.55-1.58L135.49.07h.33L137,17.23a8.87,8.87,0,0,0,.3,2.11A.9.9,0,0,0,138.08,19.83ZM135,13.12l-.47-7.3-1.86,7.3Zm7.88-4-1.09-2.13a6.38,6.38,0,0,1-.39-1,6.65,6.65,0,0,1-.23-1.82,6.93,6.93,0,0,1,.23-1.8q.33-1.26,1-1.26c.57,0,1,.53,1.3,1.57a10.87,10.87,0,0,1,.36,2.39l0,1,.33.1.51-6h-.38a2.26,2.26,0,0,1-.2.54.38.38,0,0,1-.34.22.54.54,0,0,1-.19-.05l-.22-.13-.32-.25a2.36,2.36,0,0,0-.41-.25,1.82,1.82,0,0,0-.7-.16c-.81,0-1.44.57-1.9,1.7a11.21,11.21,0,0,0-.68,4.12,12.36,12.36,0,0,0,1.55,5.58,10.74,10.74,0,0,1,1.54,4.78,7.8,7.8,0,0,1-.41,2.67c-.28.76-.67,1.15-1.17,1.15a1.07,1.07,0,0,1-.79-.4,3.78,3.78,0,0,1-.64-1.18,7.79,7.79,0,0,1-.42-1.95c-.05-.44-.08-1.14-.11-2.1l-.36-.06-.46,6.73h.38a6.32,6.32,0,0,1,.2-.83.31.31,0,0,1,.3-.24.21.21,0,0,1,.14,0,1.06,1.06,0,0,1,.22.18l.32.27a3,3,0,0,0,.69.44,1.72,1.72,0,0,0,.69.15c.92,0,1.64-.63,2.16-1.91a11.22,11.22,0,0,0,.78-4.28,12.2,12.2,0,0,0-.4-3.29A14.21,14.21,0,0,0,142.85,9.07Zm6.36-7.36c.09-.19.31-.29.64-.29a1.92,1.92,0,0,1,2,1.54,11.8,11.8,0,0,1,.3,3.09l.33.13L153,.48h-6.79v.78a1.31,1.31,0,0,1,.75.32,1.7,1.7,0,0,1,.17.95,6.75,6.75,0,0,1,0,.72c0,.27-.05.58-.09.92l-1.55,13.47a5.18,5.18,0,0,1-.35,1.61,1.12,1.12,0,0,1-.67.53v.77h7l.75-5.83-.31-.13a8.33,8.33,0,0,1-2,4.23,2.73,2.73,0,0,1-2,.76c-.29,0-.48-.08-.57-.26a1.45,1.45,0,0,1-.13-.67c0-.1,0-.23,0-.4s0-.33.05-.51l.83-7.32a1.58,1.58,0,0,1,1.44.58,4.42,4.42,0,0,1,.37,2.18c0,.14,0,.31,0,.52s0,.46,0,.74l.34.15.94-8.2-.35-.11a7.71,7.71,0,0,1-.87,2.66,2.56,2.56,0,0,1-1.71.51L149,2.78A3.46,3.46,0,0,1,149.21,1.71Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 152.969, height: 21.152, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'ForComment':\n case 'For Comment':\n {\n stampCollection = {\n iconName: 'For Comment',\n // eslint-disable-next-line max-len\n pathdata: 'M14.1.48l-.89,5.6L12.65,6a7.14,7.14,0,0,0-.48-3c-.54-1-1.6-1.54-3.19-1.54a1.37,1.37,0,0,0-1,.26,2.06,2.06,0,0,0-.42,1.08L6.35,9.28a6,6,0,0,0,2.73-.52,5.92,5.92,0,0,0,1.41-2.59l.58.1L9.52,14.34,9,14.2c0-.29,0-.54.05-.75s0-.38,0-.49a3.15,3.15,0,0,0-.55-2.09,3.07,3.07,0,0,0-2.32-.64L4.77,17.44c0,.13,0,.24-.06.35s0,.21,0,.31a1.23,1.23,0,0,0,.53,1.17,2,2,0,0,0,1,.19v.76H0v-.76a1.91,1.91,0,0,0,1.12-.54,3.56,3.56,0,0,0,.58-1.58L4.27,4.11c.05-.27.09-.51.12-.71a7.42,7.42,0,0,0,.1-1c0-.48-.1-.77-.29-.9A3.54,3.54,0,0,0,3,1.24V.48ZM28,7.11a17.42,17.42,0,0,1-2.57,9.07q-2.75,4.61-6.3,4.6a4.33,4.33,0,0,1-3.65-1.92,8.53,8.53,0,0,1-1.41-5.14,17.56,17.56,0,0,1,2.62-9.19Q19.43,0,22.82,0a4.48,4.48,0,0,1,3.72,1.92A8.46,8.46,0,0,1,28,7.11ZM25,4.6a5.72,5.72,0,0,0-.52-2.55,1.72,1.72,0,0,0-1.63-1c-1.74,0-3.2,2.17-4.39,6.53a32.66,32.66,0,0,0-1.35,8.26,8.24,8.24,0,0,0,.26,2.2c.33,1.18.94,1.77,1.82,1.77a2.88,2.88,0,0,0,2.25-1.29,16.48,16.48,0,0,0,2.1-4.93,37.09,37.09,0,0,0,1.07-4.83A28.26,28.26,0,0,0,25,4.6Zm15.83.16a6.49,6.49,0,0,1-.33,2,5.12,5.12,0,0,1-1.09,1.9,4.65,4.65,0,0,1-1.27,1,11.5,11.5,0,0,1-1.35.52c.07.3.12.49.14.57l1.62,6.66a3.79,3.79,0,0,0,.7,1.7,1.75,1.75,0,0,0,1.14.41v.76H36.13l-2.26-9.76h-.59L32,16.6l-.17,1,0,.25a2.62,2.62,0,0,0,0,.28q0,.8.27,1a3,3,0,0,0,1.25.32v.76H27.11v-.76a1.93,1.93,0,0,0,1.11-.52,3.54,3.54,0,0,0,.59-1.59L31.38,4.11c.06-.27.1-.51.13-.71a6,6,0,0,0,.1-1c0-.47-.1-.77-.29-.9a3.54,3.54,0,0,0-1.24-.3V.48h5.76a6.77,6.77,0,0,1,3,.53Q40.79,2,40.79,4.76Zm-3.16-.47a4.35,4.35,0,0,0-.44-2,1.54,1.54,0,0,0-1.48-.81.75.75,0,0,0-.63.26,2.78,2.78,0,0,0-.33,1.05L33.48,9.5a6.85,6.85,0,0,0,1.67-.2,2.55,2.55,0,0,0,1.49-1.13,6.37,6.37,0,0,0,.67-1.62A7.81,7.81,0,0,0,37.63,4.29ZM58.49,0a2.61,2.61,0,0,1-.32.63.55.55,0,0,1-.49.24A7,7,0,0,1,56.31.43,6.15,6.15,0,0,0,54.1,0q-3.47,0-6,3.92a16.73,16.73,0,0,0-2.51,9.24,8.73,8.73,0,0,0,1.64,5.57,5,5,0,0,0,7.19,1A8.89,8.89,0,0,0,57,16.37l-.64-.65a10.47,10.47,0,0,1-1.47,2.09A4,4,0,0,1,52,19.24a2.89,2.89,0,0,1-2.17-1.13c-.67-.75-1-2.15-1-4.2a22.2,22.2,0,0,1,1.62-8.29q1.8-4.54,4.23-4.55a2.33,2.33,0,0,1,2,1.14,6.16,6.16,0,0,1,.78,3.47c0,.14,0,.25,0,.32s0,.32,0,.73l.66.17L59.12,0ZM72.71,7.11a17.33,17.33,0,0,1-2.57,9.07c-1.82,3.07-3.93,4.6-6.3,4.6a4.34,4.34,0,0,1-3.65-1.92,8.53,8.53,0,0,1-1.4-5.14A17.55,17.55,0,0,1,61.4,4.53Q64.15,0,67.54,0a4.48,4.48,0,0,1,3.72,1.92A8.39,8.39,0,0,1,72.71,7.11Zm-3-2.51a5.72,5.72,0,0,0-.52-2.55,1.72,1.72,0,0,0-1.63-1c-1.74,0-3.2,2.17-4.39,6.53a32.66,32.66,0,0,0-1.35,8.26,8.24,8.24,0,0,0,.26,2.2c.33,1.18.94,1.77,1.82,1.77a2.85,2.85,0,0,0,2.25-1.29,16,16,0,0,0,2.1-4.93,34.08,34.08,0,0,0,1.07-4.83A28.26,28.26,0,0,0,69.68,4.6Zm17.5,13.62a4.63,4.63,0,0,1,.07-.75c0-.3.09-.59.15-.88L90,3.31a3.32,3.32,0,0,1,.7-1.67,2,2,0,0,1,1-.4V.48H87.23l-6.4,13.91L79.63.48H74.84v.76a3.29,3.29,0,0,1,1.2.21c.21.11.31.37.31.78a4.35,4.35,0,0,1-.07.75c0,.28-.11.61-.18,1L74,15a19.63,19.63,0,0,1-1,3.65,1.54,1.54,0,0,1-1.17.86v.76H76.2v-.76a2.31,2.31,0,0,1-1.09-.29,1.6,1.6,0,0,1-.58-1.43,8.8,8.8,0,0,1,.14-1.42c0-.37.14-.82.24-1.37L77,4.24l1.41,16.37H79L86.89,3.76,84.25,17.34A2.94,2.94,0,0,1,83.61,19a2.87,2.87,0,0,1-1.44.49v.76h6.54v-.76a3.39,3.39,0,0,1-1.23-.31Q87.18,19,87.18,18.22Zm17.73,0a4.63,4.63,0,0,1,.07-.75c0-.3.1-.59.16-.88l2.58-13.28a3.24,3.24,0,0,1,.69-1.67,2,2,0,0,1,1-.4V.48H105l-6.4,13.91L97.36.48H92.57v.76a3.29,3.29,0,0,1,1.2.21c.21.11.32.37.32.78A5.65,5.65,0,0,1,94,3c0,.28-.11.61-.19,1L91.69,15a19.63,19.63,0,0,1-1,3.65,1.54,1.54,0,0,1-1.17.86v.76h4.38v-.76a2.33,2.33,0,0,1-1.1-.29,1.6,1.6,0,0,1-.58-1.43,10.12,10.12,0,0,1,.14-1.42c.06-.37.14-.82.25-1.37L94.76,4.24l1.41,16.37h.59l7.86-16.85L102,17.34a3.1,3.1,0,0,1-.64,1.63,3,3,0,0,1-1.45.49v.76h6.55v-.76a3.46,3.46,0,0,1-1.24-.31Q104.91,19,104.91,18.22Zm11.52.3a6.56,6.56,0,0,1-3.25.75,1.27,1.27,0,0,1-.94-.26,1,1,0,0,1-.22-.66,3,3,0,0,1,0-.39,4.88,4.88,0,0,1,.08-.51l1.38-7.2a3.65,3.65,0,0,1,2.4.57,2.92,2.92,0,0,1,.62,2.15c0,.14,0,.31,0,.51s0,.45-.06.73l.58.15,1.55-8.08-.58-.1a5.92,5.92,0,0,1-1.44,2.61,6.32,6.32,0,0,1-2.85.51L115,2.74a2.44,2.44,0,0,1,.39-1.06,1.43,1.43,0,0,1,1.07-.28c1.63,0,2.71.5,3.25,1.51a7.37,7.37,0,0,1,.49,3l.56.13.89-5.6H110.31v.76a3.28,3.28,0,0,1,1.25.31c.19.13.28.44.28.94a4.83,4.83,0,0,1-.06.7c0,.28-.09.58-.16.92l-2.57,13.24a3.54,3.54,0,0,1-.59,1.59,1.93,1.93,0,0,1-1.11.52v.76H119l1.24-5.74-.51-.12A7.7,7.7,0,0,1,116.43,18.52ZM136.6,1.24V.48h-4.3v.76a2.5,2.5,0,0,1,1.14.33A1.8,1.8,0,0,1,134,3.05a10.58,10.58,0,0,1-.14,1.34c-.05.41-.13.87-.22,1.39L132,14.12,127.41.48h-4.22v.76a2.53,2.53,0,0,1,1,.24,1.82,1.82,0,0,1,.64,1.06l.1.3L122.55,15a19.54,19.54,0,0,1-1,3.61,1.59,1.59,0,0,1-1.18.9v.76h4.37v-.76a2.5,2.5,0,0,1-1.12-.32,1.67,1.67,0,0,1-.55-1.44,5.32,5.32,0,0,1,0-.79c0-.43.17-1.09.34-2l2.08-10.57L131,20.71h.52l2.91-15a24.72,24.72,0,0,1,.85-3.42,1.42,1.42,0,0,1,1-1Zm.48-.76-.81,5,.54.2a8.1,8.1,0,0,1,1.85-3.16,3.63,3.63,0,0,1,2.66-1.06l-3.08,15.85a3,3,0,0,1-.86,1.85,2.42,2.42,0,0,1-1.32.26v.76H143v-.76a4,4,0,0,1-1.41-.3c-.23-.13-.34-.45-.34-.95a2.26,2.26,0,0,1,0-.26c0-.09,0-.2,0-.33l.17-1,2.92-15.1a2.64,2.64,0,0,1,1.76.63c.74.7,1.12,2,1.15,3.94l.55.07L148.6.48Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 148.603, height: 20.812, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Void':\n {\n stampCollection = {\n iconName: 'Void',\n // eslint-disable-next-line max-len\n pathdata: 'M27.88,1.72a6.53,6.53,0,0,0-1.81,1.42L9,21.12H7.54L4.09,5.83A11.83,11.83,0,0,0,2.82,2Q2.3,1.4,0,1.26V.48H13.54v.78a11,11,0,0,0-2.37.18q-1.11.27-1.11,1.05a1.43,1.43,0,0,0,0,.29c0,.09,0,.19,0,.28l2.35,12,8.56-9a25.11,25.11,0,0,0,1.83-2.14,3.15,3.15,0,0,0,.82-1.68c0-.41-.28-.69-.84-.82a12.57,12.57,0,0,0-2.08-.15V.48h8.7v.78A7.11,7.11,0,0,0,27.88,1.72ZM57.37,7.23q0,4.85-5.56,9.22a21.41,21.41,0,0,1-13.62,4.67,14.41,14.41,0,0,1-7.89-1.95,6,6,0,0,1-3-5.23q0-4.92,5.66-9.34A21.12,21.12,0,0,1,46.2,0a15,15,0,0,1,8,2A6,6,0,0,1,57.37,7.23ZM50.82,4.68a3.46,3.46,0,0,0-1.13-2.59A4.93,4.93,0,0,0,46.17,1q-5.64,0-9.49,6.64c-1.94,3.36-2.92,6.16-2.92,8.4a4.27,4.27,0,0,0,.56,2.23q1.08,1.8,3.93,1.8a9.24,9.24,0,0,0,4.87-1.31,15.24,15.24,0,0,0,4.54-5A21.81,21.81,0,0,0,50,8.85,14.23,14.23,0,0,0,50.82,4.68ZM66,18.49a1.49,1.49,0,0,1,0-.28c0-.1,0-.2.08-.3l.35-1L72,3.41a2.94,2.94,0,0,1,1.25-1.62,6.79,6.79,0,0,1,2.4-.53V.48H62.19v.78a13.27,13.27,0,0,1,2.67.32.88.88,0,0,1,.64.95,2.38,2.38,0,0,1-.12.69c-.08.25-.2.57-.36.95L59.45,17.64a3,3,0,0,1-1.28,1.61,6.84,6.84,0,0,1-2.39.53v.77H69.27v-.77a13.72,13.72,0,0,1-2.67-.32A.9.9,0,0,1,66,18.49Zm38.25-9.67q0,4.59-5.15,8-5.73,3.77-15,3.76h-13v-.77a7.4,7.4,0,0,0,2.1-.41,3.08,3.08,0,0,0,1.57-1.75L80.28,4.17c.16-.38.28-.7.37-1a2.27,2.27,0,0,0,.12-.68.89.89,0,0,0-.64-.95,13.41,13.41,0,0,0-2.68-.32V.48H90.6q6.68,0,10.15,2.27A6.92,6.92,0,0,1,104.23,8.82ZM97.58,7a5.28,5.28,0,0,0-1.13-3.54q-1.77-2-6.14-2a4.24,4.24,0,0,0-2,.32,1.77,1.77,0,0,0-.74.84L81.35,17.73a1.72,1.72,0,0,0-.12.39,1.89,1.89,0,0,0,0,.31.89.89,0,0,0,.54.85,5.1,5.1,0,0,0,2,.26q8.07,0,11.68-5.5A12.61,12.61,0,0,0,97.58,7Z',\n opacity: 1, strokeColor: '', fillColor: '#8a251a', width: 104.233, height: 21.123, stampFillColor: '#f6dedd', stampStrokeColor: '',\n };\n }\n break;\n case 'PreliminaryResults':\n case 'Preliminary Results':\n {\n stampCollection = {\n iconName: 'Preliminary Results',\n // eslint-disable-next-line max-len\n pathdata: 'M9.23,5.08q0-3-1.32-4.08A2.6,2.6,0,0,0,6.17.41H2v.78a1.5,1.5,0,0,1,.76.23,1.39,1.39,0,0,1,.28,1c0,.19,0,.43,0,.73s-.07.61-.1.91L1.17,17.56a4.76,4.76,0,0,1-.41,1.62A1.18,1.18,0,0,1,0,19.7v.78H4.25V19.7a1.77,1.77,0,0,1-.86-.31,1.5,1.5,0,0,1-.2-1c0-.09,0-.19,0-.3a1.36,1.36,0,0,1,0-.29l.12-1,.78-6L5,11h.41a3.21,3.21,0,0,0,2.78-1.6A7.57,7.57,0,0,0,9.23,5.08ZM7,6.32a10,10,0,0,1-.42,2,3,3,0,0,1-.68,1.21,1.63,1.63,0,0,1-1.13.36H4.53l-.27-.06,1-7.15a4.75,4.75,0,0,1,.22-1,.45.45,0,0,1,.46-.29,1,1,0,0,1,1,.8,6.22,6.22,0,0,1,.29,2.06A18,18,0,0,1,7,6.32ZM23.4,18.75a3.35,3.35,0,0,1-2.23.76.68.68,0,0,1-.64-.26,1.27,1.27,0,0,1-.16-.68c0-.09,0-.23,0-.39s0-.34.05-.51l.95-7.33a1.92,1.92,0,0,1,1.65.59,4,4,0,0,1,.42,2.18c0,.14,0,.31,0,.52s0,.46,0,.74l.4.15,1.07-8.21-.4-.1a7,7,0,0,1-1,2.65,3.15,3.15,0,0,1-2,.52l.85-6.67a3,3,0,0,1,.28-1.08c.11-.19.35-.28.73-.28a2.16,2.16,0,0,1,2.23,1.54A10.27,10.27,0,0,1,26,6l.39.13L27,.41H19.2v.78a1.67,1.67,0,0,1,.86.31,1.52,1.52,0,0,1,.19,1,6.58,6.58,0,0,1,0,.71c0,.28-.07.59-.11.93L18.33,17.56a4.59,4.59,0,0,1-.4,1.62,1.22,1.22,0,0,1-.74.51,1,1,0,0,1-.73-.4A5.08,5.08,0,0,1,16,17.56l-1.1-6.77c0-.08,0-.27-.1-.58a5.14,5.14,0,0,0,.92-.53,3.23,3.23,0,0,0,.87-1,6,6,0,0,0,.76-1.93,9.63,9.63,0,0,0,.22-2c0-1.87-.44-3.14-1.34-3.81a3.4,3.4,0,0,0-2-.54h-4v.78a1.78,1.78,0,0,1,.85.3,1.4,1.4,0,0,1,.19.91c0,.24,0,.56-.06,1,0,.21-.05.45-.09.73L9.31,17.56a4.53,4.53,0,0,1-.41,1.62,1.15,1.15,0,0,1-.75.52v.78h4.28V19.7a1.62,1.62,0,0,1-.86-.32,1.72,1.72,0,0,1-.18-1v-.29c0-.09,0-.18,0-.25l.12-1,.86-6.24h.4l1.55,9.92h10.8L26,14.65l-.35-.13A7.9,7.9,0,0,1,23.4,18.75ZM13.67,9.38a3.35,3.35,0,0,1-1.15.2l.87-6.87a4,4,0,0,1,.23-1.06.45.45,0,0,1,.43-.27,1.05,1.05,0,0,1,1,.83,6.14,6.14,0,0,1,.3,2.08,11.74,11.74,0,0,1-.21,2.29,9,9,0,0,1-.47,1.65A2,2,0,0,1,13.67,9.38ZM35,14.65l-.84,5.83h-8V19.7a1.24,1.24,0,0,0,.76-.52,4.73,4.73,0,0,0,.4-1.63L29.15,4.1q.08-.57.12-1c0-.26,0-.48,0-.68a1.42,1.42,0,0,0-.21-1,1.67,1.67,0,0,0-.85-.31V.41h4.56v.78a1.67,1.67,0,0,0-1,.49,4.17,4.17,0,0,0-.44,1.66L29.49,17.65c0,.16,0,.31,0,.45a3.47,3.47,0,0,0,0,.48,1,1,0,0,0,.21.72.8.8,0,0,0,.59.21,3.54,3.54,0,0,0,2.56-1.05,9.24,9.24,0,0,0,1.91-3.94Zm2.79,4.73a1.61,1.61,0,0,0,.85.32v.78H34.39V19.7a1.18,1.18,0,0,0,.76-.52,4.76,4.76,0,0,0,.41-1.62L37.33,4.1c.05-.38.09-.7.11-1a5.83,5.83,0,0,0,0-.68,1.5,1.5,0,0,0-.2-1,1.71,1.71,0,0,0-.85-.31V.41h4.29v.78a1.22,1.22,0,0,0-.77.52,4.9,4.9,0,0,0-.39,1.63L37.78,16.8l-.11,1,0,.29c0,.11,0,.2,0,.29A1.52,1.52,0,0,0,37.83,19.38Zm12.2,0a1.81,1.81,0,0,0,.85.31v.78h-4.5V19.7a1.64,1.64,0,0,0,1-.49,4,4,0,0,0,.44-1.66l1.81-13.8-5.4,17.12h-.4l-1-16.64L41.39,15.12c-.07.56-.13,1-.17,1.39-.06.61-.09,1.09-.09,1.45a2,2,0,0,0,.4,1.45,1.19,1.19,0,0,0,.75.29v.78h-3V19.7a1.21,1.21,0,0,0,.81-.87,29.47,29.47,0,0,0,.66-3.71L42.21,4c0-.38.09-.71.12-1a5.41,5.41,0,0,0,.05-.75c0-.42-.07-.69-.21-.8a1.69,1.69,0,0,0-.83-.21V.41h3.29l.83,14.14L49.85.41h3.07v.78a1.12,1.12,0,0,0-.69.41,4.08,4.08,0,0,0-.48,1.69L50,16.79c0,.29-.08.59-.11.89s0,.56,0,.76A1.41,1.41,0,0,0,50,19.39Zm5,0a1.61,1.61,0,0,0,.85.32v.78H51.56V19.7a1.18,1.18,0,0,0,.76-.52,4.76,4.76,0,0,0,.41-1.62L54.5,4.1c0-.38.09-.7.11-1a5.83,5.83,0,0,0,0-.68,1.5,1.5,0,0,0-.2-1,1.71,1.71,0,0,0-.85-.31V.41h4.29v.78a1.22,1.22,0,0,0-.77.52,4.9,4.9,0,0,0-.39,1.63L55,16.8l-.11,1,0,.29c0,.11,0,.2,0,.29A1.52,1.52,0,0,0,55,19.38ZM66.13,5.75,64.13,21h-.36L60,4.38,58.6,15.12c-.12.89-.2,1.55-.23,2a7.32,7.32,0,0,0,0,.81,2.17,2.17,0,0,0,.38,1.46,1.32,1.32,0,0,0,.77.32v.78h-3V19.7a1.26,1.26,0,0,0,.81-.91,29,29,0,0,0,.65-3.67L59.56,2.81,59.5,2.5a2,2,0,0,0-.45-1.06,1.21,1.21,0,0,0-.67-.25V.41h2.9L64.4,14.28,65.52,5.8c.07-.53.12-1,.16-1.41.06-.62.09-1.08.09-1.36a2.45,2.45,0,0,0-.34-1.51,1.39,1.39,0,0,0-.79-.33V.41h3v.78l-.21.06c-.29.08-.52.43-.68,1A34.22,34.22,0,0,0,66.13,5.75ZM83.27,1A3.41,3.41,0,0,0,81.21.41h-4v.78a1.74,1.74,0,0,1,.85.3c.14.13.2.43.2.91,0,.24,0,.56-.06,1,0,.21-.06.45-.09.73L76.38,17.56A4.53,4.53,0,0,1,76,19.18a1.18,1.18,0,0,1-.76.52v0a1,1,0,0,1-.67-.45,8.11,8.11,0,0,1-.34-2.12L72.83,0h-.38L67.11,17.64a6.42,6.42,0,0,1-.63,1.58,1.84,1.84,0,0,1-.59.54v.72h2.83v-.72a1.68,1.68,0,0,1-.75-.31,1.16,1.16,0,0,1-.18-.79,3.46,3.46,0,0,1,.07-.7,5.16,5.16,0,0,1,.15-.67l.84-3H72c.08,1.28.13,2,.13,2.18.06.85.08,1.39.08,1.61a2.26,2.26,0,0,1-.25,1.31,1.43,1.43,0,0,1-.88.42v.72H79.5V19.7a1.58,1.58,0,0,1-.86-.32,1.7,1.7,0,0,1-.19-1c0-.1,0-.2,0-.29a1.81,1.81,0,0,1,0-.25l.12-1,.85-6.24h.41l1.55,9.92h2.9V19.7a1,1,0,0,1-.79-.41A5.15,5.15,0,0,1,83,17.56l-1.11-6.77c0-.08,0-.27-.09-.58a5.53,5.53,0,0,0,.92-.53,3.52,3.52,0,0,0,.87-1,6.16,6.16,0,0,0,.75-1.93,9.67,9.67,0,0,0,.23-2C84.61,2.89,84.16,1.62,83.27,1ZM69.19,13.05l2.13-7.3.53,7.3Zm13-6.47a8.39,8.39,0,0,1-.46,1.65,2,2,0,0,1-1,1.15,3.29,3.29,0,0,1-1.14.2l.87-6.87a3.61,3.61,0,0,1,.23-1.06.45.45,0,0,1,.43-.27,1.05,1.05,0,0,1,1,.83,6.14,6.14,0,0,1,.3,2.08A11,11,0,0,1,82.22,6.58ZM90.48.41h3v.78a1.07,1.07,0,0,0-.55.41,6.13,6.13,0,0,0-.77,1.62l-2.72,8-.72,5.55c0,.22-.07.51-.1.86a7.29,7.29,0,0,0-.06.73,1.46,1.46,0,0,0,.29,1.07,1.61,1.61,0,0,0,.83.25v.78H85V19.7a1.56,1.56,0,0,0,.93-.39,3.7,3.7,0,0,0,.53-1.76l.85-6.45-1.26-8a6.07,6.07,0,0,0-.36-1.47.81.81,0,0,0-.7-.4V.41h4v.78a1.32,1.32,0,0,0-.76.23c-.15.12-.23.4-.23.84a4.46,4.46,0,0,0,0,.48c0,.19,0,.39.07.6l1,6.54,1.88-5.55c.1-.29.18-.55.24-.79a4.68,4.68,0,0,0,.14-1.11,1.35,1.35,0,0,0-.31-1,1.14,1.14,0,0,0-.66-.2Zm18.61,1.22c.1-.19.35-.28.73-.28a2.16,2.16,0,0,1,2.23,1.54A10.27,10.27,0,0,1,112.39,6l.38.13.62-5.7h-7.76v.78a1.67,1.67,0,0,1,.86.31,1.59,1.59,0,0,1,.19,1,6.58,6.58,0,0,1,0,.71c0,.28-.07.59-.11.93l-1.77,13.46a4.53,4.53,0,0,1-.41,1.62,1.17,1.17,0,0,1-.73.51,1,1,0,0,1-.73-.4,5.08,5.08,0,0,1-.49-1.73l-1.1-6.77c0-.08,0-.27-.1-.58a5.14,5.14,0,0,0,.92-.53,3.4,3.4,0,0,0,.88-1,6.16,6.16,0,0,0,.75-1.93,9.63,9.63,0,0,0,.22-2c0-1.87-.44-3.14-1.34-3.81a3.38,3.38,0,0,0-2-.54h-4v.78a1.78,1.78,0,0,1,.85.3,1.4,1.4,0,0,1,.19.91c0,.24,0,.56-.06,1,0,.21,0,.45-.09.73L95.74,17.56a4.53,4.53,0,0,1-.41,1.62,1.15,1.15,0,0,1-.75.52v.78h4.28V19.7a1.62,1.62,0,0,1-.86-.32,1.72,1.72,0,0,1-.18-1v-.29c0-.09,0-.18,0-.25l.12-1,.86-6.24h.4l1.55,9.92h10.8l.85-5.83-.35-.13a7.9,7.9,0,0,1-2.24,4.23,3.35,3.35,0,0,1-2.23.76.71.71,0,0,1-.65-.26,1.37,1.37,0,0,1-.15-.68c0-.09,0-.23,0-.39s0-.34.05-.51l.95-7.33a1.92,1.92,0,0,1,1.65.59,4,4,0,0,1,.42,2.18c0,.14,0,.31,0,.52s0,.46,0,.74l.4.15,1.07-8.21-.41-.1a7,7,0,0,1-1,2.65,3.15,3.15,0,0,1-2,.52l.85-6.67A3,3,0,0,1,109.09,1.63Zm-9,7.75a3.35,3.35,0,0,1-1.15.2l.87-6.87a4,4,0,0,1,.23-1.06.45.45,0,0,1,.43-.27,1.05,1.05,0,0,1,1,.83,6.14,6.14,0,0,1,.3,2.08,11.74,11.74,0,0,1-.21,2.29,9,9,0,0,1-.47,1.65A2,2,0,0,1,100.1,9.38ZM120.18.07h.43l-.59,6-.37-.1-.05-1a10.11,10.11,0,0,0-.41-2.39c-.34-1-.83-1.57-1.48-1.57s-.95.42-1.21,1.26a6.17,6.17,0,0,0-.25,1.8,5.92,5.92,0,0,0,.26,1.82,5.23,5.23,0,0,0,.44,1L118.19,9a12.6,12.6,0,0,1,1.12,2.57,10.75,10.75,0,0,1,.47,3.29,10,10,0,0,1-.9,4.29,2.76,2.76,0,0,1-2.46,1.91,2.17,2.17,0,0,1-.79-.15,3.28,3.28,0,0,1-.79-.44l-.36-.28-.26-.18a.38.38,0,0,0-.16,0,.34.34,0,0,0-.34.23,5.5,5.5,0,0,0-.23.84h-.43l.52-6.73.41.06c0,1,.07,1.66.12,2.09a7.13,7.13,0,0,0,.49,1.95,3.52,3.52,0,0,0,.73,1.18,1.25,1.25,0,0,0,.9.41c.57,0,1-.39,1.34-1.15a7.13,7.13,0,0,0,.47-2.68,9.86,9.86,0,0,0-1.76-4.77,11.23,11.23,0,0,1-1.77-5.58,9.8,9.8,0,0,1,.78-4.12A2.41,2.41,0,0,1,117.46,0a2.06,2.06,0,0,1,.79.16,1.9,1.9,0,0,1,.47.25l.37.25a1.15,1.15,0,0,0,.25.12.47.47,0,0,0,.22,0A.44.44,0,0,0,120,.62,2.6,2.6,0,0,0,120.18.07Zm10,2a26.67,26.67,0,0,0-.66,3.7l-.9,6.85a32.12,32.12,0,0,1-1.16,5.7c-.68,1.83-1.67,2.74-3,2.74a2.7,2.7,0,0,1-2.28-1.36,6.67,6.67,0,0,1-.92-3.77,19.46,19.46,0,0,1,.11-2c0-.46.15-1.26.3-2.42l1-7.36c0-.33.08-.64.11-.93s0-.55,0-.77a1.38,1.38,0,0,0-.2-.91,1.74,1.74,0,0,0-.85-.3V.41h4.43v.78a1.39,1.39,0,0,0-.91.47,4.25,4.25,0,0,0-.44,1.68l-1.18,9c-.11.8-.19,1.46-.25,2q-.15,1.37-.15,2a4.41,4.41,0,0,0,.48,2.27,1.44,1.44,0,0,0,1.29.78c.91,0,1.62-.82,2.13-2.48a30.62,30.62,0,0,0,.91-4.85L129,5.76c.1-.91.14-1.3.13-1.19a14.64,14.64,0,0,0,.13-1.6,2.12,2.12,0,0,0-.38-1.46,1.35,1.35,0,0,0-.77-.32V.41H131v.78A1.18,1.18,0,0,0,130.23,2.06Zm8.41,12.59-.84,5.83h-8V19.7a1.24,1.24,0,0,0,.76-.52,4.73,4.73,0,0,0,.4-1.63L132.75,4.1q.08-.57.12-1c0-.26,0-.48,0-.68,0-.51-.06-.83-.2-1a1.67,1.67,0,0,0-.85-.31V.41h4.56v.78a1.67,1.67,0,0,0-1,.49A4.17,4.17,0,0,0,135,3.34l-1.87,14.31c0,.16,0,.31-.05.45s0,.3,0,.48a1,1,0,0,0,.21.72.8.8,0,0,0,.59.21,3.54,3.54,0,0,0,2.56-1.05,9.24,9.24,0,0,0,1.91-3.94Zm7.72-8.56a7.63,7.63,0,0,0-.79-4,1.53,1.53,0,0,0-1.21-.64l-2,15.35-.12,1a2.47,2.47,0,0,0,0,.34,2.35,2.35,0,0,0,0,.26c0,.52.08.84.23,1a2,2,0,0,0,1,.3v.78h-4.76V19.7a1.18,1.18,0,0,0,.9-.26,3.75,3.75,0,0,0,.6-1.88l2.11-16.11a2.17,2.17,0,0,0-1.83,1.08,9.57,9.57,0,0,0-1.27,3.21l-.37-.2.56-5.13h7.91l-.52,5.76Zm3.41-3.79a6.17,6.17,0,0,0-.25,1.8,5.63,5.63,0,0,0,.26,1.82,5.23,5.23,0,0,0,.44,1L151.46,9a13.19,13.19,0,0,1,1.13,2.57,11.08,11.08,0,0,1,.46,3.29,10,10,0,0,1-.9,4.29,2.76,2.76,0,0,1-2.46,1.91,2.21,2.21,0,0,1-.79-.15,3.28,3.28,0,0,1-.79-.44l-.36-.28-.26-.18a.38.38,0,0,0-.16,0,.34.34,0,0,0-.34.23,5.5,5.5,0,0,0-.23.84h-.43l.52-6.73.41.06c0,1,.07,1.66.12,2.09a7.13,7.13,0,0,0,.49,1.95,3.52,3.52,0,0,0,.73,1.18,1.25,1.25,0,0,0,.9.41c.57,0,1-.39,1.34-1.15a7.13,7.13,0,0,0,.47-2.68,9.86,9.86,0,0,0-1.76-4.77,11.23,11.23,0,0,1-1.77-5.58,9.8,9.8,0,0,1,.78-4.12A2.41,2.41,0,0,1,150.73,0a2.06,2.06,0,0,1,.79.16,1.9,1.9,0,0,1,.47.25l.37.25a1.34,1.34,0,0,0,.24.12.56.56,0,0,0,.23,0,.44.44,0,0,0,.39-.21,2.6,2.6,0,0,0,.23-.55h.43l-.59,6-.37-.1,0-1a10.11,10.11,0,0,0-.41-2.39c-.34-1-.83-1.57-1.48-1.57S150,1.46,149.77,2.3Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 153.879, height: 21.051, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'InformationOnly':\n case 'Information Only':\n {\n stampCollection = {\n iconName: 'Information Only',\n // eslint-disable-next-line max-len\n pathdata: 'M4,19.14a2,2,0,0,0,1,.32v.76H0v-.76a1.42,1.42,0,0,0,.87-.52,4,4,0,0,0,.47-1.59l2-13.24c.06-.38.1-.69.13-1a5.73,5.73,0,0,0,0-.67c0-.5-.08-.81-.24-.94a2.2,2.2,0,0,0-1-.31V.48H7.26v.76a1.48,1.48,0,0,0-.88.52,4.14,4.14,0,0,0-.45,1.6l-2,13.24-.13,1c0,.1,0,.19,0,.3a2.72,2.72,0,0,0,0,.28A1.32,1.32,0,0,0,4,19.14ZM18.17,1.3l.24-.06V.48H15v.76a1.66,1.66,0,0,1,.9.33,2.08,2.08,0,0,1,.4,1.48,12.85,12.85,0,0,1-.1,1.34c-.05.41-.11.87-.18,1.39l-1.29,8.34L11.15.48H7.83v.76a1.69,1.69,0,0,1,.77.24,1.9,1.9,0,0,1,.51,1.06l.07.3L7.33,15a24.86,24.86,0,0,1-.76,3.61,1.32,1.32,0,0,1-.92.9v.76H9.09v-.76a1.67,1.67,0,0,1-.88-.32,1.92,1.92,0,0,1-.44-1.44,7.09,7.09,0,0,1,0-.79c0-.43.13-1.09.27-2L9.72,4.38,14,20.71h.41l2.3-15a28.78,28.78,0,0,1,.67-3.42C17.57,1.72,17.83,1.38,18.17,1.3ZM19.33.48v.76a2.32,2.32,0,0,1,1,.3c.15.13.23.42.23.9,0,.23,0,.55-.07,1,0,.2-.06.44-.1.71l-2,13.23a4,4,0,0,1-.46,1.58,1.39,1.39,0,0,1-.88.54v.76h4.89v-.76a1.36,1.36,0,0,1-.78-.19,1.39,1.39,0,0,1-.41-1.17c0-.1,0-.21,0-.31s0-.22,0-.35l1.09-7.21a2.09,2.09,0,0,1,1.83.64A3.81,3.81,0,0,1,24.1,13c0,.11,0,.28,0,.49s0,.46,0,.75l.45.14,1.22-8.07-.46-.1a6.19,6.19,0,0,1-1.11,2.59A3.89,3.89,0,0,1,22,9.28l1-6.54a2.43,2.43,0,0,1,.33-1.08.93.93,0,0,1,.76-.26,2.45,2.45,0,0,1,2.52,1.54A9,9,0,0,1,27,6l.44.13.7-5.6ZM39.06,7.11a21,21,0,0,1-2,9.07q-2.16,4.61-5,4.6a3.28,3.28,0,0,1-2.88-1.92,10.29,10.29,0,0,1-1.11-5.14,21.08,21.08,0,0,1,2.07-9.19Q32.31,0,35,0a3.37,3.37,0,0,1,2.93,1.92A10.14,10.14,0,0,1,39.06,7.11ZM36.68,4.6a7,7,0,0,0-.42-2.55A1.37,1.37,0,0,0,35,1c-1.37,0-2.52,2.17-3.46,6.53a40.81,40.81,0,0,0-1.07,8.26,10,10,0,0,0,.21,2.2c.26,1.18.74,1.77,1.43,1.77s1.24-.43,1.78-1.29a18.75,18.75,0,0,0,1.65-4.93,43.28,43.28,0,0,0,.85-4.83A36.93,36.93,0,0,0,36.68,4.6ZM61,19.15a2.25,2.25,0,0,0,1,.31v.76H56.84v-.76A2,2,0,0,0,58,19a3.6,3.6,0,0,0,.5-1.63L60.56,3.76l-6.2,16.85H53.9L52.78,4.24,51.12,15c-.09.55-.15,1-.2,1.37a13,13,0,0,0-.11,1.42,1.8,1.8,0,0,0,.46,1.43,1.54,1.54,0,0,0,.86.29v.76H45.49l-1.78-9.76h-.47l-1,6.14-.13,1,0,.25c0,.09,0,.19,0,.28a1.47,1.47,0,0,0,.22,1,2,2,0,0,0,1,.32v.76H38.37v-.76a1.42,1.42,0,0,0,.88-.52,4.21,4.21,0,0,0,.46-1.59l2-13.24c0-.27.08-.51.11-.71a8.23,8.23,0,0,0,.07-1,1.23,1.23,0,0,0-.23-.9,2.32,2.32,0,0,0-1-.3V.48h4.54A4.34,4.34,0,0,1,47.62,1c1,.65,1.54,1.9,1.54,3.75a7.78,7.78,0,0,1-.26,2A5.56,5.56,0,0,1,48,8.62a3.87,3.87,0,0,1-1,1,8.06,8.06,0,0,1-1.06.52c.05.3.09.49.11.57l1.27,6.66a4.58,4.58,0,0,0,.55,1.7,1.23,1.23,0,0,0,.83.39,1.31,1.31,0,0,0,.86-.84A23,23,0,0,0,50.36,15L52.05,4c.06-.37.11-.7.15-1a7.42,7.42,0,0,0,0-.75c0-.41-.08-.67-.25-.78a2.09,2.09,0,0,0-.94-.21V.48h3.77l1,13.91,5-13.91h3.51v.76a1.46,1.46,0,0,0-.79.4A3.71,3.71,0,0,0,63,3.31L61,16.59c0,.29-.09.58-.13.88s-.05.55-.05.75Q60.79,19,61,19.15Zm-15.14-11a7.46,7.46,0,0,0,.53-1.62,9.54,9.54,0,0,0,.25-2.26,5.31,5.31,0,0,0-.35-2,1.18,1.18,0,0,0-1.16-.81.54.54,0,0,0-.5.26,3.37,3.37,0,0,0-.26,1.05l-1,6.76a4.28,4.28,0,0,0,1.31-.2A2.17,2.17,0,0,0,45.89,8.17ZM73.21,19.51v.71h-5v-.71a1.61,1.61,0,0,0,1-.41,1.92,1.92,0,0,0,.3-1.29c0-.22,0-.75-.09-1.58,0-.17-.06-.89-.16-2.15H65.68l-1,3c-.06.2-.12.42-.17.66a3.4,3.4,0,0,0-.08.69q0,.62.21.78a1.9,1.9,0,0,0,.86.3v.71H62.29v-.71A2,2,0,0,0,63,19a6.47,6.47,0,0,0,.72-1.56L69.82.07h.43L71.83,17A6.77,6.77,0,0,0,72.22,19,1.23,1.23,0,0,0,73.21,19.51Zm-4.08-6.6-.61-7.18-2.44,7.18ZM82.52,6.14l.6-5.66H74l-.63,5,.42.2a8.71,8.71,0,0,1,1.46-3.16,2.57,2.57,0,0,1,2.1-1.06L75,17.35a3.36,3.36,0,0,1-.68,1.85,1.57,1.57,0,0,1-1,.26v.76H78.7v-.76a2.69,2.69,0,0,1-1.11-.3c-.18-.13-.27-.45-.27-.95a2.26,2.26,0,0,1,0-.26c0-.09,0-.2,0-.33l.14-1L79.8,1.5a1.87,1.87,0,0,1,1.39.63c.58.7.88,2,.91,3.94ZM88.84.48H83.92v.76a2.31,2.31,0,0,1,1,.31c.15.13.23.44.23.94a5.56,5.56,0,0,1,0,.67c0,.26-.08.57-.14,1l-2,13.24a4,4,0,0,1-.47,1.59,1.36,1.36,0,0,1-.87.52v.76H86.5v-.76a2,2,0,0,1-1-.32,1.32,1.32,0,0,1-.23-.94c0-.09,0-.18,0-.28s0-.2,0-.3l.13-1,2-13.24A4.09,4.09,0,0,1,88,1.76a1.45,1.45,0,0,1,.87-.52ZM99.11,7.11a21,21,0,0,1-2,9.07q-2.16,4.61-5,4.6a3.28,3.28,0,0,1-2.88-1.92,10.29,10.29,0,0,1-1.11-5.14,21.08,21.08,0,0,1,2.07-9.19C91.63,1.51,93.25,0,95,0A3.36,3.36,0,0,1,98,1.92,10,10,0,0,1,99.11,7.11ZM96.72,4.6a7.18,7.18,0,0,0-.41-2.55c-.28-.7-.7-1-1.29-1-1.37,0-2.52,2.17-3.46,6.53a40.7,40.7,0,0,0-1.06,8.26,10,10,0,0,0,.2,2.2c.26,1.18.74,1.77,1.43,1.77a2.2,2.2,0,0,0,1.78-1.29,18.75,18.75,0,0,0,1.65-4.93,41.1,41.1,0,0,0,.85-4.83A34.65,34.65,0,0,0,96.72,4.6Zm11.1-3.36a1.66,1.66,0,0,1,.9.33,2.08,2.08,0,0,1,.4,1.48,12.85,12.85,0,0,1-.1,1.34c0,.41-.11.87-.18,1.39l-1.29,8.34L104,.48h-3.33v.76a1.7,1.7,0,0,1,.78.24,2,2,0,0,1,.51,1.06l.07.3L100.13,15a24,24,0,0,1-.75,3.61,1.35,1.35,0,0,1-.93.9v.76h3.45v-.76a1.67,1.67,0,0,1-.88-.32,1.88,1.88,0,0,1-.44-1.44,7.09,7.09,0,0,1,0-.79c0-.43.13-1.09.27-2l1.64-10.57,4.29,16.33h.41l2.3-15a28.78,28.78,0,0,1,.67-3.42c.18-.59.44-.93.78-1l.23-.06V.48h-3.39ZM125,7.11a21,21,0,0,1-2,9.07c-1.45,3.07-3.1,4.6-5,4.6a3.28,3.28,0,0,1-2.87-1.92A10.29,10.29,0,0,1,114,13.72a21.22,21.22,0,0,1,2.06-9.19Q118.22,0,120.91,0a3.36,3.36,0,0,1,2.92,1.92A10,10,0,0,1,125,7.11ZM122.59,4.6a7,7,0,0,0-.41-2.55,1.37,1.37,0,0,0-1.28-1c-1.37,0-2.53,2.17-3.46,6.53a40.11,40.11,0,0,0-1.07,8.26,10.65,10.65,0,0,0,.2,2.2q.39,1.77,1.44,1.77a2.2,2.2,0,0,0,1.77-1.29,18.29,18.29,0,0,0,1.66-4.93,45.71,45.71,0,0,0,.85-4.83A36.53,36.53,0,0,0,122.59,4.6Zm14.26-3.3.24-.06V.48h-3.4v.76a1.74,1.74,0,0,1,.91.33,2.13,2.13,0,0,1,.4,1.48c0,.28,0,.73-.11,1.34,0,.41-.11.87-.18,1.39l-1.29,8.34L129.83.48h-3.32v.76a1.69,1.69,0,0,1,.77.24,1.9,1.9,0,0,1,.51,1.06l.07.3L126,15a27,27,0,0,1-.75,3.61,1.35,1.35,0,0,1-.93.9v.76h3.44v-.76a1.67,1.67,0,0,1-.88-.32,1.92,1.92,0,0,1-.44-1.44c0-.26,0-.52,0-.79.05-.43.13-1.09.27-2l1.65-10.57,4.29,16.33h.41l2.29-15a31.07,31.07,0,0,1,.67-3.42C136.25,1.72,136.52,1.38,136.85,1.3Zm8.52,13.06a8.55,8.55,0,0,1-2.19,3.87,4.44,4.44,0,0,1-2.94,1,1,1,0,0,1-.68-.21.9.9,0,0,1-.24-.7,3.4,3.4,0,0,1,0-.48c0-.14,0-.28,0-.44l2.15-14.08a3.69,3.69,0,0,1,.5-1.64,2.22,2.22,0,0,1,1.16-.48V.48H138v.76a2.2,2.2,0,0,1,1,.31c.16.13.24.44.24.94a5.73,5.73,0,0,1-.05.67c0,.26-.07.57-.13,1l-2,13.23a4,4,0,0,1-.47,1.6,1.36,1.36,0,0,1-.87.52v.76h9.16l1-5.74ZM151.79.48v.76a1.52,1.52,0,0,1,.76.2,1.21,1.21,0,0,1,.37,1,4.09,4.09,0,0,1-.17,1.09c-.07.24-.16.5-.27.79L150.32,9.8l-1.18-6.44a4.51,4.51,0,0,1-.08-.6,4.37,4.37,0,0,1,0-.46c0-.43.09-.71.27-.83a1.75,1.75,0,0,1,.87-.23V.48h-4.63v.76a.94.94,0,0,1,.8.4,5.08,5.08,0,0,1,.42,1.44L148.2,11l-1,6.35a3.35,3.35,0,0,1-.61,1.73,1.91,1.91,0,0,1-1.06.39v.76h5.32v-.76a2,2,0,0,1-.95-.25,1.29,1.29,0,0,1-.33-1.05,7.29,7.29,0,0,1,.06-.73q.06-.51.12-.84l.82-5.46,3.12-7.89a5.54,5.54,0,0,1,.89-1.59,1.28,1.28,0,0,1,.63-.41V.48Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 155.237, height: 20.783, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n }\n if (stampCollection) {\n stampCollection.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.currentStampAnnotation = stampCollection;\n return stampCollection;\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.saveStampAnnotations = function () {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'];\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject && !this.pdfViewer.annotationSettings.skipDownload) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.storeStampInSession = function (pageNumber, annotation) {\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n var currentAnnotation = Math.round(JSON.stringify(annotation).length / 1024);\n if ((sessionSize + currentAnnotation) > 4500) {\n this.pdfViewerBase.isStorageExceed = true;\n this.pdfViewer.annotationModule.clearAnnotationStorage();\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n var index = 0;\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'];\n }\n if (!storeObject) {\n this.pdfViewer.annotationModule.storeAnnotationCollections(annotation, pageNumber);\n var shapeAnnotation = { pageIndex: pageNumber, annotations: [] };\n shapeAnnotation.annotations.push(annotation);\n index = shapeAnnotation.annotations.indexOf(annotation);\n var annotationCollection = [];\n annotationCollection.push(shapeAnnotation);\n var annotationStringified = JSON.stringify(annotationCollection);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_stamp', annotationStringified);\n }\n }\n else {\n this.pdfViewer.annotationModule.storeAnnotationCollections(annotation, pageNumber);\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n }\n var pageIndex = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[pageIndex]) {\n annotObject[pageIndex].annotations.push(annotation);\n index = annotObject[pageIndex].annotations.indexOf(annotation);\n }\n else {\n var markupAnnotation = { pageIndex: pageNumber, annotations: [] };\n markupAnnotation.annotations.push(annotation);\n index = markupAnnotation.annotations.indexOf(annotation);\n annotObject.push(markupAnnotation);\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_stamp', annotationStringified);\n }\n }\n return index;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.updateSessionStorage = function (annotation, id, type) {\n if (id != null) {\n for (var p = 0; p < annotation.annotations.length; p++) {\n if (annotation.annotations[p].id === id) {\n annotation = annotation.annotations[p];\n break;\n }\n }\n }\n if (type === 'Rotate') {\n annotation = annotation.annotations[0];\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'];\n }\n if (storeObject) {\n // eslint-disable-next-line\n var bounds = annotation.bounds;\n var annotObject = JSON.parse(storeObject);\n for (var k = 0; k < annotObject.length; k++) {\n // eslint-disable-next-line\n var currentAnnot = annotObject[k];\n for (var j = 0; j < currentAnnot.annotations.length; j++) {\n if (annotObject[k].annotations[j] != null && annotObject[k].annotations[j].randomId === annotation.id) {\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n }\n // eslint-disable-next-line max-len\n var pageIndex = this.pdfViewer.annotationModule.getPageCollection(annotObject, annotObject[k].annotations[j].pageNumber);\n if (type !== 'delete') {\n if (annotObject[pageIndex]) {\n // eslint-disable-next-line max-len\n //annotObject[k].annotations[j].modifiedDate = new Date().toLocaleString();\n if (annotation.wrapper.children[1]) {\n annotObject[k].annotations[j].opacity = annotation.wrapper.children[1].style.opacity;\n }\n else {\n annotObject[k].annotations[j].opacity = annotation.wrapper.children[0].style.opacity;\n }\n annotObject[k].annotations[j].rotateAngle = annotation.rotateAngle;\n // eslint-disable-next-line max-len\n annotObject[k].annotations[j].bounds = { left: bounds.x, top: bounds.y, width: annotation.wrapper.actualSize.width, height: annotation.wrapper.actualSize.height, right: bounds.right, bottom: bounds.bottom };\n }\n }\n else {\n annotObject[k].annotations.splice(j, 1);\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_stamp', annotationStringified);\n }\n break;\n }\n }\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.saveImportedStampAnnotations = function (annotation, pageNumber) {\n var annotationObject = null;\n var isDynamic = false;\n // eslint-disable-next-line\n var stampAnnotation;\n // eslint-disable-next-line\n var stampName = annotation['IsDynamic'];\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stampSettings);\n annotation.allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n if (annotation.Subject && stampName) {\n stampAnnotation = this.retrieveDynamicStampAnnotation(annotation.Subject);\n isDynamic = true;\n }\n else if (annotation.Subject) {\n stampAnnotation = this.retrievestampAnnotation(annotation.Subject);\n if (annotation.Subject === 'Accepted' || annotation.Subject === 'Rejected') {\n // eslint-disable-next-line\n var collectionData = processPathData(stampAnnotation.pathdata);\n stampAnnotation.pathdata = splitArrayCollection(collectionData);\n isDynamic = true;\n }\n }\n else {\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.customStampSettings);\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'image', author: annotation.Author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, allowedInteractions: annotation.allowedInteractions,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, stampFillcolor: annotation.FillColor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.RotateAngle, creationDate: annotation.ModifiedDate, pageNumber: pageNumber, icon: '', stampAnnotationPath: this.findImageData(annotation.Apperarance), randomId: 'image', isDynamicStamp: this.pdfViewerBase.isDynamicStamp, dynamicText: ' ',\n bounds: this.calculateImagePosition(annotation.Rect, true), annotName: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.Author, modifiedDate: annotation.ModifiedDate }, shapeAnnotationType: 'stamp',\n // eslint-disable-next-line max-len\n annotationSelectorSettings: this.getSettings(annotation), annotationSettings: annotation.annotationSettings, customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.isPrint, isCommentLock: annotation.IsCommentLock, isMaskedImage: annotation.IsMaskedImage, customStampName: annotation.CustomStampName\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_stamp');\n }\n if (stampAnnotation) {\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'path', author: annotation.Author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, stampFillcolor: stampAnnotation.stampFillColor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.RotateAngle, creationDate: annotation.ModifiedDate, pageNumber: pageNumber, icon: stampAnnotation.iconName, stampAnnotationPath: stampAnnotation.pathdata, randomId: 'stamp', isDynamicStamp: false, dynamicText: this.dynamicText,\n // eslint-disable-next-line max-len\n bounds: this.calculateImagePosition(annotation.Rect, true), annotName: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.Author, modifiedDate: annotation.ModifiedDate }, shapeAnnotationType: 'stamp',\n // eslint-disable-next-line max-len\n annotationSelectorSettings: this.getSettings(annotation), annotationSettings: annotation.AnnotationSettings, customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.isPrint, isCommentLock: annotation.IsCommentLock, isMaskedImage: annotation.IsMaskedImage, customStampName: ''\n };\n if (isDynamic) {\n annotationObject.dynamicText = this.findDynamicText(annotation.Apperarance, annotation.Subject);\n annotationObject.isDynamicStamp = true;\n }\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_stamp');\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.updateStampAnnotationCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var annotationObject = null;\n // eslint-disable-next-line\n var stampAnnotation;\n // eslint-disable-next-line\n var stampName = annotation['IsDynamic'];\n // eslint-disable-next-line\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n if (annotation.Subject && stampName && annotation.Subject !== 'Draft') {\n stampAnnotation = this.retrieveDynamicStampAnnotation(annotation.Subject);\n }\n else if (annotation.Subject) {\n stampAnnotation = this.retrievestampAnnotation(annotation.Subject);\n }\n else {\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.customStampSettings);\n if (annotation.IsLocked) {\n annotation.AnnotationSettings.isLock = annotation.IsLocked;\n }\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'image', author: annotation.Author, modifiedDate: annotation.ModifiedDate, allowedInteractions: annotation.allowedInteractions,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, stampFillcolor: annotation.StampFillColor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.RotateAngle, pageNumber: pageNumber, randomId: 'stamp', isDynamicStamp: this.pdfViewerBase.isDynamicStamp, dynamicText: this.dynamicText,\n // eslint-disable-next-line max-len\n annotationId: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.Author, modifiedDate: annotation.ModifiedDate }, shapeAnnotationType: 'stamp', annotationSettings: annotation.AnnotationSettings, customData: this.pdfViewer.annotation.getCustomData(annotation),\n isPrint: annotation.isPrint, isMaskedImage: annotation.IsMaskedImage, customStampName: annotation.CustomStampName\n };\n return annotationObject;\n }\n if (stampAnnotation) {\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stampSettings);\n if (annotation.IsLocked) {\n annotation.AnnotationSettings.isLock = annotation.IsLocked;\n }\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'path', author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, stampFillcolor: annotation.StampFillColor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.RotateAngle, creationDate: stampAnnotation.creationDate, pageNumber: pageNumber, icon: stampAnnotation.iconName, stampAnnotationPath: stampAnnotation.pathdata, randomId: 'stamp', isDynamicStamp: this.pdfViewerBase.isDynamicStamp, dynamicText: this.dynamicText,\n // eslint-disable-next-line max-len\n bounds: { left: annotation.Rect.X, top: annotation.Rect.Y, width: annotation.Rect.Width, height: annotation.Rect.Height }, annotationId: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.Author, modifiedDate: annotation.ModifiedDate }, shapeAnnotationType: 'stamp', customData: this.pdfViewer.annotation.getCustomData(annotation),\n isPrint: annotation.isPrint, isMaskedImage: annotation.IsMaskedImage, customStampName: ''\n };\n return annotationObject;\n }\n };\n // eslint-disable-next-line\n StampAnnotation.prototype.findImageData = function (Apperance) {\n if (Apperance) {\n for (var j = 0; j < Apperance.length; j++) {\n // eslint-disable-next-line\n var stampShapes = Apperance[j];\n // eslint-disable-next-line\n var imageData = stampShapes['imagedata'];\n if (imageData) {\n return imageData;\n }\n }\n }\n return '';\n };\n // eslint-disable-next-line\n StampAnnotation.prototype.findDynamicText = function (apperance, subject) {\n var dynamicText = '';\n if (apperance) {\n for (var d = 0; d < apperance.length; d++) {\n // eslint-disable-next-line\n var stampShapes = apperance[d];\n // eslint-disable-next-line\n var stampType = stampShapes['type'];\n // eslint-disable-next-line\n var isImport = stampShapes['isImport'];\n // eslint-disable-next-line\n if (stampType === 'string' && stampShapes['text'] !== undefined) {\n // eslint-disable-next-line\n var text = void 0;\n if (!isImport) {\n // eslint-disable-next-line\n var stampText = stampShapes['text'].split('(');\n if (stampText[1]) {\n // eslint-disable-next-line\n text = stampText[1].split(')')[0];\n }\n else {\n // eslint-disable-next-line\n text = stampShapes['text'];\n }\n }\n else {\n // eslint-disable-next-line\n text = stampShapes['text'];\n }\n // eslint-disable-next-line\n if (text.toLowerCase() !== subject.toLowerCase()) {\n dynamicText += text;\n }\n }\n }\n return dynamicText;\n }\n return dynamicText;\n };\n // eslint-disable-next-line\n StampAnnotation.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.modifyInCollection = function (property, pageNumber, annotationBase) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n var currentAnnotObject = null;\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.annotName === pageAnnotations[i].annotName) {\n if (property === 'bounds') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.wrapper.bounds.x, top: annotationBase.wrapper.bounds.y, width: annotationBase.wrapper.bounds.width, height: annotationBase.wrapper.bounds.height };\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n }\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], pageNumber);\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n StampAnnotation.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_stamp', annotationStringified);\n }\n }\n };\n /**\n * This method used to add annotations with using programmatically.\n *\n * @param annotationObject - It describes type of annotation object\n * @param offset - It describes about the annotation bounds or location\n * @param pageNumber - It describes about the annotation page number\n * @param dynamicStampItem - It describe which type of dynamic stamp\n * @param signStampItem - It describe which type of sign stamp\n * @param standardBusinessStampItem - It describe which type of standard business stamp\n * @returns Object\n * @private\n */\n StampAnnotation.prototype.updateAddAnnotationDetails = function (annotationObject, offset, pageNumber, dynamicStampItem, signStampItem, standardBusinessStampItem) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { offset: { x: 10, y: 10 }, pageNumber: 0, width: undefined, height: undefined };\n offset = annotationObject.offset;\n }\n else if (!annotationObject.offset)\n offset = { x: 10, y: 10 };\n else\n offset = annotationObject.offset;\n //Checking the all stamps are present\n if (!dynamicStampItem && !signStampItem && !standardBusinessStampItem) {\n dynamicStampItem = DynamicStampItem.Approved;\n }\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n var page = pageNumber;\n //Creating annotation settings\n var stampAnnotations = [];\n var stampName = '';\n var stampAnnotationtype = 'Stamp';\n var apperarance = [];\n var isDynamic = false;\n var author = annotationObject.author ? annotationObject.author : 'Guest';\n var annotationSelectorSettings = this.pdfViewer.stampSettings.annotationSelectorSettings ? this.pdfViewer.stampSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n var annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stampSettings);\n var allowedInteractions = this.pdfViewer.stampSettings.allowedInteractions ? this.pdfViewer.stampSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n annotationSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n annotationSettings.minHeight = annotationObject.minHeight ? annotationObject.minHeight : 0;\n annotationSettings.minWidth = annotationObject.minWidth ? annotationObject.minWidth : 0;\n annotationSettings.maxWidth = annotationObject.maxWidth ? annotationObject.maxWidth : 0;\n annotationSettings.maxHeight = annotationObject.maxHeight ? annotationObject.maxHeight : 0;\n //checking the stamp is custom and Updating the string and datetime values for dynamic stamp\n if (annotationObject.customStamps && annotationObject.customStamps[0].customStampName) {\n apperarance[0] = {\n imagedata: annotationObject.customStamps[0].customStampImageSource,\n isImport: true\n };\n this.customStampName = annotationObject.customStamps[0].customStampName;\n this.pdfViewerBase.customStampCollection.push(annotationObject.customStamps[0]);\n stampAnnotationtype = 'Image';\n annotationObject.width = annotationObject.width ? annotationObject.width : 100;\n annotationObject.height = annotationObject.height ? annotationObject.height : 100;\n }\n else if (dynamicStampItem) {\n var dateTime = [];\n dateTime = currentDateString.split(' ');\n stampName = dynamicStampItem.toString();\n apperarance[0] = { baseFontName: 'Helvetica-BoldOblique', currentFontname: '95b303ab-d397-438a-83af-e2ff8a9900f1', fontSize: 10, isImport: true, text: 'By ' + author + ' at ' + dateTime[1] + dateTime[2] + ' , ' + dateTime[0], type: 'string' };\n isDynamic = true;\n annotationObject.width = annotationObject.width ? annotationObject.width : 140;\n annotationObject.height = annotationObject.height ? annotationObject.height : 55;\n }\n else if (signStampItem) {\n stampName = signStampItem.toString();\n if (signStampItem == SignStampItem.Accepted || signStampItem == SignStampItem.Rejected) {\n annotationObject.width = annotationObject.width ? annotationObject.width : 35;\n annotationObject.height = annotationObject.height ? annotationObject.height : 35;\n }\n else if (signStampItem == SignStampItem.SignHere) {\n annotationObject.width = annotationObject.width ? annotationObject.width : 110;\n annotationObject.height = annotationObject.height ? annotationObject.height : 30;\n }\n else if (signStampItem == SignStampItem.Witness) {\n annotationObject.width = annotationObject.width ? annotationObject.width : 130;\n annotationObject.height = annotationObject.height ? annotationObject.height : 30;\n }\n else if (signStampItem == SignStampItem.InitialHere) {\n annotationObject.width = annotationObject.width ? annotationObject.width : 90;\n annotationObject.height = annotationObject.height ? annotationObject.height : 30;\n }\n }\n else if (standardBusinessStampItem) {\n stampName = standardBusinessStampItem.toString();\n if (standardBusinessStampItem == StandardBusinessStampItem.Final || standardBusinessStampItem == StandardBusinessStampItem.Draft) {\n annotationObject.width = annotationObject.width ? annotationObject.width : 110;\n annotationObject.height = annotationObject.height ? annotationObject.height : 30;\n }\n else if (standardBusinessStampItem == StandardBusinessStampItem.Void) {\n annotationObject.width = annotationObject.width ? annotationObject.width : 100;\n annotationObject.height = annotationObject.height ? annotationObject.height : 30;\n }\n else {\n annotationObject.width = annotationObject.width ? annotationObject.width : 130;\n annotationObject.height = annotationObject.height ? annotationObject.height : 30;\n }\n }\n //Creating Annotation objects with it's proper properties\n var stickyNotes = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : allowedInteractions,\n AnnotName: annotationName,\n AnnotType: 'stamp',\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotationSelectorSettings,\n AnnotationSettings: annotationSettings,\n Apperarance: apperarance ? apperarance : null,\n Author: author,\n Comments: null,\n CreatedDate: currentDateString,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n ExistingCustomData: null,\n FillColor: '#192760',\n Icon: 0,\n IsCommentLock: false,\n IsDynamic: isDynamic,\n IsLocked: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: annotationObject.isPrint ? annotationObject.isPrint : true,\n ModifiedDate: '',\n Name: null,\n Note: '',\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n Rect: { X: offset.x, Y: offset.y, Width: annotationObject.width, Height: annotationObject.height, Left: offset.x, Top: offset.y, Location: { X: offset.x, Y: offset.y }, Size: { Height: annotationObject.height, IsEmpty: false, Width: annotationObject.width } },\n RotateAngle: 0,\n StampAnnotationtype: stampAnnotationtype,\n State: '',\n StateModel: '',\n StrokeColor: '#dce3ef',\n Subject: stampName,\n matrix: null,\n CustomStampName: this.customStampName ? this.customStampName : '',\n pageNumber: page\n };\n //Adding the annotation object to an array and return it\n stampAnnotations[0] = stickyNotes;\n return { stampAnnotations: stampAnnotations };\n };\n /**\n * @private\n */\n StampAnnotation.prototype.triggerAnnotationAdd = function (annot, annotation) {\n // eslint-disable-next-line\n var settings = {\n opacity: annot.opacity, borderColor: annot.strokeColor, borderWidth: annot.thickness, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n // eslint-disable-next-line\n fillColor: annot.fillColor, fontSize: annot.fontSize, width: annot.bounds.width, height: annot.bounds.height, fontColor: annot.fontColor, fontFamily: annot.fontFamily, defaultText: annot.dynamicText, fontStyle: annot.font, textAlignment: annot.textAlign\n };\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'Stamp', annot.bounds, settings);\n };\n return StampAnnotation;\n}());\nexport { StampAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event, 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 || this.isAngular || this.isVue) {\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 this.trgtEle = null;\n while (this.ctrlTem.firstElementChild) {\n ele.appendChild(this.ctrlTem.firstElementChild);\n }\n this.ctrlTem = null;\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 this.initializeHeaderTemplate();\n this.initializeItemTemplate();\n this.initialize();\n this.renderControl();\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 Accordion.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\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 [].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 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 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 if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.clickHandler = function (e) {\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 acrdnItem.appendChild(this.contentRendering(index));\n this.ariaAttrUpdate(acrdnItem);\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n else {\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\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 e.preventDefault();\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 e.preventDefault();\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-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', {\n className: CLS_ITEM, id: item.id || getUniqueID('acrdn_item'),\n attrs: { 'aria-expanded': 'false', 'role': 'row' }\n });\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 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 }\n else if (!isNOU(this.trgtEle) && (value instanceof (HTMLElement))) {\n ele.appendChild(value);\n ele.firstElementChild.style.display = '';\n }\n else {\n templateFn = templateCompiler(value);\n }\n }\n var tempArray;\n if (!isNOU(templateFn)) {\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 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-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.remove(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-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 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 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 * 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 ctn = ele.children[1];\n if (ele.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (isNOU(ctn) && isExpand) {\n ctn = this.contentRendering(index);\n ele.appendChild(ctn);\n this.ariaAttrUpdate(ele);\n this.expand(ctn);\n }\n else if (!isNOU(ctn)) {\n if (isExpand) {\n this.expand(ctn);\n }\n else {\n this.collapse(ctn);\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.destroyItems = function () {\n this.restoreContent(null);\n if (this.isReact || this.isAngular || this.isVue) {\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 if (this.isReact) {\n this.renderReactTemplates();\n }\n };\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 (!(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) {\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","/* 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') || (this.inputObj.container.classList.contains('e-static-clear'))) {\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 } 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 if (this.element.tagName.toLowerCase() === 'input') {\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 this.resetMaskedTextBox();\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","/**\n * In-place Editor classes defined here.\n */\n/** @hidden */\nexport var ROOT = 'e-inplaceeditor';\n/** @hidden */\nexport var ROOT_TIP = 'e-inplaceeditor-tip';\n/** @hidden */\nexport var VALUE_WRAPPER = 'e-editable-value-wrapper';\n/** @hidden */\nexport var VALUE = 'e-editable-value';\n/** @hidden */\nexport var OVERLAY_ICON = 'e-editable-overlay-icon';\n/** @hidden */\nexport var TIP_TITLE = 'e-editable-tip-title';\n/** @hidden */\nexport var TITLE = 'e-editable-title';\n/** @hidden */\nexport var INLINE = 'e-editable-inline';\n/** @hidden */\nexport var POPUP = 'e-editable-popup';\n/** @hidden */\nexport var WRAPPER = 'e-editable-wrapper';\n/** @hidden */\nexport var LOADING = 'e-editable-loading';\n/** @hidden */\nexport var FORM = 'e-editable-form';\n/** @hidden */\nexport var CTRL_GROUP = 'e-component-group';\n/** @hidden */\nexport var INPUT = 'e-editable-component';\n/** @hidden */\nexport var BUTTONS = 'e-editable-action-buttons';\n/** @hidden */\nexport var EDITABLE_ERROR = 'e-editable-error';\n/** @hidden */\nexport var ELEMENTS = 'e-editable-elements';\n/** @hidden */\nexport var OPEN = 'e-editable-open';\n/** @hidden */\nexport var BTN_SAVE = 'e-btn-save';\n/** @hidden */\nexport var BTN_CANCEL = 'e-btn-cancel';\n/** @hidden */\nexport var RTE_SPIN_WRAP = 'e-rte-spin-wrap';\n/** @hidden */\nexport var CTRL_OVERLAY = 'e-control-overlay';\n/** @hidden */\nexport var DISABLE = 'e-disable';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var PRIMARY = 'e-primary';\n/** @hidden */\nexport var SHOW = 'e-show';\n/** @hidden */\nexport var HIDE = 'e-hide';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var ERROR = 'e-error';\n/** @hidden */\nexport var LOAD = 'e-loading';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Configures the popup settings of the In-place editor.\n */\nvar PopupSettings = /** @class */ (function (_super) {\n __extends(PopupSettings, _super);\n function PopupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], PopupSettings.prototype, \"title\", void 0);\n __decorate([\n Property(null)\n ], PopupSettings.prototype, \"model\", void 0);\n return PopupSettings;\n}(ChildProperty));\nexport { PopupSettings };\n/**\n * @hidden\n */\nexport var modulesList = {\n /* eslint-disable */\n 'AutoComplete': 'auto-complete',\n 'Color': 'color-picker',\n 'ComboBox': 'combo-box',\n 'DateRange': 'date-range-picker',\n 'MultiSelect': 'multi-select',\n 'RTE': 'rte',\n 'Slider': 'slider',\n 'Time': 'time-picker'\n /* eslint-enable */\n};\n/**\n * @hidden\n */\n// eslint-disable-next-line\nexport var localeConstant = {\n /* eslint-disable */\n 'Click': { 'editAreaClick': 'Click to edit' },\n 'DblClick': { 'editAreaDoubleClick': 'Double click to edit' },\n 'EditIconClick': { 'editAreaClick': 'Click to edit' }\n /* eslint-enable */\n};\n","import { isNullOrUndefined as isNOU, Internationalization, isBlazor } from '@syncfusion/ej2-base';\n/**\n * Exports util methods used by In-place editor.\n */\nvar intl = new Internationalization();\n/**\n * @param {string} type - specifies the string type\n * @param {valueType} val - specifies the value type\n * @param {modelType} model - specifies the model type\n * @returns {string} - returns the string\n */\nexport function parseValue(type, val, model) {\n if (isNOU(val) || val === '') {\n return '';\n }\n var result;\n var tempFormat;\n switch (type) {\n case 'Color': {\n var hex = val;\n result = (hex.length > 7) ? hex.slice(0, -2) : hex;\n break;\n }\n case 'Date':\n tempFormat = model.format;\n result = intl.formatDate(val, { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' });\n break;\n case 'DateRange': {\n tempFormat = model.format;\n var date = val;\n result = intl.formatDate(date[0], { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' }) + ' - '\n + intl.formatDate(date[1], { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' });\n break;\n }\n case 'DateTime':\n tempFormat = model.format;\n if (isNOU(tempFormat) || tempFormat === '') {\n result = intl.formatDate(val, { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' }) + ' '\n + intl.formatDate(val, { format: tempFormat, type: type, skeleton: isBlazor() ? 't' : 'hm' });\n }\n else {\n result = intl.formatDate(val, { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' });\n }\n break;\n case 'Time':\n tempFormat = model.format;\n result = intl.formatDate(val, { format: tempFormat, type: type, skeleton: isBlazor() ? 't' : 'hm' });\n break;\n case 'Numeric': {\n tempFormat = isNOU(model.format) ? 'n2' :\n model.format;\n var tempVal = isNOU(val) ? null : (typeof (val) === 'number' ? val : intl.parseNumber(val));\n result = intl.formatNumber(tempVal, { format: tempFormat });\n break;\n }\n default:\n result = val.toString();\n break;\n }\n return result;\n}\n/**\n *\n * @param {string} type - specifies the string value\n * @param {valueType} val - specifies the value type\n * @returns {valueType} - returns the value type\n */\nexport function getCompValue(type, val) {\n if (isNOU(val) || val === '') {\n return val;\n }\n if ((type === 'Date' || type === 'Time' || type === 'DateTime') && typeof (val) === 'string') {\n val = new Date(val);\n }\n else if (type === 'DateRange') {\n if (typeof (val) === 'object' && typeof (val[0]) === 'string') {\n val = [new Date(val[0]), new Date(val[1])];\n }\n else if (typeof (val) === 'string') {\n var temp = val.split('-');\n val = [new Date(temp[0]), new Date(temp[1])];\n }\n }\n return val;\n}\n/**\n * @param {string} value - specifies the string value\n * @returns {string} - returns the string\n * @hidden\n */\nexport function encode(value) {\n var data = [];\n for (var i = value.length - 1; i >= 0; i--) {\n data.unshift([\"&#\", value[i].charCodeAt(0), \";\"].join(\"\"));\n }\n return data.join(\"\");\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, NotifyPropertyChanges, Property, Event, select } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, EventHandler, setStyleAttribute, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, closest, extend, L10n, compile, Browser, Touch } from '@syncfusion/ej2-base';\nimport { updateBlazorTemplate, resetBlazorTemplate, SanitizeHtmlHelper, getValue, isBlazor } from '@syncfusion/ej2-base';\nimport { DataManager, UrlAdaptor, Query, WebApiAdaptor, ODataV4Adaptor, Predicate } from '@syncfusion/ej2-data';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { NumericTextBox, TextBox } from '@syncfusion/ej2-inputs';\nimport { FormValidator, MaskedTextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/* Helper modules */\nimport * as events from './events';\nimport * as classes from './classes';\n/* Models */\nimport { PopupSettings, modulesList, localeConstant } from './models';\n/* Interface */\nimport { parseValue, getCompValue, encode } from './util';\n/**\n * ```html\n * * The In-place editor control is used to edit an element in a place and to update the value in server.\n *
    \n * \n * ```\n */\nvar InPlaceEditor = /** @class */ (function (_super) {\n __extends(InPlaceEditor, _super);\n /**\n * Initializes a new instance of the In-place editor class.\n *\n * @param {InPlaceEditorModel} options - Specifies In-place editor model properties as options.\n * @param {string} element - Specifies the element for which In-place editor applies.\n */\n function InPlaceEditor(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initRender = true;\n _this.isTemplate = false;\n _this.isVue = false;\n _this.isExtModule = false;\n _this.submitBtn = undefined;\n _this.cancelBtn = undefined;\n _this.isClearTarget = false;\n _this.btnElements = undefined;\n _this.dataManager = undefined;\n _this.oldValue = undefined;\n _this.divComponents = ['RTE', 'Slider'];\n _this.clearComponents = ['AutoComplete', 'Mask', 'Text'];\n _this.dateType = ['Date', 'DateTime', 'Time'];\n _this.inputDataEle = ['Date', 'DateTime', 'DateRange', 'Time', 'Numeric'];\n _this.dropDownEle = ['AutoComplete', 'ComboBox', 'DropDownList', 'MultiSelect'];\n _this.moduleList = ['AutoComplete', 'Color', 'ComboBox', 'DateRange', 'MultiSelect', 'RTE', 'Slider', 'Time'];\n /**\n * @hidden\n */\n _this.needsID = true;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n InPlaceEditor.prototype.preRender = function () {\n this.onScrollResizeHandler = this.scrollResizeHandler.bind(this);\n if (isNOU(this.model)) {\n this.setProperties({ model: {} }, true);\n }\n this.titleEle = this.createElement('div', { className: classes.TITLE });\n if (!isNOU(this.popupSettings.model) && this.popupSettings.model.afterOpen) {\n this.afterOpenEvent = this.popupSettings.model.afterOpen;\n }\n };\n /**\n * To Initialize the In-place editor rendering\n *\n * @returns {void}\n * @private\n */\n InPlaceEditor.prototype.render = function () {\n if (isNOU(this.element.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', '0');\n }\n this.checkIsTemplate();\n this.disable(this.disabled);\n this.updateAdaptor();\n this.appendValueElement();\n this.updateValue();\n // eslint-disable-next-line\n this.textOption === 'Never' ?\n this.renderValue(this.checkValue(parseValue(this.type, this.value, this.model)))\n : this.renderInitialValue();\n this.wireEvents();\n this.setRtl(this.enableRtl);\n this.enableEditor(this.enableEditMode, true);\n this.setClass('add', this.cssClass);\n this.renderComplete();\n };\n InPlaceEditor.prototype.setClass = function (action, val) {\n if (!this.isEmpty(val)) {\n var allClassName = val.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n // eslint-disable-next-line\n action === 'add' ? addClass([this.element], [allClassName[i]]) : removeClass([this.element], [allClassName[i]]);\n }\n }\n }\n };\n InPlaceEditor.prototype.appendValueElement = function () {\n this.valueWrap = this.createElement('div', { id: this.element.id + '_wrap', className: classes.VALUE_WRAPPER });\n if (!isBlazor()) {\n this.element.innerHTML = '';\n }\n this.valueEle = this.createElement('span', { className: classes.VALUE });\n this.editIcon = this.createElement('span', {\n className: classes.OVERLAY_ICON + ' ' + classes.ICONS,\n attrs: { 'title': this.getLocale({ editIcon: 'Click to edit' }, 'editIcon') }\n });\n this.valueWrap.appendChild(this.valueEle);\n this.valueWrap.appendChild(this.editIcon);\n this.element.appendChild(this.valueWrap);\n };\n InPlaceEditor.prototype.renderInitialValue = function () {\n if (['AutoComplete', 'ComboBox', 'DropDownList', 'MultiSelect'].indexOf(this.type) > -1\n && !isNOU(this.value) && !this.isEmpty(this.value.toString()) && !isNOU(this.model.fields)\n && !isNOU(this.model.dataSource)) {\n this.renderValue(this.getLocale({ loadingText: 'Loading...' }, 'loadingText'));\n this.valueWrap.classList.add(classes.LOAD);\n createSpinner({ target: this.valueWrap, width: 10 });\n showSpinner(this.valueWrap);\n this.getInitFieldMapValue();\n }\n else {\n this.renderValue(this.checkValue(parseValue(this.type, this.value, this.model)));\n }\n };\n InPlaceEditor.prototype.getInitFieldMapValue = function () {\n var _this = this;\n var model = this.model;\n var mText = model.fields.text;\n var mVal = model.fields.value;\n var query = isNOU(model.query) ? new Query() : model.query;\n if (model.dataSource instanceof DataManager) {\n model.dataSource.executeQuery(this.getInitQuery(model, query)).then(function (e) {\n // eslint-disable-next-line\n _this.updateInitValue(mText, mVal, e.result);\n });\n }\n else {\n this.updateInitValue(mText, mVal, new DataManager(model.dataSource).executeLocal(\n // eslint-disable-next-line\n this.getInitQuery(model, query)));\n }\n };\n InPlaceEditor.prototype.getInitQuery = function (model, query) {\n var predicate;\n var mVal = model.fields.value;\n var value = this.value;\n if (this.type !== 'MultiSelect' || typeof (this.value) !== 'object') {\n predicate = new Predicate(mVal, 'equal', this.value);\n }\n else {\n var i = 0;\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n predicate = ((i === 0) ? predicate = new Predicate(mVal, 'equal', val) : predicate.or(mVal, 'equal', val));\n i++;\n }\n }\n return query.where(predicate);\n };\n // eslint-disable-next-line\n InPlaceEditor.prototype.updateInitValue = function (mText, mVal, result) {\n if (result.length <= 0) {\n return;\n }\n if (result.length === 1) {\n this.valueEle.innerHTML = this.checkValue(getValue((isNOU(mText) ? mVal : mText), result[0]));\n }\n else {\n var val = [];\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var obj = result_1[_i];\n val.push(getValue((isNOU(mText) ? mVal : mText), obj));\n }\n this.valueEle.innerHTML = this.checkValue(val.toString());\n }\n hideSpinner(this.valueWrap);\n this.valueWrap.classList.remove(classes.LOAD);\n };\n InPlaceEditor.prototype.renderValue = function (val) {\n // eslint-disable-next-line\n this.enableHtmlSanitizer && this.type !== 'RTE' && this.type !== 'MultiSelect' ? this.valueEle.innerText = val :\n (this.valueEle.innerHTML = this.enableHtmlParse ? val : encode(val));\n if (this.type === 'Color') {\n setStyleAttribute(this.valueEle, { 'color': val });\n }\n if (this.mode === 'Inline') {\n if (this.isEditorOpen()) {\n removeClass([this.valueWrap], [classes.HIDE]);\n }\n }\n };\n InPlaceEditor.prototype.isEditorOpen = function () {\n if (this.isVue && (this.enableEditMode || (!isNOU(this.valueWrap) &&\n !(this.valueWrap.classList.contains(classes.HIDE) || this.valueWrap.classList.contains('e-tooltip'))))) {\n return false;\n }\n else {\n return true;\n }\n };\n InPlaceEditor.prototype.renderEditor = function () {\n this.prevValue = this.value;\n this.beginEditArgs = { mode: this.mode, cancelFocus: false, cancel: false };\n this.trigger('beginEdit', this.beginEditArgs);\n if (this.beginEditArgs.cancel) {\n return;\n }\n // eslint-disable-next-line\n var tipOptions = undefined;\n var target = select('.' + classes.VALUE_WRAPPER, this.element);\n if (this.editableOn !== 'EditIconClick') {\n target.parentElement.removeAttribute('title');\n }\n if (this.valueWrap.classList.contains(classes.OPEN)) {\n return;\n }\n if (this.mode === 'Inline') {\n addClass([this.valueWrap], [classes.HIDE]);\n this.inlineWrapper = this.createElement('div', { className: classes.INLINE });\n this.element.appendChild(this.inlineWrapper);\n if (['AutoComplete', 'ComboBox', 'DropDownList', 'MultiSelect'].indexOf(this.type) > -1) {\n this.checkRemoteData(this.model);\n }\n else {\n this.renderAndOpen();\n }\n }\n else {\n if (!isNOU(this.popupSettings.model) && this.popupSettings.model.afterOpen) {\n this.popupSettings.model.afterOpen = this.afterOpenHandler.bind(this);\n }\n var content = this.createElement('div', { className: classes.POPUP });\n if (!this.isEmpty(this.popupSettings.title)) {\n this.titleEle.innerHTML = this.popupSettings.title;\n content.appendChild(this.titleEle);\n }\n tipOptions = {\n content: content, opensOn: 'Custom',\n enableRtl: this.enableRtl, cssClass: classes.ROOT_TIP,\n afterOpen: this.afterOpenHandler.bind(this)\n };\n content.appendChild(this.renderControl(document.body));\n extend(tipOptions, this.popupSettings.model, tipOptions, true);\n this.tipObj = new Tooltip(tipOptions);\n this.tipObj.appendTo(target);\n this.tipObj.open(target);\n }\n if (this.actionOnBlur !== 'Ignore') {\n this.wireDocEvent();\n }\n addClass([this.valueWrap], [classes.OPEN]);\n this.setProperties({ enableEditMode: true }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n InPlaceEditor.prototype.renderAndOpen = function () {\n this.renderControl(this.inlineWrapper);\n this.afterOpenHandler(null);\n };\n InPlaceEditor.prototype.checkRemoteData = function (model) {\n var _this = this;\n if (model.dataSource instanceof DataManager) {\n model.dataBound = function () {\n _this.afterOpenHandler(null);\n };\n this.renderControl(this.inlineWrapper);\n if ((isNOU(model.value) && isNOU(this.value)) || (model.value === this.value\n && (!isNOU(model.value) && model.value.length === 0))) {\n this.showDropDownPopup();\n }\n }\n else {\n this.renderAndOpen();\n }\n };\n InPlaceEditor.prototype.showDropDownPopup = function () {\n if (this.type === 'DropDownList') {\n if (!this.model.allowFiltering) {\n this.componentObj.focusIn();\n }\n this.componentObj.showPopup();\n }\n else {\n if (this.isExtModule) {\n this.notify(((this.type === 'MultiSelect') ? events.setFocus : events.showPopup), {});\n }\n }\n };\n InPlaceEditor.prototype.setAttribute = function (ele, attr) {\n var value = this.name && this.name.length !== 0 ? this.name : this.element.id;\n attr.forEach(function (val) {\n ele.setAttribute(val, ((val === 'id') ? (value + '_editor') : value));\n });\n };\n InPlaceEditor.prototype.renderControl = function (target) {\n var ele;\n this.containerEle = this.createElement('div', { className: classes.WRAPPER });\n this.loader = this.createElement('div', { className: classes.LOADING });\n this.formEle = this.createElement('form', { className: classes.FORM });\n var ctrlGroupEle = this.createElement('div', { className: classes.CTRL_GROUP });\n var inputWrap = this.createElement('div', { className: classes.INPUT });\n target.appendChild(this.containerEle);\n this.loadSpinner();\n this.containerEle.appendChild(this.formEle);\n this.formEle.appendChild(ctrlGroupEle);\n if (this.isTemplate) {\n this.appendTemplate(inputWrap, this.template);\n }\n else {\n if (Array.prototype.indexOf.call(this.divComponents, this.type) > -1) {\n ele = this.createElement('div');\n this.setAttribute(ele, ['id']);\n }\n else {\n ele = this.createElement('input');\n this.setAttribute(ele, ['id', 'name']);\n }\n this.componentRoot = ele;\n inputWrap.appendChild(ele);\n inputWrap.appendChild(this.loader);\n }\n ctrlGroupEle.appendChild(inputWrap);\n ctrlGroupEle.appendChild(this.createElement('div', { className: classes.EDITABLE_ERROR }));\n this.appendButtons(this.formEle);\n if (!this.isTemplate) {\n this.renderComponent(ele);\n }\n this.removeSpinner();\n if (this.submitOnEnter) {\n this.wireEditorKeyDownEvent(this.containerEle);\n }\n return this.containerEle;\n };\n InPlaceEditor.prototype.appendButtons = function (trg) {\n if (this.showButtons && trg) {\n this.btnElements = this.renderButtons();\n trg.appendChild(this.btnElements);\n this.wireBtnEvents();\n }\n };\n InPlaceEditor.prototype.renderButtons = function () {\n var btnWrap = this.createElement('div', { className: classes.BUTTONS });\n var primary = (!isNOU(this.saveButton.content) && this.saveButton.content.length !== 0) ? (' ' + classes.PRIMARY) : '';\n this.submitBtn = this.createButtons({\n constant: 'save', type: 'submit', container: btnWrap,\n title: { save: 'Save' }, model: this.saveButton,\n className: classes.BTN_SAVE + primary\n });\n this.cancelBtn = this.createButtons({\n type: 'button', constant: 'cancel', title: { cancel: 'Cancel' },\n container: btnWrap, model: this.cancelButton,\n className: classes.BTN_CANCEL\n });\n return btnWrap;\n };\n InPlaceEditor.prototype.createButtons = function (args) {\n var btnObj = undefined;\n if (Object.keys(args.model).length > 0) {\n var btnEle = this.createElement('button', {\n className: args.className,\n attrs: { 'type': args.type, 'title': this.getLocale(args.title, args.constant) }\n });\n args.container.appendChild(btnEle);\n btnObj = new Button(args.model, btnEle);\n }\n return btnObj;\n };\n InPlaceEditor.prototype.renderComponent = function (ele) {\n this.isExtModule = (Array.prototype.indexOf.call(this.moduleList, this.type) > -1) ? true : false;\n var classProp;\n if (!isNOU(this.model.cssClass)) {\n classProp = this.model.cssClass.indexOf(classes.ELEMENTS) < 0 ?\n this.model.cssClass === '' ? classes.ELEMENTS : this.model.cssClass + ' ' + classes.ELEMENTS :\n this.model.cssClass;\n }\n else {\n classProp = classes.ELEMENTS;\n }\n extend(this.model, this.model, {\n cssClass: classProp, enableRtl: this.enableRtl, locale: this.locale, change: this.changeHandler.bind(this)\n });\n if (!isNOU(this.value)) {\n this.updateModelValue(false);\n }\n if (this.isExtModule) {\n this.notify(events.render, { module: modulesList[this.type], target: ele, type: this.type });\n }\n else {\n if (isNOU(this.model.showClearButton) && !isBlazor()) {\n this.model.showClearButton = true;\n }\n switch (this.type) {\n case 'Date':\n this.componentObj = new DatePicker(this.model);\n break;\n case 'DateTime':\n this.componentObj = new DateTimePicker(this.model);\n break;\n case 'DropDownList':\n this.componentObj = new DropDownList(this.model);\n break;\n case 'Mask':\n this.componentObj = new MaskedTextBox(this.model);\n break;\n case 'Numeric':\n if (this.model.value) {\n // eslint-disable-next-line no-useless-escape\n var expRegex = new RegExp('[eE][\\-+]?([0-9]+)');\n if (expRegex.test(this.model.value)) {\n this.model.value = this.model.value;\n }\n else {\n this.model.value = this.model.value.toString().replace(/[`~!@#$%^&*()_|\\=?;:'\",<>\\{\\}\\[\\]\\\\\\/]/gi, '');\n }\n }\n this.componentObj = new NumericTextBox(this.model);\n break;\n case 'Text':\n this.componentObj = new TextBox(this.model);\n break;\n }\n this.componentObj.appendTo(ele);\n }\n };\n InPlaceEditor.prototype.updateAdaptor = function () {\n switch (this.adaptor) {\n case 'UrlAdaptor':\n this.dataAdaptor = new UrlAdaptor;\n break;\n case 'WebApiAdaptor':\n this.dataAdaptor = new WebApiAdaptor;\n break;\n case 'ODataV4Adaptor':\n this.dataAdaptor = new ODataV4Adaptor;\n break;\n }\n };\n InPlaceEditor.prototype.loadSpinner = function (callType) {\n addClass([this.loader], [classes.SHOW]);\n if (callType === 'validate' && (this.type === 'RTE' || this.type === 'Color' || this.type === 'Slider')) {\n addClass([this.loader], [classes.RTE_SPIN_WRAP]);\n addClass([this.getEditElement()], [classes.CTRL_OVERLAY]);\n this.spinObj = { target: this.loader };\n }\n else {\n this.spinObj = { target: this.loader, width: Browser.isDevice ? '16px' : '14px' };\n }\n if (this.formEle) {\n addClass([this.formEle], [classes.LOAD]);\n }\n if (this.btnElements) {\n addClass([this.btnElements], [classes.HIDE]);\n }\n setStyleAttribute(this.loader, { 'width': '100%' });\n createSpinner(this.spinObj);\n showSpinner(this.spinObj.target);\n };\n InPlaceEditor.prototype.removeSpinner = function (callType) {\n this.loader.removeAttribute('style');\n hideSpinner(this.spinObj.target);\n detach(this.spinObj.target.firstChild);\n if (callType === 'submit' && (this.type === 'RTE' || this.type === 'Color' || this.type === 'Slider')) {\n removeClass([this.loader], [classes.RTE_SPIN_WRAP]);\n removeClass([this.getEditElement()], [classes.CTRL_OVERLAY]);\n }\n if (this.formEle) {\n removeClass([this.formEle], [classes.LOAD]);\n }\n if (this.btnElements) {\n removeClass([this.btnElements], [classes.HIDE]);\n }\n removeClass([this.loader], [classes.SHOW]);\n };\n InPlaceEditor.prototype.getEditElement = function () {\n return select('.' + classes.ELEMENTS, this.formEle);\n };\n // eslint-disable-next-line\n InPlaceEditor.prototype.getLocale = function (prop, val) {\n return new L10n('inplace-editor', prop, this.locale).getConstant(val);\n };\n InPlaceEditor.prototype.checkValue = function (val) {\n return (!this.isEmpty(val)) ? val : this.emptyText;\n };\n InPlaceEditor.prototype.extendModelValue = function (val) {\n // eslint-disable-next-line\n var model = this.model;\n extend(model, { value: val });\n this.setProperties({ model: model }, true);\n };\n InPlaceEditor.prototype.updateValue = function () {\n this.oldValue = this.value;\n if (this.enableHtmlSanitizer && typeof (this.value) === 'string') {\n this.oldValue = this.sanitizeHelper(this.value);\n }\n if (!isNOU(this.value)) {\n this.setProperties({ value: getCompValue(this.type, this.oldValue) }, true);\n this.extendModelValue(getCompValue(this.type, this.oldValue));\n }\n };\n InPlaceEditor.prototype.updateModelValue = function (updateOldValue) {\n if (this.type === 'MultiSelect' && !this.isEmpty(this.value)) {\n this.model.value = !updateOldValue ? this.value.slice() : this.oldValue.slice();\n }\n else {\n this.model.value = !updateOldValue ? this.value : this.oldValue;\n }\n };\n InPlaceEditor.prototype.setValue = function () {\n if (this.isExtModule) {\n this.notify(events.update, { type: this.type });\n }\n else if (this.componentObj) {\n if (this.type === 'Numeric' && this.componentObj.value === null) {\n this.componentObj.setProperties({ value: null }, true);\n }\n this.setProperties({ value: this.componentObj.value }, true);\n this.extendModelValue(this.componentObj.value);\n }\n };\n InPlaceEditor.prototype.getDropDownsValue = function (display) {\n var value;\n if (Array.prototype.indexOf.call(this.dropDownEle, this.type) > -1 && this.type !== 'MultiSelect') {\n value = display ? select('.e-' + this.type.toLocaleLowerCase(), this.containerEle).value :\n this.value.toString();\n }\n else if (this.type === 'MultiSelect') {\n this.notify(events.accessValue, { type: this.type });\n value = display ? this.printValue : this.value.join();\n }\n return value;\n };\n InPlaceEditor.prototype.getSendValue = function () {\n if (this.isEmpty(this.value)) {\n return '';\n }\n if (Array.prototype.indexOf.call(this.dropDownEle, this.type) > -1) {\n return this.getDropDownsValue(false);\n }\n else if (Array.prototype.indexOf.call(this.dateType, this.type) > -1) {\n return this.value.toISOString();\n }\n else if (this.type === 'DateRange') {\n return this.value[0].toISOString() + ' - ' + this.value[1].toISOString();\n }\n else {\n return this.value.toString();\n }\n };\n InPlaceEditor.prototype.getRenderValue = function () {\n if (this.type === 'Mask' && this.componentObj.value.length !== 0) {\n return this.componentObj.getMaskedValue();\n }\n else if (Array.prototype.indexOf.call(this.inputDataEle, this.type) > -1) {\n return this.componentRoot.value;\n }\n else if (Array.prototype.indexOf.call(this.dropDownEle, this.type) > -1) {\n return this.getDropDownsValue(true);\n }\n else {\n return parseValue(this.type, this.value, this.model);\n }\n };\n InPlaceEditor.prototype.setRtl = function (value) {\n // eslint-disable-next-line\n value ? addClass([this.element], [classes.RTL]) : removeClass([this.element], [classes.RTL]);\n };\n InPlaceEditor.prototype.setFocus = function () {\n if (this.isTemplate) {\n return;\n }\n // eslint-disable-next-line\n this.isExtModule ? this.notify(events.setFocus, {}) : this.componentObj.element.focus();\n };\n InPlaceEditor.prototype.removeEditor = function (isBlazorDestroy) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (isBlazor() && !this.isStringTemplate) {\n resetBlazorTemplate(this.element.id + 'template', 'Template');\n }\n var tipEle;\n if (this.tipObj && this.formEle) {\n tipEle = closest(this.formEle, '.' + classes.ROOT_TIP);\n tipEle.classList.add(classes.HIDE);\n }\n this.unWireDocEvent();\n this.destroyComponents();\n this.formEle = undefined;\n if (!isNOU(select('.' + classes.INLINE, this.element))) {\n detach(this.inlineWrapper);\n this.inlineWrapper = undefined;\n }\n else if (this.tipObj) {\n if (this.type === 'MultiSelect') {\n EventHandler.remove(this.containerEle, 'mousedown', this.popMouseDown);\n EventHandler.remove(this.containerEle, 'click', this.popClickHandler);\n }\n this.tipObj.close();\n this.tipObj.destroy();\n this.tipObj = undefined;\n }\n this.containerEle = undefined;\n removeClass([this.valueWrap], [classes.OPEN, classes.HIDE]);\n if (!isBlazorDestroy) {\n this.setProperties({ enableEditMode: false }, true);\n }\n if (this.editableOn !== 'EditIconClick') {\n var titleConstant = (this.editableOn === 'DblClick') ? 'editAreaDoubleClick' : 'editAreaClick';\n if (!isNOU(this.valueWrap.parentElement)) {\n this.valueWrap.parentElement.setAttribute('title', this.getLocale(localeConstant[this.editableOn], titleConstant));\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n InPlaceEditor.prototype.destroyComponents = function () {\n if (this.showButtons) {\n this.destroyButtons();\n }\n if (this.isExtModule) {\n this.notify(events.destroyModules, {});\n }\n else {\n if (this.templateEle) {\n document.body.appendChild(this.templateEle);\n this.templateEle.style.display = 'none';\n this.templateEle = undefined;\n }\n if (!isNOU(this.componentObj)) {\n this.componentObj.destroy();\n this.componentObj = undefined;\n }\n }\n if (this.formValidate) {\n this.formValidate = undefined;\n }\n if (this.submitOnEnter && this.containerEle) {\n this.unWireEditorKeyDownEvent(this.containerEle);\n }\n };\n InPlaceEditor.prototype.destroyButtons = function () {\n if (!isNOU(this.submitBtn)) {\n EventHandler.remove(this.submitBtn.element, 'mousedown', this.submitHandler);\n EventHandler.remove(this.submitBtn.element, 'click', this.submitPrevent);\n EventHandler.remove(this.submitBtn.element, 'keydown', this.btnKeyDownHandler);\n this.submitBtn.destroy();\n this.submitBtn = undefined;\n }\n if (!isNOU(this.cancelBtn)) {\n EventHandler.remove(this.cancelBtn.element, 'mousedown', this.cancelBtnClick);\n EventHandler.remove(this.cancelBtn.element, 'keydown', this.btnKeyDownHandler);\n this.cancelBtn.destroy();\n this.cancelBtn = undefined;\n }\n this.btnElements = undefined;\n };\n InPlaceEditor.prototype.getQuery = function (params) {\n var query = new Query();\n Object.keys(params).forEach(function (key) {\n query.addParams(key, params[key]);\n });\n return query;\n };\n InPlaceEditor.prototype.sendValue = function () {\n var _this = this;\n var eventArgs = { data: { name: this.name, primaryKey: this.primaryKey, value: this.getSendValue() } };\n this.trigger('actionBegin', eventArgs, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n _this.removeSpinner('submit');\n if (_this.mode === 'Popup') {\n _this.updateArrow();\n }\n }\n else {\n if (!_this.isEmpty(_this.url) && !_this.isEmpty(_this.primaryKey)\n && (_this.initRender || (!_this.initRender && _this.prevValue !== _this.value))) {\n _this.dataManager = new DataManager({ url: _this.url, adaptor: _this.dataAdaptor });\n if (_this.adaptor === 'UrlAdaptor') {\n _this.dataManager.executeQuery(_this.getQuery(actionBeginArgs.data), _this.successHandler.bind(_this), _this.failureHandler.bind(_this));\n }\n else {\n // eslint-disable-next-line\n var crud = _this.dataManager.insert(actionBeginArgs.data);\n crud.then(function (e) { return _this.successHandler(e); }).catch(function (e) { return _this.failureHandler(e); });\n }\n }\n else {\n var eventArg = { data: {}, value: actionBeginArgs.data.value };\n _this.triggerSuccess(eventArg);\n }\n _this.dataManager = undefined;\n }\n });\n };\n InPlaceEditor.prototype.isEmpty = function (value) {\n return (!isNOU(value) && value.length !== 0) ? false : true;\n };\n InPlaceEditor.prototype.checkIsTemplate = function () {\n this.isTemplate = (!isNOU(this.template) && this.template !== '') ? true : false;\n };\n InPlaceEditor.prototype.templateCompile = function (trgEle, tempStr) {\n var tempEle;\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof tempStr === 'string') {\n tempStr = tempStr.trim();\n }\n // eslint-disable-next-line\n var compiler = compile(tempStr);\n if (!isNOU(compiler)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (tempStr).indexOf('
    Blazor') === 0) ?\n this.isStringTemplate : true;\n tempEle = compiler({}, this, 'template', this.element.id + 'template', isString);\n }\n if (!isNOU(compiler) && tempEle.length > 0) {\n [].slice.call(tempEle).forEach(function (el) {\n trgEle.appendChild(el);\n });\n if (isBlazor() && !this.isStringTemplate && (tempStr).indexOf('
    Blazor') === 0) {\n updateBlazorTemplate(this.element.id + 'template', 'Template', this);\n }\n }\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} - returns the string\n * @hidden\n */\n InPlaceEditor.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item_1 = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item_1, item_1, beforeEvent);\n // eslint-disable-next-line\n this.trigger('beforeSanitizeHtml', item_1, function (args) {\n if (item_1.cancel && !isNOU(item_1.helper)) {\n value = item_1.helper(value);\n }\n else if (!item_1.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item_1, value);\n }\n });\n }\n return value;\n };\n InPlaceEditor.prototype.appendTemplate = function (trgEle, tempStr) {\n tempStr = typeof (tempStr) === 'string' ? this.sanitizeHelper(tempStr) : tempStr;\n this.setProperties({ template: tempStr }, true);\n if (typeof tempStr === 'string' || isNOU(tempStr.innerHTML)) {\n if (tempStr[0] === '.' || tempStr[0] === '#') {\n if (document.querySelectorAll(tempStr).length) {\n this.templateEle = document.querySelector(tempStr);\n trgEle.appendChild(this.templateEle);\n this.templateEle.style.display = '';\n }\n else {\n this.templateCompile(trgEle, tempStr);\n }\n }\n else {\n this.templateCompile(trgEle, tempStr);\n }\n }\n else {\n this.templateEle = tempStr;\n trgEle.appendChild(this.templateEle);\n }\n };\n InPlaceEditor.prototype.disable = function (value) {\n // eslint-disable-next-line\n value ? addClass([this.element], [classes.DISABLE]) : removeClass([this.element], [classes.DISABLE]);\n };\n InPlaceEditor.prototype.enableEditor = function (val, isInit) {\n if (isInit && !val) {\n return;\n }\n // eslint-disable-next-line\n (val) ? this.renderEditor() : this.cancelHandler('cancel');\n };\n InPlaceEditor.prototype.checkValidation = function (fromSubmit, isValidate) {\n var _this = this;\n var args;\n if (this.validationRules) {\n var rules = Object.keys(this.validationRules);\n var validationLength_1 = Object.keys(this.validationRules[rules[0]]).length;\n validationLength_1 = 'validateHidden' in this.validationRules[rules[0]] ? validationLength_1 - 1 : validationLength_1;\n var count_1 = 0;\n this.formValidate = new FormValidator(this.formEle, {\n rules: this.validationRules,\n validationComplete: function (e) {\n count_1 = count_1 + 1;\n args = {\n errorMessage: e.message,\n data: { name: _this.name, primaryKey: _this.primaryKey, value: _this.checkValue(_this.getSendValue()) }\n };\n _this.trigger('validating', args, function (validateArgs) {\n if (e.status === 'failure') {\n e.errorElement.innerText = validateArgs.errorMessage;\n _this.toggleErrorClass(true);\n }\n else {\n _this.toggleErrorClass(false);\n }\n if (!isNOU(fromSubmit) && fromSubmit && (validationLength_1 === count_1 || e.status === 'failure')) {\n fromSubmit = false;\n _this.afterValidation(isValidate);\n count_1 = 0;\n }\n });\n },\n customPlacement: function (inputElement, errorElement) {\n if (_this.formEle) {\n select('.' + classes.EDITABLE_ERROR, _this.formEle).appendChild(errorElement);\n }\n }\n });\n count_1 = 0;\n this.formValidate.validate();\n }\n else if (this.template !== '') {\n args = {\n errorMessage: '',\n data: { name: this.name, primaryKey: this.primaryKey, value: this.checkValue(this.getSendValue()) }\n };\n this.trigger('validating', args, function (validateArgs) {\n if (validateArgs.errorMessage) {\n select('.' + classes.EDITABLE_ERROR, _this.formEle).innerHTML = validateArgs.errorMessage;\n _this.toggleErrorClass(true);\n }\n else {\n _this.toggleErrorClass(false);\n }\n _this.afterValidation(isValidate);\n });\n }\n else {\n this.afterValidation(isValidate);\n }\n };\n InPlaceEditor.prototype.afterValidation = function (isValidate) {\n if (!this.formEle.classList.contains(classes.ERROR) && isValidate) {\n this.loadSpinner('validate');\n if (this.mode === 'Popup') {\n this.updateArrow();\n }\n this.sendValue();\n }\n };\n InPlaceEditor.prototype.toggleErrorClass = function (value) {\n if (isNOU(this.formEle)) {\n return;\n }\n var inputEle = select('.e-input-group', this.formEle);\n // eslint-disable-next-line\n var errorClass = function (element, val, action) {\n [].slice.call(element).forEach(function (ele) {\n if (ele) {\n // eslint-disable-next-line\n action === 'add' ? addClass([ele], [val]) : removeClass([ele], [val]);\n }\n });\n };\n errorClass([this.formEle, inputEle], classes.ERROR, value ? 'add' : 'remove');\n };\n InPlaceEditor.prototype.updateArrow = function () {\n var pos = this.tipObj.tipPointerPosition;\n this.tipObj.tipPointerPosition = (pos === 'Middle') ? 'Auto' : 'Middle';\n this.tipObj.tipPointerPosition = pos;\n this.tipObj.dataBind();\n };\n InPlaceEditor.prototype.triggerSuccess = function (args) {\n var _this = this;\n var val = args.value;\n this.trigger('actionSuccess', args, function (actionArgs) {\n _this.oldValue = val;\n _this.removeSpinner('submit');\n if (!actionArgs.cancel) {\n _this.renderValue(_this.checkValue((actionArgs.value !== val) ? actionArgs.value : _this.getRenderValue()));\n }\n if (actionArgs.cancel && _this.mode === 'Inline') {\n removeClass([_this.valueWrap], [classes.HIDE]);\n }\n _this.removeEditor();\n });\n };\n InPlaceEditor.prototype.triggerEndEdit = function (closeBeginBy) {\n var _this = this;\n var endEditArgs = { cancel: false, mode: this.mode, action: closeBeginBy };\n this.trigger('endEdit', endEditArgs, function (args) {\n if (!args.cancel) {\n if (_this.formEle && _this.formEle.classList.contains(classes.ERROR)) {\n _this.updateModelValue(true);\n _this.setProperties({ value: _this.oldValue }, true);\n }\n _this.removeEditor();\n }\n });\n };\n InPlaceEditor.prototype.wireEvents = function () {\n this.wireEditEvent(this.editableOn);\n EventHandler.add(this.editIcon, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.valueKeyDownHandler, this);\n document.addEventListener('scroll', this.onScrollResizeHandler);\n window.addEventListener('resize', this.onScrollResizeHandler);\n if (Array.prototype.indexOf.call(this.clearComponents, this.type) > -1) {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n }\n };\n InPlaceEditor.prototype.wireDocEvent = function () {\n EventHandler.add(document, 'mousedown', this.docClickHandler, this);\n };\n InPlaceEditor.prototype.wireEditEvent = function (event) {\n if (event === 'EditIconClick') {\n return;\n }\n var titleConstant = (event === 'Click') ? 'editAreaClick' : 'editAreaDoubleClick';\n this.element.setAttribute('title', this.getLocale(localeConstant[event], titleConstant));\n if (Browser.isDevice && Browser.isIos && event === 'DblClick') {\n this.touchModule = new Touch(this.valueWrap, { tap: this.doubleTapHandler.bind(this) });\n }\n else {\n EventHandler.add(this.valueWrap, event.toLowerCase(), this.clickHandler, this);\n }\n };\n InPlaceEditor.prototype.wireEditorKeyDownEvent = function (ele) {\n EventHandler.add(ele, 'keydown', this.enterKeyDownHandler, this);\n };\n InPlaceEditor.prototype.wireBtnEvents = function () {\n if (!isNOU(this.submitBtn)) {\n EventHandler.add(this.submitBtn.element, 'mousedown', this.submitHandler, this);\n EventHandler.add(this.submitBtn.element, 'click', this.submitPrevent, this);\n EventHandler.add(this.submitBtn.element, 'keydown', this.btnKeyDownHandler, this);\n }\n if (!isNOU(this.cancelBtn)) {\n EventHandler.add(this.cancelBtn.element, 'mousedown', this.cancelBtnClick, this);\n EventHandler.add(this.cancelBtn.element, 'keydown', this.btnKeyDownHandler, this);\n }\n };\n InPlaceEditor.prototype.cancelBtnClick = function (e) {\n this.cancelHandler('cancel');\n this.trigger('cancelClick', e);\n };\n InPlaceEditor.prototype.unWireEvents = function () {\n this.unWireEditEvent(this.editableOn);\n EventHandler.remove(this.editIcon, 'click', this.clickHandler);\n document.removeEventListener('scroll', this.onScrollResizeHandler);\n window.removeEventListener('resize', this.onScrollResizeHandler);\n EventHandler.remove(this.element, 'keydown', this.valueKeyDownHandler);\n if (Array.prototype.indexOf.call(this.clearComponents, this.type) > -1) {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n }\n };\n InPlaceEditor.prototype.unWireDocEvent = function () {\n EventHandler.remove(document, 'mousedown', this.docClickHandler);\n };\n InPlaceEditor.prototype.unWireEditEvent = function (event) {\n if (event === 'EditIconClick') {\n return;\n }\n this.element.removeAttribute('title');\n if (Browser.isDevice && Browser.isIos && event === 'DblClick') {\n this.touchModule.destroy();\n this.touchModule = undefined;\n }\n else {\n EventHandler.remove(this.valueWrap, event.toLowerCase(), this.clickHandler);\n }\n };\n InPlaceEditor.prototype.unWireEditorKeyDownEvent = function (ele) {\n EventHandler.remove(ele, 'keydown', this.enterKeyDownHandler);\n };\n InPlaceEditor.prototype.submitPrevent = function (e) {\n e.preventDefault();\n };\n InPlaceEditor.prototype.btnKeyDownHandler = function (e) {\n var trg = e.target;\n if ((e.keyCode === 13 && e.which === 13) || (e.keyCode === 32 && e.which === 32)) {\n if (trg.classList.contains(classes.BTN_SAVE)) {\n this.save();\n }\n else if (trg.classList.contains(classes.BTN_CANCEL)) {\n this.cancelHandler('cancel');\n }\n }\n if (e.keyCode === 9 && e.shiftKey === false &&\n (isNOU(e.target.nextElementSibling) ||\n e.target.nextElementSibling.tagName !== 'BUTTON')) {\n if (this.actionOnBlur === 'Submit') {\n this.save();\n }\n else if (this.actionOnBlur === 'Cancel') {\n this.cancelHandler('cancel');\n }\n }\n };\n InPlaceEditor.prototype.afterOpenHandler = function (e) {\n if (this.mode === 'Popup' && this.type === 'MultiSelect') {\n EventHandler.add(this.containerEle, 'mousedown', this.popMouseDown, this);\n EventHandler.add(this.containerEle, 'click', this.popClickHandler, this);\n }\n if (this.mode === 'Popup' && !this.isEmpty(this.titleEle.innerHTML)) {\n e.element.classList.add(classes.TIP_TITLE);\n }\n if (this.type === 'RTE') {\n this.rteModule.refresh();\n this.setAttribute(select('.e-richtexteditor textarea', this.containerEle), ['name']);\n }\n else if (this.type === 'Slider') {\n this.sliderModule.refresh();\n this.setAttribute(select('.e-slider-input', this.containerEle), ['name']);\n }\n if (!this.beginEditArgs.cancelFocus) {\n if (this.mode === 'Inline' && (['AutoComplete', 'ComboBox', 'DropDownList', 'MultiSelect'].indexOf(this.type) > -1)\n && this.model.dataSource instanceof DataManager) {\n this.showDropDownPopup();\n }\n else {\n this.setFocus();\n }\n }\n if (this.afterOpenEvent) {\n this.tipObj.setProperties({ afterOpen: this.afterOpenEvent }, true);\n this.tipObj.trigger('afterOpen', e);\n }\n };\n InPlaceEditor.prototype.popMouseDown = function (e) {\n var trgClass = e.target.classList;\n if (trgClass.contains('e-chips-close') && !trgClass.contains('e-close-hooker')) {\n this.updateArrow();\n }\n };\n InPlaceEditor.prototype.doubleTapHandler = function (e) {\n if (e.tapCount > 1) {\n this.clickHandler(e.originalEvent);\n }\n };\n InPlaceEditor.prototype.clickHandler = function (e) {\n if (this.editableOn !== 'EditIconClick') {\n e.stopPropagation();\n }\n this.renderEditor();\n };\n InPlaceEditor.prototype.submitHandler = function (e) {\n e.preventDefault();\n this.save();\n this.trigger('submitClick', e);\n };\n InPlaceEditor.prototype.cancelHandler = function (action) {\n this.triggerEndEdit(action);\n };\n InPlaceEditor.prototype.popClickHandler = function (e) {\n var tipTarget = select('.' + classes.VALUE_WRAPPER, this.element);\n if (e.target.classList.contains('e-chips-close')) {\n this.tipObj.refresh(tipTarget);\n }\n };\n // eslint-disable-next-line\n InPlaceEditor.prototype.successHandler = function (e) {\n this.initRender = false;\n var eventArgs = { data: e, value: this.getSendValue() };\n this.triggerSuccess(eventArgs);\n };\n // eslint-disable-next-line\n InPlaceEditor.prototype.failureHandler = function (e) {\n var _this = this;\n var eventArgs = { data: e, value: this.getSendValue() };\n // eslint-disable-next-line\n this.trigger('actionFailure', eventArgs, function (args) {\n _this.removeSpinner('submit');\n if (_this.mode === 'Popup') {\n _this.updateArrow();\n }\n });\n };\n InPlaceEditor.prototype.enterKeyDownHandler = function (e) {\n if (!closest(e.target, '.' + classes.INPUT + ' .e-richtexteditor') && (!e.currentTarget.getElementsByTagName(\"textarea\")[0])) {\n if ((e.keyCode === 13 && e.which === 13) && closest(e.target, '.' + classes.INPUT)) {\n this.save();\n this.trigger('submitClick', e);\n }\n else if (e.keyCode === 27 && e.which === 27) {\n this.cancelHandler('cancel');\n }\n }\n };\n InPlaceEditor.prototype.valueKeyDownHandler = function (e) {\n if (e.keyCode === 9 && e.shiftKey === true && e.target.tagName !== 'BUTTON') {\n if (this.actionOnBlur === 'Submit') {\n this.save();\n }\n else if (this.actionOnBlur === 'Cancel') {\n this.cancelHandler('cancel');\n }\n }\n if ((e.keyCode === 13 && e.which === 13) && e.target.classList.contains(classes.ROOT) &&\n !this.valueWrap.classList.contains(classes.OPEN) && !this.element.classList.contains(classes.DISABLE)) {\n e.preventDefault();\n this.renderEditor();\n }\n };\n InPlaceEditor.prototype.mouseDownHandler = function (e) {\n if (e.target.classList.contains('e-clear-icon')) {\n this.isClearTarget = true;\n }\n };\n InPlaceEditor.prototype.scrollResizeHandler = function () {\n if (this.mode === 'Popup' && this.tipObj && !(Browser.isDevice)) {\n this.triggerEndEdit('cancel');\n }\n };\n InPlaceEditor.prototype.docClickHandler = function (e) {\n var trg = e.target;\n if (this.isClearTarget) {\n this.isClearTarget = false;\n return;\n }\n var relateRoot = closest(trg, '.' + classes.ROOT);\n var relateTipRoot = closest(trg, '.' + classes.ROOT_TIP);\n var relateElements = closest(trg, '.' + classes.ELEMENTS);\n var relateRTEElements = closest(trg, '.e-rte-elements');\n if ((!isNOU(relateRoot) && relateRoot.isEqualNode(this.element)) ||\n (!isNOU(relateTipRoot) && this.tipObj && (relateTipRoot.id.indexOf(this.valueWrap.id) > -1)) ||\n !isNOU(relateElements) || !isNOU(relateRTEElements) || trg.classList.contains('e-chips-close')) {\n return;\n }\n else {\n if (this.actionOnBlur === 'Submit') {\n this.save();\n }\n else if (this.actionOnBlur === 'Cancel') {\n this.cancelHandler('cancel');\n }\n }\n };\n InPlaceEditor.prototype.changeHandler = function (e) {\n var eventArgs = {\n previousValue: this.compPrevValue === undefined ? this.value : this.compPrevValue,\n value: e.value\n };\n if (this.type === 'AutoComplete' || this.type === 'ComboBox' || this.type === 'DropDownList') {\n eventArgs.itemData = e.itemData;\n eventArgs.previousItemData = e.previousItemData;\n }\n this.compPrevValue = eventArgs.value;\n this.trigger('change', eventArgs);\n };\n /**\n * Validate current editor value.\n *\n * @returns {void}\n */\n InPlaceEditor.prototype.validate = function () {\n this.checkValidation(true, false);\n };\n /**\n * Submit the edited input value to the server.\n *\n * @returns {void}\n */\n InPlaceEditor.prototype.save = function () {\n var _this = this;\n if (!this.formEle) {\n return;\n }\n this.element.focus();\n this.editEle = select('.' + classes.INPUT, this.formEle);\n var errEle = null;\n // eslint-disable-next-line\n errEle = select('.' + classes.ERROR, this.editEle);\n if (!this.isTemplate) {\n this.setValue();\n }\n var endEditArgs = { cancel: false, mode: this.mode, action: 'submit' };\n this.trigger('endEdit', endEditArgs, function (args) {\n if (!args.cancel) {\n _this.checkValidation(true, true);\n }\n });\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n InPlaceEditor.prototype.destroy = function () {\n var _this = this;\n this.removeEditor(isBlazor());\n if (this.isExtModule) {\n this.notify(events.destroy, {});\n }\n this.unWireEvents();\n var classList = [classes.DISABLE, classes.RTL];\n classList.forEach(function (val) {\n removeClass([_this.element], [val]);\n });\n while (this.element.firstElementChild) {\n this.element.removeChild(this.element.firstElementChild);\n }\n if (!(isBlazor() && this.isServerRendered)) {\n _super.prototype.destroy.call(this);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the string\n */\n InPlaceEditor.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\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 InPlaceEditor.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: modulesList[this.type], args: [this] });\n return modules;\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returrns the string\n * @private\n */\n InPlaceEditor.prototype.getModuleName = function () {\n return 'inplaceeditor';\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 {InPlaceEditorModel} newProp - specifies the new property\n * @param {InPlaceEditorModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n InPlaceEditor.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isEditorOpen()) {\n var editModeChanged = 'enableEditMode' in newProp;\n if ((editModeChanged && oldProp.enableEditMode && !newProp.enableEditMode) || (!editModeChanged && this.enableEditMode)) {\n this.triggerEndEdit('cancel');\n }\n else {\n this.removeEditor();\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 'showButtons':\n // eslint-disable-next-line\n (newProp.showButtons) ? this.appendButtons(this.formEle) : this.destroyButtons();\n break;\n case 'value':\n this.updateValue();\n // eslint-disable-next-line\n this.textOption === 'Never' ? this.renderValue(this.checkValue(parseValue(this.type, this.value, this.model)))\n : this.renderInitialValue();\n break;\n case 'emptyText':\n // eslint-disable-next-line\n this.textOption === 'Never' ? this.renderValue(this.checkValue(parseValue(this.type, this.value, this.model)))\n : this.renderInitialValue();\n break;\n case 'template':\n this.checkIsTemplate();\n break;\n case 'disabled':\n this.disable(newProp.disabled);\n break;\n case 'enableRtl':\n this.setRtl(newProp.enableRtl);\n break;\n case 'cssClass':\n this.setClass('remove', oldProp.cssClass);\n this.setClass('add', newProp.cssClass);\n break;\n case 'mode':\n this.enableEditor(this.enableEditMode);\n break;\n case 'enableEditMode':\n this.enableEditor(newProp.enableEditMode);\n break;\n case 'editableOn':\n this.unWireEditEvent(oldProp.editableOn);\n if (newProp.editableOn !== 'EditIconClick') {\n this.wireEditEvent(newProp.editableOn);\n }\n break;\n }\n }\n };\n __decorate([\n Property('')\n ], InPlaceEditor.prototype, \"name\", void 0);\n __decorate([\n Property(null)\n ], InPlaceEditor.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], InPlaceEditor.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], InPlaceEditor.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], InPlaceEditor.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property('')\n ], InPlaceEditor.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], InPlaceEditor.prototype, \"primaryKey\", void 0);\n __decorate([\n Property('Empty')\n ], InPlaceEditor.prototype, \"emptyText\", void 0);\n __decorate([\n Property('')\n ], InPlaceEditor.prototype, \"url\", void 0);\n __decorate([\n Property('Popup')\n ], InPlaceEditor.prototype, \"mode\", void 0);\n __decorate([\n Property('UrlAdaptor')\n ], InPlaceEditor.prototype, \"adaptor\", void 0);\n __decorate([\n Property('Text')\n ], InPlaceEditor.prototype, \"type\", void 0);\n __decorate([\n Property('Click')\n ], InPlaceEditor.prototype, \"editableOn\", void 0);\n __decorate([\n Property('Never')\n ], InPlaceEditor.prototype, \"textOption\", void 0);\n __decorate([\n Property('Submit')\n ], InPlaceEditor.prototype, \"actionOnBlur\", void 0);\n __decorate([\n Property(false)\n ], InPlaceEditor.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], InPlaceEditor.prototype, \"disabled\", void 0);\n __decorate([\n Property(true)\n ], InPlaceEditor.prototype, \"showButtons\", void 0);\n __decorate([\n Property(false)\n ], InPlaceEditor.prototype, \"enableEditMode\", void 0);\n __decorate([\n Property(true)\n ], InPlaceEditor.prototype, \"submitOnEnter\", void 0);\n __decorate([\n Complex({}, PopupSettings)\n ], InPlaceEditor.prototype, \"popupSettings\", void 0);\n __decorate([\n Property(null)\n ], InPlaceEditor.prototype, \"model\", void 0);\n __decorate([\n Property({ iconCss: 'e-icons e-save-icon' })\n ], InPlaceEditor.prototype, \"saveButton\", void 0);\n __decorate([\n Property({ iconCss: 'e-icons e-cancel-icon' })\n ], InPlaceEditor.prototype, \"cancelButton\", void 0);\n __decorate([\n Property(null)\n ], InPlaceEditor.prototype, \"validationRules\", void 0);\n __decorate([\n Event()\n ], InPlaceEditor.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], InPlaceEditor.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], InPlaceEditor.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], InPlaceEditor.prototype, \"actionSuccess\", void 0);\n __decorate([\n Event()\n ], InPlaceEditor.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], InPlaceEditor.prototype, \"validating\", void 0);\n __decorate([\n Event()\n ], InPlaceEditor.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], InPlaceEditor.prototype, \"endEdit\", void 0);\n __decorate([\n Event()\n ], InPlaceEditor.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], InPlaceEditor.prototype, \"submitClick\", void 0);\n __decorate([\n Event()\n ], InPlaceEditor.prototype, \"cancelClick\", void 0);\n __decorate([\n Event()\n ], InPlaceEditor.prototype, \"destroyed\", void 0);\n InPlaceEditor = __decorate([\n NotifyPropertyChanges\n ], InPlaceEditor);\n return InPlaceEditor;\n}(Component));\nexport { InPlaceEditor };\n","/**\n * In-place Editor events defined here.\n */\n/** @hidden */\nexport var render = 'render';\n/** @hidden */\nexport var update = 'update';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var setFocus = 'set-focus';\n/** @hidden */\nexport var accessValue = 'access-value';\n/** @hidden */\nexport var destroyModules = 'destroy-modules';\n/** @hidden */\nexport var showPopup = 'show-popup';\n","import { AjaxHandler } from '../index';\nimport { createElement, Browser, Internationalization, isBlazor } from '@syncfusion/ej2-base';\nimport { Accordion, ContextMenu as Context } from '@syncfusion/ej2-navigations';\nimport { InPlaceEditor } from '@syncfusion/ej2-inplace-editor';\nimport { cloneObject } from '../drawing/drawing-util';\n/**\n * StickyNotes module\n */\nvar StickyNotesAnnotation = /** @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function StickyNotesAnnotation(pdfViewer, pdfViewerBase) {\n this.commentsCount = 0;\n this.commentsreplyCount = 0;\n this.commentContextMenu = [];\n this.isAccordionContainer = true;\n this.isCreateContextMenu = false;\n this.isCommentsSelected = false;\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n /**\n * @private\n */\n this.isEditableElement = false;\n this.isPageCommentsRendered = false;\n this.isCommentsRendered = false;\n /**\n * @private\n */\n this.isAnnotationRendered = false;\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n this.opacity = this.pdfViewer.stickyNotesSettings.opacity ? this.pdfViewer.stickyNotesSettings.opacity : 1;\n }\n /**\n * @param stickyAnnotations\n * @param pageNumber\n * @param canvas\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.renderStickyNotesAnnotations = function (stickyAnnotations, pageNumber, canvas) {\n if (stickyAnnotations) {\n if (stickyAnnotations.length > 0) {\n for (var i = 0; i < stickyAnnotations.length; i++) {\n // eslint-disable-next-line\n var annotation = stickyAnnotations[i];\n var isAdded = false;\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(pageNumber, null, 'sticky');\n if (pageAnnotations !== null) {\n for (var k = 0; k < pageAnnotations.length; k++) {\n var annotationName = annotation.annotName ? annotation.annotName : annotation.AnnotName;\n var pageAnnotationName = pageAnnotations[k].annotName ? pageAnnotations[k].annotName : pageAnnotations[k].AnnotName;\n if (pageAnnotationName && annotationName && pageAnnotationName === annotationName) {\n isAdded = true;\n break;\n }\n }\n }\n if (!isAdded) {\n annotation.annotationAddMode = this.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n var annotationObject = null;\n // eslint-disable-next-line\n var position = annotation.Bounds;\n var author = annotation.Author;\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n annotation.allowedInteractions = annotation.AllowedInteraction ? annotation.AllowedInteraction : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var isPrint = true;\n if (annotation.annotationAddMode === 'Imported Annotation') {\n isPrint = annotation.IsPrint;\n }\n else {\n isPrint = annotation.AnnotationSettings.isPrint;\n }\n if (annotation.IsLock) {\n annotation.AnnotationSettings.isLock = annotation.IsLock;\n }\n annotationObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'sticky', author: author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, note: annotation.Note, opacity: annotation.Opacity, state: annotation.State, stateModel: annotation.StateModel,\n pathData: '', comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: author },\n // eslint-disable-next-line max-len\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n annotName: annotation.AnnotName, color: annotation.color,\n annotationSelectorSettings: this.getSettings(annotation),\n customData: this.pdfViewer.annotation.getCustomData(annotation),\n annotationSettings: annotation.AnnotationSettings, allowedInteractions: annotation.allowedInteractions,\n isPrint: isPrint, isCommentLock: annotation.IsCommentLock\n };\n var annot = void 0;\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotation.AnnotationSelectorSettings ? annotation.AnnotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annot = {\n // eslint-disable-next-line max-len\n author: author, modifiedDate: annotationObject.modifiedDate, annotName: annotationObject.annotName, pageIndex: pageNumber, bounds: { x: position.Left, y: position.Top, width: position.Width, height: position.Height }, strokeColor: 'transparent', stampStrokeColor: '', data: this.setImageSource(), shapeAnnotationType: 'StickyNotes',\n subject: annotationObject.subject, notes: annotationObject.note, opacity: annotationObject.opacity, id: annotationObject.annotName, fillColor: annotationObject.color,\n annotationSelectorSettings: annotation.AnnotationSelectorSettings,\n annotationSettings: annotationObject.annotationSettings,\n // eslint-disable-next-line max-len\n annotationAddMode: annotation.annotationAddMode, isPrint: isPrint, isCommentLock: annotationObject.isCommentLock\n };\n if (canvas) {\n this.drawStickyNotes(position.Left, position.Top, position.Width, position.Height, pageNumber, annot, canvas);\n }\n else {\n this.pdfViewer.add(annot);\n this.drawStickyNotes(position.Left, position.Top, position.Width, position.Height, pageNumber, annot);\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_sticky');\n }\n if (this.isAddAnnotationProgramatically) {\n // eslint-disable-next-line\n var settings = {\n opacity: annot.opacity, borderColor: annot.strokeColor, borderWidth: annot.thickness, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n // eslint-disable-next-line\n fillColor: annot.fillColor, fontSize: annot.fontSize, width: annot.bounds.width, height: annot.bounds.height, fontColor: annot.fontColor, fontFamily: annot.fontFamily, defaultText: annot.dynamicText, fontStyle: annot.font, textAlignment: annot.textAlign\n };\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'StickyNotes', annot.bounds, settings);\n }\n }\n }\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.getSettings = function (annotation) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else if (this.pdfViewer.stickyNotesSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.stickyNotesSettings.annotationSelectorSettings;\n }\n return selector;\n };\n /**\n * @param X\n * @param Y\n * @param width\n * @param height\n * @param pageIndex\n * @param annotation\n * @param canvas\n * @param X\n * @param Y\n * @param width\n * @param height\n * @param pageIndex\n * @param annotation\n * @param canvas\n * @param X\n * @param Y\n * @param width\n * @param height\n * @param pageIndex\n * @param annotation\n * @param canvas\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.drawStickyNotes = function (X, Y, width, height, pageIndex, annotation, canvas) {\n var _this = this;\n var annot;\n var annotationObject = null;\n var image = new Image();\n // eslint-disable-next-line\n var proxy = this;\n image.onload = function () {\n var commentsDivid;\n var annotationName;\n // eslint-disable-next-line max-len\n var author = (_this.pdfViewer.annotationSettings.author !== 'Guest') ? _this.pdfViewer.annotationSettings.author : _this.pdfViewer.stickyNotesSettings.author;\n if (annotation) {\n annot = {\n // eslint-disable-next-line max-len\n author: annotation.author, modifiedDate: annotation.modifiedDate, annotName: annotation.annotName, data: image.src, bounds: { x: X, y: Y, width: width, height: height }, subject: annotation.subject,\n notes: annotation.notes, opacity: annotation.opacity, id: annotation.annotName, shapeAnnotationType: 'StickyNotes', strokeColor: 'transparent', stampStrokeColor: '', pageIndex: annotation.pageIndex, isPrint: annotation.isPrint\n };\n }\n else {\n annotationName = _this.pdfViewer.annotation.createGUID();\n commentsDivid = proxy.addComments('sticky', pageIndex + 1);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n // eslint-disable-next-line\n var annotationSelectorSettings = _this.pdfViewer.stickyNotesSettings.annotationSelectorSettings ? _this.pdfViewer.stickyNotesSettings.annotationSelectorSettings : _this.pdfViewer.annotationSelectorSettings;\n var isPrint = _this.pdfViewer.stickyNotesSettings.isPrint;\n annot = {\n // eslint-disable-next-line max-len\n bounds: { x: X, y: Y, width: width, height: height }, pageIndex: pageIndex, data: image.src, modifiedDate: _this.getDateAndTime(),\n shapeAnnotationType: 'StickyNotes', strokeColor: 'transparent', stampStrokeColor: '', annotName: annotationName, id: annotationName, opacity: _this.opacity, isPrint: isPrint\n };\n // eslint-disable-next-line max-len\n var isLock = _this.pdfViewer.stickyNotesSettings.isLock ? _this.pdfViewer.stickyNotesSettings.isLock : _this.pdfViewer.annotationSettings.isLock;\n // eslint-disable-next-line\n var allowedInteractions = _this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n annotationObject = {\n // eslint-disable-next-line max-len\n author: author, allowedInteractions: allowedInteractions, modifiedDate: _this.getDateAndTime(), subject: 'Sticky Note', shapeAnnotationType: 'sticky',\n // eslint-disable-next-line max-len\n note: '', opacity: _this.opacity, pathData: '', state: '', stateModel: '', color: 'rgba(255,255,0)', comments: [], annotName: annotationName,\n // eslint-disable-next-line max-len\n bounds: { left: X, top: Y, width: width, height: height }, review: { state: '', stateModel: '', modifiedDate: '', author: author },\n annotationSelectorSettings: annotationSelectorSettings,\n // eslint-disable-next-line max-len\n customData: _this.pdfViewer.annotationModule.getData('sticky'), annotationSettings: { isLock: isLock }, isPrint: isPrint, isCommentLock: false\n };\n }\n if (!annotation) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.annotation.addAction(pageIndex, null, annot, 'Addition', '', annot, annot);\n proxy.pdfViewer.add(annot);\n proxy.pdfViewer.annotationModule.storeAnnotations(pageIndex, annotationObject, '_annotations_sticky');\n }\n if (proxy.pdfViewerBase.isAddComment) {\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n var bounds = { left: annot.bounds.x, top: annot.bounds.y, width: annot.bounds.width, height: annot.bounds.height };\n _this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var settings = { opacity: annot.opacity, author: author, modifiedDate: annot.modifiedDate, subject: annot.shapeAnnotationType };\n _this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'StickyNotes', bounds, settings);\n }\n if (canvas) {\n // eslint-disable-next-line\n proxy.pdfViewer.renderDrawing(canvas, pageIndex);\n }\n else {\n // eslint-disable-next-line\n var canvass = document.getElementById(proxy.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n proxy.pdfViewer.renderDrawing(canvass, pageIndex);\n }\n if (Browser.isDevice) {\n proxy.pdfViewer.select([annot.id], annot.annotationSelectorSettings);\n }\n proxy.pdfViewerBase.isAddComment = false;\n };\n image.src = this.setImageSource();\n };\n StickyNotesAnnotation.prototype.setImageSource = function () {\n // eslint-disable-next-line max-len\n var imageSource = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgd2lkdGg9IjE2IgogICBoZWlnaHQ9IjE1IgogICB2aWV3Qm94PSIwIDAgNC4yMzMzMzMxIDMuOTY4NzQ5NyIKICAgdmVyc2lvbj0iMS4xIj4KICA8ZyBpZD0ibGF5ZXIxIj4KICAgIDxwYXRoCiAgICAgICBkPSJNIDMuODM4OSwwLjk0MTY3IEMgMy42NTM5LDAuNzAzNjcgMy40MTU5LDAuNTE3NjcgMy4xMjQ5LDAuMzg1NjcgMi44MDc5LDAuMjUzNjcgMi40ODk5LDAuMTczNjcgMi4xMTk5LDAuMTczNjcgMS43NDg5LDAuMTczNjcgMS40MzE5LDAuMjUzNjcgMS4xMTQyLDAuMzg1NjcgMC44MjMxNiwwLjUxNzY3IDAuNTg1MTYsMC43MDM2NyAwLjQwMDE2LDAuOTQxNjcgMC4yMTUxNiwxLjE3OTcgMC4xMzUxNiwxLjQxNzcgMC4xMzUxNiwxLjcwODcgMC4xMzUxNiwxLjk0NjcgMC4xODgxNiwyLjE1ODcgMC4zMjAxNiwyLjM0MzcgMC40NTMxNiwyLjU1NTcgMC42MTExNiwyLjcxMzcgMC44MjMxNiwyLjg0NjcgMC43OTIxNiwzLjE1NDcgMC42NTAxNiwzLjM4MjcgMC40NzkxNiwzLjU4NzcgMC40MjgxNiwzLjY2NzcgMC41MTcxNiwzLjc0MTcgMC42OTExNiwzLjcxOTcgMS4wODgyLDMuNjM5NyAxLjQwNDksMy40NTQ3IDEuNjQyOSwzLjE2MzcgMS44MDE5LDMuMTkwNyAxLjk2MDksMy4yMTY3IDIuMTE5OSwzLjIxNjcgMi40ODk5LDMuMjE2NyAyLjgwNzksMy4xMzc3IDMuMTI0OSwzLjAwNTcgMy40MTU5LDIuODcyNyAzLjY4MDksMi42ODc3IDMuODM4OSwyLjQ0OTcgNC4wMjQ5LDIuMjExNyA0LjEwMzksMS45NzM3IDQuMTAzOSwxLjY4MjcgNC4xMDM5LDEuNDE3NyA0LjAyNDksMS4xNTI3IDMuODM4OSwwLjk0MTY3IFoiCiAgICAgICBpZD0icGF0aDE1MjQiCiAgICAgICBzdHlsZT0iZmlsbDojZmZmNzAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjI2NDU4MztzdHJva2Utb3BhY2l0eToxIiAvPgogICAgPHBhdGgKICAgICAgIGQ9Ik0gMy4wNDI5LDEuNDE2NyBIIDEuMTkxMiBDIDEuMTExMiwxLjQxNjcgMS4wNTkyLDEuMzYzNyAxLjA1OTIsMS4yODM3IDEuMDU5MiwxLjIwNDcgMS4xMTEyLDEuMTUxNyAxLjE5MTIsMS4xNTE3IEggMy4wNDI5IEMgMy4xMjE5LDEuMTUxNyAzLjE3NDksMS4yMDQ3IDMuMTc0OSwxLjI4MzcgMy4xNzQ5LDEuMzYzNyAzLjEyMTksMS40MTY3IDMuMDQyOSwxLjQxNjcgWiIKICAgICAgIGlkPSJwYXRoMTUzNiIKICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMiIC8+CiAgICA8cGF0aAogICAgICAgZD0iTSAzLjA0MjksMS45NDU3IEggMS4xOTEyIEMgMS4xMTEyLDEuOTQ1NyAxLjA1OTIsMS44OTI3IDEuMDU5MiwxLjgxMjcgMS4wNTkyLDEuNzMzNyAxLjExMTIsMS42ODA3IDEuMTkxMiwxLjY4MDcgSCAzLjA0MjkgQyAzLjEyMTksMS42ODA3IDMuMTc0OSwxLjczMzcgMy4xNzQ5LDEuODEyNyAzLjE3NDksMS44OTI3IDMuMTIxOSwxLjk0NTcgMy4wNDI5LDEuOTQ1NyBaIgogICAgICAgaWQ9InBhdGgxNTQwIgogICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MyIgLz4KICA8L2c+Cjwvc3ZnPgo=';\n return imageSource;\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.createRequestForComments = function () {\n var jsonObject;\n var proxy = this;\n var startIndex = 0;\n var pageLimit = 20;\n var pageCount = proxy.pdfViewerBase.pageCount;\n if (!proxy.isCommentsRendered) {\n if (pageLimit < pageCount) {\n pageCount = pageLimit;\n }\n else {\n proxy.isPageCommentsRendered = true;\n }\n }\n if (!this.isCommentsRendered) {\n // eslint-disable-next-line max-len\n jsonObject = { pageStartIndex: startIndex, pageEndIndex: pageCount, hashId: this.pdfViewerBase.hashId, action: 'RenderAnnotationComments', elementId: this.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId };\n proxy.isCommentsRendered = true;\n }\n else {\n // eslint-disable-next-line max-len\n jsonObject = { pageStartIndex: pageLimit, pageEndIndex: pageCount, hashId: this.pdfViewerBase.hashId, action: 'RenderAnnotationComments', elementId: this.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId };\n }\n if (this.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;\n }\n var url = this.pdfViewer.serviceUrl + '/' + this.pdfViewer.serverActionSettings.renderComments;\n proxy.commentsRequestHandler = new AjaxHandler(proxy.pdfViewer);\n proxy.commentsRequestHandler.url = url;\n proxy.commentsRequestHandler.mode = true;\n proxy.commentsRequestHandler.responseType = 'text';\n proxy.commentsRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n proxy.commentsRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n if (typeof data !== 'object') {\n data = JSON.parse(data);\n }\n if (typeof data !== 'object') {\n proxy.pdfViewerBase.onControlError(500, data, this.pdfViewer.serverActionSettings.renderComments);\n data = null;\n }\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, this.pdfViewer.serverActionSettings.renderComments);\n data = null;\n }\n }\n if (data) {\n var isInitialRender = false;\n if (proxy.pdfViewerBase.annotationComments) {\n // eslint-disable-next-line\n proxy.pdfViewerBase.annotationComments = data.annotationDetails;\n }\n else {\n proxy.pdfViewerBase.annotationComments = data.annotationDetails;\n isInitialRender = true;\n }\n if (data.annotationDetails && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.renderComments, data);\n proxy.isAnnotationRendered = true;\n // eslint-disable-next-line\n var annotationCollections = void 0;\n if (proxy.pdfViewerBase.documentAnnotationCollections) {\n // eslint-disable-next-line max-len\n annotationCollections = proxy.updateAnnotationsInDocumentCollections(proxy.pdfViewerBase.annotationComments, proxy.pdfViewerBase.documentAnnotationCollections);\n }\n else {\n // eslint-disable-next-line\n var newCollection = proxy.pdfViewerBase.createAnnotationsCollection();\n // eslint-disable-next-line max-len\n annotationCollections = proxy.updateAnnotationsInDocumentCollections(proxy.pdfViewerBase.annotationComments, newCollection);\n }\n proxy.pdfViewerBase.annotationComments = annotationCollections;\n proxy.pdfViewerBase.documentAnnotationCollections = annotationCollections;\n for (var j = data.startPageIndex; j < data.endPageIndex; j++) {\n if (data.annotationDetails[j]) {\n proxy.renderAnnotationCollections(data.annotationDetails[j], j, isInitialRender);\n }\n }\n if (!proxy.isPageCommentsRendered) {\n proxy.isPageCommentsRendered = true;\n proxy.createRequestForComments();\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n proxy.commentsRequestHandler.onFailure = function (result) {\n this.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText);\n };\n // eslint-disable-next-line\n proxy.commentsRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderComments);\n };\n };\n /**\n * @param excistingAnnotation\n * @param newAnnotation\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateAnnotationsInDocumentCollections = function (excistingAnnotation, newAnnotation) {\n for (var i = 0; i < this.pdfViewerBase.pageCount; i++) {\n if (excistingAnnotation[i] && newAnnotation[i]) {\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].textMarkupAnnotation && excistingAnnotation[i].textMarkupAnnotation.length !== 0 && newAnnotation[i].textMarkupAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].textMarkupAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].textMarkupAnnotation[j], newAnnotation[i].textMarkupAnnotation);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].shapeAnnotation && excistingAnnotation[i].shapeAnnotation.length !== 0 && newAnnotation[i].shapeAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].shapeAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].shapeAnnotation[j], newAnnotation[i].shapeAnnotation);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].measureShapeAnnotation && excistingAnnotation[i].measureShapeAnnotation.length !== 0 && newAnnotation[i].measureShapeAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].measureShapeAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].measureShapeAnnotation[j], newAnnotation[i].measureShapeAnnotation);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].stampAnnotations && excistingAnnotation[i].stampAnnotations.length !== 0 && newAnnotation[i].stampAnnotations) {\n for (var j = 0; j < excistingAnnotation[i].stampAnnotations.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].stampAnnotations[j], newAnnotation[i].stampAnnotations);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].stickyNotesAnnotation && excistingAnnotation[i].stickyNotesAnnotation.length !== 0 && newAnnotation[i].stickyNotesAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].stickyNotesAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].stickyNotesAnnotation[j], newAnnotation[i].stickyNotesAnnotation);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].freeTextAnnotation && excistingAnnotation[i].freeTextAnnotation.length !== 0 && newAnnotation[i].freeTextAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].freeTextAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].freeTextAnnotation[j], newAnnotation[i].freeTextAnnotation);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].signatureAnnotation && excistingAnnotation[i].signatureAnnotation.length !== 0 && newAnnotation[i].signatureAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].signatureAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].signatureAnnotation[j], newAnnotation[i].signatureAnnotation);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].signatureInkAnnotation && excistingAnnotation[i].signatureInkAnnotation.length !== 0 && newAnnotation[i].signatureInkAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].signatureInkAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].signatureInkAnnotation[j], newAnnotation[i].signatureInkAnnotation);\n }\n }\n }\n }\n return newAnnotation;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateDocumentAnnotationCollections = function (excistingAnnotation, newAnnotation) {\n if (newAnnotation.length === 0) {\n newAnnotation.push(excistingAnnotation);\n }\n else {\n var isAdded = false;\n for (var i = 0; i < newAnnotation.length; i++) {\n // eslint-disable-next-line max-len\n if ((excistingAnnotation.AnnotName && newAnnotation[i].AnnotName) && (excistingAnnotation.AnnotName === newAnnotation[i].AnnotName)) {\n isAdded = true;\n break;\n }\n }\n if (!isAdded) {\n newAnnotation.push(excistingAnnotation);\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.renderAnnotationCollections = function (pageAnnotations, pageNumber, isInitialRender) {\n // eslint-disable-next-line\n var pageCollections = [];\n if (pageAnnotations.textMarkupAnnotation && pageAnnotations.textMarkupAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.textMarkupAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.textMarkupAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.textMarkupAnnotation[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.textMarkupAnnotation[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewer.annotationModule.textMarkupAnnotationModule.updateTextMarkupAnnotationCollections(pageAnnotations.textMarkupAnnotation[i], pageNumber));\n }\n }\n if (pageAnnotations.shapeAnnotation && pageAnnotations.shapeAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.shapeAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.shapeAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.shapeAnnotation[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.shapeAnnotation[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewer.annotationModule.shapeAnnotationModule.updateShapeAnnotationCollections(pageAnnotations.shapeAnnotation[i], pageNumber));\n }\n }\n if (pageAnnotations.measureShapeAnnotation && pageAnnotations.measureShapeAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.measureShapeAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.measureShapeAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.measureShapeAnnotation[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.measureShapeAnnotation[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewer.annotationModule.measureAnnotationModule.updateMeasureAnnotationCollections(pageAnnotations.measureShapeAnnotation[i], pageNumber));\n }\n }\n if (pageAnnotations.stampAnnotations && pageAnnotations.stampAnnotations.length !== 0) {\n for (var i = 0; i < pageAnnotations.stampAnnotations.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.stampAnnotations[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.stampAnnotations[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.stampAnnotations[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewer.annotationModule.stampAnnotationModule.updateStampAnnotationCollections(pageAnnotations.stampAnnotations[i], pageNumber));\n }\n }\n if (pageAnnotations.stickyNotesAnnotation && pageAnnotations.stickyNotesAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.stickyNotesAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.stickyNotesAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.stickyNotesAnnotation[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.stickyNotesAnnotation[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.updateStickyNotesAnnotationCollections(pageAnnotations.stickyNotesAnnotation[i], pageNumber));\n }\n }\n if (pageAnnotations.freeTextAnnotation && pageAnnotations.freeTextAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.freeTextAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.freeTextAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.freeTextAnnotation[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.freeTextAnnotation[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewer.annotationModule.freeTextAnnotationModule.updateFreeTextAnnotationCollections(pageAnnotations.freeTextAnnotation[i], pageNumber));\n }\n }\n if (pageAnnotations.signatureAnnotation && pageAnnotations.signatureAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.signatureAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.signatureAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.signatureAnnotation[i].ModifiedDate);\n }\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewerBase.signatureModule.updateSignatureCollections(pageAnnotations.signatureAnnotation[i], pageNumber), true);\n }\n }\n if (pageAnnotations.signatureInkAnnotation && pageAnnotations.signatureInkAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.signatureInkAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.signatureInkAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.signatureInkAnnotation[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.signatureInkAnnotation[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewer.annotationModule.inkAnnotationModule.updateInkCollections(pageAnnotations.signatureInkAnnotation[i], pageNumber));\n }\n }\n if (this.pdfViewer.toolbarModule) {\n this.renderAnnotationComments(pageCollections, pageNumber);\n }\n if (isInitialRender) {\n for (var i = 0; i < this.pdfViewerBase.renderedPagesList.length; i++) {\n this.pdfViewerBase.renderAnnotations(this.pdfViewerBase.renderedPagesList[i]);\n }\n }\n };\n /**\n * @param annotation\n * @param isSignature\n * @param annotation\n * @param isSignature\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateCollections = function (annotation, isSignature) {\n var isAdded = false;\n // eslint-disable-next-line\n var collections;\n if (isSignature) {\n collections = this.pdfViewer.signatureCollection;\n }\n else {\n collections = this.pdfViewer.annotationCollection;\n }\n if (collections && annotation) {\n for (var i = 0; i < collections.length; i++) {\n if (isSignature) {\n if (collections[i].signatureName === annotation.signatureName) {\n isAdded = true;\n break;\n }\n }\n else {\n if (collections[i].annotationId === annotation.annotationId) {\n isAdded = true;\n break;\n }\n }\n }\n }\n if (!isAdded && annotation) {\n if (isSignature) {\n this.pdfViewer.signatureCollection.push(annotation);\n }\n else {\n this.pdfViewer.annotationCollection.push(annotation);\n }\n }\n };\n /**\n * @param data\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.renderAnnotationComments = function (data, pageIndex) {\n pageIndex = pageIndex + 1;\n if (data) {\n if (data.length !== 0) {\n this.createPageAccordion(pageIndex);\n for (var i = 0; i < data.length; i++) {\n if (data[i].AnnotName && (data[i].AnnotName.split('freeText').length === 1)) {\n this.createCommentControlPanel(data[i], pageIndex);\n }\n }\n // eslint-disable-next-line\n var newCommentsDiv = document.querySelectorAll('.e-pv-new-comments-div');\n if (newCommentsDiv) {\n for (var j = 0; j < newCommentsDiv.length; j++) {\n newCommentsDiv[j].style.display = 'none';\n }\n }\n }\n }\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.initializeAcccordionContainer = function () {\n // eslint-disable-next-line max-len\n var commentPanelText = createElement('div', { id: this.pdfViewer.element.id + '_commentsPanelText', className: 'e-pv-comments-panel-text' });\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_NoCommentsYet');\n promise.then(function (value) {\n commentPanelText.textContent = value;\n });\n }\n else {\n commentPanelText.textContent = this.pdfViewer.localeObj.getConstant('No Comments Yet');\n }\n this.updateCommentPanelTextTop();\n this.pdfViewerBase.navigationPane.commentsContentContainer.appendChild(commentPanelText);\n // eslint-disable-next-line max-len\n this.accordionContentContainer = createElement('div', { id: this.pdfViewer.element.id + '_accordionContentContainer', className: 'e-pv-accordion-content-container' });\n this.pdfViewerBase.navigationPane.commentsContentContainer.appendChild(this.accordionContentContainer);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], false);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], false);\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.updateCommentPanelTextTop = function () {\n var commentPanelText = document.getElementById(this.pdfViewer.element.id + '_commentsPanelText');\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.navigationPane.commentPanelContainer && this.pdfViewerBase.navigationPane.commentPanelContainer.clientHeight && commentPanelText.style.display !== 'none') {\n commentPanelText.style.paddingTop = (this.pdfViewerBase.navigationPane.commentPanelContainer.clientHeight / 2) - 47 + 'px';\n commentPanelText.style.paddingLeft = (this.pdfViewerBase.navigationPane.commentPanelContainer.clientWidth) / 3 + 'px';\n }\n };\n /**\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.createPageAccordion = function (pageIndex) {\n var pageAccordionContainer = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageIndex);\n if (pageAccordionContainer === null && this.pdfViewer.enableCommentPanel) {\n this.accordionContent = createElement('div', { id: this.pdfViewer.element.id + '_accordioncontent' + pageIndex });\n this.accordionContent.style.zIndex = '1000';\n // eslint-disable-next-line max-len\n this.accordionPageContainer = createElement('div', { id: this.pdfViewer.element.id + '_accordionPageContainer' + pageIndex, className: 'e-pv-accordion-page-container' });\n this.accordionPageContainer.appendChild(this.accordionContent);\n this.pdfViewerBase.viewerMainContainer.appendChild(this.accordionPageContainer);\n // eslint-disable-next-line max-len\n this.accordionContainer = createElement('div', { id: this.pdfViewer.element.id + '_accordionContainer' + pageIndex, className: 'e-pv-accordion-container' });\n var pageAccordion = new Accordion({\n items: [\n // eslint-disable-next-line max-len\n { header: this.pdfViewer.localeObj.getConstant('Page') + ' ' + (pageIndex), expanded: true, content: '#' + this.pdfViewer.element.id + '_accordioncontent' + pageIndex + '' }\n ]\n });\n pageAccordion.appendTo(this.accordionContainer);\n this.accordionContainer.style.order = 'pageIndex';\n this.alignAccordionContainer(this.accordionContainer, pageIndex);\n if (document.getElementById(this.pdfViewer.element.id + '_commentsPanelText')) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], true);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], true);\n document.getElementById(this.pdfViewer.element.id + '_commentsPanelText').style.display = 'none';\n }\n if (document.getElementById(this.pdfViewer.element.id + '_accordionContentContainer')) {\n document.getElementById(this.pdfViewer.element.id + '_accordionContentContainer').style.display = 'block';\n }\n return this.accordionContainer;\n }\n };\n StickyNotesAnnotation.prototype.alignAccordionContainer = function (accordionDiv, pageIndex) {\n var isAdded = true;\n if (this.accordionContentContainer) {\n if (this.isAccordionContainer) {\n this.accordionContentContainer.appendChild(accordionDiv);\n isAdded = false;\n }\n else {\n for (var i = 1; i <= this.pdfViewerBase.pageCount; i++) {\n var nextElement = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + i);\n if (nextElement) {\n if (pageIndex < i) {\n this.accordionContentContainer.insertBefore(accordionDiv, nextElement);\n isAdded = false;\n break;\n }\n }\n }\n }\n if (isAdded) {\n this.accordionContentContainer.appendChild(accordionDiv);\n isAdded = false;\n }\n this.isAccordionContainer = false;\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n StickyNotesAnnotation.prototype.updateCommentPanelScrollTop = function (pageNumber) {\n var accordionDiv = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageNumber);\n if (accordionDiv) {\n var scrollValue = accordionDiv.offsetTop + accordionDiv.clientTop - 35;\n this.pdfViewerBase.navigationPane.commentsContentContainer.scrollTop = scrollValue;\n }\n };\n /**\n * @param data\n * @param pageIndex\n * @param type\n * @param annotationSubType\n * @param data\n * @param pageIndex\n * @param type\n * @param annotationSubType\n * @param data\n * @param pageIndex\n * @param type\n * @param annotationSubType\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.createCommentControlPanel = function (data, pageIndex, type, annotationSubType) {\n var accordionContent = document.getElementById(this.pdfViewer.element.id + '_accordioncontent' + pageIndex);\n if (accordionContent) {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageIndex);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line max-len\n this.commentsContainer = createElement('div', { id: this.pdfViewer.element.id + 'commentscontainer' + pageIndex + '_' + this.commentsCount, className: 'e-pv-comments-container' });\n this.commentsContainer.accessKey = pageIndex.toString();\n var isCommentsAdded = false;\n if (data) {\n this.commentsContainer.id = data.AnnotName;\n if (data.AnnotName) {\n for (var j = 0; j < accordionContent.childElementCount; j++) {\n if (accordionContent.children[j].id === data.AnnotName) {\n isCommentsAdded = true;\n break;\n }\n }\n }\n if (data.Name && data.Name === 'freeText') {\n this.commentsContainer.setAttribute('name', 'freeText');\n }\n else {\n this.commentsContainer.setAttribute('name', data.AnnotType);\n }\n }\n if (type) {\n this.commentsContainer.setAttribute('name', type);\n }\n this.commentsContainer.addEventListener('mousedown', this.commentsAnnotationSelect.bind(this));\n // eslint-disable-next-line max-len\n var commentDiv = createElement('div', { id: this.pdfViewer.element.id + '_commentdiv' + pageIndex + '_' + this.commentsCount, className: 'e-pv-comments-div' });\n this.commentsCount = this.commentsCount + 1;\n this.commentsContainer.appendChild(commentDiv);\n this.updateCommentPanelScrollTop(pageIndex);\n if (!isCommentsAdded) {\n accordionContent.appendChild(this.commentsContainer);\n }\n var title = void 0;\n if (data) {\n title = this.commentsContainer.getAttribute('name');\n if (title === 'null') {\n title = data.AnnotationType;\n }\n this.createTitleContainer(commentDiv, title, data.Subject, data.ModifiedDate, data.Author);\n }\n else {\n title = this.commentsContainer.getAttribute('name');\n this.createTitleContainer(commentDiv, title, annotationSubType);\n }\n // eslint-disable-next-line max-len\n var commentTextBox = createElement('div', { id: this.pdfViewer.element.id + '_commenttextbox', className: 'e-pv-comment-textbox' });\n // eslint-disable-next-line\n var editObj_1 = new InPlaceEditor({\n mode: 'Inline',\n type: 'Text',\n model: { placeholder: this.pdfViewer.localeObj.getConstant('Add a comment') + '..' },\n emptyText: '',\n editableOn: 'EditIconClick',\n saveButton: {\n content: this.pdfViewer.localeObj.getConstant('Post'),\n cssClass: 'e-outline',\n disabled: true\n },\n cancelButton: {\n content: this.pdfViewer.localeObj.getConstant('Cancel'),\n cssClass: 'e-outline'\n },\n submitOnEnter: true\n });\n editObj_1.appendTo(commentTextBox);\n // eslint-disable-next-line\n var textBox = document.querySelectorAll('.e-editable-inline');\n for (var j = 0; j < textBox.length; j++) {\n textBox[j].style.display = 'none';\n }\n if (!data) {\n editObj_1.enableEditMode = true;\n }\n // eslint-disable-next-line\n commentTextBox.addEventListener('keydown', function (event) {\n if (editObj_1.element.querySelector('.e-btn-save')) {\n if (event.srcElement.value !== '') {\n editObj_1.element.querySelector('.e-btn-save').ej2_instances[0].disabled = false;\n }\n else {\n editObj_1.element.querySelector('.e-btn-save').ej2_instances[0].disabled = true;\n }\n }\n });\n editObj_1.actionSuccess = this.createCommentDiv.bind(this, editObj_1);\n commentDiv.appendChild(commentTextBox);\n if (data) {\n editObj_1.value = data.Note;\n var isCommentLocked = this.checkIslockProperty(data);\n if (isCommentLocked && data.Comments == null) {\n this.createCommentDiv(this.commentsContainer);\n }\n if (data.Name === 'freeText') {\n editObj_1.value = data.MarkupText;\n }\n if (data.State) {\n // eslint-disable-next-line max-len\n var statusContainer = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var statusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n var statusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon' });\n statusDiv.appendChild(statusSpan);\n statusContainer.appendChild(statusDiv);\n commentDiv.appendChild(statusContainer);\n this.updateStatusContainer(data.State, statusSpan, statusDiv, statusContainer);\n }\n if (data.Comments) {\n for (var j = 0; j < data.Comments.length; j++) {\n this.renderComments(data.Comments[j], this.commentsContainer);\n }\n if (data.Note !== ' ' && data.Note !== '' && data.Note !== null) {\n this.createCommentDiv(this.commentsContainer);\n }\n }\n }\n this.isNewcommentAdded = true;\n commentDiv.addEventListener('click', this.commentsDivClickEvent.bind(this));\n commentDiv.addEventListener('mouseover', this.commentDivMouseOver.bind(this));\n commentDiv.addEventListener('mouseleave', this.commentDivMouseLeave.bind(this));\n commentDiv.addEventListener('mouseout', this.commentDivMouseLeave.bind(this));\n commentDiv.addEventListener('focusout', this.commentDivMouseLeave.bind(this));\n commentTextBox.addEventListener('dblclick', this.openEditorElement.bind(this));\n commentTextBox.addEventListener('focusin', this.commentDivFocus.bind(this));\n return (this.commentsContainer.id);\n }\n return '';\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentDivFocus = function (args) {\n // eslint-disable-next-line\n var proxy = this;\n var pageNumber = this.pdfViewerBase.currentPageNumber;\n setTimeout(function () {\n proxy.updateScrollPosition(pageNumber);\n }, 500);\n };\n StickyNotesAnnotation.prototype.updateScrollPosition = function (pageNumber) {\n var accordionDiv = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageNumber);\n if (accordionDiv && this.isNewcommentAdded) {\n var commentHeight = 0;\n // eslint-disable-next-line\n var textBox = document.querySelectorAll('.e-editable-inline');\n if (textBox[0]) {\n commentHeight = textBox[0].getBoundingClientRect().height;\n }\n var scrollValue = accordionDiv.offsetTop + accordionDiv.clientTop + commentHeight;\n if (this.pdfViewerBase.navigationPane.commentsContentContainer.scrollTop < scrollValue) {\n this.pdfViewerBase.navigationPane.commentsContentContainer.scrollTop = scrollValue;\n }\n this.isNewcommentAdded = false;\n }\n };\n StickyNotesAnnotation.prototype.updateCommentsScrollTop = function (isCommentsAdded) {\n // eslint-disable-next-line max-len\n var accordionDiv = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + this.pdfViewerBase.currentPageNumber);\n // eslint-disable-next-line\n var commentsContainer = document.querySelector('.e-pv-comments-border');\n var commentsHeight = 0;\n if (accordionDiv && commentsContainer) {\n commentsHeight = commentsContainer.getBoundingClientRect().height;\n var scrollValue = void 0;\n if (isCommentsAdded) {\n scrollValue = accordionDiv.offsetTop + commentsContainer.offsetTop + (commentsHeight / 4);\n }\n else {\n scrollValue = accordionDiv.offsetTop + commentsContainer.offsetTop - 70;\n }\n this.pdfViewerBase.navigationPane.commentsContentContainer.scrollTop = scrollValue;\n }\n };\n /**\n * @param args\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.createCommentDiv = function (args) {\n var _this = this;\n var commentsContainer;\n var titleContainer;\n // eslint-disable-next-line\n var newCommentDiv = createElement('div', { id: this.pdfViewer.element.id + '_newcommentdiv' + this.commentsCount, className: 'e-pv-new-comments-div' });\n if (args.localName) {\n commentsContainer = args;\n }\n else {\n commentsContainer = args.valueEle.parentElement.parentElement.parentElement.parentElement;\n titleContainer = args.valueEle.parentElement.parentElement.previousSibling.childNodes[1];\n }\n // eslint-disable-next-line\n var commentObj = new InPlaceEditor({\n mode: 'Inline',\n type: 'Text',\n value: '',\n editableOn: 'Click',\n model: { placeholder: this.pdfViewer.localeObj.getConstant('Add a reply') + '..' },\n emptyText: this.pdfViewer.localeObj.getConstant('Add a reply'),\n saveButton: {\n content: this.pdfViewer.localeObj.getConstant('Post'),\n cssClass: 'e-outline',\n disabled: true\n },\n cancelButton: {\n content: this.pdfViewer.localeObj.getConstant('Cancel'),\n cssClass: 'e-outline'\n },\n submitOnEnter: true\n });\n commentObj.appendTo(newCommentDiv);\n newCommentDiv.lastChild.firstChild.click();\n // eslint-disable-next-line\n newCommentDiv.addEventListener('keydown', function (event) {\n if (commentObj.element.querySelector('.e-btn-save')) {\n if (event.srcElement.value !== '') {\n commentObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = false;\n }\n else {\n commentObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = true;\n commentObj.enableEditMode = true;\n }\n }\n });\n if (args.valueEle) {\n if (args.value != null && args.value !== '' && args.value !== ' ') {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n this.modifyTextProperty(args.value, args.prevValue, args.valueEle.parentNode.parentNode.parentNode.parentNode.id);\n }\n else {\n try {\n this.modifyTextProperty(args.value, args.prevValue, args.valueEle.parentNode.parentNode.parentNode.parentNode.id);\n }\n catch (error) {\n this.modifyTextProperty(args.value, args.prevValue);\n }\n }\n this.updateModifiedDate(titleContainer);\n }\n if (args.valueEle.parentElement.parentElement.parentElement.parentElement.childElementCount === 1) {\n if (args.value != null && args.value !== '' && args.value !== ' ') {\n commentsContainer.appendChild(newCommentDiv);\n setTimeout(function () {\n _this.updateCommentsScrollTop(true);\n }, 50);\n }\n }\n }\n else {\n commentsContainer.appendChild(newCommentDiv);\n setTimeout(function () {\n _this.updateCommentsScrollTop(true);\n }, 50);\n }\n commentObj.actionSuccess = this.saveCommentDiv.bind(this, commentObj);\n };\n /**\n * @param args\n * @param comment\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.saveCommentDiv = function (args, comment) {\n var commentsContainer;\n var annotationAuthor;\n // eslint-disable-next-line\n var lastElement;\n var commentValue;\n if (comment.name && args.value !== '') {\n commentsContainer = args.valueEle.parentElement.parentElement.parentElement;\n lastElement = args.valueEle.parentElement.parentElement;\n commentValue = args.value;\n }\n else {\n commentsContainer = args;\n lastElement = commentsContainer.lastChild;\n commentValue = comment;\n }\n if (commentsContainer && lastElement) {\n commentsContainer.removeChild(lastElement);\n var replyTextBox = createElement('div', { id: this.pdfViewer.element.id + '_replytextbox' });\n this.commentsreplyCount = this.commentsreplyCount + 1;\n // eslint-disable-next-line\n var replyCommentDiv = createElement('div', { id: this.pdfViewer.element.id + 'replyDiv' + this.commentsreplyCount, className: 'e-pv-reply-div' });\n replyCommentDiv.id = this.pdfViewer.annotation.createGUID();\n annotationAuthor = this.getAuthorName(this.pdfViewer.selectedItems.annotations[0], commentsContainer);\n this.createReplyDivTitleContainer(replyCommentDiv, null, annotationAuthor);\n replyCommentDiv.addEventListener('mouseover', this.commentDivMouseOver.bind(this));\n replyCommentDiv.addEventListener('mouseleave', this.commentDivMouseLeave.bind(this));\n replyCommentDiv.addEventListener('click', this.commentDivOnSelect.bind(this));\n replyTextBox.addEventListener('dblclick', this.openEditorElement.bind(this));\n replyCommentDiv.style.border = 1 + 'px';\n replyCommentDiv.style.borderColor = 'black';\n replyCommentDiv.style.zIndex = 1002;\n // eslint-disable-next-line\n var saveObj_1 = new InPlaceEditor({\n mode: 'Inline',\n type: 'Text',\n emptyText: '',\n editableOn: 'EditIconClick',\n model: { placeholder: this.pdfViewer.localeObj.getConstant('Add a reply') + '..' },\n value: commentValue,\n saveButton: {\n content: this.pdfViewer.localeObj.getConstant('Post'),\n cssClass: 'e-outline'\n },\n cancelButton: {\n content: this.pdfViewer.localeObj.getConstant('Cancel'),\n cssClass: 'e-outline'\n }\n });\n saveObj_1.appendTo(replyTextBox);\n saveObj_1.actionSuccess = this.modifyProperty.bind(this, saveObj_1);\n replyCommentDiv.appendChild(replyTextBox);\n replyCommentDiv.style.paddingLeft = 24 + 'px';\n commentsContainer.appendChild(replyCommentDiv);\n // eslint-disable-next-line\n replyTextBox.addEventListener('keydown', function (event) {\n if (saveObj_1.element.querySelector('.e-btn-save')) {\n if (event.srcElement.value !== '') {\n saveObj_1.element.querySelector('.e-btn-save').ej2_instances[0].disabled = false;\n }\n else {\n saveObj_1.element.querySelector('.e-btn-save').ej2_instances[0].disabled = true;\n }\n }\n });\n replyCommentDiv.addEventListener('click', this.commentsDivClickEvent.bind(this));\n replyCommentDiv.addEventListener('dblclick', this.commentsDivDoubleClickEvent.bind(this));\n this.createCommentDiv(replyCommentDiv.parentElement);\n this.modifyCommentsProperty(commentValue, replyCommentDiv.id, commentsContainer.id);\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.renderComments = function (data, commentDiv, undoRedoAction, id, isCommentAction) {\n var annotationAuthor;\n var replyTextBox = createElement('div', { id: this.pdfViewer.element.id + '_replytextbox' });\n this.commentsreplyCount = this.commentsreplyCount + 1;\n var replyDiv = createElement('div', { id: 'replyDiv' + this.commentsreplyCount, className: 'e-pv-reply-div' });\n if (undoRedoAction) {\n replyDiv.id = data.annotName;\n annotationAuthor = data.author;\n }\n else {\n replyDiv.id = data.AnnotName;\n annotationAuthor = data.Author;\n }\n replyDiv.style.border = 1 + 'px';\n replyDiv.style.borderColor = 'black';\n if (!annotationAuthor) {\n annotationAuthor = commentDiv.getAttribute('author');\n }\n if (undoRedoAction) {\n if (data.modifiedDate !== undefined) {\n this.createReplyDivTitleContainer(replyDiv, data.modifiedDate, annotationAuthor);\n }\n else {\n this.createReplyDivTitleContainer(replyDiv, null, annotationAuthor);\n }\n }\n else {\n this.createReplyDivTitleContainer(replyDiv, data.ModifiedDate, annotationAuthor);\n }\n replyDiv.addEventListener('mouseover', this.commentDivMouseOver.bind(this));\n replyDiv.addEventListener('mouseleave', this.commentDivMouseLeave.bind(this));\n replyDiv.addEventListener('click', this.commentDivOnSelect.bind(this));\n replyTextBox.addEventListener('dblclick', this.openEditorElement.bind(this));\n // eslint-disable-next-line\n var saveObj = new InPlaceEditor({\n mode: 'Inline',\n type: 'Text',\n emptyText: '',\n editableOn: 'EditIconClick',\n model: { placeholder: this.pdfViewer.localeObj.getConstant('Add a reply') + '..' },\n value: '',\n saveButton: {\n content: this.pdfViewer.localeObj.getConstant('Post'),\n cssClass: 'e-outline'\n },\n cancelButton: {\n content: this.pdfViewer.localeObj.getConstant('Cancel'),\n cssClass: 'e-outline'\n }\n });\n if (undoRedoAction) {\n saveObj.value = data.note;\n }\n else {\n saveObj.value = data.Note;\n }\n saveObj.appendTo(replyTextBox);\n replyDiv.appendChild(replyTextBox);\n if (undoRedoAction) {\n data.State = data.state;\n }\n if (data.State) {\n // eslint-disable-next-line max-len\n var statusContainer = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var statusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n var statusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon' });\n statusDiv.appendChild(statusSpan);\n statusContainer.appendChild(statusDiv);\n replyDiv.appendChild(statusContainer);\n this.updateStatusContainer(data.State, statusSpan, statusDiv, statusContainer);\n }\n replyDiv.style.paddingLeft = 24 + 'px';\n // eslint-disable-next-line\n replyTextBox.addEventListener('keydown', function (event) {\n if (saveObj.element.querySelector('.e-btn-save')) {\n if (event.srcElement.value !== '') {\n saveObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = false;\n }\n else {\n saveObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = true;\n }\n }\n });\n if (undoRedoAction) {\n if (isCommentAction) {\n commentDiv.appendChild(replyDiv);\n }\n else {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(id);\n if (data.position) {\n commentsDiv.insertBefore(replyDiv, commentsDiv.childNodes[data.position]);\n }\n else {\n // eslint-disable-next-line\n if (commentsDiv) {\n if (commentsDiv.childElementCount > 1) {\n commentsDiv.insertBefore(replyDiv, commentsDiv.childNodes[commentsDiv.childElementCount - 1]);\n }\n else {\n commentDiv.appendChild(replyDiv);\n }\n }\n }\n }\n }\n else {\n commentDiv.appendChild(replyDiv);\n }\n replyDiv.addEventListener('click', this.commentsDivClickEvent.bind(this));\n replyDiv.addEventListener('dblclick', this.commentsDivDoubleClickEvent.bind(this));\n saveObj.actionSuccess = this.modifyProperty.bind(this, saveObj);\n };\n /**\n * @param data\n * @param pageIndex\n * @param isCopy\n * @param data\n * @param pageIndex\n * @param isCopy\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.createCommentsContainer = function (data, pageIndex, isCopy) {\n // eslint-disable-next-line\n var accordionContentContainer = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageIndex);\n if (!accordionContentContainer) {\n // eslint-disable-next-line max-len\n var accordionPageContainer = document.getElementById(this.pdfViewer.element.id + '_accordionPageContainer' + pageIndex);\n if (accordionPageContainer) {\n accordionPageContainer.parentElement.removeChild(accordionPageContainer);\n }\n accordionContentContainer = this.createPageAccordion(pageIndex);\n if (accordionContentContainer) {\n accordionContentContainer.ej2_instances[0].expandItem(true);\n }\n }\n var accordionContent = document.getElementById(this.pdfViewer.element.id + '_accordioncontent' + pageIndex);\n // eslint-disable-next-line max-len\n this.commentsContainer = createElement('div', { id: this.pdfViewer.element.id + 'commentscontainer' + pageIndex + '_' + this.commentsCount, className: 'e-pv-comments-container' });\n this.commentsContainer.accessKey = pageIndex.toString();\n if (data) {\n this.commentsContainer.id = data.annotName;\n }\n this.commentsContainer.addEventListener('mousedown', this.commentsAnnotationSelect.bind(this));\n // eslint-disable-next-line max-len\n var commentDiv = createElement('div', { id: this.pdfViewer.element.id + '_commentdiv' + pageIndex + '_' + this.commentsCount, className: 'e-pv-comments-div' });\n this.commentsCount = this.commentsCount + 1;\n this.commentsContainer.appendChild(commentDiv);\n this.updateCommentPanelScrollTop(pageIndex);\n if (data && accordionContent) {\n if (data.position || data.position === 0) {\n accordionContent.insertBefore(this.commentsContainer, accordionContent.children[data.position]);\n }\n else {\n accordionContent.appendChild(this.commentsContainer);\n }\n }\n if (data && accordionContent) {\n if (data.indent) {\n this.commentsContainer.setAttribute('name', 'shape_measure');\n this.createTitleContainer(commentDiv, 'shape_measure', data.subject, data.modifiedDate, data.author);\n }\n else if (data.shapeAnnotationType === 'sticky' || data.shapeAnnotationType === 'stamp') {\n // eslint-disable-next-line max-len\n var annotType = this.createTitleContainer(commentDiv, data.shapeAnnotationType, null, data.modifiedDate, data.author);\n this.commentsContainer.setAttribute('name', annotType);\n if (annotType === 'sticky') {\n if (!isCopy) {\n this.addStickyNotesAnnotations((pageIndex - 1), data);\n }\n }\n }\n else if (data.shapeAnnotationType === 'textMarkup') {\n this.commentsContainer.setAttribute('name', 'textMarkup');\n this.createTitleContainer(commentDiv, 'textMarkup', data.subject, data.modifiedDate, data.author);\n }\n else if (data.shapeAnnotationType === 'FreeText') {\n data.note = data.dynamicText;\n this.commentsContainer.setAttribute('name', 'freetext');\n this.createTitleContainer(commentDiv, 'freeText', data.subject, data.modifiedDate);\n }\n else if (data.shapeAnnotationType === 'Ink') {\n data.note = data.dynamicText;\n this.commentsContainer.setAttribute('name', 'ink');\n this.createTitleContainer(commentDiv, 'ink', data.subject, data.modifiedDate);\n }\n else {\n this.commentsContainer.setAttribute('name', 'shape');\n if (data.shapeAnnotationType === 'Line') {\n this.createTitleContainer(commentDiv, 'shape', data.subject, data.modifiedDate, data.author);\n }\n else {\n this.createTitleContainer(commentDiv, 'shape', data.shapeAnnotationType, data.modifiedDate, data.author);\n }\n }\n }\n // eslint-disable-next-line max-len\n var commentTextBox = createElement('div', { id: this.pdfViewer.element.id + '_commenttextbox', className: 'e-pv-comment-textbox' });\n // eslint-disable-next-line\n var editObj = new InPlaceEditor({\n mode: 'Inline',\n type: 'Text',\n model: { placeholder: this.pdfViewer.localeObj.getConstant('Add a comment') + '..' },\n emptyText: '',\n editableOn: 'EditIconClick',\n saveButton: {\n content: this.pdfViewer.localeObj.getConstant('Post'),\n cssClass: 'e-outline',\n disabled: true\n },\n cancelButton: {\n content: this.pdfViewer.localeObj.getConstant('Cancel'),\n cssClass: 'e-outline'\n },\n submitOnEnter: true\n });\n editObj.appendTo(commentTextBox);\n // eslint-disable-next-line\n var textBox = document.querySelectorAll('.e-editable-inline');\n for (var j = 0; j < textBox.length; j++) {\n textBox[j].style.display = 'none';\n }\n // eslint-disable-next-line\n commentTextBox.addEventListener('keydown', function (event) {\n if (editObj.element.querySelector('.e-btn-save')) {\n if (event.srcElement.value !== '') {\n editObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = false;\n }\n else {\n editObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = true;\n }\n }\n });\n editObj.actionSuccess = this.createCommentDiv.bind(this, editObj);\n commentDiv.appendChild(commentTextBox);\n if (data) {\n editObj.value = data.note;\n if (data.state) {\n // eslint-disable-next-line max-len\n var statusContainer = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var statusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n var statusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon' });\n statusDiv.appendChild(statusSpan);\n statusContainer.appendChild(statusDiv);\n commentDiv.appendChild(statusContainer);\n this.updateStatusContainer(data.state, statusSpan, statusDiv, statusContainer);\n }\n if (data.comments) {\n for (var j = 0; j < data.comments.length; j++) {\n this.renderComments(data.comments[j], this.commentsContainer, true, null, true);\n }\n if (data.comments.length > 0) {\n this.createCommentDiv(this.commentsContainer);\n }\n }\n }\n commentDiv.addEventListener('click', this.commentsDivClickEvent.bind(this));\n commentDiv.addEventListener('mouseover', this.commentDivMouseOver.bind(this));\n commentDiv.addEventListener('mouseleave', this.commentDivMouseLeave.bind(this));\n commentDiv.addEventListener('mouseout', this.commentDivMouseLeave.bind(this));\n commentDiv.addEventListener('focusout', this.commentDivMouseLeave.bind(this));\n commentTextBox.addEventListener('dblclick', this.openEditorElement.bind(this));\n return (this.commentsContainer.id);\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.modifyProperty = function (args) {\n var commentElement = args.element.parentElement.id;\n var parentElement = args.element.parentElement.parentElement.id;\n var titleElement = args.element.previousSibling.firstChild;\n this.updateModifiedDate(titleElement);\n this.modifyCommentsProperty(args.value, commentElement, parentElement, args.prevValue);\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.createTitleContainer = function (commentsDivElement, type, subType, modifiedDate, author) {\n var annotationType = this.getAnnotationType(type);\n // eslint-disable-next-line max-len\n var commentTitleContainer = createElement('div', { id: this.pdfViewer.element.id + '_commentTitleConatiner', className: 'e-pv-comment-title-container' });\n // eslint-disable-next-line max-len\n var commentTypeSpan = createElement('span', { id: this.pdfViewer.element.id + '_commenttype' + '_icon' });\n commentTypeSpan.style.opacity = '0.6';\n this.updateCommentIcon(commentTypeSpan, annotationType, subType);\n var annotationAuthor;\n if (!author) {\n annotationAuthor = this.pdfViewer.annotationModule.updateAnnotationAuthor(annotationType, subType);\n }\n else {\n annotationAuthor = author;\n }\n commentTypeSpan.style.padding = 8 + 'px';\n commentTypeSpan.style.cssFloat = 'left';\n commentTitleContainer.appendChild(commentTypeSpan);\n // eslint-disable-next-line max-len\n var commentsTitle = createElement('div', { id: this.pdfViewer.element.id + '_commentTitle', className: 'e-pv-comment-title' });\n if (!modifiedDate) {\n commentsTitle.textContent = annotationAuthor + ' - ' + this.setModifiedDate();\n }\n else {\n commentsTitle.textContent = annotationAuthor + ' - ' + this.setExistingAnnotationModifiedDate(modifiedDate);\n }\n commentTitleContainer.appendChild(commentsTitle);\n // eslint-disable-next-line max-len\n var moreOptionsButton = createElement('button', { id: this.pdfViewer.element.id + '_more-options', className: 'e-pv-more-options-button e-btn', attrs: { 'tabindex': '-1' } });\n moreOptionsButton.style.visibility = 'hidden';\n moreOptionsButton.style.zIndex = '1001';\n moreOptionsButton.setAttribute('type', 'button');\n // eslint-disable-next-line max-len\n var moreOptionsButtonSpan = createElement('span', { id: this.pdfViewer.element.id + '_more-options_icon', className: 'e-pv-more-icon e-pv-icon' });\n moreOptionsButton.appendChild(moreOptionsButtonSpan);\n moreOptionsButtonSpan.style.opacity = '0.87';\n commentTitleContainer.appendChild(moreOptionsButton);\n commentsDivElement.appendChild(commentTitleContainer);\n // eslint-disable-next-line\n var commentsContainer = commentsDivElement.parentElement;\n if (commentsContainer) {\n var author_1 = this.pdfViewer.annotationModule.updateAnnotationAuthor(annotationType, subType);\n commentsContainer.setAttribute('author', author_1);\n }\n if (!this.isCreateContextMenu) {\n this.createCommentContextMenu();\n }\n this.isCreateContextMenu = true;\n commentTitleContainer.addEventListener('dblclick', this.openTextEditor.bind(this));\n moreOptionsButton.addEventListener('mouseup', this.moreOptionsClick.bind(this));\n return annotationType;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.createReplyDivTitleContainer = function (commentsDivElement, modifiedDate, annotationAuthor) {\n // eslint-disable-next-line max-len\n var replyTitleContainer = createElement('div', { id: this.pdfViewer.element.id + '_replyTitleConatiner', className: 'e-pv-reply-title-container' });\n // eslint-disable-next-line max-len\n var replyTitle = createElement('div', { id: this.pdfViewer.element.id + '_replyTitle', className: 'e-pv-reply-title' });\n if (!modifiedDate) {\n replyTitle.textContent = annotationAuthor + ' - ' + this.setModifiedDate();\n }\n else {\n replyTitle.textContent = annotationAuthor + ' - ' + this.setExistingAnnotationModifiedDate(modifiedDate);\n }\n replyTitleContainer.appendChild(replyTitle);\n // eslint-disable-next-line max-len\n var moreButton = createElement('button', { id: this.pdfViewer.element.id + '_more-options', className: 'e-pv-more-options-button e-btn', attrs: { 'tabindex': '-1' } });\n moreButton.style.visibility = 'hidden';\n moreButton.style.zIndex = '1001';\n moreButton.setAttribute('type', 'button');\n // eslint-disable-next-line max-len\n var moreButtonSpan = createElement('span', { id: this.pdfViewer.element.id + '_more-options_icon', className: 'e-pv-more-icon e-pv-icon' });\n moreButton.appendChild(moreButtonSpan);\n moreButtonSpan.style.opacity = '0.87';\n replyTitleContainer.appendChild(moreButton);\n commentsDivElement.appendChild(replyTitleContainer);\n replyTitleContainer.addEventListener('dblclick', this.openTextEditor.bind(this));\n moreButton.addEventListener('mouseup', this.moreOptionsClick.bind(this));\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateCommentIcon = function (commentSpan, annotationType, annotationSubType) {\n if (annotationType === 'sticky') {\n commentSpan.className = 'e-pv-comment-icon e-pv-icon';\n }\n else if (annotationType === 'stamp') {\n commentSpan.className = 'e-pv-stamp-icon e-pv-icon';\n }\n else if (annotationType === 'shape') {\n if (annotationSubType === 'Line') {\n commentSpan.className = 'e-pv-shape-line-icon e-pv-icon';\n }\n else if (annotationSubType === 'LineWidthArrowHead' || annotationSubType === 'Arrow') {\n commentSpan.className = 'e-pv-shape-arrow-icon e-pv-icon';\n }\n else if (annotationSubType === 'Circle' || annotationSubType === 'Ellipse' || annotationSubType === 'Oval') {\n commentSpan.className = 'e-pv-shape-circle-icon e-pv-icon';\n }\n else if (annotationSubType === 'Rectangle' || annotationSubType === 'Square') {\n commentSpan.className = 'e-pv-shape-rectangle-icon e-pv-icon';\n }\n else if (annotationSubType === 'Polygon') {\n commentSpan.className = 'e-pv-shape-pentagon-icon e-pv-icon';\n }\n else {\n commentSpan.className = 'e-pv-annotation-shape-icon e-pv-icon';\n }\n }\n else if (annotationType === 'measure') {\n if (annotationSubType === 'Distance' || annotationSubType === 'Distance calculation') {\n commentSpan.className = 'e-pv-calibrate-distance-icon e-pv-icon';\n }\n else if (annotationSubType === 'Perimeter' || annotationSubType === 'Perimeter calculation') {\n commentSpan.className = 'e-pv-calibrate-perimeter-icon e-pv-icon';\n }\n else if (annotationSubType === 'Radius' || annotationSubType === 'Radius calculation') {\n commentSpan.className = 'e-pv-calibrate-radius-icon e-pv-icon';\n }\n else if (annotationSubType === 'Area' || annotationSubType === 'Area calculation') {\n commentSpan.className = 'e-pv-calibrate-area-icon e-pv-icon';\n }\n else if (annotationSubType === 'Volume' || annotationSubType === 'Volume calculation') {\n commentSpan.className = 'e-pv-calibrate-volume-icon e-pv-icon';\n }\n else {\n commentSpan.className = 'e-pv-annotation-calibrate-icon e-pv-icon';\n }\n }\n else if (annotationType === 'textMarkup') {\n if (annotationSubType === 'Highlight') {\n commentSpan.className = 'e-pv-highlight-icon e-pv-icon';\n }\n else if (annotationSubType === 'Underline') {\n commentSpan.className = 'e-pv-underline-icon e-pv-icon';\n }\n else if (annotationSubType === 'Strikethrough') {\n commentSpan.className = 'e-pv-strikethrough-icon e-pv-icon';\n }\n else {\n commentSpan.className = 'e-pv-annotation-icon e-pv-icon';\n }\n }\n else if (annotationType === 'freeText') {\n commentSpan.className = 'e-pv-freetext-icon e-pv-icon';\n }\n else if (annotationType === 'ink' || annotationSubType === 'Ink') {\n commentSpan.className = 'e-pv-inkannotation-icon e-pv-icon';\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateStatusContainer = function (state, statusSpan, statusDiv, statusContainer) {\n if (state === 'Accepted') {\n statusDiv.style.backgroundColor = 'rgb(24,169,85)';\n statusSpan.className = 'e-pv-accepted-icon';\n }\n else if (state === 'Completed') {\n statusDiv.style.backgroundColor = 'rgb(0,122,255)';\n statusSpan.className = 'e-pv-completed-icon';\n }\n else if (state === 'Cancelled') {\n statusDiv.style.backgroundColor = 'rgb(245,103,0)';\n statusSpan.className = 'e-pv-cancelled-icon';\n }\n else if (state === 'Rejected') {\n statusDiv.style.backgroundColor = 'rgb(255,59,48)';\n statusSpan.className = 'e-pv-rejected-icon';\n }\n else {\n statusSpan.className = '';\n statusContainer.parentElement.removeChild(statusContainer);\n }\n };\n /**\n * @param removeDiv\n * @private\n */\n StickyNotesAnnotation.prototype.updateAccordionContainer = function (removeDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(removeDiv.accessKey);\n var accordionContent = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageNumber);\n if (accordionContent) {\n accordionContent.parentElement.removeChild(accordionContent);\n }\n var accordionContentContainer = document.getElementById(this.pdfViewer.element.id + '_accordionContentContainer');\n if (accordionContentContainer) {\n if (accordionContentContainer.childElementCount === 0) {\n accordionContentContainer.style.display = 'none';\n if (document.getElementById(this.pdfViewer.element.id + '_commentsPanelText')) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], false);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], false);\n document.getElementById(this.pdfViewer.element.id + '_commentsPanelText').style.display = 'block';\n this.updateCommentPanelTextTop();\n }\n }\n }\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.createCommentContextMenu = function () {\n // eslint-disable-next-line max-len\n this.commentContextMenu = [\n { text: this.pdfViewer.localeObj.getConstant('Edit') },\n { text: this.pdfViewer.localeObj.getConstant('Delete Context') },\n {\n // eslint-disable-next-line max-len\n text: this.pdfViewer.localeObj.getConstant('Set Status'), items: [{ text: this.pdfViewer.localeObj.getConstant('None') }, { text: this.pdfViewer.localeObj.getConstant('Accepted') }, { text: this.pdfViewer.localeObj.getConstant('Cancelled') }, { text: this.pdfViewer.localeObj.getConstant('Completed') }, { text: this.pdfViewer.localeObj.getConstant('Rejected') }]\n }\n ];\n var commentMenuElement = createElement('ul', { id: this.pdfViewer.element.id + '_comment_context_menu' });\n this.pdfViewer.element.appendChild(commentMenuElement);\n this.commentMenuObj = new Context({\n target: '#' + this.pdfViewer.element.id + '_more-options', items: this.commentContextMenu,\n beforeOpen: this.contextMenuBeforeOpen.bind(this),\n select: this.commentMenuItemSelect.bind(this)\n });\n if (this.pdfViewer.enableRtl) {\n this.commentMenuObj.enableRtl = true;\n }\n this.commentMenuObj.appendTo(commentMenuElement);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.commentMenuObj.animationSettings.effect = 'ZoomIn';\n }\n else {\n this.commentMenuObj.animationSettings.effect = 'SlideDown';\n }\n };\n StickyNotesAnnotation.prototype.contextMenuBeforeOpen = function (args) {\n // eslint-disable-next-line\n var contextActiveDiv;\n // eslint-disable-next-line\n var contextDiv = document.querySelectorAll('#' + this.pdfViewer.element.id + '_more-options');\n if (contextDiv) {\n for (var i = 0; i < contextDiv.length; i++) {\n if (contextDiv[i].style.visibility === 'visible') {\n contextActiveDiv = contextDiv[i].parentElement.nextSibling;\n }\n }\n }\n var isCommentLocked = this.checkIslockProperty(contextActiveDiv);\n if (isCommentLocked) {\n this.commentMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Edit')], false);\n this.commentMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Delete Context')], false);\n }\n else {\n this.commentMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Edit')], true);\n this.commentMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Delete Context')], true);\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentMenuItemSelect = function (args) {\n // eslint-disable-next-line\n var contextActiveDiv;\n // eslint-disable-next-line\n var contextDiv = document.querySelectorAll('#' + this.pdfViewer.element.id + '_more-options');\n if (contextDiv) {\n for (var i = 0; i < contextDiv.length; i++) {\n if (contextDiv[i].style.visibility === 'visible') {\n contextActiveDiv = contextDiv[i].parentElement.nextSibling;\n }\n }\n if (args.item) {\n switch (args.item.text) {\n case this.pdfViewer.localeObj.getConstant('Edit'):\n // eslint-disable-next-line\n var commentShow = document.querySelectorAll('.e-pv-new-comments-div');\n for (var i = 0; i < commentShow.length; i++) {\n commentShow[i].style.display = 'none';\n }\n contextActiveDiv.ej2_instances[0].enableEditMode = true;\n break;\n case this.pdfViewer.localeObj.getConstant('Delete Context'):\n if (contextActiveDiv.parentElement.parentElement.firstChild === contextActiveDiv.parentElement) {\n this.pdfViewer.annotationModule.deleteAnnotation();\n }\n else {\n // eslint-disable-next-line max-len\n this.modifyCommentDeleteProperty(contextActiveDiv.parentElement.parentElement, contextActiveDiv.parentElement);\n }\n break;\n case this.pdfViewer.localeObj.getConstant('Set Status'):\n break;\n case this.pdfViewer.localeObj.getConstant('Accepted'):\n if (contextActiveDiv.parentElement.lastChild.id === this.pdfViewer.element.id + 'status_container') {\n contextActiveDiv.parentElement.lastChild.remove();\n }\n // eslint-disable-next-line max-len\n var acceptedStatusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var statusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n var statusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon', className: 'e-pv-accepted-icon' });\n statusDiv.style.backgroundColor = 'rgb(24,169,85)';\n statusDiv.appendChild(statusSpan);\n acceptedStatusDiv.appendChild(statusDiv);\n contextActiveDiv.parentElement.appendChild(acceptedStatusDiv);\n this.modifyStatusProperty('Accepted', contextActiveDiv.parentElement);\n break;\n case this.pdfViewer.localeObj.getConstant('Completed'):\n if (contextActiveDiv.parentElement.lastChild.id === this.pdfViewer.element.id + 'status_container') {\n contextActiveDiv.parentElement.lastChild.remove();\n }\n // eslint-disable-next-line max-len\n var completedStatusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var statusElement = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n // eslint-disable-next-line max-len\n var statusOptionSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon', className: 'e-pv-completed-icon' });\n statusElement.style.backgroundColor = 'rgb(0,122,255)';\n statusElement.appendChild(statusOptionSpan);\n completedStatusDiv.appendChild(statusElement);\n contextActiveDiv.parentElement.appendChild(completedStatusDiv);\n this.modifyStatusProperty('Completed', contextActiveDiv.parentElement);\n break;\n case this.pdfViewer.localeObj.getConstant('Cancelled'):\n if (contextActiveDiv.parentElement.lastChild.id === this.pdfViewer.element.id + 'status_container') {\n contextActiveDiv.parentElement.lastChild.remove();\n }\n // eslint-disable-next-line max-len\n var cancelStatusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var cancelStatusElement = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n // eslint-disable-next-line max-len\n var cancelStatusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon', className: 'e-pv-cancelled-icon' });\n cancelStatusElement.style.backgroundColor = 'rgb(245,103,0)';\n cancelStatusElement.appendChild(cancelStatusSpan);\n cancelStatusDiv.appendChild(cancelStatusElement);\n contextActiveDiv.parentElement.appendChild(cancelStatusDiv);\n this.modifyStatusProperty('Cancelled', contextActiveDiv.parentElement);\n break;\n case this.pdfViewer.localeObj.getConstant('Rejected'):\n if (contextActiveDiv.parentElement.lastChild.id === this.pdfViewer.element.id + 'status_container') {\n contextActiveDiv.parentElement.lastChild.remove();\n }\n // eslint-disable-next-line max-len\n var rejectedStatusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var rejectedStatusElement = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n // eslint-disable-next-line max-len\n var rejectedStatusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon', className: 'e-pv-rejected-icon' });\n rejectedStatusElement.style.backgroundColor = 'rgb(255,59,48)';\n rejectedStatusElement.appendChild(rejectedStatusSpan);\n rejectedStatusDiv.appendChild(rejectedStatusElement);\n contextActiveDiv.parentElement.appendChild(rejectedStatusDiv);\n this.modifyStatusProperty('Rejected', contextActiveDiv.parentElement);\n break;\n case this.pdfViewer.localeObj.getConstant('None'):\n if (contextActiveDiv.parentElement.lastChild.id === this.pdfViewer.element.id + 'status_container') {\n contextActiveDiv.parentElement.lastChild.remove();\n }\n this.modifyStatusProperty('None', contextActiveDiv.parentElement);\n break;\n default:\n break;\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.moreOptionsClick = function (event, isMoreOptionClick) {\n if (document.getElementById(this.pdfViewer.element.id + '_comment_context_menu').style.display !== 'block') {\n if (event.currentTarget.className === 'e-pv-more-options-button e-btn') {\n event.currentTarget.parentElement.nextSibling.lastChild.firstChild.click();\n }\n this.pdfViewer.annotationModule.checkContextMenuDeleteItem(this.commentMenuObj);\n this.commentMenuObj.open(event.clientY, event.clientX, event.currentTarget);\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.openTextEditor = function (event) {\n // eslint-disable-next-line\n var commentShow = document.querySelectorAll('.e-pv-new-comments-div');\n for (var i = 0; i < commentShow.length; i++) {\n commentShow[i].style.display = 'none';\n }\n var isCommentLocked = this.checkIslockProperty(event.currentTarget.nextSibling);\n if (isCommentLocked) {\n event.currentTarget.nextSibling.ej2_instances[0].enableEditMode = false;\n }\n else if (event.currentTarget.parentElement.parentElement) {\n var isLocked = this.checkAnnotationSettings(event.currentTarget.parentElement.parentElement.id);\n if (isLocked) {\n // eslint-disable-next-line\n var annotation = this.findAnnotationObject(event.currentTarget.parentElement.parentElement.id);\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Select', annotation)) {\n isLocked = false;\n }\n }\n if (!isLocked) {\n event.currentTarget.nextSibling.ej2_instances[0].enableEditMode = true;\n }\n }\n else {\n event.currentTarget.nextSibling.ej2_instances[0].enableEditMode = true;\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.checkIslockProperty = function (commentEvent) {\n // eslint-disable-next-line\n var annotCollection = this.pdfViewer.annotationCollection;\n // eslint-disable-next-line\n var annotation;\n if (commentEvent.IsCommentLock) {\n return true;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule && this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n annotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n else if (this.pdfViewer.selectedItems.annotations[0]) {\n annotation = this.pdfViewer.selectedItems.annotations[0];\n }\n for (var i = 0; i < annotCollection.length; i++) {\n // eslint-disable-next-line max-len\n var note = annotCollection[i].note ? annotCollection[i].note : annotCollection[i].notes;\n if (annotCollection[i].isCommentLock === true && (commentEvent.textContent === note || annotCollection[i].dynamicText === commentEvent.textContent)) {\n return true;\n }\n for (var j = 0; j < annotCollection[i].comments.length; j++) {\n if (annotation && annotCollection[i].annotationId === annotation.annotName) {\n // eslint-disable-next-line max-len\n if (annotCollection[i].comments[j].isLock === true && commentEvent.textContent === annotCollection[i].comments[j].note) {\n return true;\n }\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.openEditorElement = function (event) {\n // eslint-disable-next-line\n var commentShow = document.querySelectorAll('.e-pv-new-comments-div');\n for (var i = 0; i < commentShow.length; i++) {\n commentShow[i].style.display = 'none';\n }\n var isCommentLocked = this.checkIslockProperty(event.currentTarget);\n if (isCommentLocked) {\n event.currentTarget.ej2_instances[0].enableEditMode = false;\n }\n else if (event.currentTarget.parentElement.parentElement) {\n var isLocked = this.checkAnnotationSettings(event.currentTarget.parentElement.parentElement.id);\n if (isLocked) {\n // eslint-disable-next-line\n var annotation = this.findAnnotationObject(event.currentTarget.parentElement.parentElement.id);\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Select', annotation)) {\n isLocked = false;\n }\n }\n if (!isLocked) {\n if (this.pdfViewer.selectedItems.annotations[0].isReadonly) {\n event.currentTarget.ej2_instances[0].enableEditMode = false;\n }\n else {\n event.currentTarget.ej2_instances[0].enableEditMode = true;\n }\n }\n }\n else {\n event.currentTarget.ej2_instances[0].enableEditMode = true;\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentsDivClickEvent = function (event) {\n // eslint-disable-next-line\n var annotation = this.findAnnotationObject(event.currentTarget.parentElement.id);\n var isLocked = this.checkAnnotationSettings(event.currentTarget.parentElement.id);\n if (isLocked) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Select', annotation)) {\n isLocked = false;\n }\n }\n if (!isLocked) {\n var isCommentsSelect = false;\n if (event.clientX === 0 && event.clientY === 0) {\n this.isSetAnnotationType = true;\n }\n else {\n this.isSetAnnotationType = false;\n }\n if (event.target.className === 'e-pv-more-icon e-pv-icon') {\n return null;\n }\n // eslint-disable-next-line\n var x = document.querySelectorAll('#' + this.pdfViewer.element.id + '_more-options');\n for (var i = 0; i < x.length; i++) {\n x[i].style.visibility = 'hidden';\n }\n if (document.getElementById(this.pdfViewer.element.id + '_commantPanel').style.display === 'none') {\n this.pdfViewer.annotationModule.showCommentsPanel();\n }\n if (event.currentTarget.parentElement.classList.contains('e-pv-comments-border')) {\n isCommentsSelect = true;\n }\n event.currentTarget.firstChild.lastChild.style.visibility = 'visible';\n // eslint-disable-next-line\n var commentsContainer = document.querySelectorAll('.e-pv-comments-border');\n if (commentsContainer) {\n for (var j = 0; j < commentsContainer.length; j++) {\n commentsContainer[j].classList.remove('e-pv-comments-border');\n }\n }\n event.currentTarget.parentElement.classList.add('e-pv-comments-border');\n // eslint-disable-next-line\n var commentShow = document.querySelectorAll('.e-pv-new-comments-div');\n for (var i = 0; i < commentShow.length; i++) {\n commentShow[i].style.display = 'none';\n }\n // eslint-disable-next-line\n var editElement = event.currentTarget.parentElement.lastChild;\n // eslint-disable-next-line\n var commentsElement = event.currentTarget.parentElement;\n if (editElement) {\n editElement.style.display = 'block';\n if (editElement.querySelector('.e-editable-inline')) {\n if (!this.isEditableElement) {\n editElement.querySelector('.e-editable-inline').style.display = 'block';\n }\n for (var i = 0; i < commentsElement.childElementCount; i++) {\n // eslint-disable-next-line\n var activeElement = commentsElement.childNodes[i];\n // eslint-disable-next-line\n var textElement = activeElement.querySelector('.e-editable-inline');\n if (textElement) {\n if (textElement.style.display === '') {\n editElement.style.display = 'none';\n editElement.querySelector('.e-editable-inline').style.display = 'none';\n }\n }\n }\n }\n if (this.isSetAnnotationType) {\n if (!isCommentsSelect) {\n this.updateCommentsScrollTop();\n }\n }\n }\n if (event.currentTarget.parentElement.childElementCount === 1) {\n if (!this.pdfViewer.enableShapeLabel) {\n event.currentTarget.childNodes[1].ej2_instances[0].enableEditMode = true;\n }\n else {\n var type = event.currentTarget.parentElement.getAttribute('name');\n if (this.isSetAnnotationType && type === 'shape') {\n event.currentTarget.childNodes[1].ej2_instances[0].enableEditMode = false;\n }\n else {\n event.currentTarget.childNodes[1].ej2_instances[0].enableEditMode = true;\n }\n }\n }\n if (event.currentTarget && event.currentTarget.id && event.currentTarget.childNodes[1].ej2_instances[0]) {\n // eslint-disable-next-line\n this.pdfViewer.fireCommentSelect(event.currentTarget.id, event.currentTarget.childNodes[1].ej2_instances[0].value, annotation);\n }\n this.commentDivOnSelect(event);\n event.preventDefault();\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentsDivDoubleClickEvent = function (event) {\n // eslint-disable-next-line\n var commentShow = document.querySelectorAll('.e-pv-new-comments-div');\n for (var i = 0; i < commentShow.length; i++) {\n commentShow[i].style.display = 'none';\n }\n var isCommentLocked = this.checkIslockProperty(event.currentTarget.children[1]);\n if (isCommentLocked) {\n if (event.currentTarget.childElementCount === 2) {\n event.currentTarget.lastChild.ej2_instances[0].enableEditMode = false;\n }\n else {\n event.currentTarget.childNodes[1].ej2_instances[0].enableEditMode = false;\n }\n }\n else if (event.currentTarget) {\n var isLocked = this.checkAnnotationSettings(event.currentTarget.parentElement.id);\n if (!isLocked) {\n if (event.currentTarget.childElementCount === 2) {\n event.currentTarget.lastChild.ej2_instances[0].enableEditMode = true;\n }\n else {\n event.currentTarget.childNodes[1].ej2_instances[0].enableEditMode = true;\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentDivOnSelect = function (event) {\n // eslint-disable-next-line\n var commentSelect = document.querySelectorAll('.e-pv-comments-select');\n for (var z = 0; z < commentSelect.length; z++) {\n commentSelect[z].classList.remove('e-pv-comments-select');\n }\n var activeElement = document.getElementById(event.currentTarget.id);\n if (activeElement) {\n activeElement.classList.remove('e-pv-comments-hover');\n activeElement.classList.remove('e-pv-comments-leave');\n activeElement.classList.add('e-pv-comments-select');\n if (event.currentTarget.nextSibling) {\n if (event.currentTarget.nextSibling.classList.contains('e-pv-new-comments-div')) {\n var activeSiblingElement = document.getElementById(event.currentTarget.nextSibling.id);\n activeSiblingElement.classList.remove('e-pv-comments-hover');\n activeSiblingElement.classList.remove('e-pv-comments-leave');\n activeSiblingElement.classList.add('e-pv-comments-select');\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentDivMouseOver = function (event) {\n var activeElement = document.getElementById(event.currentTarget.id);\n if (activeElement) {\n activeElement.classList.remove('e-pv-comments-select');\n activeElement.classList.remove('e-pv-comments-leave');\n activeElement.classList.add('e-pv-comments-hover');\n if (event.currentTarget.nextSibling) {\n if (event.currentTarget.nextSibling.classList.contains('e-pv-new-comments-div')) {\n var activeSiblingElement = document.getElementById(event.currentTarget.nextSibling.id);\n activeSiblingElement.classList.remove('e-pv-comments-select');\n activeSiblingElement.classList.remove('e-pv-comments-leave');\n activeSiblingElement.classList.add('e-pv-comments-hover');\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentDivMouseLeave = function (event) {\n var activeElement = document.getElementById(event.currentTarget.id);\n if (activeElement) {\n activeElement.classList.remove('e-pv-comments-hover');\n activeElement.classList.remove('e-pv-comments-select');\n activeElement.classList.add('e-pv-comments-leave');\n if (event.currentTarget.nextSibling) {\n if (event.currentTarget.nextSibling.classList.contains('e-pv-new-comments-div')) {\n var activeSiblingElement = document.getElementById(event.currentTarget.nextSibling.id);\n activeSiblingElement.classList.remove('e-pv-comments-hover');\n activeSiblingElement.classList.remove('e-pv-comments-select');\n activeSiblingElement.classList.add('e-pv-comments-leave');\n }\n }\n }\n };\n /**\n * @param event\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.drawIcons = function (event) {\n // eslint-disable-next-line\n if (this.pdfViewerBase.isCommentIconAdded) {\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n var pageCurrentRect = this.pdfViewerBase.getElement('_pageDiv_' + pageIndex).getBoundingClientRect();\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.drawStickyNotes((event.clientX - pageCurrentRect.left) / zoomValue, (event.clientY - pageCurrentRect.top) / zoomValue, 30, 30, pageIndex, null);\n this.pdfViewerBase.isCommentIconAdded = false;\n var commentsButton = document.getElementById(this.pdfViewer.element.id + '_comment');\n if (isBlazor()) {\n commentsButton = commentsButton.children[0];\n }\n if (commentsButton && commentsButton.classList.contains('e-pv-select')) {\n commentsButton.classList.remove('e-pv-select');\n }\n else {\n var commentsIcon = document.getElementById(this.pdfViewer.element.id + '_commentIcon');\n if (commentsIcon) {\n this.pdfViewer.enableRtl ? commentsIcon.className = 'e-pv-comment-icon e-pv-icon e-icon-left e-right' : commentsIcon.className = 'e-pv-comment-icon e-pv-icon e-icon-left';\n }\n }\n }\n };\n /**\n * @param annotationType\n * @param pageNumber\n * @param annotationSubType\n * @param annotationType\n * @param pageNumber\n * @param annotationSubType\n * @param annotationType\n * @param pageNumber\n * @param annotationSubType\n * @private\n */\n StickyNotesAnnotation.prototype.addComments = function (annotationType, pageNumber, annotationSubType) {\n var commentsDivid;\n // eslint-disable-next-line max-len\n var accordion = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageNumber);\n if (accordion) {\n // eslint-disable-next-line max-len\n commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.createCommentControlPanel(null, pageNumber, annotationType, annotationSubType);\n }\n else {\n this.pdfViewer.annotation.stickyNotesAnnotationModule.createPageAccordion(pageNumber);\n // eslint-disable-next-line max-len\n commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.createCommentControlPanel(null, pageNumber, annotationType, annotationSubType);\n }\n return commentsDivid;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentsAnnotationSelect = function (event) {\n var element = event.currentTarget;\n var isLocked = this.checkAnnotationSettings(element.id);\n if (isLocked) {\n // eslint-disable-next-line\n var annotation = this.findAnnotationObject(element.id);\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Select', annotation)) {\n isLocked = false;\n }\n }\n if (!isLocked) {\n if (element.classList.contains('e-pv-comments-border')) {\n // eslint-disable-next-line\n var commentsDiv = document.querySelectorAll('.e-pv-comments-div');\n for (var j = 0; j < commentsDiv.length; j++) {\n commentsDiv[j].style.minHeight = 60 + 'px';\n }\n if (event.currentTarget.childElementCount === 1) {\n if (event.currentTarget.childNodes[0].querySelector('.e-editable-inline')) {\n event.currentTarget.childNodes[0].style.minHeight = event.currentTarget.childNodes[0].clientHeight;\n }\n }\n }\n if (event.target.className === 'e-pv-more-icon e-pv-icon' || event.target.className === 'e-pv-more-options-button e-btn') {\n event.preventDefault();\n return null;\n }\n // eslint-disable-next-line\n var pageNumber = parseInt(element.accessKey);\n if (!element.classList.contains('e-pv-comments-border')) {\n // eslint-disable-next-line\n var commentsContainer = document.querySelectorAll('.e-pv-comments-border');\n if (commentsContainer) {\n for (var j = 0; j < commentsContainer.length; j++) {\n commentsContainer[j].classList.remove('e-pv-comments-border');\n }\n }\n var commentsDiv = document.getElementById(element.id);\n if (commentsDiv) {\n commentsDiv.classList.add('e-pv-comments-border');\n }\n // eslint-disable-next-line\n var commentTextBox = document.querySelectorAll('.e-pv-new-comments-div');\n for (var j = 0; j < commentTextBox.length; j++) {\n commentTextBox[j].style.display = 'none';\n }\n if (commentsDiv) {\n // eslint-disable-next-line\n var currentTextBox = commentsDiv.querySelector('.e-pv-new-comments-div');\n if (currentTextBox) {\n currentTextBox.style.display = 'block';\n }\n }\n // eslint-disable-next-line\n var textDiv = element.lastChild;\n this.isEditableElement = false;\n if (textDiv.querySelector('.e-editable-inline')) {\n textDiv.style.display = 'block';\n textDiv.querySelector('.e-editable-inline').style.display = 'block';\n for (var i = 0; i < element.childElementCount; i++) {\n // eslint-disable-next-line\n var activeElement = element.childNodes[i];\n // eslint-disable-next-line\n var textElement = activeElement.querySelector('.e-editable-inline');\n if (textElement) {\n if (textElement.style.display === '') {\n if (textDiv.classList.contains('e-pv-new-comments-div')) {\n this.isEditableElement = true;\n textDiv.style.display = 'none';\n textDiv.querySelector('.e-editable-inline').style.display = 'none';\n }\n }\n }\n }\n }\n this.isSetAnnotationType = false;\n if (event.currentTarget.childElementCount === 1) {\n event.currentTarget.childNodes[0].childNodes[1].ej2_instances[0].enableEditMode = true;\n }\n }\n else {\n this.isSetAnnotationType = true;\n }\n if (!this.isSetAnnotationType) {\n if (this.pdfViewer.navigation) {\n this.pdfViewer.navigationModule.goToPage(pageNumber);\n }\n var annotType = element.getAttribute('name');\n if (annotType === 'null' || annotType === 'Ink') {\n annotType = 'ink';\n }\n this.isCommentsSelected = false;\n this.setAnnotationType(element.id, annotType, pageNumber);\n if (!this.isCommentsSelected) {\n this.selectAnnotationObj = { id: element.id, annotType: annotType, pageNumber: pageNumber };\n }\n }\n }\n this.isSetAnnotationType = false;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.findAnnotationObject = function (id) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule && this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n return this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n else if (this.pdfViewer.selectedItems.annotations[0]) {\n return this.pdfViewer.selectedItems.annotations[0];\n }\n // eslint-disable-next-line\n var annotationCollection = this.pdfViewer.annotationCollection;\n if (annotationCollection) {\n for (var i = 0; i < annotationCollection.length; i++) {\n if (annotationCollection[i].annotationId && (annotationCollection[i].annotationId === id)) {\n if (annotationCollection[i].shapeAnnotationType === 'textMarkup') {\n return annotationCollection[i];\n }\n else {\n annotationCollection = this.pdfViewer.annotations;\n for (var j = 0; j < annotationCollection.length; j++) {\n if (annotationCollection[j].annotName && (annotationCollection[j].annotName === id)) {\n return annotationCollection[j];\n }\n }\n }\n }\n }\n }\n };\n StickyNotesAnnotation.prototype.checkAnnotationSettings = function (id) {\n // eslint-disable-next-line\n var annotationCollection = this.pdfViewer.annotationCollection;\n if (annotationCollection) {\n for (var i = 0; i < annotationCollection.length; i++) {\n if (annotationCollection[i].annotationId && (annotationCollection[i].annotationId === id)) {\n if (annotationCollection[i].annotationSettings && annotationCollection[i].annotationSettings.isLock) {\n return true;\n }\n else {\n return false;\n }\n }\n }\n return false;\n }\n else {\n return false;\n }\n };\n StickyNotesAnnotation.prototype.updateCommentsContainerWidth = function () {\n var accordionContainer = document.getElementById(this.pdfViewer.element.id + '_accordionContentContainer');\n var commentsContentContainer = document.getElementById(this.pdfViewer.element.id + '_commentscontentcontainer');\n accordionContainer.style.width = commentsContentContainer.clientWidth + 'px';\n };\n /**\n * @param pageIndex\n * @private\n */\n StickyNotesAnnotation.prototype.selectCommentsAnnotation = function (pageIndex) {\n if (this.selectAnnotationObj && !this.isCommentsSelected) {\n if ((this.selectAnnotationObj.pageNumber - 1) === pageIndex) {\n // eslint-disable-next-line max-len\n this.setAnnotationType(this.selectAnnotationObj.id, this.selectAnnotationObj.annotType, this.selectAnnotationObj.pageNumber);\n this.selectAnnotationObj = null;\n this.isCommentsSelected = true;\n }\n }\n };\n StickyNotesAnnotation.prototype.setAnnotationType = function (id, type, pageNumber) {\n var typeString = (type === 'measure') ? 'shape_measure' : type;\n if (typeString === 'freeText') {\n typeString = 'freetext';\n }\n // eslint-disable-next-line\n var storeCommentObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_' + typeString);\n if (this.pdfViewerBase.isStorageExceed) {\n storeCommentObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_' + typeString];\n }\n if (storeCommentObject) {\n var annotationCommentObject = JSON.parse(storeCommentObject);\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line max-len\n var index = this.pdfViewer.annotationModule.\n getPageCollection(annotationCommentObject, (pageNumber - 1));\n if (annotationCommentObject[index]) {\n // eslint-disable-next-line\n var pageCollections = annotationCommentObject[index].annotations;\n for (var i = 0; i < pageCollections.length; i++) {\n var currentSelector = pageCollections[i].annotationSelectorSettings;\n if (pageCollections[i].annotName === id) {\n if (annotation) {\n this.pdfViewer.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n }\n this.pdfViewer.clearSelection(pageNumber - 1);\n if (type === 'textMarkup') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.clearCurrentAnnotationSelection(pageNumber - 1, true);\n // eslint-disable-next-line max-len\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + (pageNumber - 1));\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectAnnotation(pageCollections[i], canvas, (pageNumber - 1));\n this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAnnotation = pageCollections[i];\n this.pdfViewer.annotation.textMarkupAnnotationModule.selectTextMarkupCurrentPage = pageNumber - 1;\n this.pdfViewer.annotation.textMarkupAnnotationModule.enableAnnotationPropertiesTool(true);\n if (this.pdfViewer.toolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n }\n else if (type === 'stamp') {\n this.pdfViewer.select([pageCollections[i].randomId], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else if (type === 'sticky') {\n this.pdfViewer.select([pageCollections[i].annotName], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else if (type === 'ink') {\n this.pdfViewer.select([pageCollections[i].id], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else {\n this.pdfViewer.select([pageCollections[i].id], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n if (type === 'textMarkup') {\n if (pageCollections[i].rect || pageCollections[i].bounds) {\n // eslint-disable-next-line max-len\n var scrollValue = this.pdfViewerBase.pageSize[pageNumber - 1].top * this.pdfViewerBase.getZoomFactor() + (this.pdfViewer.annotationModule.getAnnotationTop(pageCollections[i]) * this.pdfViewerBase.getZoomFactor());\n if (scrollValue) {\n var scroll_1 = (scrollValue - 20).toString();\n // eslint-disable-next-line radix\n this.pdfViewerBase.viewerContainer.scrollTop = parseInt(scroll_1);\n }\n }\n }\n else {\n var top_1 = pageCollections[i].bounds.top;\n if (type === 'ink') {\n top_1 = pageCollections[i].bounds.y;\n }\n // eslint-disable-next-line max-len\n var scrollValue = this.pdfViewerBase.pageSize[pageNumber - 1].top * this.pdfViewerBase.getZoomFactor() + ((top_1) * this.pdfViewerBase.getZoomFactor());\n var scroll_2 = (scrollValue - 20).toString();\n // eslint-disable-next-line radix\n this.pdfViewerBase.viewerContainer.scrollTop = parseInt(scroll_2);\n }\n this.isCommentsSelected = true;\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.modifyTextProperty = function (text, previousValue, annotationName) {\n // eslint-disable-next-line\n var currentAnnotation;\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n currentAnnotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n if (currentAnnotation) {\n if (currentAnnotation.annotName !== annotationName) {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n }\n else {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n if (annotationName && (currentAnnotation.annotName !== annotationName)) {\n for (var i = 0; i < this.pdfViewer.annotations.length; i++) {\n if (annotationName === this.pdfViewer.annotations[i].annotName) {\n currentAnnotation = this.pdfViewer.annotations[i];\n break;\n }\n }\n }\n if (currentAnnotation) {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(currentAnnotation.annotName);\n if (commentsDiv) {\n // eslint-disable-next-line\n var pageNumber = void 0;\n if (commentsDiv.accessKey) {\n // eslint-disable-next-line\n pageNumber = parseInt(commentsDiv.accessKey);\n }\n else {\n pageNumber = this.pdfViewerBase.currentPageNumber;\n }\n var type = commentsDiv.getAttribute('name');\n var pageIndex = pageNumber - 1;\n // eslint-disable-next-line\n var pageAnnotations = void 0;\n var isMeasure = false;\n // eslint-disable-next-line max-len\n if (currentAnnotation.shapeAnnotationType === 'FreeText' || (this.pdfViewer.enableShapeLabel && (type === 'shape' || type === 'shape_measure'))) {\n var isTextAdded = false;\n if (annotationName) {\n if (currentAnnotation.annotName !== annotationName) {\n this.pdfViewer.annotation.modifyDynamicTextValue(text, annotationName);\n isTextAdded = true;\n }\n }\n if (!isTextAdded) {\n if (currentAnnotation.shapeAnnotationType === 'FreeText') {\n if (currentAnnotation.dynamicText !== text) {\n this.pdfViewer.annotation.modifyDynamicTextValue(text, currentAnnotation.annotName);\n }\n currentAnnotation.dynamicText = text;\n }\n else {\n this.pdfViewer.annotation.modifyDynamicTextValue(text, currentAnnotation.annotName);\n currentAnnotation.labelContent = text;\n currentAnnotation.notes = text;\n }\n this.pdfViewer.nodePropertyChange(currentAnnotation, {});\n }\n }\n if (currentAnnotation.measureType && currentAnnotation.measureType !== '') {\n pageAnnotations = this.getAnnotations(pageIndex, null, 'shape_measure');\n isMeasure = true;\n }\n else {\n pageAnnotations = this.getAnnotations(pageIndex, null, currentAnnotation.shapeAnnotationType);\n }\n if (pageAnnotations !== null && currentAnnotation.shapeAnnotationType !== 'FreeText') {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].annotName === currentAnnotation.annotName) {\n // eslint-disable-next-line\n var clonedObject = cloneObject(pageAnnotations[i]);\n if (text !== null) {\n if (pageAnnotations[i].note !== text) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, i, pageAnnotations[i], 'Text Property Added', '', clonedObject, pageAnnotations[i]);\n currentAnnotation = pageAnnotations[i];\n currentAnnotation.note = text;\n if (currentAnnotation.enableShapeLabel) {\n currentAnnotation.labelContent = text;\n }\n // eslint-disable-next-line max-len\n currentAnnotation.modifiedDate = this.getDateAndTime();\n if (!isMeasure) {\n this.updateUndoRedoCollections(currentAnnotation, pageIndex);\n }\n else {\n this.updateUndoRedoCollections(currentAnnotation, pageIndex, 'shape_measure');\n }\n if (!previousValue || previousValue === '') {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireCommentAdd(currentAnnotation.annotName, currentAnnotation.note, currentAnnotation);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireCommentEdit(currentAnnotation.annotName, currentAnnotation.note, currentAnnotation);\n }\n return currentAnnotation;\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * @param date\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.getDateAndTime = function (date) {\n if (!date) {\n date = new Date();\n }\n this.globalize = new Internationalization();\n var dateOptions = { format: this.pdfViewer.dateTimeFormat, type: 'dateTime' };\n // eslint-disable-next-line\n var dateTime = this.globalize.formatDate(new Date(date), dateOptions);\n return dateTime;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.modifyCommentsProperty = function (text, annotName, parentElement, previousValue) {\n // eslint-disable-next-line\n var currentAnnotation;\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n currentAnnotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n else {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n if (currentAnnotation) {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(currentAnnotation.annotName);\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey);\n var pageIndex = pageNumber - 1;\n // eslint-disable-next-line\n var pageAnnotations = void 0;\n var isMeasure = false;\n var author = this.getAuthorName(currentAnnotation, commentsDiv);\n if (currentAnnotation.measureType && currentAnnotation.measureType !== '') {\n pageAnnotations = this.getAnnotations(pageIndex, null, 'shape_measure');\n isMeasure = true;\n }\n else {\n pageAnnotations = this.getAnnotations(pageIndex, null, currentAnnotation.shapeAnnotationType);\n }\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].annotName === currentAnnotation.annotName) {\n currentAnnotation = pageAnnotations[i];\n }\n }\n }\n // eslint-disable-next-line\n var clonedObject = cloneObject(currentAnnotation);\n if (currentAnnotation.comments.length > 0) {\n var isComment = false;\n for (var j = 0; j < currentAnnotation.comments.length; j++) {\n if (currentAnnotation.comments[j].annotName === annotName) {\n isComment = true;\n currentAnnotation.comments[j].note = text;\n // eslint-disable-next-line max-len\n currentAnnotation.comments[j].modifiedDate = this.getDateAndTime();\n }\n }\n // eslint-disable-next-line max-len\n var newArray = { annotName: annotName, parentId: parentElement, subject: 'Comments', comments: [], author: author, note: text, shapeAnnotationType: '', state: '', stateModel: '', modifiedDate: this.getDateAndTime(), review: { state: '', stateModel: '', modifiedDate: this.getDateAndTime(), author: author }, isLock: false };\n if (!isComment) {\n currentAnnotation.comments[currentAnnotation.comments.length] = newArray;\n }\n }\n else {\n // eslint-disable-next-line max-len\n var newArray = { annotName: annotName, parentId: parentElement, subject: 'Comments', comments: [], author: author, note: text, shapeAnnotationType: '', state: '', stateModel: '', modifiedDate: this.getDateAndTime(), review: { state: '', stateModel: '', modifiedDate: this.getDateAndTime(), author: author }, isLock: false };\n currentAnnotation.comments[currentAnnotation.comments.length] = newArray;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, null, currentAnnotation, 'Comments Property Added', '', clonedObject, currentAnnotation);\n if (!isMeasure) {\n this.updateUndoRedoCollections(currentAnnotation, pageIndex);\n }\n else {\n this.updateUndoRedoCollections(currentAnnotation, pageIndex, 'shape_measure');\n }\n }\n if (previousValue !== undefined) {\n this.pdfViewer.fireCommentEdit(annotName, text, currentAnnotation);\n }\n else {\n this.pdfViewer.fireCommentAdd(annotName, text, currentAnnotation);\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.modifyStatusProperty = function (text, statusElement) {\n // eslint-disable-next-line\n var currentAnnotation;\n if (this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n currentAnnotation = this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n else {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n if (currentAnnotation) {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(currentAnnotation.annotName);\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey);\n var pageIndex = pageNumber - 1;\n // eslint-disable-next-line\n var pageAnnotations = void 0;\n var isMeasure = false;\n var author = commentsDiv.getAttribute('author');\n if (currentAnnotation.measureType && currentAnnotation.measureType !== '') {\n pageAnnotations = this.getAnnotations(pageIndex, null, 'shape_measure');\n isMeasure = true;\n }\n else {\n pageAnnotations = this.getAnnotations(pageIndex, null, currentAnnotation.shapeAnnotationType);\n }\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].annotName === currentAnnotation.annotName) {\n currentAnnotation = pageAnnotations[i];\n }\n }\n }\n // eslint-disable-next-line\n var clonedObject = cloneObject(currentAnnotation);\n if (statusElement.parentElement.firstChild.id === statusElement.id) {\n // eslint-disable-next-line max-len\n currentAnnotation.review = { state: text, stateModel: 'Review', author: author, modifiedDate: this.getDateAndTime(), annotId: statusElement.id };\n currentAnnotation.state = text;\n currentAnnotation.stateModel = 'Review';\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, null, currentAnnotation, 'Status Property Added', '', clonedObject, currentAnnotation);\n this.pdfViewer.fireCommentStatusChanged(statusElement.id, currentAnnotation.note, currentAnnotation, currentAnnotation.state);\n }\n else {\n for (var j = 0; j < currentAnnotation.comments.length; j++) {\n if (currentAnnotation.comments[j].annotName === statusElement.id) {\n // eslint-disable-next-line\n var clonedObj = cloneObject(currentAnnotation.comments[j]);\n currentAnnotation.comments[j].state = text;\n currentAnnotation.comments[j].stateModel = 'Review';\n // eslint-disable-next-line max-len\n currentAnnotation.comments[j].review = { state: text, stateModel: 'Review', author: author, modifiedDate: this.getDateAndTime(), annotId: statusElement.id };\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, null, currentAnnotation, 'Status Property Added', '', clonedObj, currentAnnotation.comments[j]);\n this.pdfViewer.fireCommentStatusChanged(currentAnnotation.comments[j].annotName, currentAnnotation.comments[j].note, currentAnnotation, currentAnnotation.comments[j].state);\n }\n }\n }\n if (!isMeasure) {\n this.updateUndoRedoCollections(currentAnnotation, pageIndex);\n }\n else {\n this.updateUndoRedoCollections(currentAnnotation, pageIndex, 'shape_measure');\n }\n }\n };\n /**\n * @param commentsElement\n * @param replyElement\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.modifyCommentDeleteProperty = function (commentsElement, replyElement) {\n // eslint-disable-next-line\n var clonedObject;\n // eslint-disable-next-line\n var clonedAnnotation;\n // eslint-disable-next-line\n var currentAnnotation;\n // eslint-disable-next-line\n var commentsParentElement = document.getElementById(commentsElement.id);\n if (commentsParentElement) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsParentElement.accessKey);\n var pageIndex = pageNumber - 1;\n var annotType = commentsElement.getAttribute('name');\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(pageIndex, null, annotType);\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].annotName === commentsElement.id) {\n currentAnnotation = pageAnnotations[i];\n }\n }\n }\n for (var i = 1; i < commentsParentElement.childElementCount; i++) {\n if (commentsParentElement.childNodes[i].id === replyElement.id) {\n clonedAnnotation = cloneObject(currentAnnotation);\n var positionValue = (i - 1);\n currentAnnotation.comments[positionValue].position = i;\n clonedObject = cloneObject(currentAnnotation.comments[positionValue]);\n // eslint-disable-next-line max-len\n this.pdfViewer.fireCommentDelete(currentAnnotation.comments[positionValue].annotName, currentAnnotation.comments[positionValue].note, currentAnnotation);\n currentAnnotation.comments.splice(positionValue, 1);\n replyElement.remove();\n }\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, null, clonedAnnotation, 'Comments Reply Deleted', '', clonedObject, currentAnnotation);\n this.updateUndoRedoCollections(currentAnnotation, pageIndex);\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateOpacityValue = function (annotation) {\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(annotation.pageIndex, null, annotation.shapeAnnotationType);\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].annotName === annotation.annotName) {\n pageAnnotations[i].opacity = annotation.opacity;\n this.updateUndoRedoCollections(pageAnnotations[i], annotation.pageIndex);\n }\n }\n }\n };\n /**\n * @param annotation\n * @param isAction\n * @param undoAnnotation\n * @param annotation\n * @param isAction\n * @param undoAnnotation\n * @param annotation\n * @param isAction\n * @param undoAnnotation\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.undoAction = function (annotation, isAction, undoAnnotation) {\n if (isAction === 'Text Property Added') {\n if (annotation) {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(annotation.annotName);\n if (commentsMainDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsMainDiv.accessKey);\n var pageIndex = pageNumber - 1;\n // eslint-disable-next-line\n var clonedAnnotationObject = cloneObject(annotation);\n commentsMainDiv.firstChild.firstChild.nextSibling.ej2_instances[0].value = undoAnnotation.note;\n var value = undoAnnotation.note;\n annotation.note = value;\n if (commentsMainDiv.childElementCount === 2) {\n commentsMainDiv.lastChild.style.display = 'block';\n }\n this.updateUndoRedoCollections(annotation, pageIndex);\n return clonedAnnotationObject;\n }\n }\n }\n else if (isAction === 'Comments Property Added') {\n if (annotation.comments.length > 0) {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(annotation.annotName);\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n if (commentsDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey);\n pageIndex = pageNumber - 1;\n }\n // eslint-disable-next-line\n var clonedAnnotationObject = cloneObject(annotation);\n // eslint-disable-next-line\n var comment = annotation.comments[annotation.comments.length - 1];\n // eslint-disable-next-line\n var removeDiv = document.getElementById(comment.annotName);\n if (removeDiv) {\n removeDiv.remove();\n }\n annotation = undoAnnotation;\n this.updateUndoRedoCollections(annotation, pageIndex);\n return clonedAnnotationObject;\n }\n }\n else if (isAction === 'Status Property Added') {\n if (annotation) {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(annotation.annotName);\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n if (commentsDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey);\n pageIndex = pageNumber - 1;\n }\n // eslint-disable-next-line\n var clonedAnnotationObject = cloneObject(annotation);\n if (annotation.annotName === undoAnnotation.annotName) {\n annotation.review = undoAnnotation.review;\n annotation.state = undoAnnotation.state;\n annotation.stateModel = undoAnnotation.stateModel;\n this.pdfViewer.annotation.redoCommentsElement.push(annotation);\n }\n else {\n for (var j = 0; j < annotation.comments.length; j++) {\n if (annotation.comments[j].annotName === undoAnnotation.annotName) {\n annotation.comments[j].state = undoAnnotation.state;\n annotation.comments[j].stateModel = undoAnnotation.stateModel;\n annotation.comments[j].review = undoAnnotation.review;\n this.pdfViewer.annotation.redoCommentsElement.push(annotation.comments[j]);\n break;\n }\n }\n }\n // eslint-disable-next-line\n var activeDiv = document.getElementById(undoAnnotation.annotName);\n if (activeDiv.lastChild.id === this.pdfViewer.element.id + 'status' + '_container') {\n activeDiv.lastChild.remove();\n }\n else {\n if (activeDiv.firstChild.lastChild.id === this.pdfViewer.element.id + 'status' + '_container') {\n activeDiv.firstChild.lastChild.remove();\n }\n }\n this.updateUndoRedoCollections(annotation, pageIndex);\n return clonedAnnotationObject;\n }\n }\n else if (isAction === 'Comments Reply Deleted') {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(annotation.annotName);\n if (commentsDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey);\n var pageIndex = pageNumber - 1;\n this.renderComments(undoAnnotation, commentsDiv, true, annotation.annotName);\n this.pdfViewer.annotation.redoCommentsElement.push(undoAnnotation);\n this.updateUndoRedoCollections(annotation, pageIndex);\n return annotation;\n }\n }\n else if (isAction === 'dynamicText Change') {\n if (annotation) {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(annotation.annotName);\n if (commentsMainDiv) {\n // eslint-disable-next-line\n commentsMainDiv.firstChild.firstChild.nextSibling.ej2_instances[0].value = undoAnnotation.dynamicText;\n return annotation;\n }\n }\n }\n };\n /**\n * @param annotation\n * @param isAction\n * @param undoAnnotation\n * @param annotation\n * @param isAction\n * @param undoAnnotation\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.redoAction = function (annotation, isAction, undoAnnotation) {\n if (isAction === 'Text Property Added') {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(annotation.annotName);\n if (commentsMainDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsMainDiv.accessKey);\n var pageIndex = pageNumber - 1;\n commentsMainDiv.firstChild.firstChild.nextSibling.ej2_instances[0].value = annotation.note;\n commentsMainDiv.lastChild.style.display = 'block';\n this.updateUndoRedoCollections(annotation, pageIndex);\n return annotation;\n }\n }\n else if (isAction === 'Comments Property Added') {\n // eslint-disable-next-line\n var comment = annotation.comments[annotation.comments.length - 1];\n var commentsDiv = document.getElementById(annotation.annotName);\n if (commentsDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey);\n var pageIndex = pageNumber - 1;\n this.renderComments(comment, commentsDiv, true, annotation.annotName);\n this.updateUndoRedoCollections(annotation, pageIndex);\n return annotation;\n }\n }\n else if (isAction === 'Status Property Added') {\n // eslint-disable-next-line\n var poppedItem = this.pdfViewer.annotation.redoCommentsElement.pop();\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n if (poppedItem) {\n // eslint-disable-next-line max-len\n var statusContainer = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var statusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n var statusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon' });\n statusDiv.appendChild(statusSpan);\n statusContainer.appendChild(statusDiv);\n // eslint-disable-next-line\n var activeDiv = document.getElementById(annotation.annotName);\n if (activeDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(activeDiv.accessKey);\n pageIndex = pageNumber - 1;\n }\n // eslint-disable-next-line\n if (annotation.annotName === poppedItem.annotName) {\n this.updateStatusContainer(annotation.state, statusSpan, statusDiv, statusContainer);\n for (var i = 0; i < activeDiv.firstChild.children.length; i++) {\n if (activeDiv.firstChild.children[i].id === this.pdfViewer.element.id + 'status_container') {\n activeDiv.firstChild.children[i].parentElement.removeChild(activeDiv.firstChild.children[i]);\n }\n }\n activeDiv.firstChild.appendChild(statusContainer);\n }\n else {\n for (var i = 0; i < annotation.comments.length; i++) {\n if (annotation.comments[i].annotName === poppedItem.annotName) {\n this.updateStatusContainer(annotation.comments[i].state, statusSpan, statusDiv, statusContainer);\n var statusElement = document.getElementById(poppedItem.annotName);\n for (var i_1 = 0; i_1 < statusElement.children.length; i_1++) {\n if (statusElement.children[i_1].id === this.pdfViewer.element.id + 'status_container') {\n statusElement.children[i_1].parentElement.removeChild(statusElement.children[i_1]);\n }\n }\n if (statusElement) {\n statusElement.appendChild(statusContainer);\n }\n }\n }\n }\n }\n this.updateUndoRedoCollections(annotation, pageIndex);\n return annotation;\n }\n else if (isAction === 'Comments Reply Deleted') {\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n // eslint-disable-next-line\n var activeDiv = document.getElementById(annotation.annotName);\n if (activeDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(activeDiv.accessKey);\n pageIndex = pageNumber - 1;\n }\n // eslint-disable-next-line\n var poppedItem = this.pdfViewer.annotation.redoCommentsElement.pop();\n // eslint-disable-next-line\n var clonedAnnotationObject = cloneObject(annotation);\n for (var i = 0; i < annotation.comments.length; i++) {\n if (annotation.comments[i].annotName === poppedItem.annotName) {\n // eslint-disable-next-line\n var replyElement = document.getElementById(poppedItem.annotName);\n annotation.comments.splice(i, 1);\n replyElement.remove();\n }\n }\n this.updateUndoRedoCollections(annotation, pageIndex);\n return clonedAnnotationObject;\n }\n else if (isAction === 'dynamicText Change') {\n if (annotation) {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(annotation.annotName);\n if (commentsMainDiv) {\n // eslint-disable-next-line\n commentsMainDiv.firstChild.firstChild.nextSibling.ej2_instances[0].value = annotation.dynamicText;\n return annotation;\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateUndoRedoCollections = function (annotationBase, pageNumber, shapeType, action) {\n var annotationType = (!shapeType) ? annotationBase.shapeAnnotationType : shapeType;\n if (annotationBase.indent && annotationBase.indent !== '') {\n annotationType = 'shape_measure';\n }\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(pageNumber, null, annotationType);\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.annotName === pageAnnotations[i].annotName) {\n pageAnnotations[i] = annotationBase;\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], pageNumber);\n if (action) {\n pageAnnotations.splice(i, 1);\n this.deleteStickyNotesAnnotations(pageAnnotations, pageNumber);\n }\n }\n }\n if (annotationType === 'shape_measure') {\n this.manageAnnotations(pageAnnotations, pageNumber, 'shape_measure');\n }\n else {\n this.manageAnnotations(pageAnnotations, pageNumber, annotationBase.shapeAnnotationType);\n }\n }\n };\n /**\n * @param pageIndex\n * @param type\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.addAnnotationComments = function (pageIndex, type) {\n var pageNumber = pageIndex + 1;\n // eslint-disable-next-line\n var poppedItem = this.pdfViewer.annotation.undoCommentsElement.pop();\n if (poppedItem) {\n this.createCommentsContainer(poppedItem, pageNumber);\n this.updateUndoRedoCollections(poppedItem, pageIndex, type);\n }\n };\n /**\n * @param annotation\n * @param type\n * @param action\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.findPosition = function (annotation, type, action) {\n var index;\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(annotation.annotName);\n if (commentsDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey);\n var pageIndex = pageNumber - 1;\n // eslint-disable-next-line\n var parentDiv = commentsDiv.parentElement;\n for (var i = 0; i < parentDiv.childElementCount; i++) {\n if (parentDiv.childNodes[i].id === annotation.annotName) {\n index = i;\n }\n }\n if (type === 'Stamp' || type === 'Image') {\n type = 'stamp';\n }\n else if (type === 'FreeText') {\n type = 'freetext';\n }\n else if (type === 'StickyNotes' || type === 'sticky') {\n type = 'sticky';\n }\n else if (type === 'Ink') {\n type = 'ink';\n }\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(pageIndex, null, type);\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].annotName === annotation.annotName) {\n // eslint-disable-next-line\n var clonedObject = cloneObject(pageAnnotations[i]);\n pageAnnotations[i].position = index;\n this.pdfViewer.annotation.undoCommentsElement.push(pageAnnotations[i]);\n if (type === 'sticky') {\n this.updateUndoRedoCollections(clonedObject, pageIndex, null, action);\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.getAnnotations = function (pageIndex, shapeAnnotations, type) {\n // eslint-disable-next-line\n var annotationCollection;\n if (type === 'Stamp' || type === 'stamp' || type === 'Image') {\n type = 'stamp';\n }\n else if (type === 'StickyNotes' || type === 'sticky') {\n type = 'sticky';\n }\n else if (type === 'textMarkup') {\n type = 'textMarkup';\n }\n else if (type === 'shape' || type === 'Line' || type === 'Radius' || type === 'Rectangle' || type === 'Ellipse'\n || type === 'Polygon' || type === 'LineWidthArrowHead' || type === 'Square' || type === 'Circle') {\n type = 'shape';\n }\n else if (type === 'FreeText' || type === 'freetext' || type === 'freeText') {\n type = 'freetext';\n }\n else if (type === 'ink' || type === 'Ink') {\n type = 'ink';\n }\n else {\n type = 'shape_measure';\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_' + type);\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_' + type];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.manageAnnotations = function (pageAnnotations, pageNumber, type) {\n if (type === 'Stamp' || type === 'stamp') {\n type = 'stamp';\n }\n else if (type === 'Sticky' || type === 'sticky') {\n type = 'sticky';\n }\n else if (type === 'textMarkup') {\n type = 'textMarkup';\n }\n else if (type === 'shape' || type === 'Line' || type === 'Radius' || type === 'Rectangle' || type === 'Ellipse'\n || type === 'Polygon' || type === 'LineWidthArrowHead' || type === 'Square' || type === 'Circle') {\n type = 'shape';\n }\n else if (type === 'FreeText') {\n type = 'freetext';\n }\n else if (type === 'ink' || type === 'Ink') {\n type = 'ink';\n }\n else {\n type = 'shape_measure';\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_' + type);\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_' + type];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_' + type);\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_' + type] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_' + type, annotationStringified);\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateStickyNotes = function (annotation, id) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sticky'];\n }\n if (storeObject) {\n // eslint-disable-next-line\n var bounds = annotation.bounds;\n var annotObject = JSON.parse(storeObject);\n for (var k = 0; k < annotObject.length; k++) {\n // eslint-disable-next-line\n var currentAnnot = annotObject[k];\n for (var j = 0; j < currentAnnot.annotations.length; j++) {\n if (annotObject[k].annotations[j].annotName === annotation.annotName) {\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n }\n var pageIndex = this.pdfViewer.annotationModule.getPageCollection(annotObject, 0);\n if (annotObject[pageIndex]) {\n // eslint-disable-next-line max-len\n annotObject[k].annotations[j].bounds = { left: bounds.x, top: bounds.y, width: bounds.width, height: bounds.height, right: bounds.right, bottom: bounds.bottom };\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sticky'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sticky', annotationStringified);\n }\n break;\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.saveStickyAnnotations = function () {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sticky'];\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject && !this.pdfViewer.annotationSettings.skipDownload) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.deleteStickyNotesAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sticky'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sticky'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sticky', annotationStringified);\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.addStickyNotesAnnotations = function (pageNumber, annotationBase) {\n var pageAnnotations = this.getAnnotations(pageNumber, null, 'sticky');\n if (pageAnnotations) {\n pageAnnotations.push(annotationBase);\n }\n this.manageAnnotations(pageAnnotations, pageNumber, 'sticky');\n };\n /**\n * @param annotName\n * @param text\n * @private\n */\n StickyNotesAnnotation.prototype.addTextToComments = function (annotName, text) {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(annotName);\n if (commentsMainDiv) {\n commentsMainDiv.firstChild.firstChild.nextSibling.ej2_instances[0].value = text;\n }\n };\n /**\n * @param newAnnotation\n * @param annotation\n * @param isCut\n * @param newAnnotation\n * @param annotation\n * @param isCut\n * @param newAnnotation\n * @param annotation\n * @param isCut\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateAnnotationCollection = function (newAnnotation, annotation, isCut) {\n var type = this.findAnnotationType(annotation);\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(annotation.pageIndex, null, type);\n if (isCut) {\n pageAnnotations = this.pdfViewer.annotationModule.removedAnnotationCollection;\n }\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (isCut && !pageAnnotations[i].annotName) {\n pageAnnotations[i].annotName = pageAnnotations[i].annotationId;\n }\n if (pageAnnotations[i].annotName === annotation.annotName) {\n // eslint-disable-next-line\n var updateAnnotation = cloneObject(pageAnnotations[i]);\n updateAnnotation.annotName = newAnnotation.annotName;\n if (type === 'shape' || type === 'shape_measure' || type === 'freetext' || type === 'ink') {\n updateAnnotation.id = newAnnotation.id;\n }\n if (type === 'stamp') {\n updateAnnotation.randomId = newAnnotation.id;\n }\n if (type === 'ink') {\n updateAnnotation.bounds.x = newAnnotation.bounds.x;\n updateAnnotation.bounds.y = newAnnotation.bounds.y;\n }\n else {\n updateAnnotation.bounds.left = newAnnotation.bounds.x;\n updateAnnotation.bounds.top = newAnnotation.bounds.y;\n updateAnnotation.vertexPoints = newAnnotation.vertexPoints;\n }\n updateAnnotation.note = updateAnnotation.note ? updateAnnotation.note : '';\n updateAnnotation.comments = [];\n // eslint-disable-next-line max-len\n updateAnnotation.review = { state: '', stateModel: '', modifiedDate: updateAnnotation.ModifiedDate, author: updateAnnotation.author };\n updateAnnotation.state = '';\n updateAnnotation.stateModel = '';\n this.pdfViewer.annotationModule.storeAnnotations(annotation.pageIndex, updateAnnotation, '_annotations_' + type);\n this.createCommentsContainer(updateAnnotation, annotation.pageIndex + 1, true);\n if (isCut) {\n this.pdfViewer.annotationModule.removedAnnotationCollection = [];\n }\n break;\n }\n }\n }\n };\n StickyNotesAnnotation.prototype.findAnnotationType = function (annotation) {\n var annotType;\n if (annotation.measureType !== '') {\n annotType = 'shape_measure';\n }\n else {\n if (annotation.shapeAnnotationType === 'StickyNotes') {\n annotType = 'sticky';\n }\n else if (annotation.shapeAnnotationType === 'Stamp' || annotation.shapeAnnotationType === 'Image') {\n annotType = 'stamp';\n }\n else if (annotation.shapeAnnotationType === 'FreeText') {\n annotType = 'freetext';\n }\n else if (annotation.shapeAnnotationType === 'Ink') {\n annotType = 'ink';\n }\n else {\n annotType = 'shape';\n }\n }\n return annotType;\n };\n StickyNotesAnnotation.prototype.setExistingAnnotationModifiedDate = function (date) {\n var modifiedDateTime;\n if (date !== '') {\n modifiedDateTime = this.setModifiedDate(date);\n }\n else {\n modifiedDateTime = this.setModifiedDate();\n }\n return modifiedDateTime;\n };\n StickyNotesAnnotation.prototype.updateModifiedTime = function (time, minutes) {\n var modifiedTime;\n if (time >= 12) {\n if (time === 12) {\n modifiedTime = time + ':' + minutes + ' PM';\n }\n else {\n modifiedTime = (time - 12) + ':' + minutes + ' PM';\n }\n }\n else {\n modifiedTime = time + ':' + minutes + ' AM';\n }\n return modifiedTime;\n };\n StickyNotesAnnotation.prototype.setModifiedDate = function (data) {\n var dateTime;\n if (data) {\n dateTime = this.getDateAndTime(data);\n }\n else {\n dateTime = this.getDateAndTime();\n }\n var date = new Date(dateTime);\n var modifiedTime;\n var modifiedDate = date.toString().split(' ').splice(1, 2).join(' ');\n if (date.toLocaleTimeString().split(' ').length === 2) {\n // eslint-disable-next-line max-len\n modifiedTime = date.toLocaleTimeString().split(' ')[0].split(':').splice(0, 2).join(':') + ' ' + date.toLocaleTimeString().split(' ')[1];\n }\n else {\n // eslint-disable-next-line\n var time = parseInt(date.toLocaleTimeString().split(':')[0]);\n var minutes = date.toLocaleTimeString().split(':')[1];\n modifiedTime = this.updateModifiedTime(time, minutes);\n }\n var modifiedDateTime = modifiedDate + ', ' + modifiedTime;\n return modifiedDateTime;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateModifiedDate = function (titleContainer) {\n if (titleContainer.id === this.pdfViewer.element.id + '_commenttype_icon') {\n titleContainer = titleContainer.nextSibling;\n }\n var author = titleContainer.textContent.split('-')[0];\n titleContainer.textContent = author + ' - ' + this.setModifiedDate();\n };\n /**\n * @param annotation\n * @param isBounds\n * @param isUndoRedoAction\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateAnnotationModifiedDate = function (annotation, isBounds, isUndoRedoAction) {\n // eslint-disable-next-line\n var titleContainer;\n if (annotation) {\n // eslint-disable-next-line\n var commentsContainer = document.getElementById(annotation.annotName);\n if (commentsContainer) {\n if (!isBounds) {\n titleContainer = commentsContainer.firstChild.firstChild.childNodes[1];\n var author = titleContainer.textContent.split('-')[0];\n titleContainer.textContent = author + ' - ' + this.setModifiedDate();\n }\n else {\n var type = this.findAnnotationType(annotation);\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(annotation.pageIndex, null, type);\n if (pageAnnotations != null && annotation) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotation.annotName === pageAnnotations[i].annotName) {\n // eslint-disable-next-line max-len\n if (annotation.bounds.x !== pageAnnotations[i].bounds.left || annotation.bounds.y !== pageAnnotations[i].bounds.top || annotation.bounds.height !== pageAnnotations[i].bounds.height || annotation.bounds.width !== pageAnnotations[i].bounds.width) {\n titleContainer = commentsContainer.firstChild.firstChild.childNodes[1];\n var author = titleContainer.textContent.split('-')[0];\n titleContainer.textContent = author + ' - ' + this.setModifiedDate();\n }\n }\n if (pageAnnotations[i].shapeAnnotationType === 'sticky') {\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], annotation.pageIndex);\n }\n }\n }\n }\n if (isUndoRedoAction) {\n titleContainer = commentsContainer.firstChild.firstChild.childNodes[1];\n if (annotation.modifiedDate !== undefined) {\n var author = titleContainer.textContent.split('-')[0];\n titleContainer.textContent = author + ' - ' + this.setExistingAnnotationModifiedDate(annotation.modifiedDate);\n }\n }\n }\n }\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.saveImportedStickyNotesAnnotations = function (annotation, pageNumber) {\n var annotationObject = null;\n if (!annotation.Author) {\n // eslint-disable-next-line max-len\n annotation.Author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stickyNotesSettings.author;\n }\n // eslint-disable-next-line max-len\n var isLock = this.pdfViewer.stickyNotesSettings.isLock ? this.pdfViewer.stickyNotesSettings.isLock : this.pdfViewer.annotationSettings.isLock;\n // eslint-disable-next-line\n var allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n annotationObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'sticky', author: annotation.Author, allowedInteractions: allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, note: annotation.Note, opacity: annotation.Opacity, state: annotation.State, stateModel: annotation.StateModel,\n pathData: '', comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n // eslint-disable-next-line max-len\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n annotName: annotation.AnnotName, color: annotation.color,\n annotationSelectorSettings: this.getSettings(annotation),\n customData: this.pdfViewer.annotation.getCustomData(annotation),\n annotationSettings: { isLock: isLock }, isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_sticky');\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateStickyNotesAnnotationCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var annotationObject = null;\n if (!annotation.Author) {\n // eslint-disable-next-line max-len\n annotation.Author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stickyNotesSettings.author;\n }\n // eslint-disable-next-line max-len\n var isLock = this.pdfViewer.stickyNotesSettings.isLock ? this.pdfViewer.stickyNotesSettings.isLock : this.pdfViewer.annotationSettings.isLock;\n // eslint-disable-next-line\n var allowedInteractions = annotation.AllowedInteraction ? annotation.AllowedInteraction : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n if (annotation.IsLock) {\n isLock = annotation.isLock;\n }\n annotationObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'sticky', author: annotation.Author, allowedInteractions: allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, note: annotation.Note, opacity: annotation.Opacity, state: annotation.State, stateModel: annotation.StateModel,\n pathData: '', comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n // eslint-disable-next-line max-len\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n annotationId: annotation.AnnotName, color: annotation.color, pageNumber: pageNumber,\n customData: this.pdfViewer.annotation.getCustomData(annotation),\n annotationSettings: { isLock: isLock }, isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock\n };\n return annotationObject;\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.clear = function () {\n this.commentsCount = 0;\n this.commentsreplyCount = 0;\n this.isAccordionContainer = true;\n this.isEditableElement = false;\n this.isCreateContextMenu = false;\n this.isPageCommentsRendered = false;\n this.isCommentsRendered = false;\n this.isAnnotationRendered = false;\n if (this.commentMenuObj) {\n this.commentMenuObj.destroy();\n }\n // eslint-disable-next-line\n var accordionPages = document.querySelectorAll('.e-pv-accordion-page-container');\n if (accordionPages) {\n for (var j = 0; j < accordionPages.length; j++) {\n // eslint-disable-next-line\n accordionPages[j].remove();\n }\n }\n if (this.commentsRequestHandler) {\n this.commentsRequestHandler.clear();\n }\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.getModuleName = function () {\n return 'StickyNotesAnnotation';\n };\n /**\n * This method used to add annotations with using program.\n *\n * @param annotationObject - It describes type of annotation object\n * @param offset - It describes about the annotation bounds or location\n * @returns Object\n * @private\n */\n StickyNotesAnnotation.prototype.updateAddAnnotationDetails = function (annotationObject, offset) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { offset: { x: 1, y: 1 }, pageNumber: 0 };\n offset = annotationObject.offset;\n }\n else if (!annotationObject.offset)\n offset = { x: 1, y: 1 };\n else\n offset = annotationObject.offset;\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n //Creating annotation settings\n var annotationSelectorSettings = this.pdfViewer.stickyNotesSettings.annotationSelectorSettings ? this.pdfViewer.stickyNotesSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n var annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stickyNotesSettings);\n var allowedInteractions = this.pdfViewer.stickyNotesSettings.allowedInteractions ? this.pdfViewer.stickyNotesSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n annotationSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n //Creating Annotation objects with it's proper properties\n var stickyNotesAnnotation = [];\n var stickyNotes = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : allowedInteractions,\n AnnotName: annotationName,\n AnnotType: 'sticky',\n AnnotationFlags: null,\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotationSelectorSettings,\n AnnotationSettings: annotationSettings,\n Author: annotationObject.author ? annotationObject.author : 'Guest',\n Bounds: { X: offset.x, Y: offset.y, Width: 30, Height: 30, Left: offset.x, Top: offset.y, Location: { X: offset.x, Y: offset.y }, Size: { Height: 30, IsEmpty: false, Width: 30 } },\n Color: { IsEmpty: false, B: 51, Blue: 0.2, C: 0, G: 255 },\n Comments: null,\n CreatedDate: currentDateString,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n ExistingCustomData: null,\n Icon: 'Comment',\n IsCommentLock: false,\n IsLock: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: annotationObject.isPrint ? annotationObject.isPrint : true,\n ModifiedDate: currentDateString,\n Note: \"\",\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n Reference: null,\n Size: { IsEmpty: true, Width: 0, Height: 0 },\n State: \"\",\n StateModel: \"\",\n StrokeColor: null,\n SubType: null,\n Subject: 'Sticky Note',\n Type: null\n };\n //Adding the annotation object to an array and return it\n stickyNotesAnnotation[0] = stickyNotes;\n return { stickyNotesAnnotation: stickyNotesAnnotation };\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.getAnnotationType = function (type) {\n var annotationType;\n if (type === 'stamp' || type === 'Stamp') {\n annotationType = 'stamp';\n }\n else if (type === 'shape' || type === 'Line' || type === 'Radius' || type === 'Rectangle' || type === 'Ellipse'\n || type === 'Polygon' || type === 'LineWidthArrowHead' || type === 'Square' || type === 'Circle') {\n annotationType = 'shape';\n }\n else if (type === 'textMarkup') {\n annotationType = 'textMarkup';\n }\n else if (type === 'freeText' || type === 'FreeText') {\n annotationType = 'freeText';\n }\n else if (type === 'sticky' || type === 'StickyNotes') {\n annotationType = 'sticky';\n }\n else if (type === 'measure' || type === 'shape_measure') {\n annotationType = 'measure';\n }\n else if (type === 'ink' || type === 'Ink') {\n annotationType = 'ink';\n }\n return annotationType;\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.getAuthorName = function (annotation, commonDiv) {\n var author;\n if (annotation) {\n var type = annotation.shapeAnnotationType;\n var annotationType = this.getAnnotationType(type);\n author = this.pdfViewer.annotationModule.updateAnnotationAuthor(annotationType, type);\n }\n else {\n author = commonDiv.getAttribute('author');\n }\n return author;\n };\n return StickyNotesAnnotation;\n}());\nexport { StickyNotesAnnotation };\n","import { splitArrayCollection, processPathData, getPathString } from '@syncfusion/ej2-drawings';\nimport { Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar InkAnnotation = /** @class */ (function () {\n function InkAnnotation(pdfViewer, pdfViewerBase) {\n // eslint-disable-next-line\n this.newObject = [];\n /**\n * @private\n */\n this.outputString = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.inkAnnotationindex = [];\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n /**\n * @private\n */\n this.currentPageNumber = '';\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n */\n InkAnnotation.prototype.drawInk = function () {\n this.pdfViewerBase.disableTextSelectionMode();\n this.pdfViewer.tool = 'Ink';\n };\n InkAnnotation.prototype.drawInkAnnotation = function (pageNumber) {\n if (this.pdfViewerBase.isToolbarInkClicked) {\n this.pdfViewerBase.isInkAdded = true;\n var pageIndex = !isNaN(pageNumber) ? pageNumber : this.pdfViewerBase.currentPageNumber - 1;\n if (this.outputString && this.outputString !== '') {\n var currentAnnot = this.addInk(pageIndex);\n this.pdfViewer.renderDrawing(undefined, pageIndex);\n this.pdfViewer.clearSelection(pageIndex);\n this.pdfViewer.select([currentAnnot.id], currentAnnot.annotationSelectorSettings);\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n this.pdfViewer.toolbar.annotationToolbarModule.enableSignaturePropertiesTools(true);\n }\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode && this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createPropertyTools(\"Ink\");\n }\n }\n else {\n this.outputString = '';\n this.newObject = [];\n this.pdfViewerBase.isToolbarInkClicked = false;\n this.pdfViewer.tool = '';\n }\n this.pdfViewerBase.isInkAdded = false;\n }\n };\n /**\n * @private\n */\n InkAnnotation.prototype.storePathData = function () {\n this.convertToPath(this.newObject);\n this.newObject = [];\n };\n /**\n * @param position\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.drawInkInCanvas = function (position, pageIndex) {\n // eslint-disable-next-line\n if (this.currentPageNumber !== '' && parseInt(this.currentPageNumber) !== pageIndex) {\n // eslint-disable-next-line\n this.drawInkAnnotation(parseInt(this.currentPageNumber));\n this.pdfViewerBase.isToolbarInkClicked = true;\n this.pdfViewer.tool = 'Ink';\n }\n var zoom = this.pdfViewerBase.getZoomFactor();\n var ratio = this.pdfViewerBase.getWindowDevicePixelRatio();\n ;\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n var context = canvas.getContext('2d');\n var thickness = this.pdfViewer.inkAnnotationSettings.thickness ? this.pdfViewer.inkAnnotationSettings.thickness : 1;\n // eslint-disable-next-line max-len\n var opacity = this.pdfViewer.inkAnnotationSettings.opacity ? this.pdfViewer.inkAnnotationSettings.opacity : 1;\n // eslint-disable-next-line max-len\n var strokeColor = this.pdfViewer.inkAnnotationSettings.strokeColor ? this.pdfViewer.inkAnnotationSettings.strokeColor : '#ff0000';\n if (!Browser.isDevice || (Browser.isDevice && zoom <= 0.7)) {\n context.setTransform(ratio, 0, 0, ratio, 0, 0);\n }\n context.beginPath();\n context.lineJoin = 'round';\n context.lineCap = 'round';\n context.moveTo(position.prevPosition.x, position.prevPosition.y);\n context.lineTo(position.currentPosition.x, position.currentPosition.y);\n context.lineWidth = thickness * zoom > 1 ? thickness * zoom : thickness;\n context.strokeStyle = strokeColor;\n context.globalAlpha = opacity;\n context.stroke();\n // context.lineWidth = 2;\n context.arc(position.prevPosition.x, position.prevPosition.y, 2 / 2, 0, Math.PI * 2, true);\n context.closePath();\n this.pdfViewerBase.prevPosition = position.currentPosition;\n this.newObject.push(position.currentPosition.x, position.currentPosition.y);\n this.currentPageNumber = pageIndex.toString();\n };\n // eslint-disable-next-line\n InkAnnotation.prototype.convertToPath = function (newObject) {\n this.movePath(newObject[0], newObject[1]);\n this.linePath(newObject[0], newObject[1]);\n for (var n = 2; n < newObject.length; n = n + 2) {\n this.linePath(newObject[n], newObject[n + 1]);\n }\n };\n InkAnnotation.prototype.linePath = function (x, y) {\n this.outputString += 'L' + x + ',' + y + ' ';\n };\n InkAnnotation.prototype.movePath = function (x, y) {\n this.outputString += 'M' + x + ',' + y + ' ';\n };\n /**\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.addInk = function (pageNumber) {\n // eslint-disable-next-line\n var currentBounds = this.calculateInkSize();\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annot;\n if (this.pdfViewerBase.isToolbarInkClicked) {\n var annotationName = this.pdfViewer.annotation.createGUID();\n var modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var pageIndex = !isNaN(pageNumber) ? pageNumber : this.pdfViewerBase.currentPageNumber - 1;\n var thickness = this.pdfViewer.inkAnnotationSettings.thickness ? this.pdfViewer.inkAnnotationSettings.thickness : 1;\n // eslint-disable-next-line max-len\n var opacity = this.pdfViewer.inkAnnotationSettings.opacity ? this.pdfViewer.inkAnnotationSettings.opacity : 1;\n // eslint-disable-next-line max-len\n var strokeColor = this.pdfViewer.inkAnnotationSettings.strokeColor ? this.pdfViewer.inkAnnotationSettings.strokeColor : '#ff0000';\n // eslint-disable-next-line\n var isLock = this.pdfViewer.inkAnnotationSettings.isLock ? this.pdfViewer.inkAnnotationSettings.isLock : this.pdfViewer.annotationSettings.isLock;\n var author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.inkAnnotationSettings.author ? this.pdfViewer.inkAnnotationSettings.author : 'Guest';\n var customData = this.pdfViewer.inkAnnotationSettings.customData;\n var isPrint = this.pdfViewer.inkAnnotationSettings.isPrint;\n // eslint-disable-next-line\n var allowedInteractions = this.pdfViewer.inkAnnotationSettings.allowedInteractions ? this.pdfViewer.inkAnnotationSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.inkAnnotationSettings ? this.pdfViewer.inkAnnotationSettings : this.pdfViewer.annotationSettings;\n annot = {\n // eslint-disable-next-line max-len\n id: 'ink' + this.pdfViewerBase.inkCount, bounds: { x: currentBounds.x, y: currentBounds.y, width: currentBounds.width, height: currentBounds.height }, pageIndex: pageIndex, data: this.outputString, customData: customData,\n shapeAnnotationType: 'Ink', opacity: opacity, strokeColor: strokeColor, thickness: thickness, annotName: annotationName, comments: [],\n author: author, subject: 'Ink', notes: '',\n review: { state: '', stateModel: '', modifiedDate: modifiedDate, author: author },\n annotationSelectorSettings: this.getSelector('Ink', ''), modifiedDate: modifiedDate, annotationSettings: annotationSettings,\n isPrint: isPrint, allowedInteractions: allowedInteractions, isCommentLock: false, isLocked: isLock\n };\n var annotation = this.pdfViewer.add(annot);\n // eslint-disable-next-line\n var bounds = { left: annot.bounds.x, top: annot.bounds.y, width: annot.bounds.width, height: annot.bounds.height };\n // eslint-disable-next-line\n var settings = {\n opacity: annot.opacity, strokeColor: annot.strokeColor, thickness: annot.thickness, modifiedDate: annot.modifiedDate,\n width: annot.bounds.width, height: annot.bounds.height, data: this.outputString\n };\n this.pdfViewerBase.inkCount++;\n // eslint-disable-next-line max-len\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('ink', (annot.pageIndex + 1), annot.shapeAnnotationType);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n annot.annotName = annotationName;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, null, annotation, 'Addition', '', annotation, annotation);\n this.pdfViewer.annotationModule.storeAnnotations(pageIndex, annot, '_annotations_ink');\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'Ink', bounds, settings);\n if (this.pdfViewerBase.isInkAdded) {\n this.outputString = '';\n this.newObject = [];\n }\n this.pdfViewerBase.isToolbarInkClicked = false;\n this.pdfViewer.tool = '';\n }\n return annot;\n };\n /**\n * @private\n */\n InkAnnotation.prototype.setAnnotationMode = function () {\n if (this.pdfViewerBase.isToolbarInkClicked) {\n this.drawInkAnnotation();\n }\n else {\n this.pdfViewerBase.isToolbarInkClicked = true;\n this.drawInk();\n }\n };\n InkAnnotation.prototype.saveInkSignature = function () {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_ink');\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n // eslint-disable-next-line\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n var strokeColorString = pageAnnotationObject.annotations[z].strokeColor;\n pageAnnotationObject.annotations[z].strokeColor = JSON.stringify(this.pdfViewerBase.signatureModule.getRgbCode(strokeColorString));\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getInkBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n // eslint-disable-next-line\n var collectionData = processPathData(pageAnnotationObject.annotations[z].data);\n // eslint-disable-next-line\n var csData = splitArrayCollection(collectionData);\n pageAnnotationObject.annotations[z].data = JSON.stringify(csData);\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n /**\n * @param pageNumber\n * @param annotationBase\n * @param pageNumber\n * @param annotationBase\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.addInCollection = function (pageNumber, annotationBase) {\n if (annotationBase) {\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n pageAnnotations.push(annotationBase);\n }\n this.manageInkAnnotations(pageAnnotations, pageNumber);\n }\n };\n // eslint-disable-next-line\n InkAnnotation.prototype.calculateInkSize = function () {\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n // eslint-disable-next-line\n var collectionData = processPathData(this.outputString);\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n for (var k = 0; k < collectionData.length; k++) {\n // eslint-disable-next-line\n var val = collectionData[k];\n if (minimumX === -1) {\n // eslint-disable-next-line\n minimumX = (val['x']);\n // eslint-disable-next-line\n maximumX = (val['x']);\n // eslint-disable-next-line\n minimumY = (val['y']);\n // eslint-disable-next-line\n maximumY = (val['y']);\n }\n else {\n // eslint-disable-next-line\n var point1 = (val['x']);\n // eslint-disable-next-line\n var point2 = (val['y']);\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n var newdifferenceX = maximumX - minimumX;\n var newdifferenceY = maximumY - minimumY;\n // eslint-disable-next-line max-len\n return { x: (minimumX / zoomvalue), y: (minimumY / zoomvalue), width: (newdifferenceX / zoomvalue), height: (newdifferenceY / zoomvalue) };\n };\n /**\n * @param annotationCollection\n * @param pageIndex\n * @param isImport\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.renderExistingInkSignature = function (annotationCollection, pageIndex, isImport) {\n var annot;\n var isinkAnnotationAdded = false;\n if (!isImport) {\n for (var p = 0; p < this.inkAnnotationindex.length; p++) {\n if (this.inkAnnotationindex[p] === pageIndex) {\n isinkAnnotationAdded = true;\n break;\n }\n }\n }\n if (annotationCollection && !isinkAnnotationAdded) {\n if (annotationCollection.length > 0 && this.inkAnnotationindex.indexOf(pageIndex) === -1) {\n this.inkAnnotationindex.push(pageIndex);\n }\n for (var n = 0; n < annotationCollection.length; n++) {\n // eslint-disable-next-line\n var currentAnnotation = annotationCollection[n];\n if (currentAnnotation) {\n // eslint-disable-next-line\n var data = currentAnnotation.PathData;\n if (isImport && data) {\n if (typeof (data) === 'object' && data.length > 1) {\n data = getPathString(data);\n }\n else {\n if (currentAnnotation.IsPathData || (data.split('command').length <= 1)) {\n data = data;\n }\n else {\n data = getPathString(JSON.parse(data));\n }\n }\n }\n this.outputString = data;\n // eslint-disable-next-line\n var calculateInkPosition = this.calculateInkSize();\n this.outputString = '';\n var rectDiff = 0;\n var rectDifference = 1;\n // eslint-disable-next-line\n var bounds = currentAnnotation.Bounds;\n if (calculateInkPosition) {\n if (calculateInkPosition.height < 1) {\n rectDiff = bounds.Height ? bounds.Height : bounds.height;\n rectDifference = bounds.Height ? bounds.Height : bounds.height;\n }\n else if (calculateInkPosition.width < 1) {\n rectDiff = bounds.Width ? bounds.Width : bounds.width;\n rectDifference = bounds.Width ? bounds.Width : bounds.width;\n }\n }\n var currentLeft = !isNullOrUndefined(bounds.X) ? bounds.X + (rectDiff / 2) : bounds.x + (rectDiff / 2);\n var currentTop = !isNullOrUndefined(bounds.Y) ? bounds.Y + (rectDiff / 2) : bounds.y + (rectDiff / 2);\n var currentWidth = bounds.Width ? bounds.Width - (rectDifference - 1) : bounds.width - (rectDifference - 1);\n var currentHeight = bounds.Height ? bounds.Height - (rectDifference - 1) : bounds.height - (rectDifference - 1);\n var isLock = currentAnnotation.AnnotationSettings ? currentAnnotation.AnnotationSettings.isLock : false;\n // eslint-disable-next-line\n var selectorSettings = currentAnnotation.AnnotationSelectorSettings ? currentAnnotation.AnnotationSelectorSettings : this.getSelector(currentAnnotation, 'Ink');\n var customData = this.pdfViewer.annotation.getCustomData(currentAnnotation);\n var isPrint = true;\n if (currentAnnotation.AnnotationSettings) {\n isPrint = currentAnnotation.AnnotationSettings.isPrint;\n }\n else {\n isPrint = this.pdfViewer.inkAnnotationSettings.isPrint;\n }\n if (currentAnnotation.IsLocked) {\n isLock = currentAnnotation.IsLocked;\n }\n if (currentAnnotation.Subject === 'Highlight' && currentAnnotation.Opacity === 1) {\n currentAnnotation.Opacity = currentAnnotation.Opacity / 2;\n }\n // eslint-disable-next-line max-len\n currentAnnotation.allowedInteractions = currentAnnotation.AllowedInteractions ? currentAnnotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(currentAnnotation);\n annot = {\n // eslint-disable-next-line max-len\n id: 'ink' + this.pdfViewerBase.inkCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data,\n shapeAnnotationType: 'Ink', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, annotName: currentAnnotation.AnnotName,\n // eslint-disable-next-line max-len\n comments: this.pdfViewer.annotationModule.getAnnotationComments(currentAnnotation.Comments, currentAnnotation, currentAnnotation.Author), author: currentAnnotation.Author, allowedInteractions: currentAnnotation.allowedInteractions, subject: currentAnnotation.Subject, modifiedDate: currentAnnotation.ModifiedDate,\n // eslint-disable-next-line max-len\n review: { state: '', stateModel: '', modifiedDate: currentAnnotation.ModifiedDate, author: currentAnnotation.Author }, notes: currentAnnotation.Note, annotationSettings: { isLock: isLock },\n annotationSelectorSettings: selectorSettings, customData: customData, isPrint: isPrint, isCommentLock: currentAnnotation.IsCommentLock\n };\n this.pdfViewer.add(annot);\n // eslint-disable-next-line\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentAnnotation.pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, annot.pageIndex);\n this.pdfViewer.annotationModule.storeAnnotations(annot.pageIndex, annot, '_annotations_ink');\n if (this.isAddAnnotationProgramatically) {\n var settings = {\n opacity: annot.opacity, strokeColor: annot.strokeColor, thickness: annot.thickness, modifiedDate: annot.modifiedDate,\n width: annot.bounds.width, height: annot.bounds.height, data: this.outputString\n };\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'Ink', bounds, settings);\n }\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.signatureCount++;\n this.pdfViewerBase.inkCount++;\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.navigationPane && this.pdfViewerBase.navigationPane.annotationMenuObj && this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], true);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], true);\n }\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param annotations\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.storeInkSignatureData = function (pageNumber, annotations) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(annotations.pageIndex, null, annotations, 'Addition', '', annotations, annotations);\n // eslint-disable-next-line\n var annotation = null;\n var left = annotations.bounds.left ? annotations.bounds.left : annotations.bounds.x;\n var top = annotations.bounds.top ? annotations.bounds.top : annotations.bounds.y;\n if (annotations.wrapper && annotations.wrapper.bounds) {\n left = annotations.wrapper.bounds.left;\n top = annotations.wrapper.bounds.top;\n }\n annotation = {\n // eslint-disable-next-line max-len\n id: annotations.id, bounds: { x: left, y: top, width: annotations.bounds.width, height: annotations.bounds.height },\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Ink', opacity: annotations.opacity, thickness: annotations.thickness, strokeColor: annotations.strokeColor, pageIndex: annotations.pageIndex, data: annotations.data,\n annotName: annotations.annotName,\n // eslint-disable-next-line max-len\n comments: annotations.comments, author: annotations.author, subject: annotations.subject, modifiedDate: annotations.modifiedDate,\n // eslint-disable-next-line max-len\n review: { state: '', stateModel: '', modifiedDate: annotations.modifiedDate, author: annotations.author }, notes: annotations.notes,\n annotationSelectorSettings: this.getSelector(annotations, 'Ink'), isCommentLock: annotations.isCommentLock\n };\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_ink');\n var index = 0;\n if (!storeObject) {\n var shapeAnnotation = { pageIndex: pageNumber, annotations: [] };\n shapeAnnotation.annotations.push(annotation);\n index = shapeAnnotation.annotations.indexOf(annotation);\n var annotationCollection = [];\n annotationCollection.push(shapeAnnotation);\n var annotationStringified = JSON.stringify(annotationCollection);\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_ink', annotationStringified);\n }\n else {\n var annotObject = JSON.parse(storeObject);\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_ink');\n var pageIndex = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[pageIndex]) {\n annotObject[pageIndex].annotations.push(annotation);\n index = annotObject[pageIndex].annotations.indexOf(annotation);\n }\n else {\n var markupAnnotation = { pageIndex: pageNumber, annotations: [] };\n markupAnnotation.annotations.push(annotation);\n index = markupAnnotation.annotations.indexOf(annotation);\n annotObject.push(markupAnnotation);\n }\n var annotationStringified = JSON.stringify(annotObject);\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_ink', annotationStringified);\n }\n };\n InkAnnotation.prototype.getSelector = function (type, subject) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings;\n }\n return selector;\n };\n // eslint-disable-next-line\n InkAnnotation.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_ink');\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n /**\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.modifySignatureInkCollection = function (property, pageNumber, annotationBase) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var currentAnnotObject = null;\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.id === pageAnnotations[i].id) {\n if (property === 'bounds') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { x: annotationBase.wrapper.bounds.left, y: annotationBase.wrapper.bounds.top, width: annotationBase.bounds.width, height: annotationBase.bounds.height };\n }\n else if (property === 'stroke') {\n pageAnnotations[i].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n }\n else if (property === 'opacity') {\n pageAnnotations[i].opacity = annotationBase.wrapper.children[0].style.opacity;\n }\n else if (property === 'thickness') {\n pageAnnotations[i].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n }\n else if (property === 'notes') {\n pageAnnotations[i].notes = annotationBase.notes;\n }\n else if (property === 'delete') {\n currentAnnotObject = pageAnnotations.splice(i, 1)[0];\n break;\n }\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], pageNumber);\n }\n }\n this.manageInkAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n // eslint-disable-next-line\n InkAnnotation.prototype.manageInkAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_ink');\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_ink');\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_ink', annotationStringified);\n }\n };\n /**\n * @param currentAnnotation\n * @param pageIndex\n * @param isImport\n * @param currentAnnotation\n * @param pageIndex\n * @param isImport\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.updateInkCollections = function (currentAnnotation, pageIndex, isImport) {\n // eslint-disable-next-line\n var annot;\n // eslint-disable-next-line\n if (currentAnnotation) {\n // eslint-disable-next-line\n var bounds = currentAnnotation.Bounds;\n var currentLeft = (bounds.X);\n var currentTop = (bounds.Y);\n var currentWidth = (bounds.Width);\n var currentHeight = (bounds.Height);\n var customData = currentAnnotation.customData;\n var isPrint = currentAnnotation.isPrint;\n // eslint-disable-next-line\n var allowedInteractions = currentAnnotation.AllowedInteractions ? currentAnnotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(currentAnnotation);\n // eslint-disable-next-line\n var annotationSettings = currentAnnotation.AnnotationSettings ? currentAnnotation.AnnotationSettings : this.pdfViewer.inkAnnotationSettings ? this.pdfViewer.inkAnnotationSettings : this.pdfViewer.annotationSettings;\n if (currentAnnotation.IsLocked) {\n annotationSettings.isLock = currentAnnotation.IsLocked;\n }\n // eslint-disable-next-line\n var data = currentAnnotation.PathData;\n if (isImport) {\n data = getPathString(JSON.parse(currentAnnotation.PathData));\n }\n annot = {\n // eslint-disable-next-line max-len\n id: 'ink' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data,\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Ink', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, annotationId: currentAnnotation.AnnotName,\n // eslint-disable-next-line max-len\n customData: customData, comments: this.pdfViewer.annotationModule.getAnnotationComments(currentAnnotation.Comments, currentAnnotation, currentAnnotation.Author), author: currentAnnotation.Author, allowedInteractions: allowedInteractions, subject: currentAnnotation.Subject, modifiedDate: currentAnnotation.ModifiedDate,\n review: { state: '', stateModel: '', modifiedDate: currentAnnotation.ModifiedDate, author: currentAnnotation.Author }, notes: currentAnnotation.Note, isPrint: isPrint, isCommentLock: currentAnnotation.IsCommentLock, annotationSettings: annotationSettings, isLocked: annotationSettings.isLock\n };\n return annot;\n }\n };\n /**\n * This method used to add annotations with using program.\n *\n * @param annotationObject - It describes type of annotation object\n * @param offset - It describes about the annotation bounds or location\n * @param pageNumber - It describes about the annotation page number\n * @returns Object\n * @private\n */\n InkAnnotation.prototype.updateAddAnnotationDetails = function (annotationObject, offset, pageNumber) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { offset: { x: 10, y: 10 }, pageNumber: 0, width: undefined, height: undefined };\n offset = annotationObject.offset;\n }\n else if (!annotationObject.offset)\n offset = { x: 10, y: 10 };\n else\n offset = annotationObject.offset;\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n //Creating annotation settings\n var annotationSelectorSettings = this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings ? this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n var annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.inkAnnotationSettings);\n var allowedInteractions = this.pdfViewer.inkAnnotationSettings.allowedInteractions ? this.pdfViewer.inkAnnotationSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n annotationSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n annotationObject.width = annotationObject.width ? annotationObject.width : 150;\n annotationObject.height = annotationObject.height ? annotationObject.height : 60;\n var pathData = annotationObject.path ? annotationObject.path : '';\n annotationObject.path = getPathString(JSON.parse(pathData));\n //Creating Annotation objects with it's proper properties\n var signatureInkAnnotation = [];\n var ink = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : allowedInteractions,\n AnnotName: annotationName,\n AnnotType: 'ink',\n AnnotationFlags: null,\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotationSelectorSettings,\n AnnotationSettings: annotationSettings,\n AnnotationType: 'Ink',\n Author: annotationObject.author ? annotationObject.author : 'Guest',\n Bounds: { X: offset.x, Y: offset.y, Width: annotationObject.width, Height: annotationObject.height, Left: offset.x, Top: offset.y, Location: { X: offset.x, Y: offset.y }, Size: { Height: annotationObject.height, IsEmpty: false, Width: annotationObject.width } },\n Comments: null,\n CreatedDate: currentDateString,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n ExistingCustomData: null,\n IsCommentLock: false,\n IsLock: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: annotationObject.isPrint ? annotationObject.isPrint : true,\n ModifiedDate: currentDateString,\n Note: '',\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n PathData: annotationObject.path,\n PageNumber: pageNumber,\n State: '',\n StateModel: '',\n StrokeColor: annotationObject.strokeColor ? annotationObject.strokeColor : 'rgba(255,0,0,1)',\n SubType: null,\n Subject: 'Ink',\n Type: null,\n Thickness: annotationObject.thickness ? annotationObject.thickness : 1\n };\n //Adding the annotation object to an array and return it\n signatureInkAnnotation[0] = ink;\n return { signatureInkAnnotation: signatureInkAnnotation };\n };\n return InkAnnotation;\n}());\nexport { InkAnnotation };\n","/* eslint-disable */\nimport { FontStyle } from './../base/types';\nimport { isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @hidden\n */\nvar FreeTextAnnotation = /** @class */ (function () {\n function FreeTextAnnotation(pdfviewer, pdfViewerBase) {\n /**\n * @private\n */\n this.inputBoxCount = 0;\n /**\n * @private\n */\n this.isFreeTextValueChange = false;\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n /**\n * @private\n */\n this.isInuptBoxInFocus = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.freeTextPageNumbers = [];\n /**\n * @private\n */\n this.selectedText = '';\n /**\n * @private\n */\n this.isTextSelected = false;\n this.selectionStart = 0;\n this.selectionEnd = 0;\n /**\n * @private\n */\n this.isBold = false;\n /**\n * @private\n */\n this.isItalic = false;\n /**\n * @private\n */\n this.isUnderline = false;\n /**\n * @private\n */\n this.isStrikethrough = false;\n this.isReadonly = false;\n this.isMaximumWidthReached = false;\n /**\n * @private\n */\n this.previousText = 'Type Here';\n /**\n * @private\n */\n this.currentPosition = [];\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n this.updateTextProperties();\n this.inputBoxElement = document.createElement('textarea');\n this.inputBoxElement.style.position = 'absolute';\n this.inputBoxElement.style.Width = this.defautWidth;\n this.inputBoxElement.style.Height = this.defaultHeight;\n this.inputBoxElement.style.zIndex = '5';\n this.inputBoxElement.style.fontSize = this.fontSize + 'px';\n this.inputBoxElement.className = 'free-text-input';\n this.inputBoxElement.style.resize = 'none';\n this.inputBoxElement.style.borderColor = this.borderColor;\n this.inputBoxElement.style.background = this.fillColor;\n this.inputBoxElement.style.borderStyle = this.borderStyle;\n this.inputBoxElement.style.borderWidth = this.borderWidth + 'px';\n this.inputBoxElement.style.padding = this.padding;\n this.inputBoxElement.style.paddingLeft = '3px';\n this.inputBoxElement.style.borderRadius = '2px';\n this.inputBoxElement.style.verticalAlign = 'middle';\n this.inputBoxElement.style.fontFamily = this.fontFamily;\n this.inputBoxElement.style.color = this.pdfViewer.freeTextSettings.fontColor ?\n this.pdfViewer.freeTextSettings.fontColor : '#000';\n this.inputBoxElement.style.overflow = 'hidden';\n this.inputBoxElement.style.wordBreak = this.wordBreak;\n this.inputBoxElement.readOnly = this.isReadonly;\n this.inputBoxElement.addEventListener('focusout', this.onFocusOutInputBox.bind(this));\n this.inputBoxElement.addEventListener('keydown', this.onKeyDownInputBox.bind(this));\n this.inputBoxElement.addEventListener('mouseup', this.onMouseUpInputBox.bind(this));\n this.freeTextPageNumbers = [];\n }\n /**\n * @private\n */\n FreeTextAnnotation.prototype.updateTextProperties = function () {\n this.defautWidth = this.pdfViewer.freeTextSettings.width ? this.pdfViewer.freeTextSettings.width : 151;\n this.defaultHeight = this.pdfViewer.freeTextSettings.height ? this.pdfViewer.freeTextSettings.height : 24.6;\n this.borderColor = this.pdfViewer.freeTextSettings.borderColor ? this.pdfViewer.freeTextSettings.borderColor : '#ffffff00';\n this.fillColor = this.pdfViewer.freeTextSettings.fillColor ? this.pdfViewer.freeTextSettings.fillColor : '#fff';\n this.borderStyle = this.pdfViewer.freeTextSettings.borderStyle ? this.pdfViewer.freeTextSettings.borderStyle : 'solid';\n this.borderWidth = this.pdfViewer.freeTextSettings.borderWidth ? this.pdfViewer.freeTextSettings.borderWidth : 1;\n this.fontSize = this.pdfViewer.freeTextSettings.fontSize ? this.pdfViewer.freeTextSettings.fontSize : 16;\n this.opacity = this.pdfViewer.freeTextSettings.opacity ? this.pdfViewer.freeTextSettings.opacity : 1;\n this.fontColor = this.pdfViewer.freeTextSettings.fontColor ? this.pdfViewer.freeTextSettings.fontColor : '#000';\n // eslint-disable-next-line max-len\n this.author = (this.pdfViewer.freeTextSettings.author !== 'Guest') ? this.pdfViewer.freeTextSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n if (this.pdfViewer.freeTextSettings.fontFamily) {\n var fontName = this.pdfViewer.freeTextSettings.fontFamily;\n if (fontName === 'Helvetica' || fontName === 'Times New Roman' || fontName === 'Courier' || fontName === 'Symbol' || fontName === 'ZapfDingbats') {\n this.fontFamily = fontName;\n }\n else {\n this.fontFamily = 'Helvetica';\n }\n }\n else {\n this.fontFamily = 'Helvetica';\n }\n this.textAlign = this.pdfViewer.freeTextSettings.textAlignment ? this.pdfViewer.freeTextSettings.textAlignment : 'Left';\n this.defaultText = this.pdfViewer.freeTextSettings.defaultText ? this.pdfViewer.freeTextSettings.defaultText : 'Type here';\n this.isReadonly = false;\n if (this.pdfViewer.freeTextSettings.enableAutoFit) {\n this.wordBreak = 'break-all';\n this.padding = '2px';\n }\n else {\n this.padding = '0px';\n this.wordBreak = 'break-word';\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.freeTextSettings.isLock || this.pdfViewer.annotationSettings.isLock || this.pdfViewer.freeTextSettings.isReadonly) {\n this.isReadonly = true;\n }\n if (this.pdfViewer.freeTextSettings.fontStyle === 1) {\n this.isBold = true;\n }\n else if (this.pdfViewer.freeTextSettings.fontStyle === 2) {\n this.isItalic = true;\n }\n else if (this.pdfViewer.freeTextSettings.fontStyle === 4) {\n this.isUnderline = true;\n }\n else if (this.pdfViewer.freeTextSettings.fontStyle === 8) {\n this.isStrikethrough = true;\n }\n else if (3 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isBold = true;\n this.isItalic = true;\n }\n else if (5 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isBold = true;\n this.isUnderline = true;\n }\n else if (9 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isBold = true;\n this.isStrikethrough = true;\n }\n else if (7 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isBold = true;\n this.isItalic = true;\n this.isUnderline = true;\n }\n else if (11 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isBold = true;\n this.isItalic = true;\n this.isStrikethrough = true;\n }\n else if (14 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isBold = true;\n this.isUnderline = true;\n this.isStrikethrough = true;\n }\n else if (6 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isUnderline = true;\n this.isItalic = true;\n }\n };\n /**\n * @param shapeAnnotations\n * @param pageNumber\n * @param isImportAction\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.renderFreeTextAnnotations = function (shapeAnnotations, pageNumber, isImportAction) {\n var isFreeTextAdded = false;\n if (!isImportAction) {\n for (var p = 0; p < this.freeTextPageNumbers.length; p++) {\n if (this.freeTextPageNumbers[p] === pageNumber) {\n isFreeTextAdded = true;\n break;\n }\n }\n }\n if (shapeAnnotations && !isFreeTextAdded) {\n if (shapeAnnotations.length >= 1) {\n this.freeTextPageNumbers.push(pageNumber);\n for (var i = 0; i < shapeAnnotations.length; i++) {\n // eslint-disable-next-line\n var annotation = shapeAnnotations[i];\n annotation.annotationAddMode = this.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n if (annotation.AnnotType) {\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.freeTextSettings);\n var annot = void 0;\n var paddingValues = this.getPaddingValues(annotation.FontSize);\n var leftPadding = paddingValues[0];\n var topPadding = paddingValues[1];\n var annotationBoundsX = !isNullOrUndefined(annotation.Bounds.X) ? annotation.Bounds.X - leftPadding : annotation.Bounds.x;\n var annotationBoundsY = !isNullOrUndefined(annotation.Bounds.Y) ? annotation.Bounds.Y - topPadding : annotation.Bounds.y;\n var width = annotation.Bounds.Width ? annotation.Bounds.Width : annotation.Bounds.width;\n var height = annotation.Bounds.Height ? annotation.Bounds.Height : annotation.Bounds.height;\n var rotateValue = this.getRotationValue(pageNumber);\n if (Math.sign(annotation.Rotate) === 1) {\n annotation.Rotate = -annotation.Rotate + rotateValue;\n }\n else {\n annotation.Rotate = annotation.Rotate + rotateValue;\n }\n // eslint-disable-next-line\n var rotateAngle = Math.abs(annotation.Rotate);\n if (rotateAngle === 90 || rotateAngle === 270) {\n var rotationHeight = height;\n var rotationWidth = width;\n height = rotationWidth;\n width = rotationHeight;\n annotationBoundsX = (annotationBoundsX - (width / 2));\n annotationBoundsY = (annotationBoundsY) + (width / 2 - height / 2);\n }\n var isPrint = true;\n if (annotation.annotationAddMode === 'Imported Annotation') {\n isPrint = annotation.IsPrint;\n }\n else {\n isPrint = annotation.AnnotationSettings.isPrint;\n }\n // eslint-disable-next-line\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n // eslint-disable-next-line\n annot = {\n author: annotation.Author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, id: 'freetext' + this.inputBoxCount,\n rotateAngle: annotation.Rotate, dynamicText: annotation.MarkupText, strokeColor: annotation.StrokeColor,\n thickness: annotation.Thickness, fillColor: annotation.FillColor,\n bounds: {\n x: annotationBoundsX, y: annotationBoundsY, left: annotationBoundsX, top: annotationBoundsY,\n width: width, height: height, right: annotation.Bounds.Right,\n bottom: annotation.Bounds.Bottom\n }, annotName: annotation.AnnotName, shapeAnnotationType: 'FreeText',\n // eslint-disable-next-line\n pageIndex: pageNumber, opacity: annotation.Opacity, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n fontFamily: annotation.FontFamily, notes: annotation.MarkupText, textAlign: annotation.TextAlign,\n // eslint-disable-next-line\n comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author),\n review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n // eslint-disable-next-line max-len\n font: { isBold: annotation.Font.Bold, isItalic: annotation.Font.Italic, isStrikeout: annotation.Font.Strikeout, isUnderline: annotation.Font.Underline },\n annotationSelectorSettings: this.getSettings(annotation), annotationSettings: annotation.AnnotationSettings,\n // eslint-disable-next-line\n customData: this.pdfViewer.annotation.getCustomData(annotation), annotationAddMode: annotation.annotationAddMode, allowedInteractions: annotation.allowedInteractions,\n isPrint: isPrint, isCommentLock: annotation.IsCommentLock, isReadonly: annotation.IsReadonly\n };\n if (isImportAction) {\n annot.id = annotation.AnnotName;\n annot.previousFontSize = annotation.FontSize ? annotation.FontSize : this.fontSize;\n }\n var addedAnnot = this.pdfViewer.add(annot);\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annot, '_annotations_freetext');\n if (this.isAddAnnotationProgramatically) {\n // eslint-disable-next-line\n var settings = {\n opacity: annot.opacity, borderColor: annot.strokeColor, borderWidth: annot.thickness, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n // eslint-disable-next-line\n fillColor: annot.fillColor, fontSize: annot.fontSize, width: annot.bounds.width, height: annot.bounds.height, fontColor: annot.fontColor, fontFamily: annot.fontFamily, defaultText: annot.dynamicText, fontStyle: annot.font, textAlignment: annot.textAlign\n };\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'FreeText', annot.bounds, settings);\n }\n this.inputBoxCount += 1;\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = true;\n this.pdfViewer.nodePropertyChange(addedAnnot, {});\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = false;\n }\n }\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.getSettings = function (annotation) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else if (this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.freeTextSettings.annotationSelectorSettings;\n }\n return selector;\n };\n /**\n * @param type\n * @private\n */\n FreeTextAnnotation.prototype.setAnnotationType = function (type) {\n this.pdfViewerBase.disableTextSelectionMode();\n switch (type) {\n case 'FreeText':\n this.currentAnnotationMode = 'FreeText';\n this.updateTextProperties();\n // eslint-disable-next-line max-len\n var modifiedDateRect = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.pdfViewer.drawingObject = {\n shapeAnnotationType: 'FreeText', strokeColor: this.borderColor,\n fillColor: this.fillColor, opacity: this.opacity, notes: '', isCommentLock: false,\n thickness: this.borderWidth, borderDashArray: '0', modifiedDate: modifiedDateRect,\n // eslint-disable-next-line max-len\n author: this.pdfViewer.freeTextSettings.author, subject: 'Text Box', font: { isBold: this.isBold, isItalic: this.isItalic, isStrikeout: this.isStrikethrough, isUnderline: this.isUnderline }, textAlign: this.textAlign\n };\n this.pdfViewer.tool = 'Select';\n break;\n }\n };\n /**\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewAdded\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewAdded\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewAdded\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewAdded\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.modifyInCollection = function (property, pageNumber, annotationBase, isNewAdded) {\n if (!isNewAdded) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n }\n var currentAnnotObject = null;\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.id === pageAnnotations[i].id) {\n if (property === 'bounds') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n else if (property === 'fill') {\n pageAnnotations[i].fillColor = annotationBase.wrapper.children[0].style.fill;\n }\n else if (property === 'stroke') {\n pageAnnotations[i].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n }\n else if (property === 'opacity') {\n pageAnnotations[i].opacity = annotationBase.wrapper.children[0].style.opacity;\n }\n else if (property === 'thickness') {\n pageAnnotations[i].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n }\n else if (property === 'notes') {\n pageAnnotations[i].note = annotationBase.notes;\n }\n else if (property === 'delete') {\n currentAnnotObject = pageAnnotations.splice(i, 1)[0];\n break;\n }\n else if (property === 'dynamicText') {\n pageAnnotations[i].dynamicText = annotationBase.dynamicText;\n }\n else if (property === 'fontColor') {\n pageAnnotations[i].fontColor = annotationBase.fontColor;\n }\n else if (property === 'fontSize') {\n pageAnnotations[i].fontSize = annotationBase.fontSize;\n }\n else if (property === 'fontFamily') {\n pageAnnotations[i].fontFamily = annotationBase.fontFamily;\n }\n else if (property === 'textPropertiesChange') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].font = { isBold: annotationBase.font.isBold, isItalic: annotationBase.font.isItalic, isStrikeout: annotationBase.font.isStrikeout, isUnderline: annotationBase.font.isUnderline };\n }\n else if (property === 'textAlign') {\n pageAnnotations[i].textAlign = annotationBase.textAlign;\n }\n // eslint-disable-next-line max-len\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], pageNumber);\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n /**\n * @param pageNumber\n * @param annotationBase\n * @private\n */\n FreeTextAnnotation.prototype.addInCollection = function (pageNumber, annotationBase) {\n if (annotationBase) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n pageAnnotations.push(annotationBase);\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n };\n /**\n * @private\n */\n FreeTextAnnotation.prototype.saveFreeTextAnnotations = function () {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_freetext');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_freetext'];\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject && !this.pdfViewer.annotationSettings.skipDownload) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = this.getBoundsBasedOnRotation(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.annotations[z].rotateAngle, pageAnnotationObject.pageIndex, pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n var strokeColorString = pageAnnotationObject.annotations[z].strokeColor;\n pageAnnotationObject.annotations[z].strokeColor = JSON.stringify(this.getRgbCode(strokeColorString));\n var fillColorString = pageAnnotationObject.annotations[z].fillColor;\n pageAnnotationObject.annotations[z].fillColor = JSON.stringify(this.getRgbCode(fillColorString));\n var fontColorString = pageAnnotationObject.annotations[z].fontColor;\n pageAnnotationObject.annotations[z].fontColor = JSON.stringify(this.getRgbCode(fontColorString));\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].vertexPoints = JSON.stringify(pageAnnotationObject.annotations[z].vertexPoints);\n if (pageAnnotationObject.annotations[z].rectangleDifference !== null) {\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].rectangleDifference = JSON.stringify(pageAnnotationObject.annotations[z].rectangleDifference);\n }\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.getRotationValue = function (pageIndex) {\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails.rotation === 0) {\n return 0;\n }\n else if (pageDetails.rotation === 1) {\n return 90;\n }\n else if (pageDetails.rotation === 2) {\n return 180;\n }\n else if (pageDetails.rotation === 3) {\n return 270;\n }\n return 0;\n };\n FreeTextAnnotation.prototype.getBoundsBasedOnRotation = function (bounds, rotateAngle, pageIndex, annotation) {\n var paddingValues = this.getPaddingValues(this.fontSize);\n var leftPadding = paddingValues[0];\n var topPadding = paddingValues[1];\n var rotateValue = this.getRotationValue(pageIndex);\n annotation.rotateAngle = rotateAngle - rotateValue;\n if (rotateAngle === 90 || rotateAngle === -90 || rotateAngle === 270 || rotateAngle === -270) {\n var x = bounds.x + (bounds.width / 2);\n var y = bounds.y - (bounds.width / 2 - bounds.height / 2);\n return { x: x + leftPadding, y: y + topPadding, left: x + leftPadding, top: y + topPadding, width: bounds.height, height: bounds.width };\n }\n else {\n return { x: bounds.left + leftPadding, y: bounds.top + topPadding, left: bounds.left + leftPadding, top: bounds.top + topPadding, width: bounds.width, height: bounds.height };\n }\n };\n FreeTextAnnotation.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_freetext');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_freetext'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_freetext');\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_freetext'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_freetext', annotationStringified);\n }\n }\n };\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_freetext');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_freetext'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.getRgbCode = function (colorString) {\n if (!colorString.match(/#([a-z0-9]+)/gi) && !colorString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n colorString = this.pdfViewer.annotationModule.nameToHash(colorString);\n }\n var stringArray = colorString.split(',');\n if (isNullOrUndefined(stringArray[1])) {\n colorString = this.pdfViewer.annotationModule.getValue(colorString, 'rgba');\n stringArray = colorString.split(',');\n }\n // eslint-disable-next-line radix\n var r = parseInt(stringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var g = parseInt(stringArray[1]);\n // eslint-disable-next-line radix\n var b = parseInt(stringArray[2]);\n // eslint-disable-next-line radix\n var a = parseInt(stringArray[3]);\n return { r: r, g: g, b: b, a: a };\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.onFocusOutInputBox = function () {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n if (!this.pdfViewerBase.isFreeTextContextMenu) {\n this.pdfViewer.fireBeforeAddFreeTextAnnotation(this.inputBoxElement.value);\n // eslint-disable-next-line\n var pageIndex = this.inputBoxElement.id && this.inputBoxElement.id.split(\"_freeText_\")[1] && this.inputBoxElement.id.split(\"_freeText_\")[1].split(\"_\")[0] ? parseFloat(this.inputBoxElement.id.split(\"_freeText_\")[1].split(\"_\")[0]) : this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + (pageIndex));\n var width = parseFloat(this.inputBoxElement.style.width);\n var padding = parseFloat(this.inputBoxElement.style.paddingLeft);\n if (this.pdfViewer.freeTextSettings.enableAutoFit && !this.isMaximumWidthReached && !this.isNewFreeTextAnnot) {\n var fontsize = parseFloat(this.inputBoxElement.style.fontSize);\n this.inputBoxElement.style.width = ((width + padding) - fontsize) + 'px';\n }\n if (this.pdfViewer.freeTextSettings.enableAutoFit && !this.isMaximumWidthReached && this.isNewFreeTextAnnot) {\n width = parseFloat(this.inputBoxElement.style.width);\n var characterLength = 8;\n this.inputBoxElement.style.width = (width - characterLength) + 'px';\n }\n var inputEleHeight = parseFloat(this.inputBoxElement.style.height);\n var inputEleWidth = parseFloat(this.inputBoxElement.style.width);\n var inputEleLeft = parseFloat(this.inputBoxElement.style.left);\n if (this.pdfViewerBase.isMixedSizeDocument) {\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n inputEleLeft = inputEleLeft - canvas.offsetLeft;\n }\n var inputEleTop = parseFloat(this.inputBoxElement.style.top);\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n if (this.pdfViewer.isValidFreeText) {\n this.inputBoxElement.value = 'Type Here';\n this.pdfViewer.isValidFreeText = false;\n }\n var inputValue = this.inputBoxElement.value;\n var isNewlyAdded = false;\n if (this.isNewFreeTextAnnot === true) {\n // eslint-disable-next-line max-len\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.isNewFreeTextAnnot = false;\n isNewlyAdded = true;\n var annot = void 0;\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('freeText', pageIndex + 1);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n // eslint-disable-next-line\n var annotationSelectorSettings = this.pdfViewer.freeTextSettings.annotationSelectorSettings ? this.pdfViewer.freeTextSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.freeTextSettings);\n // eslint-disable-next-line\n this.author = this.author ? this.author : this.pdfViewer.freeTextSettings.author ? this.pdfViewer.freeTextSettings.author : 'Guest';\n // eslint-disable-next-line\n var allowedInteractions = this.pdfViewer.freeTextSettings.allowedInteractions ? this.pdfViewer.freeTextSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n // eslint-disable-next-line\n annot = {\n author: this.author, modifiedDate: currentDateString, subject: 'Text Box', id: 'free_text' + this.inputBoxCount,\n // eslint-disable-next-line max-len\n rotateAngle: 0, dynamicText: inputValue, strokeColor: this.borderColor, thickness: this.borderWidth, fillColor: this.fillColor,\n bounds: {\n left: inputEleLeft / zoomFactor, top: inputEleTop / zoomFactor, x: inputEleLeft / zoomFactor,\n y: inputEleTop / zoomFactor, width: inputEleWidth / zoomFactor, height: inputEleHeight / zoomFactor\n }, annotName: annotationName,\n shapeAnnotationType: 'FreeText', pageIndex: pageIndex, fontColor: this.fontColor, fontSize: this.fontSize,\n fontFamily: this.fontFamily, opacity: this.opacity, comments: [], textAlign: this.textAlign,\n // eslint-disable-next-line max-len\n font: { isBold: this.isBold, isItalic: this.isItalic, isStrikeout: this.isStrikethrough, isUnderline: this.isUnderline },\n review: { state: 'Unmarked', stateModel: 'None', modifiedDate: currentDateString, author: this.author },\n // eslint-disable-next-line max-len\n annotationSelectorSettings: annotationSelectorSettings, annotationSettings: annotationSettings,\n customData: this.pdfViewer.annotationModule.getData('FreeText'), isPrint: this.pdfViewer.freeTextSettings.isPrint,\n allowedInteractions: allowedInteractions, isReadonly: this.isReadonly\n };\n if (this.pdfViewer.enableRtl) {\n annot.textAlign = 'Right';\n }\n var annotation = this.pdfViewer.add(annot);\n // eslint-disable-next-line\n var bounds = { left: annot.bounds.x, top: annot.bounds.y, width: annot.bounds.width, height: annot.bounds.height };\n // eslint-disable-next-line\n var settings = {\n opacity: annot.opacity, borderColor: annot.strokeColor, borderWidth: annot.thickness, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n // eslint-disable-next-line\n fillColor: annot.fillColor, fontSize: annot.fontSize, width: annot.bounds.width, height: annot.bounds.height, fontColor: annot.fontColor, fontFamily: annot.fontFamily, defaultText: annot.dynamicText, fontStyle: annot.font, textAlignment: annot.textAlign\n };\n this.pdfViewer.annotation.storeAnnotations(pageIndex, annot, '_annotations_freetext');\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'FreeText', bounds, settings);\n // eslint-disable-next-line\n this.pdfViewer.annotation.addAction(pageIndex, null, annot, 'Addition', '', annot, annot);\n this.pdfViewer.renderSelector(annot.pageIndex);\n this.pdfViewer.clearSelection(annot.pageIndex);\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n this.selectedAnnotation = annotation;\n }\n this.isInuptBoxInFocus = false;\n // eslint-disable-next-line\n if (this.selectedAnnotation && this.pdfViewer.selectedItems.annotations) {\n inputEleWidth = (inputEleWidth / zoomFactor);\n inputEleHeight = (inputEleHeight / zoomFactor);\n var heightDiff = (inputEleHeight - this.selectedAnnotation.bounds.height);\n var y = undefined;\n if (heightDiff > 0) {\n y = this.selectedAnnotation.wrapper.offsetY + (heightDiff / 2);\n y = y > 0 ? y : undefined;\n }\n var widthDiff = (inputEleWidth - this.selectedAnnotation.bounds.width);\n var x = undefined;\n if (widthDiff > 0) {\n x = this.selectedAnnotation.wrapper.offsetX + (widthDiff / 2);\n x = x > 0 ? x : undefined;\n }\n else {\n widthDiff = Math.abs(widthDiff);\n x = this.selectedAnnotation.wrapper.offsetX - (widthDiff / 2);\n }\n this.selectedAnnotation.bounds.width = inputEleWidth;\n this.selectedAnnotation.bounds.height = inputEleHeight;\n this.pdfViewer.annotation.modifyDynamicTextValue(inputValue, this.selectedAnnotation.annotName);\n this.selectedAnnotation.dynamicText = inputValue;\n this.modifyInCollection('dynamicText', pageIndex, this.selectedAnnotation, isNewlyAdded);\n this.modifyInCollection('bounds', pageIndex, this.selectedAnnotation, isNewlyAdded);\n // eslint-disable-next-line\n this.pdfViewer.nodePropertyChange(this.selectedAnnotation, { bounds: { width: this.selectedAnnotation.bounds.width, height: this.selectedAnnotation.bounds.height, y: y, x: x } });\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(this.selectedAnnotation.annotName);\n if (commentsDiv && commentsDiv.childNodes) {\n if (commentsDiv.childNodes[0].ej2_instances) {\n commentsDiv.childNodes[0].ej2_instances[0].value = inputValue;\n }\n else if (commentsDiv.childNodes[0].childNodes && commentsDiv.childNodes[0].childNodes[1].ej2_instances) {\n commentsDiv.childNodes[0].childNodes[1].ej2_instances[0].value = inputValue;\n }\n }\n this.pdfViewer.renderSelector(this.selectedAnnotation.pageIndex, this.selectedAnnotation.annotationSelectorSettings);\n }\n if (this.inputBoxElement.parentElement) {\n if (pageDiv && (pageDiv.id === this.inputBoxElement.parentElement.id)) {\n pageDiv.removeChild(this.inputBoxElement);\n }\n else {\n this.inputBoxElement.parentElement.removeChild(this.inputBoxElement);\n }\n }\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, pageIndex);\n this.inputBoxCount += 1;\n if (!isNewlyAdded && this.previousText !== inputValue) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.triggerAnnotationPropChange(this.selectedAnnotation, false, false, false, false, false, false, false, true, this.previousText, inputValue);\n }\n }\n else {\n this.inputBoxElement.focus();\n if (!this.isTextSelected) {\n window.getSelection().removeAllRanges();\n }\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @param event\n * @private\n */\n FreeTextAnnotation.prototype.onKeyDownInputBox = function (event) {\n var inuptEleObj = this;\n if (event.which === 9 || (isNullOrUndefined(this.pdfViewer.selectedItems.annotations[0]) && !this.isNewFreeTextAnnot)) {\n event.preventDefault();\n }\n this.selectedAnnotation = this.pdfViewer.selectedItems.annotations && this.isNewFreeTextAnnot ? this.pdfViewer.selectedItems.annotations[0]\n : this.selectedAnnotation;\n setTimeout(function () {\n if (inuptEleObj.defaultHeight < inuptEleObj.inputBoxElement.scrollHeight\n // eslint-disable-next-line radix\n && parseInt(inuptEleObj.inputBoxElement.style.height) < inuptEleObj.inputBoxElement.scrollHeight) {\n inuptEleObj.updateFreeTextAnnotationSize(true);\n }\n else {\n inuptEleObj.updateFreeTextAnnotationSize(false);\n }\n // eslint-disable-next-line\n }, 0);\n };\n FreeTextAnnotation.prototype.updateFreeTextAnnotationSize = function (isSize) {\n var inuptEleObj = this;\n var enableAutoFit = inuptEleObj.pdfViewer.freeTextSettings.enableAutoFit;\n if (enableAutoFit) {\n this.autoFitFreeText();\n }\n else {\n this.isMaximumWidthReached = true;\n }\n if (this.isMaximumWidthReached) {\n // eslint-disable-next-line max-len\n var previousHeight = inuptEleObj.inputBoxElement.getBoundingClientRect().height;\n if (!isSize && !inuptEleObj.inputBoxElement.readOnly) {\n inuptEleObj.inputBoxElement.style.height = 'auto';\n }\n var currentHeight = inuptEleObj.inputBoxElement.getBoundingClientRect().height;\n var difference = currentHeight - previousHeight;\n var fontSize = parseFloat(inuptEleObj.inputBoxElement.style.fontSize);\n // eslint-disable-next-line max-len\n inuptEleObj.inputBoxElement.style.height = inuptEleObj.inputBoxElement.readOnly ? inuptEleObj.inputBoxElement.style.height : inuptEleObj.inputBoxElement.scrollHeight + (fontSize / 2) + 'px';\n inuptEleObj.inputBoxElement.style.height = (difference < 0 && !inuptEleObj.inputBoxElement.readOnly) ? (previousHeight + 'px') : inuptEleObj.inputBoxElement.style.height;\n }\n var zoomFactor = inuptEleObj.pdfViewerBase.getZoomFactor();\n var inputEleHeight = parseFloat(this.inputBoxElement.style.height);\n var inputEleWidth = parseFloat(this.inputBoxElement.style.width);\n inputEleHeight = ((inputEleHeight) / zoomFactor);\n inputEleWidth = ((inputEleWidth) / zoomFactor);\n if (this.selectedAnnotation) {\n var heightDiff = (inputEleHeight - inuptEleObj.selectedAnnotation.bounds.height);\n var y = 0;\n if (heightDiff > 0) {\n y = inuptEleObj.selectedAnnotation.wrapper.offsetY + (heightDiff / 2);\n }\n else {\n heightDiff = Math.abs(heightDiff);\n y = inuptEleObj.selectedAnnotation.wrapper.offsetY - (heightDiff / 2);\n }\n if (enableAutoFit) {\n var widthDiff = (inputEleWidth - inuptEleObj.selectedAnnotation.bounds.width);\n var x = 0;\n if (widthDiff > 0) {\n x = inuptEleObj.selectedAnnotation.wrapper.offsetX + (widthDiff / 2);\n }\n else {\n widthDiff = Math.abs(widthDiff);\n x = inuptEleObj.selectedAnnotation.wrapper.offsetX - (widthDiff / 2);\n }\n }\n inuptEleObj.selectedAnnotation.bounds.width = inputEleWidth;\n inuptEleObj.selectedAnnotation.bounds.height = inputEleHeight;\n if (enableAutoFit) {\n // eslint-disable-next-line\n inuptEleObj.pdfViewer.nodePropertyChange(inuptEleObj.selectedAnnotation, { bounds: { width: inuptEleObj.selectedAnnotation.bounds.width, height: inuptEleObj.selectedAnnotation.bounds.height, y: y, x: x } });\n }\n else {\n // eslint-disable-next-line\n inuptEleObj.pdfViewer.nodePropertyChange(inuptEleObj.selectedAnnotation, { bounds: { width: inuptEleObj.selectedAnnotation.bounds.width, height: inuptEleObj.selectedAnnotation.bounds.height, y: y } });\n }\n inuptEleObj.pdfViewer.renderSelector(inuptEleObj.selectedAnnotation.pageIndex, this.selectedAnnotation.annotationSelectorSettings);\n }\n };\n /**\n * @param event\n * @private\n */\n FreeTextAnnotation.prototype.autoFitFreeText = function (xPosition, yPosition) {\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + (pageIndex));\n // eslint-disable-next-line\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n var context = canvas.getContext(\"2d\");\n // eslint-disable-next-line\n var fontSize = this.inputBoxElement.style.fontSize;\n if (this.pdfViewer.freeTextSettings.fontStyle === FontStyle.Bold || this.inputBoxElement.style.fontWeight === 'bold') {\n context.font = 'bold' + ' ' + fontSize + ' ' + this.inputBoxElement.style.fontFamily;\n }\n else {\n context.font = fontSize + ' ' + this.inputBoxElement.style.fontFamily;\n }\n var highestTextNode = \"\";\n // eslint-disable-next-line\n var textNodes = [];\n var textboxValue = this.inputBoxElement.value;\n if (textboxValue.indexOf('\\n') > -1) {\n textNodes = textboxValue.split('\\n');\n for (var j = 0; j < textNodes.length; j++) {\n // eslint-disable-next-line\n var textNodeData = context.measureText(textNodes[j]);\n // eslint-disable-next-line\n var highestTextNodeData = context.measureText(highestTextNode);\n if (textNodeData.width > highestTextNodeData.width) {\n highestTextNode = textNodes[j];\n }\n }\n this.isMaximumWidthReached = true;\n }\n else {\n highestTextNode = textboxValue;\n this.isMaximumWidthReached = false;\n }\n // eslint-disable-next-line\n var textwidth = context.measureText(highestTextNode);\n fontSize = parseFloat(this.inputBoxElement.style.fontSize);\n var inputEleWidth;\n var characterLength = 8;\n var inputEleHeight = (fontSize + (fontSize / 2));\n if (this.isNewFreeTextAnnot) {\n inputEleWidth = Math.ceil(textwidth.width + ((characterLength + 1) * 2));\n this.inputBoxElement.style.height = inputEleHeight + 'px';\n this.inputBoxElement.style.top = (yPosition) - (inputEleHeight / 2) + 'px';\n }\n else {\n inputEleWidth = Math.ceil(textwidth.width) + fontSize + Math.ceil(characterLength / 2);\n }\n if (!xPosition) {\n this.inputBoxElement.style.height = inputEleHeight + 'px';\n }\n this.inputBoxElement.style.width = inputEleWidth + 'px';\n var maxWidth = this.pdfViewerBase.getPageWidth(pageIndex) - parseFloat(this.inputBoxElement.style.left);\n if (parseFloat(this.inputBoxElement.style.width) > maxWidth) {\n this.isMaximumWidthReached = true;\n if (this.isNewAddedAnnot && xPosition) {\n inputEleWidth = inputEleWidth - characterLength;\n this.inputBoxElement.style.width = inputEleWidth + 'px';\n var width = xPosition + (inputEleWidth * this.pdfViewerBase.getZoomFactor());\n var x = parseFloat(this.inputBoxElement.style.left);\n if (width >= this.pdfViewerBase.getPageWidth(pageIndex)) {\n x = this.pdfViewerBase.getPageWidth(pageIndex) - inputEleWidth;\n }\n this.inputBoxElement.style.left = x + 'px';\n }\n else {\n this.inputBoxElement.style.width = maxWidth + 'px';\n }\n }\n };\n /**\n * @param event\n * @private\n */\n FreeTextAnnotation.prototype.onMouseUpInputBox = function (event) {\n // eslint-disable-next-line\n var target = event.target;\n this.selectionStart = 0;\n this.selectionEnd = 0;\n if (event.which === 3 && target) {\n this.selectionStart = target.selectionStart;\n this.selectionEnd = target.selectionEnd;\n }\n if (event.which === 3 && window.getSelection() != null && window.getSelection().toString() !== '') {\n this.isTextSelected = true;\n }\n else {\n this.isTextSelected = false;\n }\n };\n /**\n * @param currentPosition\n * @param annotation\n * @param pageIndex\n * @private\n */\n FreeTextAnnotation.prototype.addInuptElemet = function (currentPosition, annotation, pageIndex) {\n if (annotation === void 0) { annotation = null; }\n this.currentPosition = [];\n if (isNullOrUndefined(pageIndex)) {\n pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n }\n if (annotation) {\n pageIndex = annotation.pageIndex;\n }\n if (isBlazor() && annotation === null && this.pdfViewer.selectedItems.annotations.length === 0) {\n this.updateTextProperties();\n }\n this.inputBoxElement.id = this.pdfViewer.element.id + '_freeText_' + pageIndex + '_' + this.inputBoxCount;\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + (pageIndex));\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n this.inputBoxElement.value = (annotation && annotation.dynamicText) ? annotation.dynamicText : this.defaultText;\n this.inputBoxElement.style.boxSizing = 'border-box';\n this.inputBoxElement.style.left = ((currentPosition.x)) + 'px';\n this.inputBoxElement.style.top = ((currentPosition.y)) - ((this.defaultHeight * zoomFactor) / 2) + 'px';\n if (this.pdfViewer.freeTextSettings.enableAutoFit) {\n this.inputBoxElement.style.wordBreak = 'break-all';\n }\n else {\n this.inputBoxElement.style.wordBreak = 'break-word';\n }\n if (annotation) {\n this.applyFreetextStyles(zoomFactor, annotation.isReadonly);\n }\n else {\n this.applyFreetextStyles(zoomFactor);\n }\n if (this.isBold) {\n this.inputBoxElement.style.fontWeight = 'bold';\n }\n else {\n this.inputBoxElement.style.fontWeight = 'normal';\n }\n if (this.isItalic) {\n this.inputBoxElement.style.fontStyle = 'italic';\n }\n else {\n this.inputBoxElement.style.fontStyle = 'normal';\n }\n this.inputBoxElement.style.textDecoration = 'none';\n if (this.isUnderline) {\n this.inputBoxElement.style.textDecoration = 'underline';\n }\n if (this.isStrikethrough) {\n this.inputBoxElement.style.textDecoration = 'line-through';\n }\n if (this.pdfViewer.enableRtl) {\n this.inputBoxElement.style.textAlign = 'right';\n this.inputBoxElement.style.direction = 'rtl';\n this.inputBoxElement.style.left = ((currentPosition.x)) - ((this.defautWidth * zoomFactor / 2));\n }\n else {\n this.inputBoxElement.style.textAlign = this.textAlign.toLowerCase();\n }\n this.inputBoxElement.style.borderColor = this.borderColor;\n this.inputBoxElement.style.color = this.fontColor;\n this.inputBoxElement.style.background = this.fillColor;\n if (annotation && annotation.wrapper && annotation.wrapper.children[0]) {\n this.inputBoxElement.style.opacity = annotation.wrapper.children[0].style.opacity;\n }\n if (this.isNewFreeTextAnnot === true) {\n this.pdfViewer.clearSelection(pageIndex);\n }\n if (annotation && annotation.wrapper && annotation.wrapper.bounds) {\n var annotationBounds = annotation.wrapper.bounds;\n if (annotationBounds.left) {\n this.inputBoxElement.style.left = ((annotationBounds.left) * zoomFactor) + 'px';\n }\n if (annotationBounds.top) {\n this.inputBoxElement.style.top = ((annotationBounds.top) * zoomFactor) + 'px';\n }\n // eslint-disable-next-line max-len\n this.inputBoxElement.style.height = annotationBounds.height ? (annotationBounds.height * zoomFactor) + 'px' : (this.defaultHeight * zoomFactor) + 'px';\n // eslint-disable-next-line max-len\n this.inputBoxElement.style.width = annotationBounds.width ? (annotationBounds.width * zoomFactor) + 'px' : (this.defautWidth * zoomFactor) + 'px';\n this.selectedAnnotation = annotation;\n this.previousText = this.selectedAnnotation.dynamicText;\n this.selectedAnnotation.dynamicText = '';\n this.inputBoxElement.style.borderColor = this.selectedAnnotation.strokeColor;\n this.inputBoxElement.style.color = this.selectedAnnotation.fontColor;\n this.inputBoxElement.style.background = this.selectedAnnotation.fillColor;\n if (this.selectedAnnotation.font.isBold === true) {\n this.inputBoxElement.style.fontWeight = 'bold';\n }\n if (this.selectedAnnotation.font.isItalic === true) {\n this.inputBoxElement.style.fontStyle = 'italic';\n }\n if (this.selectedAnnotation.font.isUnderline === true) {\n this.inputBoxElement.style.textDecoration = 'underline';\n }\n if (this.selectedAnnotation.font.isStrikeout === true) {\n this.inputBoxElement.style.textDecoration = 'line-through';\n }\n if (this.pdfViewer.enableRtl) {\n this.inputBoxElement.style.textAlign = 'right';\n this.inputBoxElement.style.direction = 'rtl';\n }\n else if (this.selectedAnnotation.textAlign) {\n this.inputBoxElement.style.textAlign = this.selectedAnnotation.textAlign;\n }\n this.inputBoxElement.style.fontSize = (this.selectedAnnotation.fontSize * zoomFactor) + 'px';\n this.inputBoxElement.style.fontFamily = this.selectedAnnotation.fontFamily;\n this.pdfViewer.nodePropertyChange(this.selectedAnnotation, {});\n }\n if (this.pdfViewerBase.isMixedSizeDocument) {\n this.inputBoxElement.style.left = (currentPosition.x) + canvass.offsetLeft + 'px';\n }\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = false;\n if (this.pdfViewer.freeTextSettings.enableAutoFit) {\n this.autoFitFreeText(currentPosition.x, currentPosition.y);\n }\n pageDiv.appendChild(this.inputBoxElement);\n // eslint-disable-next-line\n if (!this.pdfViewer.freeTextSettings.enableAutoFit && (this.defaultHeight * zoomFactor) < this.inputBoxElement.scrollHeight && parseInt(this.inputBoxElement.style.height) < this.inputBoxElement.scrollHeight) {\n this.inputBoxElement.style.height = this.inputBoxElement.scrollHeight + 'px';\n this.inputBoxElement.style.top = ((currentPosition.y)) - (parseFloat(this.inputBoxElement.style.height) / 2) + 'px';\n }\n this.isInuptBoxInFocus = true;\n this.inputBoxElement.focus();\n if (this.isNewFreeTextAnnot === true || this.inputBoxElement.value === this.defaultText) {\n this.inputBoxElement.select();\n this.pdfViewerBase.isFreeTextSelected = true;\n }\n this.currentPosition.push(parseInt(this.inputBoxElement.style.left) / zoomFactor, parseInt(this.inputBoxElement.style.top) / zoomFactor, parseInt(this.inputBoxElement.style.width) / zoomFactor, parseInt(this.inputBoxElement.style.height) / zoomFactor);\n };\n FreeTextAnnotation.prototype.applyFreetextStyles = function (zoomFactor, isReadonly) {\n this.inputBoxElement.style.height = (this.defaultHeight * zoomFactor) + 'px';\n this.inputBoxElement.style.width = (this.defautWidth * zoomFactor) + 'px';\n this.inputBoxElement.style.borderWidth = (this.borderWidth * zoomFactor) + 'px';\n this.inputBoxElement.style.fontSize = (this.fontSize * zoomFactor) + 'px';\n this.inputBoxElement.style.fontFamily = this.fontFamily;\n this.inputBoxElement.readOnly = isNullOrUndefined(isReadonly) ? this.isReadonly : isReadonly;\n };\n /**\n * @private\n */\n FreeTextAnnotation.prototype.copySelectedText = function () {\n if (window.getSelection() !== null) {\n this.selectedText = window.getSelection().toString();\n var textArea = document.createElement('textarea');\n textArea.contentEditable = 'true';\n textArea.textContent = this.selectedText;\n textArea.style.position = 'fixed';\n document.body.appendChild(textArea);\n textArea.select();\n try {\n document.execCommand('copy');\n }\n catch (ex) {\n console.warn('Copy to clipboard failed.', ex);\n }\n finally {\n if (textArea) {\n document.body.removeChild(textArea);\n }\n }\n }\n };\n /**\n * @param target\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.pasteSelectedText = function (target) {\n if (this.selectedText !== '' && target) {\n // eslint-disable-next-line\n var text = target.value;\n target.value = text.slice(0, this.selectionStart) + this.selectedText + text.slice(this.selectionEnd, text.length);\n }\n // eslint-disable-next-line\n var events = event;\n this.onKeyDownInputBox(events);\n };\n /**\n * @param target\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.cutSelectedText = function (target) {\n if (window.getSelection() !== null) {\n // eslint-disable-next-line\n var text = target.value;\n this.selectedText = window.getSelection().toString();\n target.value = text.slice(0, target.selectionStart) + text.slice(target.selectionEnd);\n var textArea = document.createElement('textarea');\n textArea.contentEditable = 'true';\n textArea.textContent = this.selectedText;\n textArea.style.position = 'fixed';\n document.body.appendChild(textArea);\n textArea.select();\n try {\n document.execCommand('cut');\n }\n catch (ex) {\n console.warn('Copy to clipboard failed.', ex);\n }\n finally {\n if (textArea) {\n document.body.removeChild(textArea);\n }\n }\n }\n };\n /**\n * @param shapeAnnotations\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.saveImportedFreeTextAnnotations = function (shapeAnnotations, pageNumber) {\n // eslint-disable-next-line\n var annotation = shapeAnnotations;\n if (annotation.AnnotType) {\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.freeTextSettings);\n var annot = void 0;\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var annotationBoundsX = !isNullOrUndefined(annotation.Bounds.X) ? annotation.Bounds.X : annotation.Bounds.x;\n var annotationBoundsY = !isNullOrUndefined(annotation.Bounds.Y) ? annotation.Bounds.Y : annotation.Bounds.y;\n var annotationBoundsWidth = annotation.Bounds.Width ? annotation.Bounds.Width : annotation.Bounds.width;\n var annotationBoundsHeight = annotation.Bounds.Height ? annotation.Bounds.Height : annotation.Bounds.height;\n // eslint-disable-next-line\n annot = {\n author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, id: 'freetext',\n rotateAngle: annotation.Rotate, dynamicText: annotation.MarkupText, strokeColor: annotation.StrokeColor,\n thickness: annotation.Thickness, fillColor: annotation.FillColor,\n bounds: {\n x: annotationBoundsX, y: annotationBoundsY, left: annotationBoundsX, top: annotationBoundsY,\n width: annotationBoundsWidth, height: annotationBoundsHeight, right: annotation.Bounds.Right,\n bottom: annotation.Bounds.Bottom\n }, annotName: annotation.AnnotName, shapeAnnotationType: 'FreeText',\n // eslint-disable-next-line\n pageIndex: pageNumber, opacity: annotation.Opacity, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n fontFamily: annotation.FontFamily, notes: annotation.MarkupText, textAlign: annotation.TextAlign,\n // eslint-disable-next-line\n comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n font: { isBold: annotation.Font.Bold, isItalic: annotation.Font.Italic, isStrikeout: annotation.Font.Strikeout, isUnderline: annotation.Font.Underline },\n annotationSelectorSettings: this.getSettings(annotation), annotationSettings: annotation.AnnotationSettings,\n // eslint-disable-next-line max-len\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock, isReadonly: annotation.IsReadonly\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annot, '_annotations_freetext');\n }\n };\n /**\n * @param shapeAnnotations\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.updateFreeTextAnnotationCollections = function (shapeAnnotations, pageNumber) {\n // eslint-disable-next-line\n var annotation = shapeAnnotations;\n if (annotation.AnnotType) {\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.freeTextSettings);\n if (annotation.IsLocked) {\n annotation.AnnotationSettings.isLock = annotation.IsLocked;\n }\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var annotationBoundsX = annotation.Bounds.X ? annotation.Bounds.X : annotation.Bounds.x;\n var annotationBoundsY = annotation.Bounds.Y ? annotation.Bounds.Y : annotation.Bounds.y;\n var width = annotation.Bounds.Width ? annotation.Bounds.Width : annotation.Bounds.width;\n var height = annotation.Bounds.Height ? annotation.Bounds.Height : annotation.Bounds.height;\n // eslint-disable-next-line\n var annot = void 0;\n // eslint-disable-next-line\n annot = {\n author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, id: 'freetext',\n rotateAngle: annotation.Rotate, dynamicText: annotation.MarkupText, strokeColor: annotation.StrokeColor,\n thickness: annotation.Thickness, fillColor: annotation.FillColor,\n bounds: {\n x: annotationBoundsX, y: annotationBoundsY, left: annotationBoundsX, top: annotationBoundsY,\n width: width, height: height, right: annotation.Bounds.Right,\n bottom: annotation.Bounds.Bottom\n }, annotationId: annotation.AnnotName, shapeAnnotationType: 'FreeText',\n // eslint-disable-next-line\n pageIndex: pageNumber, opacity: annotation.Opacity, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n fontFamily: annotation.FontFamily, notes: annotation.MarkupText,\n // eslint-disable-next-line\n comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n font: { isBold: annotation.Font.Bold, isItalic: annotation.Font.Italic, isStrikeout: annotation.Font.Strikeout, isUnderline: annotation.Font.Underline }, pageNumber: pageNumber, annotationSettings: annotation.AnnotationSettings, isCommentLock: annotation.IsCommentLock\n };\n return annot;\n }\n };\n /**\n * This method used to add annotations with using program.\n *\n * @param annotationType - It describes type of annotation\n * @param offset - It describes about the annotation bounds\n * @returns Object\n * @private\n */\n FreeTextAnnotation.prototype.updateAddAnnotationDetails = function (annotationObject, offset) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { offset: { x: 1, y: 1 }, pageNumber: 0, width: undefined, height: undefined };\n offset = annotationObject.offset;\n }\n else if (!annotationObject.offset)\n offset = { x: 1, y: 1 };\n else\n offset = annotationObject.offset;\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n var fontStyle = annotationObject.fontStyle ? annotationObject.fontStyle : FontStyle.None;\n //Creating annotation settings\n var annotationSelectorSettings = this.pdfViewer.freeTextSettings.annotationSelectorSettings ? this.pdfViewer.freeTextSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n var annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.freeTextSettings);\n var allowedInteractions = this.pdfViewer.freeTextSettings.allowedInteractions ? this.pdfViewer.freeTextSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n annotationSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n annotationSettings.minHeight = annotationObject.minHeight ? annotationObject.minHeight : 0;\n annotationSettings.minWidth = annotationObject.minWidth ? annotationObject.minWidth : 0;\n annotationSettings.maxWidth = annotationObject.maxWidth ? annotationObject.maxWidth : 0;\n annotationSettings.maxHeight = annotationObject.maxHeight ? annotationObject.maxHeight : 0;\n annotationObject.width = annotationObject.width ? annotationObject.width : 150;\n annotationObject.height = annotationObject.height ? annotationObject.height : 24.6;\n //Creating Annotation objects with it's proper properties\n var freeTextAnnotation = [];\n var freeText = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : allowedInteractions,\n AnnotName: annotationName,\n AnnotType: 'freeText',\n AnnotationFlags: 'Default',\n AnnotationIntent: null,\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotationSelectorSettings,\n AnnotationSettings: annotationSettings,\n Author: annotationObject.author ? annotationObject.author : 'Guest',\n Border: { HorizontalRadius: 0, VerticalRadius: 0, Width: annotationObject.borderWidth ? annotationObject.borderWidth : 1 },\n BorderColor: { IsEmpty: true, B: 255, Blue: 1, C: 0, G: 255 },\n Bounds: { X: offset.x, Y: offset.y, Width: annotationObject.width, Height: annotationObject.height, Left: offset.x, Top: offset.y, Right: offset.x + annotationObject.width, Bottom: offset.y + annotationObject.height },\n CalloutLines: null,\n Color: { IsEmpty: false, B: 51, Blue: 0.2, C: 0, G: 255 },\n Comments: null,\n CreatedDate: currentDateString,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n ExistingCustomData: null,\n FillColor: annotationObject.fillColor ? annotationObject.fillColor : '#ffffff00',\n Flatten: false,\n FlattenPopups: false,\n Font: { Bold: fontStyle == FontStyle.Bold ? true : false, Italic: fontStyle == FontStyle.Italic ? true : false, Strikeout: fontStyle == FontStyle.Strikethrough ? true : false, Underline: fontStyle == FontStyle.Underline ? true : false },\n FontColor: annotationObject.fontColor ? annotationObject.fontColor : '#000',\n FontFamily: annotationObject.fontFamily ? annotationObject.fontFamily : 'Helvetica',\n FontSize: annotationObject.fontSize ? annotationObject.fontSize : 16,\n FreeTextAnnotationType: 'Text Box',\n InnerColor: null,\n IsCommentLock: false,\n IsLock: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: (annotationObject.isPrint !== null && annotationObject.isPrint !== undefined) ? annotationObject.isPrint : true,\n Layer: null,\n LineEndingStyle: 'OpenArrow',\n Location: null,\n MarkupText: annotationObject.defaultText ? annotationObject.defaultText : 'Type Here',\n ModifiedDate: currentDateString,\n Name: annotationName,\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n Page: null,\n PageTags: null,\n ReviewHistory: null,\n Rotate: 0,\n IsReadonly: annotationObject.isReadonly ? annotationObject.isReadonly : false,\n State: 'Unmarked',\n StateModel: 'None',\n StrokeColor: annotationObject.borderColor ? annotationObject.borderColor : '#ffffff00',\n Subject: 'Text Box',\n Text: annotationObject.defaultText ? annotationObject.defaultText : 'Type Here',\n TextAlign: annotationObject.textAlignment ? annotationObject.textAlignment : 'Left',\n TextMarkupColor: null,\n Thickness: annotationObject.borderWidth ? annotationObject.borderWidth : 1\n };\n //Adding the annotation object to an array and return it\n freeTextAnnotation[0] = freeText;\n return { freeTextAnnotation: freeTextAnnotation };\n };\n /**\n * This method used to get the padding.\n */\n FreeTextAnnotation.prototype.getPaddingValues = function (fontSize) {\n var leftPadding = 4; // Left padding used in the drawing.js\n var topPadding = 5; // Top padding used in the drawing.js\n var inputBoxpadding = 2; // we have set the input box padding for the free text.\n topPadding = (topPadding - inputBoxpadding) * (fontSize / 16);\n return [leftPadding, topPadding];\n };\n /**\n * @private\n * This method used tp get the current position of x and y.\n */\n FreeTextAnnotation.prototype.addInputInZoom = function (currentPosition) {\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n this.inputBoxElement.style.left = (currentPosition.x * zoomFactor) + 'px';\n this.inputBoxElement.style.top = (currentPosition.y * zoomFactor) + 'px';\n this.inputBoxElement.style.height = (currentPosition.height * zoomFactor) + 'px';\n this.inputBoxElement.style.width = (currentPosition.width * zoomFactor) + 'px';\n this.inputBoxElement.style.borderWidth = (this.borderWidth * zoomFactor) + 'px';\n this.inputBoxElement.style.fontSize = (this.fontSize * zoomFactor) + 'px';\n };\n return FreeTextAnnotation;\n}());\nexport { FreeTextAnnotation };\n","/**\n * @hidden\n */\nvar InputElement = /** @class */ (function () {\n function InputElement(pdfviewer, pdfViewerBase) {\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n this.inputBoxElement = document.createElement('input');\n this.inputBoxElement.addEventListener('focusout', this.onFocusOutInputBox.bind(this));\n this.maxHeight = 24.6;\n this.maxWidth = 151;\n this.fontSize = 16;\n this.isInFocus = false;\n this.inputBoxElement.style.position = 'absolute';\n this.inputBoxElement.style.fontFamily = 'Helvetica';\n }\n /**\n * @param currentPosition\n * @param annotation\n * @private\n */\n InputElement.prototype.editLabel = function (currentPosition, annotation) {\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + (pageIndex));\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n this.inputBoxElement.value = annotation.labelContent;\n this.inputBoxElement.select();\n annotation.labelContent = '';\n this.pdfViewer.nodePropertyChange(annotation, {});\n this.inputBoxElement.style.left = ((currentPosition.x) * zoomFactor) + 'px';\n this.inputBoxElement.style.top = ((currentPosition.y) * zoomFactor) + 'px';\n this.inputBoxElement.style.maxHeight = (this.maxHeight * zoomFactor) + 'px';\n this.inputBoxElement.style.maxWidth = (this.maxWidth * zoomFactor) + 'px';\n this.inputBoxElement.style.fontSize = (this.fontSize * zoomFactor) + 'px';\n this.inputBoxElement.style.textAlign = 'center';\n if (annotation && annotation.wrapper && annotation.wrapper.bounds) {\n // eslint-disable-next-line max-len\n this.inputBoxElement.style.width = annotation.wrapper.bounds.width ? (annotation.wrapper.bounds.width / 2 * zoomFactor) + 1 + 'px' : (this.maxWidth * zoomFactor) + 'px';\n var inputEleWidth = parseFloat(this.inputBoxElement.style.width);\n inputEleWidth = inputEleWidth > (this.maxWidth * zoomFactor) ? (this.maxWidth * zoomFactor) : inputEleWidth;\n if (annotation.wrapper.bounds.left) {\n // eslint-disable-next-line max-len\n this.inputBoxElement.style.left = ((annotation.wrapper.bounds.left + (annotation.wrapper.bounds.width / 2) - (inputEleWidth / (zoomFactor * 2))) * zoomFactor) + 'px';\n }\n if (annotation.wrapper.bounds.top) {\n // eslint-disable-next-line max-len\n if (annotation.shapeAnnotationType === 'Line' || annotation.shapeAnnotationType === 'LineWidthArrowHead' ||\n annotation.shapeAnnotationType === 'Distance' || annotation.shapeAnnotationType === 'Polygon') {\n // eslint-disable-next-line max-len\n this.inputBoxElement.style.top = ((annotation.wrapper.bounds.top + (annotation.wrapper.bounds.height / 2) - (this.maxHeight)) * zoomFactor) + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n this.inputBoxElement.style.top = ((annotation.wrapper.bounds.top + (annotation.wrapper.bounds.height / 2) - (this.maxHeight / 2)) * zoomFactor) + 'px';\n }\n }\n this.inputBoxElement.maxLength = annotation.labelMaxLength;\n this.inputBoxElement.fontFamily = annotation.fontFamily;\n this.inputBoxElement.style.color = annotation.fontColor;\n this.inputBoxElement.style.border = '1px solid #ffffff00';\n this.inputBoxElement.style.padding = '2px';\n this.inputBoxElement.style.background = annotation.labelFillColor;\n }\n pageDiv.appendChild(this.inputBoxElement);\n this.isInFocus = true;\n this.inputBoxElement.focus();\n };\n /**\n * @private\n */\n InputElement.prototype.onFocusOutInputBox = function () {\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + (pageIndex));\n var inputEleHeight = parseFloat(this.inputBoxElement.style.height);\n var inputEleWidth = parseFloat(this.inputBoxElement.style.width);\n this.isInFocus = false;\n var selectedAnnotation = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line\n if (selectedAnnotation) {\n inputEleWidth = ((inputEleWidth - 1) / this.pdfViewerBase.getZoomFactor());\n inputEleHeight = ((inputEleHeight - 1) / this.pdfViewerBase.getZoomFactor());\n // this.pdfViewer.annotation.modifyDynamicTextValue(this.inputBoxElement.value, this.selectedAnnotation.annotName);\n selectedAnnotation.labelContent = this.inputBoxElement.value;\n selectedAnnotation.notes = this.inputBoxElement.value;\n // eslint-disable-next-line max-len\n if (selectedAnnotation.shapeAnnotationType === 'Rectangle' || selectedAnnotation.shapeAnnotationType === 'Ellipse' || selectedAnnotation.shapeAnnotationType === 'Line'\n || selectedAnnotation.shapeAnnotationType === 'LineWidthArrowHead') {\n this.pdfViewer.annotation.shapeAnnotationModule.modifyInCollection('labelContent', pageIndex, selectedAnnotation);\n }\n else if (selectedAnnotation.shapeAnnotationType === 'Radius' && selectedAnnotation.measureType) {\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('labelContent', pageIndex, selectedAnnotation);\n }\n // eslint-disable-next-line\n this.pdfViewer.nodePropertyChange(selectedAnnotation, {});\n this.pdfViewer.renderSelector(selectedAnnotation.pageIndex, this.pdfViewer.annotationSelectorSettings);\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(this.pdfViewer.selectedItems.annotations[0].annotName);\n if (commentsDiv && commentsDiv.childNodes && this.inputBoxElement.value !== 'label') {\n if (commentsDiv.childNodes[0].ej2_instances) {\n commentsDiv.childNodes[0].ej2_instances[0].value = this.inputBoxElement.value;\n }\n else if (commentsDiv.childNodes[0].childNodes && commentsDiv.childNodes[0].childNodes[1].ej2_instances) {\n commentsDiv.childNodes[0].childNodes[1].ej2_instances[0].value = this.inputBoxElement.value;\n }\n }\n }\n pageDiv.removeChild(this.inputBoxElement);\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, pageIndex);\n };\n /**\n * @param bounds\n * @param pageIndex\n * @param bounds\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n InputElement.prototype.calculateLabelBounds = function (bounds, pageIndex) {\n // eslint-disable-next-line\n var labelBounds = {};\n if (bounds) {\n var labelTop = 0;\n var labelLeft = 0;\n var labelWidth = 0;\n var labelHeight = 24.6;\n var labelMaxWidth = 151;\n if (pageIndex === undefined) {\n pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n }\n var rotation = this.pdfViewerBase.pageSize[pageIndex].rotation;\n if (bounds.width) {\n // eslint-disable-next-line max-len\n labelWidth = (bounds.width / 2);\n labelWidth = (labelWidth > 0 && labelWidth < labelMaxWidth) ? labelWidth : labelMaxWidth;\n }\n if (bounds.left) {\n // eslint-disable-next-line max-len\n labelLeft = (bounds.left + (bounds.width / 2) - (labelWidth / 2));\n }\n if (bounds.top) {\n // eslint-disable-next-line max-len\n labelTop = (bounds.top + (bounds.height / 2) - (labelHeight / 2));\n }\n if (rotation === 1 || rotation === 3) {\n // eslint-disable-next-line max-len\n labelBounds = { left: labelLeft, top: labelTop, width: (labelWidth - labelHeight) + (labelWidth / 2), height: (labelHeight * 2) + labelWidth, right: 0, bottom: 0 };\n }\n else {\n // eslint-disable-next-line max-len\n labelBounds = { left: labelLeft, top: labelTop, width: labelWidth, height: labelHeight, right: 0, bottom: 0 };\n }\n }\n return labelBounds;\n };\n /**\n * @param bounds\n * @private\n */\n // eslint-disable-next-line\n InputElement.prototype.calculateLabelBoundsFromLoadedDocument = function (bounds) {\n // eslint-disable-next-line\n var labelBounds = {};\n if (bounds) {\n var labelTop = 0;\n var labelLeft = 0;\n var labelWidth = 0;\n var labelHeight = 24.6;\n var labelMaxWidth = 151;\n if (bounds.Width) {\n // eslint-disable-next-line max-len\n labelWidth = (bounds.Width / 2);\n labelWidth = (labelWidth > 0 && labelWidth < labelMaxWidth) ? labelWidth : labelMaxWidth;\n }\n if (bounds.Left) {\n // eslint-disable-next-line max-len\n labelLeft = (bounds.Left + (bounds.Width / 2) - (labelWidth / 2));\n }\n if (bounds.Top) {\n // eslint-disable-next-line max-len\n labelTop = (bounds.Top + (bounds.Height / 2) - (labelHeight / 2));\n }\n // eslint-disable-next-line max-len\n labelBounds = { left: labelLeft, top: labelTop, width: labelWidth, height: labelHeight, right: 0, bottom: 0 };\n }\n return labelBounds;\n };\n return InputElement;\n}());\nexport { InputElement };\n","import { TextMarkupAnnotation, ShapeAnnotation, StampAnnotation, StickyNotesAnnotation, MeasureAnnotation, InkAnnotation, AllowedInteraction, DynamicStampItem, SignStampItem, StandardBusinessStampItem } from '../index';\nimport { createElement, Browser, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { NumericTextBox, Slider, ColorPicker } from '@syncfusion/ej2-inputs';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { processPathData, splitArrayCollection } from '@syncfusion/ej2-drawings';\nimport { isLineShapes, cloneObject } from '../drawing/drawing-util';\nimport { NodeDrawingTool, LineTool, MoveTool, ResizeTool, ConnectTool } from '../drawing/tools';\nimport { updateDistanceLabel, updateRadiusLabel, updatePerimeterLabel, updateCalibrateLabel } from '../drawing/connector-util';\nimport { FreeTextAnnotation } from './free-text-annotation';\nimport { InputElement } from './input-element';\nimport { InPlaceEditor } from '@syncfusion/ej2-inplace-editor';\n/**\n * The `Annotation` module is used to handle annotation actions of PDF viewer.\n */\nvar Annotation = /** @class */ (function () {\n /**\n * @param pdfViewer\n * @param viewerBase\n * @param pdfViewer\n * @param viewerBase\n * @private\n */\n function Annotation(pdfViewer, viewerBase) {\n this.isUndoRedoAction = false;\n this.isUndoAction = false;\n this.annotationSelected = true;\n /**\n * @private\n */\n this.isShapeCopied = false;\n /**\n * @private\n */\n this.actionCollection = [];\n /**\n * @private\n */\n this.redoCollection = [];\n /**\n * @private\n */\n this.isPopupNoteVisible = false;\n /**\n * @private\n */\n this.undoCommentsElement = [];\n /**\n * @private\n */\n this.redoCommentsElement = [];\n /**\n * @private\n */\n this.selectAnnotationId = null;\n /**\n * @private\n */\n this.isAnnotationSelected = false;\n /**\n * @private\n */\n this.annotationPageIndex = null;\n this.previousIndex = null;\n // eslint-disable-next-line\n this.overlappedAnnotations = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.overlappedCollections = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.isFormFieldShape = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.removedAnnotationCollection = [];\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = viewerBase;\n if (this.pdfViewer.enableTextMarkupAnnotation) {\n this.textMarkupAnnotationModule = new TextMarkupAnnotation(this.pdfViewer, this.pdfViewerBase);\n }\n if (this.pdfViewer.enableShapeAnnotation) {\n this.shapeAnnotationModule = new ShapeAnnotation(this.pdfViewer, this.pdfViewerBase);\n }\n if (this.pdfViewer.enableMeasureAnnotation) {\n this.measureAnnotationModule = new MeasureAnnotation(this.pdfViewer, this.pdfViewerBase);\n }\n this.stampAnnotationModule = new StampAnnotation(this.pdfViewer, this.pdfViewerBase);\n this.stickyNotesAnnotationModule = new StickyNotesAnnotation(this.pdfViewer, this.pdfViewerBase);\n this.freeTextAnnotationModule = new FreeTextAnnotation(this.pdfViewer, this.pdfViewerBase);\n this.inputElementModule = new InputElement(this.pdfViewer, this.pdfViewerBase);\n this.inkAnnotationModule = new InkAnnotation(this.pdfViewer, this.pdfViewerBase);\n }\n /**\n * Set annotation type to be added in next user interaction in PDF Document.\n *\n * @param type\n * @param dynamicStampItem\n * @param signStampItem\n * @param standardBusinessStampItem\n * @returns void\n */\n // eslint-disable-next-line max-len\n Annotation.prototype.setAnnotationMode = function (type, dynamicStampItem, signStampItem, standardBusinessStampItem) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n type !== 'None' ? this.triggerAnnotationUnselectEvent() : null;\n if (type === 'None') {\n this.clearAnnotationMode();\n }\n else if (type === 'Highlight' || type === 'Strikethrough' || type === 'Underline') {\n if (this.textMarkupAnnotationModule) {\n this.textMarkupAnnotationModule.isSelectionMaintained = false;\n this.textMarkupAnnotationModule.drawTextMarkupAnnotations(type.toString());\n }\n }\n else if (type === 'Line' || type === 'Arrow' || type === 'Rectangle' || type === 'Circle' || type === 'Polygon') {\n if (this.shapeAnnotationModule) {\n this.shapeAnnotationModule.setAnnotationType(type);\n }\n }\n else if (type === 'Distance' || type === 'Perimeter' || type === 'Area' || type === 'Radius' || type === 'Volume') {\n if (this.measureAnnotationModule) {\n this.measureAnnotationModule.setAnnotationType(type);\n }\n }\n else if (type === 'FreeText' && this.freeTextAnnotationModule) {\n this.freeTextAnnotationModule.setAnnotationType('FreeText');\n this.freeTextAnnotationModule.isNewFreeTextAnnot = true;\n this.freeTextAnnotationModule.isNewAddedAnnot = true;\n }\n else if (type === 'HandWrittenSignature') {\n this.pdfViewerBase.signatureModule.setAnnotationMode();\n }\n else if (type === 'Initial') {\n this.pdfViewerBase.signatureModule.setInitialMode();\n }\n else if (type === 'Ink') {\n this.inkAnnotationModule.setAnnotationMode();\n }\n else if (type === 'StickyNotes') {\n this.pdfViewerBase.isCommentIconAdded = true;\n this.pdfViewerBase.isAddComment = true;\n // eslint-disable-next-line max-len\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + (this.pdfViewerBase.currentPageNumber - 1));\n if (pageDiv) {\n pageDiv.addEventListener('mousedown', this.pdfViewer.annotationModule.stickyNotesAnnotationModule.drawIcons.bind(this));\n }\n }\n else if (type === 'Stamp') {\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n this.pdfViewerBase.stampAdded = true;\n if (dynamicStampItem) {\n // eslint-disable-next-line\n var stampName = DynamicStampItem[dynamicStampItem];\n this.pdfViewerBase.isDynamicStamp = true;\n this.stampAnnotationModule.retrieveDynamicStampAnnotation(stampName);\n }\n else if (signStampItem) {\n // eslint-disable-next-line\n var stampName = SignStampItem[signStampItem];\n this.pdfViewerBase.isDynamicStamp = false;\n this.stampAnnotationModule.retrievestampAnnotation(stampName);\n }\n else if (standardBusinessStampItem) {\n // eslint-disable-next-line\n var stampName = StandardBusinessStampItem[standardBusinessStampItem];\n this.pdfViewerBase.isDynamicStamp = false;\n this.stampAnnotationModule.retrievestampAnnotation(stampName);\n }\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n this.pdfViewerBase.initiateTextSelection();\n };\n Annotation.prototype.deleteAnnotationById = function (annotationId) {\n if (annotationId) {\n this.annotationSelected = false;\n this.selectAnnotation(annotationId);\n this.deleteAnnotation();\n }\n };\n Annotation.prototype.clearAnnotationMode = function () {\n if (this.textMarkupAnnotationModule) {\n this.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n }\n if (this.freeTextAnnotationModule) {\n this.freeTextAnnotationModule.isNewFreeTextAnnot = false;\n this.freeTextAnnotationModule.isNewAddedAnnot = false;\n }\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAddMode = '';\n }\n if (this.pdfViewerBase.isShapeAnnotationModule()) {\n this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode = '';\n }\n if (this.pdfViewerBase.isCalibrateAnnotationModule()) {\n this.pdfViewer.annotation.measureAnnotationModule.currentAnnotationMode = '';\n }\n if (this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n Annotation.prototype.deleteAnnotation = function () {\n if (this.textMarkupAnnotationModule) {\n this.textMarkupAnnotationModule.deleteTextMarkupAnnotation();\n }\n var isLock = false;\n var isReadOnly = false;\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n // eslint-disable-next-line\n var annotation_1 = this.pdfViewer.selectedItems.annotations[0];\n var type = annotation_1.shapeAnnotationType;\n if (type === 'Path' || annotation_1.formFieldAnnotationType === 'SignatureField' || annotation_1.formFieldAnnotationType === 'InitialField' || type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') {\n var inputFields = document.getElementById(annotation_1.id);\n if (inputFields && inputFields.disabled) {\n isReadOnly = true;\n }\n }\n if (annotation_1.annotationSettings) {\n isLock = annotation_1.annotationSettings.isLock;\n if (isLock && this.checkAllowedInteractions('Delete', annotation_1)) {\n isLock = false;\n }\n }\n if (!isLock && !isReadOnly) {\n var pageNumber = annotation_1.pageIndex;\n // eslint-disable-next-line\n var shapeType = annotation_1.shapeAnnotationType;\n // eslint-disable-next-line\n var undoElement = void 0;\n if (shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Polygon' || shapeType === 'Ellipse' || shapeType === 'Rectangle' || shapeType === 'Radius' || shapeType === 'Distance') {\n // eslint-disable-next-line max-len\n if (isNullOrUndefined(annotation_1.measureType) || annotation_1.measureType === '') {\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(annotation_1, 'shape');\n this.updateImportAnnotationCollection(annotation_1, pageNumber, 'shapeAnnotation');\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(annotation_1, 'measure');\n // eslint-disable-next-line max-len\n this.updateImportAnnotationCollection(annotation_1, pageNumber, 'measureShapeAnnotation');\n }\n undoElement = this.modifyInCollections(annotation_1, 'delete');\n }\n else if (shapeType === 'FreeText') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(annotation_1, 'FreeText', 'delete');\n undoElement = this.modifyInCollections(annotation_1, 'delete');\n this.updateImportAnnotationCollection(annotation_1, pageNumber, 'freeTextAnnotation');\n }\n else if (shapeType === 'HandWrittenSignature' || shapeType === 'SignatureImage' || shapeType === 'SignatureText') {\n undoElement = this.modifyInCollections(annotation_1, 'delete');\n }\n else if (shapeType === 'Ink') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(annotation_1, 'Ink', 'delete');\n undoElement = this.modifyInCollections(annotation_1, 'delete');\n this.updateImportAnnotationCollection(annotation_1, pageNumber, 'inkAnnotation');\n }\n else {\n undoElement = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(undoElement, undoElement.shapeAnnotationType, 'delete');\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stampAnnotationModule.updateSessionStorage(annotation_1, null, 'delete');\n }\n if (shapeType === 'StickyNotes') {\n this.updateImportAnnotationCollection(annotation_1, pageNumber, 'stickyNotesAnnotation');\n }\n if (shapeType === 'Stamp' || 'Image') {\n this.updateImportAnnotationCollection(annotation_1, pageNumber, 'stampAnnotations');\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageNumber, null, annotation_1, 'Delete', '', undoElement, annotation_1);\n // eslint-disable-next-line\n var removeDiv = void 0;\n if (annotation_1.annotName !== '') {\n removeDiv = document.getElementById(annotation_1.annotName);\n }\n else {\n if (undoElement) {\n if (undoElement.annotName !== '') {\n removeDiv = document.getElementById(undoElement.annotName);\n }\n }\n }\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.remove();\n }\n }\n var selectedAnnot = this.pdfViewer.selectedItems.annotations[0];\n var annotationId = selectedAnnot.annotName;\n var annotType = this.getAnnotationType(selectedAnnot.shapeAnnotationType, selectedAnnot.measureType);\n if (shapeType === 'Path' || selectedAnnot.formFieldAnnotationType === 'SignatureField' || selectedAnnot.formFieldAnnotationType === 'InitialField' || shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText' || shapeType === 'SignatureImage') { // eslint-disable-next-line\n var inputFields = document.getElementById(selectedAnnot.id);\n var signatureFieldElement = document.getElementById(selectedAnnot.id + \"_html_element\");\n if (inputFields === null && !isNullOrUndefined(signatureFieldElement)) {\n inputFields = signatureFieldElement.children[0].children[0];\n }\n if (inputFields && inputFields.classList.contains('e-pdfviewer-signatureformfields-signature')) {\n inputFields.className = 'e-pdfviewer-signatureformfields';\n inputFields.style.pointerEvents = '';\n inputFields.parentElement.style.pointerEvents = '';\n if (this.pdfViewer.formDesignerModule) {\n this.pdfViewer.formDesignerModule.updateSignatureValue(selectedAnnot.id);\n }\n else {\n this.pdfViewer.formFieldsModule.updateDataInSession(inputFields, '');\n }\n }\n // eslint-disable-next-line\n var formFieldCollection = this.pdfViewer.retrieveFormFields();\n for (var m = 0; m < formFieldCollection.length; m++) {\n if (selectedAnnot.id === formFieldCollection[m].id) {\n formFieldCollection[m].value = '';\n formFieldCollection[m].signatureType = '';\n }\n }\n }\n if (this.pdfViewer.formDesignerModule && selectedAnnot.formFieldAnnotationType)\n this.updateFormFieldCollection(annotation_1);\n else\n this.updateAnnotationCollection(annotation_1);\n var formFieldObj = this.pdfViewer.nameTable[annotation_1.id.split(\"_\")[0]];\n if (formFieldObj != null && (formFieldObj.formFieldAnnotationType === 'SignatureField' || formFieldObj.formFieldAnnotationType === 'InitialField')) {\n var index = this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === annotation_1.id.split(\"_\")[0]; });\n if (index > -1) {\n var formFieldsIndex = this.pdfViewer.formFieldCollections[index];\n this.pdfViewer.fireFormFieldPropertiesChangeEvent(\"formFieldPropertiesChange\", formFieldsIndex, formFieldsIndex.pageIndex, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, formFieldsIndex.value, \"\");\n formFieldsIndex.value = \"\";\n formFieldsIndex.signatureType = \"\";\n this.pdfViewer.formDesignerModule.updateFormFieldCollections(formFieldsIndex);\n }\n formFieldObj.wrapper.children.splice(formFieldObj.wrapper.children.indexOf(annotation_1.wrapper.children[0]), 1);\n }\n this.pdfViewer.remove(annotation_1);\n this.pdfViewer.renderDrawing();\n this.pdfViewer.clearSelection(pageNumber);\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n this.pdfViewerBase.tool = null;\n this.pdfViewer.tool = null;\n if (selectedAnnot.shapeAnnotationType === 'HandWrittenSignature' || selectedAnnot.shapeAnnotationType === 'SignatureText' || selectedAnnot.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n var bounds = { left: selectedAnnot.bounds.x, top: selectedAnnot.bounds.y, width: selectedAnnot.bounds.width, height: selectedAnnot.bounds.height };\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignatureRemove(pageNumber, selectedAnnot.signatureName, selectedAnnot.shapeAnnotationType, bounds);\n }\n else if (this.pdfViewer.annotationModule) {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationRemove(pageNumber, annotationId, annotType, selectedAnnot.bounds);\n }\n if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.enableTextSelectionMode();\n }\n }\n }\n this.updateToolbar(true);\n if (this.pdfViewer.toolbarModule) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule && !isLock) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.selectAnnotationDeleteItem(false, true);\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableTextMarkupAnnotationPropertiesTools(false);\n }\n }\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.storeAnnotationCollections = function (annotation, pageNumber) {\n if (this.isFormFieldShape) {\n var collectionDetails = this.checkFormDesignCollection(annotation);\n var selectAnnotation = cloneObject(annotation);\n selectAnnotation.formFieldId = annotation.annotName;\n selectAnnotation.pageNumber = pageNumber;\n delete selectAnnotation.annotName;\n if (annotation.id) {\n selectAnnotation.uniqueKey = annotation.id;\n delete selectAnnotation.id;\n }\n if (collectionDetails.isExisting) {\n this.pdfViewer.formFieldCollection.splice(collectionDetails.position, 0, selectAnnotation);\n }\n else {\n this.pdfViewer.formFieldCollection.push(selectAnnotation);\n }\n }\n else {\n // eslint-disable-next-line\n var collectionDetails = this.checkAnnotationCollection(annotation);\n // eslint-disable-next-line\n var selectAnnotation = cloneObject(annotation);\n selectAnnotation.annotationId = annotation.annotName;\n selectAnnotation.pageNumber = pageNumber;\n delete selectAnnotation.annotName;\n if (annotation.shapeAnnotationType === 'stamp') {\n selectAnnotation.uniqueKey = annotation.randomId;\n delete selectAnnotation.randomId;\n }\n if (annotation.shapeAnnotationType === 'sticky') {\n selectAnnotation.uniqueKey = annotation.annotName;\n }\n if (annotation.id) {\n selectAnnotation.uniqueKey = annotation.id;\n delete selectAnnotation.id;\n }\n // eslint-disable-next-line\n if (selectAnnotation.customData && annotation.customData && JSON.stringify(selectAnnotation.customData) !== JSON.stringify(annotation.customData)) {\n selectAnnotation.customData = annotation.customData;\n }\n if (collectionDetails.isExisting) {\n this.pdfViewer.annotationCollection.splice(collectionDetails.position, 0, selectAnnotation);\n }\n else {\n this.pdfViewer.annotationCollection.push(selectAnnotation);\n }\n }\n };\n Annotation.prototype.checkFormDesignCollection = function (annotation) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.formFieldCollection;\n if (collections && annotation) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].formFieldId === annotation.annotName) {\n this.pdfViewer.formFieldCollection.splice(i, 1);\n return { isExisting: true, position: i };\n }\n }\n }\n return { isExisting: false, position: null };\n };\n Annotation.prototype.updateFormFieldCollection = function (annotation) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.formFieldCollection;\n if (collections && annotation) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].formFieldId === annotation.annotName) {\n this.removedAnnotationCollection.push(collections[i]);\n this.pdfViewer.formFieldCollection.splice(i, 1);\n break;\n }\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getCustomData = function (annotation) {\n var customData;\n if (annotation.ExistingCustomData && !annotation.CustomData) {\n customData = JSON.parse(annotation.ExistingCustomData);\n }\n else if (annotation.CustomData === null) {\n if (annotation.shapeAnnotationType === 'sticky') {\n customData = this.pdfViewer.stickyNotesSettings.customData;\n }\n if (annotation.shapeAnnotationType === 'Stamp') {\n customData = this.pdfViewer.stampSettings.customData;\n }\n if (annotation.shapeAnnotationType === 'FreeText') {\n customData = this.pdfViewer.freeTextSettings.customData;\n }\n if (annotation.id === 'shape') {\n customData = this.getShapeData(annotation.ShapeAnnotationType, annotation.subject);\n }\n if (annotation.id === 'measure') {\n customData = this.getMeasureData(annotation.Subject);\n }\n if (annotation.shapeAnnotationType === 'textMarkup') {\n customData = this.getTextMarkupData(annotation.subject);\n }\n if (annotation.shapeAnnotationType === 'Ink') {\n customData = this.pdfViewer.inkAnnotationSettings.customData;\n }\n }\n else {\n customData = annotation.CustomData;\n }\n return customData;\n };\n /**\n * @param type\n * @param subject\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getShapeData = function (type, subject) {\n var customData;\n if (type === 'Line' && subject !== 'Arrow' && this.pdfViewer.lineSettings.customData) {\n customData = this.pdfViewer.lineSettings.customData;\n }\n else if ((type === 'LineWidthArrowHead' || subject === 'Arrow') && this.pdfViewer.arrowSettings.customData) {\n customData = this.pdfViewer.arrowSettings.customData;\n }\n else if ((type === 'Rectangle' || type === 'Square') && this.pdfViewer.rectangleSettings.customData) {\n customData = this.pdfViewer.rectangleSettings.customData;\n }\n else if ((type === 'Ellipse' || type === 'Circle') && this.pdfViewer.circleSettings.customData) {\n customData = this.pdfViewer.circleSettings.customData;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.customData) {\n customData = this.pdfViewer.polygonSettings.customData;\n }\n else if (this.pdfViewer.annotationSettings.customData) {\n customData = this.pdfViewer.annotationSettings.customData;\n }\n return customData;\n };\n /**\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getMeasureData = function (type) {\n var customData;\n if ((type === 'Distance' || type === 'Distance calculation') && this.pdfViewer.distanceSettings.customData) {\n customData = this.pdfViewer.distanceSettings.customData;\n }\n else if ((type === 'Line' || type === 'Perimeter calculation') && this.pdfViewer.lineSettings.customData) {\n customData = this.pdfViewer.lineSettings.customData;\n // eslint-disable-next-line max-len\n }\n else if ((type === 'Polygon' || type === 'Area calculation' || type === 'Volume calculation') && this.pdfViewer.polygonSettings.customData) {\n customData = this.pdfViewer.polygonSettings.customData;\n }\n else if ((type === 'Radius' || type === 'Radius calculation') && this.pdfViewer.radiusSettings.customData) {\n customData = this.pdfViewer.radiusSettings.customData;\n }\n else if (this.pdfViewer.annotationSettings.customData) {\n customData = this.pdfViewer.annotationSettings.customData;\n }\n return customData;\n };\n /**\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getTextMarkupData = function (type) {\n var customData;\n if (type === 'Highlight' && this.pdfViewer.highlightSettings.customData) {\n customData = this.pdfViewer.highlightSettings.customData;\n }\n else if (type === 'Underline' && this.pdfViewer.underlineSettings.customData) {\n customData = this.pdfViewer.underlineSettings.customData;\n }\n else if (type === 'Strikethrough' && this.pdfViewer.strikethroughSettings.customData) {\n customData = this.pdfViewer.strikethroughSettings.customData;\n }\n else if (this.pdfViewer.annotationSettings.customData) {\n customData = this.pdfViewer.annotationSettings.customData;\n }\n return customData;\n };\n /**\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getData = function (type) {\n var customData;\n if (type === 'FreeText' && this.pdfViewer.freeTextSettings.customData) {\n customData = this.pdfViewer.freeTextSettings.customData;\n }\n else if ((type === 'image' || type === 'Stamp') && this.pdfViewer.stampSettings.customData) {\n customData = this.pdfViewer.stampSettings.customData;\n }\n else if (type === 'sticky' && this.pdfViewer.stickyNotesSettings.customData) {\n customData = this.pdfViewer.stickyNotesSettings.customData;\n }\n else if (this.pdfViewer.annotationSettings.customData) {\n customData = this.pdfViewer.annotationSettings.customData;\n }\n return customData;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.clearAnnotationStorage = function () {\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n var maxSessionSize = 4500;\n if (sessionSize > maxSessionSize) {\n var storageLength = window.sessionStorage.length;\n // eslint-disable-next-line\n var annotationList = [];\n for (var i = 0; i < storageLength; i++) {\n if (window.sessionStorage.key(i) && window.sessionStorage.key(i).split('_')[3]) {\n if (window.sessionStorage.key(i).split('_')[3] === 'annotations') {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.annotationStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n annotationList.push(window.sessionStorage.key(i));\n }\n }\n }\n if (annotationList) {\n for (var i = 0; i < annotationList.length; i++) {\n window.sessionStorage.removeItem(annotationList[i]);\n }\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.checkAnnotationCollection = function (annotation) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.annotationCollection;\n if (collections && annotation) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].annotationId === annotation.annotName) {\n this.pdfViewer.annotationCollection.splice(i, 1);\n return { isExisting: true, position: i };\n }\n }\n }\n return { isExisting: false, position: null };\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateAnnotationCollection = function (annotation) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.annotationCollection;\n if (collections && annotation) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].annotationId === annotation.annotName) {\n this.removedAnnotationCollection.push(collections[i]);\n this.pdfViewer.annotationCollection.splice(i, 1);\n break;\n }\n }\n }\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotationType\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateImportAnnotationCollection = function (annotation, pageNumber, annotationType) {\n if (this.pdfViewerBase.isImportAction) {\n if (this.pdfViewerBase.importedAnnotation && this.pdfViewerBase.importedAnnotation[pageNumber]) {\n // eslint-disable-next-line\n var currentPageAnnotations = this.pdfViewerBase.importedAnnotation[pageNumber];\n if (currentPageAnnotations[annotationType]) {\n for (var i = 0; i < currentPageAnnotations[annotationType].length; i++) {\n // eslint-disable-next-line max-len\n if (annotation.annotName === currentPageAnnotations[annotationType][i].AnnotName || annotation.annotName === currentPageAnnotations[annotationType][i].annotName) {\n this.pdfViewerBase.importedAnnotation[pageNumber][annotationType].splice(i, 1);\n break;\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var documentcollections = this.pdfViewerBase.documentAnnotationCollections;\n if (documentcollections && documentcollections[pageNumber]) {\n // eslint-disable-next-line\n var documentPageCollections = documentcollections[pageNumber];\n if (documentPageCollections && documentPageCollections[annotationType]) {\n for (var i = 0; i < documentPageCollections[annotationType].length; i++) {\n // eslint-disable-next-line max-len\n if (annotation.annotName === documentPageCollections[annotationType][i].AnnotName) {\n this.pdfViewerBase.documentAnnotationCollections[pageNumber][annotationType].splice(i, 1);\n break;\n }\n }\n }\n }\n };\n /**\n * Select the annotations using annotation object or annotation Id.\n *\n * @param annotationId\n * @returns void\n */\n Annotation.prototype.selectAnnotation = function (annotationId) {\n // eslint-disable-next-line\n var annotation;\n var id;\n if (typeof annotationId === 'object') {\n annotation = annotationId;\n id = annotation.annotationId;\n annotation = this.getAnnotationsFromAnnotationCollections(id);\n }\n if (typeof annotationId === 'string') {\n annotation = this.getAnnotationsFromAnnotationCollections(annotationId);\n id = annotationId;\n }\n if (annotation) {\n var pageIndex = annotation.pageNumber;\n var isRender = false;\n isRender = this.findRenderPageList(pageIndex);\n var currentSelector = this.pdfViewer.annotationSelectorSettings;\n //let pageIndex: number = this.getPageNumberFromAnnotationCollections(annotation);\n if (annotation && pageIndex >= 0) {\n if (annotation.shapeAnnotationType === 'textMarkup') {\n if (annotation.rect || annotation.bounds) {\n // eslint-disable-next-line max-len\n var scrollValue = this.pdfViewerBase.pageSize[pageIndex].top * this.pdfViewerBase.getZoomFactor() + (this.getAnnotationTop(annotation)) * this.pdfViewerBase.getZoomFactor();\n var scroll_1 = (scrollValue - 20).toString();\n // eslint-disable-next-line radix\n this.pdfViewerBase.viewerContainer.scrollTop = parseInt(scroll_1);\n this.pdfViewerBase.viewerContainer.scrollLeft = this.getAnnotationLeft(annotation) * this.pdfViewerBase.getZoomFactor();\n }\n else {\n if (this.pdfViewer.navigation) {\n this.pdfViewer.navigation.goToPage(pageIndex + 1);\n }\n }\n }\n else {\n if (annotation.bounds) {\n // eslint-disable-next-line max-len\n var scrollValue = this.pdfViewerBase.pageSize[pageIndex].top * this.pdfViewerBase.getZoomFactor() + (annotation.bounds.top) * this.pdfViewerBase.getZoomFactor();\n var scrollLeft = annotation.bounds.left * this.pdfViewerBase.getZoomFactor();\n if (annotation.shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line max-len\n scrollValue = this.pdfViewerBase.pageSize[pageIndex].top * this.pdfViewerBase.getZoomFactor() + (annotation.bounds.y) * this.pdfViewerBase.getZoomFactor();\n scrollLeft = annotation.bounds.x * this.pdfViewerBase.getZoomFactor();\n }\n var scroll_2 = (scrollValue - 20).toString();\n // eslint-disable-next-line radix\n this.pdfViewerBase.viewerContainer.scrollTop = parseInt(scroll_2);\n this.pdfViewerBase.viewerContainer.scrollLeft = scrollLeft;\n }\n else {\n if (this.pdfViewer.navigation) {\n this.pdfViewer.navigation.goToPage(pageIndex + 1);\n }\n }\n }\n if (isRender) {\n if (this.previousIndex) {\n this.pdfViewer.clearSelection(this.previousIndex);\n }\n this.pdfViewer.clearSelection(pageIndex);\n this.previousIndex = pageIndex;\n if (annotation.shapeAnnotationType === 'textMarkup') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.clearCurrentAnnotationSelection(pageIndex, true);\n // eslint-disable-next-line max-len\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n var textMarkupAnnotation = this.getTextMarkupAnnotations(pageIndex, annotation);\n if (textMarkupAnnotation) {\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = null;\n this.textMarkupAnnotationModule.isSelectedAnnotation = true;\n this.textMarkupAnnotationModule.showHideDropletDiv(true);\n this.textMarkupAnnotationModule.annotationClickPosition = null;\n this.textMarkupAnnotationModule.selectAnnotation(textMarkupAnnotation, canvas, pageIndex, null, true);\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = textMarkupAnnotation;\n this.textMarkupAnnotationModule.selectTextMarkupCurrentPage = pageIndex;\n this.textMarkupAnnotationModule.enableAnnotationPropertiesTool(true);\n this.textMarkupAnnotationModule.isSelectedAnnotation = false;\n if (this.pdfViewer.toolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n }\n }\n else if (annotation.shapeAnnotationType === 'stamp' || annotation.ShapeAnnotationType === 'stamp') {\n this.pdfViewer.select([annotation.uniqueKey], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else if (annotation.shapeAnnotationType === 'sticky' || annotation.ShapeAnnotationType === 'sticky') {\n this.pdfViewer.select([annotation.annotationId], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else {\n this.pdfViewer.select([annotation.uniqueKey], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n // eslint-disable-next-line max-len\n var commentElement = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentElement && commentElement.style.display === 'block') {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(id);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n else {\n this.selectAnnotationId = id;\n this.isAnnotationSelected = true;\n this.annotationPageIndex = pageIndex;\n }\n }\n }\n };\n /**\n * Clear the annotation selection.\n *\n * @returns void\n */\n Annotation.prototype.clearSelection = function () {\n if (this.textMarkupAnnotationModule && this.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.textMarkupAnnotationModule.clearCurrentSelectedAnnotation();\n this.textMarkupAnnotationModule.clearCurrentAnnotationSelection(this.textMarkupAnnotationModule.selectTextMarkupCurrentPage);\n }\n else {\n if (this.pdfViewer.selectedItems && this.pdfViewer.selectedItems.annotations[0]) {\n // eslint-disable-next-line\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n this.pdfViewer.clearSelection(currentAnnotation.pageIndex);\n }\n else {\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getAnnotationTop = function (annotation) {\n if (annotation.rect) {\n if (annotation.rect.Top) {\n return annotation.rect.Top;\n }\n else {\n return annotation.rect.top;\n }\n }\n else {\n if (annotation.bounds[0].Top) {\n return annotation.bounds[0].Top;\n }\n else {\n return annotation.bounds[0].top;\n }\n }\n };\n /**\n * @param annotation\n */\n // eslint-disable-next-line\n Annotation.prototype.getAnnotationLeft = function (annotation) {\n if (annotation.rect) {\n if (annotation.rect.Left) {\n return annotation.rect.Left;\n }\n else {\n return annotation.rect.left;\n }\n }\n else {\n if (annotation.bounds[0].Left) {\n return annotation.bounds[0].Left;\n }\n else {\n return annotation.bounds[0].left;\n }\n }\n };\n /**\n * @private\n */\n Annotation.prototype.selectAnnotationFromCodeBehind = function () {\n if (this.isAnnotationSelected && this.selectAnnotationId) {\n // eslint-disable-next-line\n var annotation = this.getAnnotationsFromAnnotationCollections(this.selectAnnotationId);\n var id = this.selectAnnotationId;\n var pageIndex = annotation.pageNumber;\n var currentSelector = this.pdfViewer.annotationSelectorSettings;\n if (annotation && (this.annotationPageIndex >= 0) && this.annotationPageIndex === pageIndex) {\n if (this.previousIndex) {\n this.pdfViewer.clearSelection(this.previousIndex);\n }\n this.pdfViewer.clearSelection(pageIndex);\n this.previousIndex = pageIndex;\n if (annotation.shapeAnnotationType === 'textMarkup') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.clearCurrentAnnotationSelection(pageIndex, true);\n // eslint-disable-next-line max-len\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n var textMarkupAnnotation = this.getTextMarkupAnnotations(pageIndex, annotation);\n if (textMarkupAnnotation) {\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = null;\n this.textMarkupAnnotationModule.isSelectedAnnotation = true;\n this.textMarkupAnnotationModule.showHideDropletDiv(true);\n this.textMarkupAnnotationModule.annotationClickPosition = null;\n this.textMarkupAnnotationModule.selectAnnotation(textMarkupAnnotation, canvas, pageIndex);\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = textMarkupAnnotation;\n this.textMarkupAnnotationModule.selectTextMarkupCurrentPage = pageIndex;\n this.textMarkupAnnotationModule.enableAnnotationPropertiesTool(true);\n this.textMarkupAnnotationModule.isSelectedAnnotation = false;\n if (this.pdfViewer.toolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n }\n }\n else if (annotation.shapeAnnotationType === 'stamp' || annotation.ShapeAnnotationType === 'stamp') {\n this.pdfViewer.select([annotation.uniqueKey], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else if (annotation.shapeAnnotationType === 'sticky' || annotation.ShapeAnnotationType === 'sticky') {\n this.pdfViewer.select([annotation.annotationId], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else if (annotation.uniqueKey) {\n this.pdfViewer.select([annotation.uniqueKey], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else {\n this.pdfViewer.select([annotation.annotationId], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n // eslint-disable-next-line max-len\n var commentElement = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentElement && commentElement.style.display === 'block') {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(id);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n this.isAnnotationSelected = false;\n this.selectAnnotationId = null;\n this.annotationPageIndex = null;\n }\n };\n /**\n * @param pageIndex\n * @private\n */\n Annotation.prototype.findRenderPageList = function (pageIndex) {\n var isRender = false;\n // eslint-disable-next-line\n var pageList = this.pdfViewerBase.renderedPagesList;\n if (pageList) {\n for (var i = 0; i < pageList.length; i++) {\n if (pageList[i] === pageIndex) {\n isRender = true;\n return isRender;\n }\n }\n }\n return isRender;\n };\n // eslint-disable-next-line\n Annotation.prototype.getPageNumberFromAnnotationCollections = function (annotation) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.annotations;\n if (annotation) {\n if (annotation.shapeAnnotationType === 'textMarkup') {\n return annotation.pageNumber;\n }\n else {\n if (collections) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].annotName === annotation.annotationId) {\n return collections[i].pageIndex;\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.getAnnotationsFromAnnotationCollections = function (annotationId) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.annotationCollection;\n if (collections && annotationId) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].annotationId === annotationId) {\n return collections[i];\n }\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 0)\n this.pdfViewer.selectedItems.annotations.push(this.pdfViewer.nameTable[annotationId]);\n };\n // eslint-disable-next-line\n Annotation.prototype.getTextMarkupAnnotations = function (pageIndex, annotation) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_textMarkup'];\n }\n if (storeObject) {\n // eslint-disable-next-line\n var annotObject = JSON.parse(storeObject);\n var index = this.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n for (var i = 0; i < annotObject[index].annotations.length; i++) {\n if (annotObject[index].annotations[i].annotName === annotation.annotationId) {\n return annotObject[index].annotations[i];\n }\n }\n return null;\n }\n }\n else {\n return null;\n }\n };\n /**\n * @param type\n * @param measureType\n * @param type\n * @param measureType\n * @private\n */\n Annotation.prototype.getAnnotationType = function (type, measureType) {\n var annotType;\n if (measureType === '' || isNullOrUndefined(measureType)) {\n switch (type) {\n case 'Line':\n annotType = 'Line';\n break;\n case 'LineWidthArrowHead':\n annotType = 'Arrow';\n break;\n case 'Rectangle':\n annotType = 'Rectangle';\n break;\n case 'Ellipse':\n annotType = 'Circle';\n break;\n case 'Polygon':\n annotType = 'Polygon';\n break;\n case 'Stamp':\n annotType = 'Stamp';\n break;\n case 'Image':\n annotType = 'Image';\n break;\n case 'FreeText':\n annotType = 'FreeText';\n break;\n case 'Ink':\n annotType = 'Ink';\n break;\n case 'StickyNotes':\n annotType = 'StickyNotes';\n break;\n }\n }\n else {\n switch (measureType) {\n case 'Distance':\n annotType = 'Distance';\n break;\n case 'Perimeter':\n annotType = 'Perimeter';\n break;\n case 'Area':\n annotType = 'Area';\n break;\n case 'Radius':\n annotType = 'Radius';\n break;\n case 'Volume':\n annotType = 'Volume';\n break;\n }\n }\n return annotType;\n };\n /**\n * @param pageNumber\n * @param annotationId\n * @private\n */\n Annotation.prototype.getAnnotationIndex = function (pageNumber, annotationId) {\n var pageAnnotationBases = this.pdfViewer.drawing.getPageObjects(pageNumber);\n var index = null;\n for (var i = 0; i < pageAnnotationBases.length; i++) {\n if (pageAnnotationBases[i].id === annotationId) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * @private\n */\n Annotation.prototype.initializeCollection = function () {\n this.actionCollection = [];\n this.redoCollection = [];\n this.pdfViewerBase.customStampCollection = [];\n if (!this.popupNote) {\n this.createNote();\n }\n };\n /**\n * @private\n */\n Annotation.prototype.showCommentsPanel = function () {\n if (this.pdfViewer.enableCommentPanel) {\n var commentPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentPanel) {\n if (commentPanel.style.display === 'none') {\n commentPanel.style.display = 'block';\n if (Browser.isDevice && !isBlazor()) {\n // eslint:disable-next-line\n var viewer = document.getElementById(this.pdfViewer.element.id + '_viewerMainContainer');\n // eslint:disable-next-line\n viewer.insertBefore(this.pdfViewerBase.navigationPane.commentPanelContainer, this.pdfViewer.toolbarModule.toolbarElement);\n }\n if (this.pdfViewerBase.navigationPane.commentPanelResizer) {\n this.pdfViewerBase.navigationPane.commentPanelResizer.style.display = 'block';\n }\n this.pdfViewerBase.navigationPane.setCommentPanelResizeIconTop();\n this.pdfViewer.annotation.stickyNotesAnnotationModule.updateCommentPanelTextTop();\n var viewerContainer = document.getElementById(this.pdfViewer.element.id + '_viewerContainer');\n var pageContainer = document.getElementById(this.pdfViewer.element.id + '_pageViewContainer');\n if (viewerContainer) {\n if (this.pdfViewer.enableRtl) {\n viewerContainer.style.left = this.pdfViewerBase.navigationPane.getViewerContainerRight() + 'px';\n }\n else {\n viewerContainer.style.right = this.pdfViewerBase.navigationPane.getViewerContainerRight() + 'px';\n }\n // eslint-disable-next-line max-len\n viewerContainer.style.width = (this.pdfViewer.element.clientWidth - this.pdfViewerBase.navigationPane.getViewerContainerLeft() - this.pdfViewerBase.navigationPane.getViewerContainerRight()) + 'px';\n pageContainer.style.width = (viewerContainer.offsetWidth - this.pdfViewerBase.navigationPane.getViewerContainerScrollbarWidth()) + 'px';\n }\n this.pdfViewerBase.updateZoomValue();\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (Browser.isDevice && !isBlazor()) {\n commentPanel.style.height = this.pdfViewerBase.viewerMainContainer.clientHeight + 'px';\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n // eslint:disable-next-line\n var commentDiv = document.getElementById(this.pdfViewer.selectedItems.annotations[0].annotName);\n if (commentDiv && commentDiv.lastElementChild.children[1] && commentDiv.lastElementChild.children[1].ej2_instances) {\n commentDiv.lastElementChild.children[1].ej2_instances[0].enableEditMode = true;\n }\n else if (commentDiv && commentDiv.lastElementChild.ej2_instances) {\n commentDiv.lastElementChild.ej2_instances[0].enableEditMode = true;\n commentDiv.lastElementChild.style.display = 'block';\n commentDiv.lastElementChild.children[1] ? commentDiv.lastElementChild.children[1].style.display = 'block' : null;\n }\n }\n if (this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.element.style.display = 'none';\n if (this.pdfViewer.toolbarModule.annotationToolbarModule.propertyToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.propertyToolbar.element.style.display = 'none';\n }\n }\n }\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param index\n * @param annotation\n * @param actionString\n * @param property\n * @param node\n * @param redo\n * @param pageNumber\n * @param index\n * @param annotation\n * @param actionString\n * @param property\n * @param node\n * @param redo\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.addAction = function (\n // eslint-disable-next-line\n pageNumber, index, annotation, actionString, property, node, redo) {\n var action = {\n pageIndex: pageNumber, index: index, annotation: annotation,\n action: actionString, modifiedProperty: property, undoElement: node, redoElement: redo\n };\n this.actionCollection.push(action);\n this.updateToolbar();\n };\n /**\n * @private\n */\n Annotation.prototype.undo = function () {\n var actionObject = this.actionCollection.pop();\n if (actionObject) {\n // eslint-disable-next-line\n var shapeType = actionObject.annotation.shapeAnnotationType;\n this.isUndoRedoAction = true;\n this.isUndoAction = true;\n switch (actionObject.action) {\n case 'Text Markup Added':\n case 'Text Markup Deleted':\n if (this.textMarkupAnnotationModule) {\n // eslint-disable-next-line max-len\n this.textMarkupAnnotationModule.undoTextMarkupAction(actionObject.annotation, actionObject.pageIndex, actionObject.index, actionObject.action);\n }\n break;\n case 'Text Markup Property modified':\n if (this.textMarkupAnnotationModule) {\n // eslint-disable-next-line max-len\n actionObject.annotation = this.textMarkupAnnotationModule.undoRedoPropertyChange(actionObject.annotation, actionObject.pageIndex, actionObject.index, actionObject.modifiedProperty, true);\n }\n break;\n case 'Drag':\n case 'Resize':\n if (isLineShapes(actionObject.annotation)) {\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { bounds: actionObject.undoElement.bounds, vertexPoints: actionObject.undoElement.vertexPoints, leaderHeight: actionObject.undoElement.leaderHeight });\n }\n else {\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { bounds: actionObject.undoElement.bounds });\n }\n // eslint-disable-next-line max-len\n if (actionObject.annotation.measureType === 'Distance' || actionObject.annotation.measureType === 'Perimeter' || actionObject.annotation.measureType === 'Area' ||\n actionObject.annotation.measureType === 'Radius' || actionObject.annotation.measureType === 'Volume') {\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { notes: actionObject.undoElement.notes });\n this.updateCalibrateValues(actionObject.annotation);\n }\n if (actionObject.annotation.formFieldAnnotationType) {\n this.pdfViewer.formDesigner.updateHTMLElement(actionObject.annotation);\n }\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.pdfViewer.select([actionObject.annotation.id]);\n // eslint-disable-next-line max-len\n if (actionObject.annotation.shapeAnnotationType === 'Line' || actionObject.annotation.shapeAnnotationType === 'Rectangle' || actionObject.annotation.shapeAnnotationType === 'Ellipse' || actionObject.annotation.shapeAnnotationType === 'Polygon' || actionObject.annotation.shapeAnnotationType === 'LineWidthArrowHead' ||\n actionObject.annotation.shapeAnnotationType === 'Radius' || actionObject.annotation.shapeAnnotationType === 'FreeText' || actionObject.annotation.shapeAnnotationType === 'HandWrittenSignature' || actionObject.annotation.shapeAnnotationType === 'SignatureText' || actionObject.annotation.shapeAnnotationType === 'SignatureImage' || actionObject.annotation.shapeAnnotationType === 'Ink') {\n this.modifyInCollections(actionObject.annotation, 'bounds');\n }\n break;\n case 'Addition':\n if (this.pdfViewer.formDesigner && actionObject.annotation.formFieldAnnotationType) {\n this.pdfViewer.formDesigner.deleteFormField(actionObject.undoElement.id, false);\n }\n else {\n var isAnnotationUpdate = false;\n // eslint-disable-next-line max-len\n if (shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Polygon' || shapeType === 'Ellipse' || shapeType === 'Rectangle' || shapeType === 'Radius' || shapeType === 'Distance') {\n if (actionObject.annotation.measureType === '' || isNullOrUndefined(actionObject.annotation.measureType)) {\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, 'shape');\n }\n else {\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, 'measure');\n }\n isAnnotationUpdate = true;\n // eslint-disable-next-line\n var annotationObject = actionObject.annotation;\n // eslint-disable-next-line\n var wrapper = annotationObject.wrapper ? annotationObject.wrapper : null;\n if (wrapper && wrapper.bounds) {\n actionObject.annotation.bounds = wrapper.bounds;\n }\n actionObject.duplicate = this.modifyInCollections(actionObject.annotation, 'delete');\n }\n if (shapeType === 'Stamp' || shapeType === 'Image') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, actionObject.annotation.shapeAnnotationType, 'delete');\n // eslint-disable-next-line max-len\n this.stampAnnotationModule.updateSessionStorage(actionObject.annotation, null, 'delete');\n isAnnotationUpdate = true;\n }\n if (shapeType === 'FreeText' || shapeType === 'HandWrittenSignature' || shapeType === 'SignatureImage' || shapeType === 'SignatureText' || shapeType === 'Ink') {\n isAnnotationUpdate = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, actionObject.annotation.shapeAnnotationType, 'delete');\n actionObject.duplicate = this.modifyInCollections(actionObject.annotation, 'delete');\n }\n if (!isAnnotationUpdate) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, actionObject.annotation.shapeAnnotationType, 'delete');\n }\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.pdfViewer.remove(actionObject.annotation);\n this.pdfViewer.renderDrawing(null, actionObject.annotation.pageIndex);\n // eslint-disable-next-line\n var removeDiv = document.getElementById(actionObject.annotation.annotName);\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.parentElement.removeChild(removeDiv);\n }\n }\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n var mobileAnnotationToolbar = document.getElementById(this.pdfViewer.element.id + '_propertyToolbar');\n if (mobileAnnotationToolbar && mobileAnnotationToolbar.children.length > 0) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbarCreated = false;\n this.pdfViewer.toolbarModule.annotationToolbarModule.createAnnotationToolbarForMobile();\n }\n }\n }\n break;\n case 'Delete':\n if (this.pdfViewer.formDesigner && actionObject.annotation.formFieldAnnotationType) {\n actionObject.undoElement.bounds.x = actionObject.undoElement.wrapper.bounds.x;\n actionObject.undoElement.bounds.y = actionObject.undoElement.wrapper.bounds.y;\n this.pdfViewer.formDesigner.drawFormField(actionObject.undoElement);\n }\n else {\n // eslint-disable-next-line max-len\n if (shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Polygon' || shapeType === 'Ellipse' || shapeType === 'Rectangle' || shapeType === 'Radius' || shapeType === 'Distance') {\n if (actionObject.annotation.measureType === '' || isNullOrUndefined(actionObject.annotation.measureType)) {\n shapeType = 'shape';\n this.shapeAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.undoElement);\n }\n else {\n shapeType = 'shape_measure';\n this.measureAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.undoElement);\n }\n }\n if (shapeType === 'Stamp' || shapeType === 'Image') {\n this.stampAnnotationModule.updateDeleteItems(actionObject.annotation.pageIndex, actionObject.annotation);\n }\n else if (shapeType === 'FreeText') {\n this.freeTextAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.undoElement);\n }\n else if (shapeType === 'Ink') {\n this.inkAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.undoElement);\n }\n var addedAnnot = this.pdfViewer.add(actionObject.annotation);\n if ((shapeType === 'FreeText' || addedAnnot.enableShapeLabel) && addedAnnot) {\n this.pdfViewer.nodePropertyChange(addedAnnot, {});\n }\n var formFieldObj = this.pdfViewer.nameTable[actionObject.annotation.id.split(\"_\")[0]];\n if (formFieldObj != null && (formFieldObj.formFieldAnnotationType === 'SignatureField' || formFieldObj.formFieldAnnotationType === 'InitialField')) {\n formFieldObj.wrapper.children.push(actionObject.annotation.wrapper.children[0]);\n if (actionObject.annotation.shapeAnnotationType === \"SignatureText\")\n formFieldObj.wrapper.children.push(actionObject.annotation.wrapper.children[1]);\n var key = actionObject.annotation.id.split('_')[0] + '_content';\n var data = null;\n if (this.pdfViewer.formDesignerModule) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n if (data) {\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key === key) {\n if (actionObject.annotation.shapeAnnotationType === \"SignatureText\") {\n formFieldsData[i].FormField.signatureType = \"Text\";\n formFieldsData[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Text\";\n }\n else if (actionObject.annotation.shapeAnnotationType === \"SignatureImage\") {\n formFieldsData[i].FormField.signatureType = \"Image\";\n formFieldsData[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Image\";\n }\n else {\n formFieldsData[i].FormField.signatureType = \"Path\";\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Path\";\n var collectionData = processPathData(actionObject.annotation.data);\n var csData = splitArrayCollection(collectionData);\n formFieldsData[i].FormField.value = JSON.stringify(csData);\n this.pdfViewerBase.formFieldCollection[i].FormField.value = JSON.stringify(csData);\n }\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n this.pdfViewer.renderDrawing(null, actionObject.annotation.pageIndex);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addAnnotationComments(actionObject.annotation.pageIndex, shapeType);\n }\n break;\n case 'stampOpacity':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { opacity: actionObject.undoElement.opacity });\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n actionObject.annotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n break;\n case 'Shape Stroke':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { strokeColor: actionObject.undoElement.strokeColor });\n this.modifyInCollections(actionObject.annotation, 'stroke');\n this.pdfViewer.renderDrawing();\n break;\n case 'Shape Fill':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fillColor: actionObject.undoElement.fillColor });\n this.modifyInCollections(actionObject.annotation, 'fill');\n this.pdfViewer.renderDrawing();\n break;\n case 'Shape Opacity':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { opacity: actionObject.undoElement.opacity });\n if (actionObject.annotation.shapeAnnotationType === 'StickyNotes') {\n this.stickyNotesAnnotationModule.updateOpacityValue(actionObject.annotation);\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n actionObject.annotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n }\n else {\n this.modifyInCollections(actionObject.annotation, 'opacity');\n }\n this.pdfViewer.renderDrawing();\n break;\n case 'Shape Thickness':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { thickness: actionObject.undoElement.thickness });\n this.modifyInCollections(actionObject.annotation, 'thickness');\n this.pdfViewer.renderDrawing();\n break;\n case 'Line properties change':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, {\n // eslint-disable-next-line max-len\n fillColor: actionObject.undoElement.fillColor, borderDashArray: actionObject.undoElement.borderDashArray, borderStyle: actionObject.undoElement.borderStyle,\n // eslint-disable-next-line max-len\n strokeColor: actionObject.undoElement.strokeColor, opacity: actionObject.undoElement.opacity, thickness: actionObject.undoElement.thickness,\n sourceDecoraterShapes: this.getArrowType(actionObject.undoElement.lineHeadStart), taregetDecoraterShapes: this.getArrowType(actionObject.undoElement.lineHeadEnd)\n });\n this.updateCollectionForLineProperty(actionObject.annotation);\n this.pdfViewer.renderDrawing();\n break;\n case 'Text Property Added':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.undoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n actionObject.annotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n break;\n case 'Comments Property Added':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.undoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n break;\n case 'Status Property Added':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.undoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n break;\n case 'Comments Reply Deleted':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.undoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n break;\n case 'dynamicText Change':\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = true;\n actionObject.annotation.dynamicText = actionObject.undoElement.dynamicText;\n if (this.pdfViewer.selectedItems.annotations[0]) {\n this.pdfViewer.selectedItems.annotations[0].dynamicText = actionObject.undoElement.dynamicText;\n }\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.undoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n this.modifyInCollections(actionObject.annotation, 'dynamicText');\n if (this.pdfViewer.selectedItems.annotations[0]) {\n this.pdfViewer.nodePropertyChange(this.pdfViewer.selectedItems.annotations[0], {});\n }\n else {\n this.pdfViewer.nodePropertyChange(actionObject.annotation, {});\n }\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = false;\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n break;\n case 'fontColor':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fontColor: actionObject.undoElement.fontColor });\n this.modifyInCollections(actionObject.annotation, 'fontColor');\n this.pdfViewer.renderDrawing();\n break;\n case 'fontSize':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fontSize: actionObject.undoElement.fontSize });\n this.modifyInCollections(actionObject.annotation, 'fontSize');\n this.pdfViewer.renderDrawing();\n break;\n case 'fontFamily':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fontFamily: actionObject.undoElement.fontFamily });\n this.modifyInCollections(actionObject.annotation, 'fontFamily');\n this.pdfViewer.renderDrawing();\n break;\n case 'textAlign':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { textAlign: actionObject.undoElement.textAlign });\n this.modifyInCollections(actionObject.annotation, 'textAlign');\n this.pdfViewer.renderDrawing();\n break;\n case 'textPropertiesChange':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { font: actionObject.undoElement.font });\n this.modifyInCollections(actionObject.annotation, 'textPropertiesChange');\n this.pdfViewer.renderDrawing();\n break;\n case 'Rotate':\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(actionObject.annotation.annotations[0], { bounds: actionObject.undoElement.bounds, rotateAngle: actionObject.undoElement.rotateAngle });\n this.modifyInCollections(actionObject.annotation.annotations[0], 'bounds');\n this.pdfViewer.renderDrawing();\n break;\n case 'FormDesigner Properties Change':\n if (actionObject.undoElement && actionObject.undoElement.isMultiline !== actionObject.redoElement.isMultiline) {\n this.undoRedoMultiline(actionObject.undoElement);\n }\n this.updateFormFieldPropertiesChanges(actionObject.undoElement.formFieldAnnotationType, actionObject.undoElement);\n break;\n case 'FormField Value Change':\n if (actionObject.annotation.formFieldAnnotationType) {\n if (actionObject.annotation.formFieldAnnotationType == \"RadioButton\") {\n this.updateFormFieldValueChange(actionObject.annotation.formFieldAnnotationType, actionObject.undoElement, false);\n this.updateFormFieldValueChange(actionObject.annotation.formFieldAnnotationType, actionObject.redoElement, true);\n }\n else {\n this.updateFormFieldValueChange(actionObject.annotation.formFieldAnnotationType, actionObject.annotation, actionObject.undoElement);\n }\n }\n else {\n var spanElement = document.getElementById(actionObject.annotation.id + \"_html_element\").children[0].children[0];\n spanElement.className = 'e-pdfviewer-signatureformfields';\n var formFieldObj = this.pdfViewer.nameTable[actionObject.annotation.id.split(\"_\")[0]];\n var annotationObj = this.pdfViewer.nameTable[actionObject.annotation.id];\n formFieldObj.wrapper.children.splice(formFieldObj.wrapper.children.indexOf(annotationObj.wrapper.children[0]), 1);\n if (actionObject.annotation.shapeAnnotationType === \"SignatureText\")\n formFieldObj.wrapper.children.splice(formFieldObj.wrapper.children.indexOf(annotationObj.wrapper.children[1]), 1);\n var key = actionObject.annotation.id.split('_')[0] + '_content';\n var data = null;\n if (this.pdfViewer.formDesignerModule) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n if (data) {\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key === key) {\n formFieldsData[i].FormField.value = '';\n formFieldsData[i].FormField.signatureType = '';\n this.pdfViewerBase.formFieldCollection[i].FormField.value = '';\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = '';\n }\n }\n this.pdfViewer.remove(actionObject.annotation);\n this.pdfViewer.renderDrawing();\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n }\n this.redoCollection.push(actionObject);\n this.updateToolbar();\n this.isUndoRedoAction = false;\n this.isUndoAction = false;\n }\n };\n /**\n * @private\n */\n Annotation.prototype.redo = function () {\n var actionObject = this.redoCollection.pop();\n if (actionObject) {\n // eslint-disable-next-line\n var shapeType = actionObject.annotation.shapeAnnotationType;\n this.isUndoRedoAction = true;\n switch (actionObject.action) {\n case 'Text Markup Property modified':\n if (this.textMarkupAnnotationModule) {\n // eslint-disable-next-line max-len\n actionObject.annotation = this.textMarkupAnnotationModule.undoRedoPropertyChange(actionObject.annotation, actionObject.pageIndex, actionObject.index, actionObject.modifiedProperty);\n }\n break;\n case 'Text Markup Added':\n case 'Text Markup Deleted':\n if (this.textMarkupAnnotationModule) {\n // eslint-disable-next-line max-len\n this.textMarkupAnnotationModule.redoTextMarkupAction(actionObject.annotation, actionObject.pageIndex, actionObject.index, actionObject.action);\n }\n break;\n case 'Drag':\n case 'Resize':\n if (isLineShapes(actionObject.annotation)) {\n this.pdfViewer.nodePropertyChange(\n // eslint-disable-next-line max-len\n actionObject.annotation, { bounds: actionObject.redoElement.bounds, vertexPoints: actionObject.redoElement.vertexPoints, leaderHeight: actionObject.redoElement.leaderHeight });\n }\n else {\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { bounds: actionObject.redoElement.bounds });\n }\n // eslint-disable-next-line max-len\n if (actionObject.annotation.measureType === 'Distance' || actionObject.annotation.measureType === 'Perimeter' || actionObject.annotation.measureType === 'Area' ||\n actionObject.annotation.measureType === 'Radius' || actionObject.annotation.measureType === 'Volume') {\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { notes: actionObject.redoElement.notes });\n this.updateCalibrateValues(actionObject.annotation);\n }\n if (actionObject.annotation.formFieldAnnotationType) {\n this.pdfViewer.formDesigner.updateHTMLElement(actionObject.annotation);\n }\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.pdfViewer.select([actionObject.annotation.id]);\n // eslint-disable-next-line max-len\n if (actionObject.annotation.shapeAnnotationType === 'Line' || actionObject.annotation.shapeAnnotationType === 'Rectangle' || actionObject.annotation.shapeAnnotationType === 'Ellipse' || actionObject.annotation.shapeAnnotationType === 'Polygon' || actionObject.annotation.shapeAnnotationType === 'LineWidthArrowHead'\n || actionObject.annotation.shapeAnnotationType === 'Radius' || actionObject.annotation.shapeAnnotationType === 'FreeText' || actionObject.annotation.shapeAnnotationType === 'HandWrittenSignature' || actionObject.annotation.shapeAnnotationType === 'SignatureText' || actionObject.annotation.shapeAnnotationType === 'SignatureImage' || actionObject.annotation.shapeAnnotationType === 'Ink') {\n this.modifyInCollections(actionObject.annotation, 'bounds');\n }\n break;\n case 'Addition':\n if (this.pdfViewer.formDesigner && actionObject.annotation.formFieldAnnotationType) {\n actionObject.redoElement.bounds.x = actionObject.redoElement.wrapper.bounds.x;\n actionObject.redoElement.bounds.y = actionObject.redoElement.wrapper.bounds.y;\n this.pdfViewer.formDesigner.drawFormField(actionObject.redoElement);\n }\n else {\n // eslint-disable-next-line max-len\n if (shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Polygon' || shapeType === 'Ellipse' || shapeType === 'Rectangle' || shapeType === 'Radius' || shapeType === 'Distance') {\n if (actionObject.annotation.measureType === '' || isNullOrUndefined(actionObject.annotation.measureType)) {\n shapeType = 'shape';\n this.shapeAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.duplicate);\n }\n else {\n shapeType = 'shape_measure';\n this.measureAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.duplicate);\n }\n }\n if (shapeType === 'FreeText') {\n this.freeTextAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.duplicate);\n }\n if (shapeType === 'Stamp') {\n this.stampAnnotationModule.updateDeleteItems(actionObject.annotation.pageIndex, actionObject.redoElement);\n }\n if (shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText' || shapeType === 'SignatureImage') {\n this.pdfViewerBase.signatureModule.addInCollection(actionObject.annotation.pageIndex, actionObject.duplicate);\n }\n if (shapeType === 'Ink') {\n this.inkAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.duplicate);\n }\n var addedAnnot = this.pdfViewer.add(actionObject.annotation);\n this.pdfViewer.select([actionObject.annotation.id]);\n if ((shapeType === 'FreeText' || addedAnnot.enableShapeLabel) && addedAnnot) {\n this.pdfViewer.nodePropertyChange(addedAnnot, {});\n }\n this.pdfViewer.renderDrawing(null, actionObject.annotation.pageIndex);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addAnnotationComments(actionObject.annotation.pageIndex, shapeType);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n var mobileAnnotationToolbar = document.getElementById(this.pdfViewer.element.id + '_propertyToolbar');\n if (mobileAnnotationToolbar && mobileAnnotationToolbar.children.length > 0) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbarCreated = false;\n this.pdfViewer.toolbarModule.annotationToolbarModule.createAnnotationToolbarForMobile();\n }\n }\n }\n break;\n case 'Delete':\n if (this.pdfViewer.formDesigner && actionObject.annotation.formFieldAnnotationType) {\n this.pdfViewer.formDesigner.deleteFormField(actionObject.redoElement.id, false);\n }\n else {\n var isUpdate = false;\n var sType = actionObject.annotation.shapeAnnotationType;\n // eslint-disable-next-line max-len\n if (shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Polygon' || shapeType === 'Ellipse' || shapeType === 'Rectangle' || shapeType === 'Radius' || shapeType === 'Distance') {\n if (actionObject.annotation.measureType === '' || isNullOrUndefined(actionObject.annotation.measureType)) {\n sType = 'shape';\n }\n else {\n sType = 'measure';\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, sType, 'delete');\n this.modifyInCollections(actionObject.annotation, 'delete');\n isUpdate = true;\n }\n if (shapeType === 'Stamp') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, sType, 'delete');\n this.stampAnnotationModule.updateSessionStorage(actionObject.annotation, null, 'delete');\n isUpdate = true;\n }\n if (shapeType === 'FreeText' || shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText' || shapeType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, sType, 'delete');\n this.modifyInCollections(actionObject.annotation, 'delete');\n }\n if (!isUpdate) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, sType, 'delete');\n }\n var formFieldObj = this.pdfViewer.nameTable[actionObject.annotation.id.split(\"_\")[0]];\n if (formFieldObj != null && (formFieldObj.formFieldAnnotationType === 'SignatureField' || formFieldObj.formFieldAnnotationType === 'InitialField')) {\n formFieldObj.wrapper.children.splice(formFieldObj.wrapper.children.indexOf(actionObject.annotation.wrapper.children[0]), 1);\n if (actionObject.annotation.shapeAnnotationType === \"SignatureText\")\n formFieldObj.wrapper.children.splice(formFieldObj.wrapper.children.indexOf(actionObject.annotation.wrapper.children[1]), 1);\n var key = actionObject.annotation.id.split('_')[0] + '_content';\n var data = null;\n if (this.pdfViewer.formDesignerModule) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n if (data) {\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key === key) {\n formFieldsData[i].FormField.value = '';\n formFieldsData[i].FormField.signatureType = '';\n this.pdfViewerBase.formFieldCollection[i].FormField.value = '';\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = '';\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n this.pdfViewer.clearSelection(actionObject.annotation.pageIndex);\n this.pdfViewer.remove(actionObject.annotation);\n this.pdfViewer.renderDrawing(null, actionObject.annotation.pageIndex);\n // eslint-disable-next-line\n var removeDiv = document.getElementById(actionObject.annotation.annotName);\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.remove();\n }\n }\n }\n break;\n case 'stampOpacity':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { opacity: actionObject.redoElement.opacity });\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n break;\n case 'Shape Stroke':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { strokeColor: actionObject.redoElement.strokeColor });\n this.modifyInCollections(actionObject.annotation, 'stroke');\n this.pdfViewer.renderDrawing();\n break;\n case 'Shape Fill':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fillColor: actionObject.redoElement.fillColor });\n this.modifyInCollections(actionObject.annotation, 'fill');\n this.pdfViewer.renderDrawing();\n break;\n case 'Shape Opacity':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { opacity: actionObject.redoElement.opacity });\n if (actionObject.annotation.shapeAnnotationType === 'StickyNotes') {\n this.stickyNotesAnnotationModule.updateOpacityValue(actionObject.annotation);\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n }\n else {\n this.modifyInCollections(actionObject.annotation, 'opacity');\n }\n this.pdfViewer.renderDrawing();\n break;\n case 'Shape Thickness':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { thickness: actionObject.redoElement.thickness });\n this.modifyInCollections(actionObject.annotation, 'thickness');\n this.pdfViewer.renderDrawing();\n break;\n case 'Line properties change':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, {\n // eslint-disable-next-line max-len\n fillColor: actionObject.redoElement.fillColor, strokeColor: actionObject.redoElement.strokeColor, opacity: actionObject.redoElement.opacity, thickness: actionObject.redoElement.thickness,\n sourceDecoraterShapes: this.getArrowType(actionObject.redoElement.lineHeadStart), taregetDecoraterShapes: this.getArrowType(actionObject.redoElement.lineHeadEnd),\n borderDashArray: actionObject.redoElement.borderDashArray, borderStyle: actionObject.redoElement.borderStyle\n });\n this.updateCollectionForLineProperty(actionObject.annotation);\n this.pdfViewer.renderDrawing();\n break;\n case 'Text Property Added':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.redoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n break;\n case 'Comments Property Added':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.redoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n break;\n case 'Status Property Added':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.redoAction(actionObject.annotation, actionObject.action);\n break;\n case 'Comments Reply Deleted':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.redoAction(actionObject.annotation, actionObject.action);\n break;\n case 'dynamicText Change':\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = true;\n actionObject.annotation.dynamicText = actionObject.redoElement.dynamicText;\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (annotation) {\n annotation.dynamicText = actionObject.redoElement.dynamicText;\n annotation.bounds.height = actionObject.redoElement.bounds.height;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.redoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n this.modifyInCollections(actionObject.annotation, 'dynamicText');\n if (annotation) {\n this.pdfViewer.nodePropertyChange(annotation, {});\n }\n else {\n this.pdfViewer.nodePropertyChange(actionObject.annotation, {});\n }\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = false;\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.pdfViewer.select([actionObject.annotation.id]);\n break;\n case 'fontColor':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fontColor: actionObject.redoElement.fontColor });\n this.modifyInCollections(actionObject.annotation, 'fontColor');\n this.pdfViewer.renderDrawing();\n break;\n case 'fontSize':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fontSize: actionObject.redoElement.fontSize });\n this.modifyInCollections(actionObject.annotation, 'fontSize');\n this.pdfViewer.renderDrawing();\n break;\n case 'textAlign':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { textAlign: actionObject.redoElement.textAlign });\n this.modifyInCollections(actionObject.annotation, 'textAlign');\n this.pdfViewer.renderDrawing();\n break;\n case 'textPropertiesChange':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { font: actionObject.redoElement.font });\n this.modifyInCollections(actionObject.annotation, 'textPropertiesChange');\n this.pdfViewer.renderDrawing();\n break;\n case 'Rotate':\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(actionObject.annotation.annotations[0], { bounds: actionObject.redoElement.bounds, rotateAngle: actionObject.redoElement.rotateAngle });\n this.modifyInCollections(actionObject.annotation.annotations[0], 'bounds');\n this.pdfViewer.renderDrawing();\n break;\n case 'FormDesigner Properties Change':\n if (actionObject.redoElement && actionObject.undoElement.isMultiline !== actionObject.redoElement.isMultiline) {\n this.undoRedoMultiline(actionObject.redoElement);\n }\n this.updateFormFieldPropertiesChanges(actionObject.redoElement.formFieldAnnotationType, actionObject.redoElement);\n break;\n case 'FormField Value Change':\n if (actionObject.annotation.formFieldAnnotationType) {\n if (actionObject.annotation.formFieldAnnotationType == \"RadioButton\") {\n this.updateFormFieldValueChange(actionObject.annotation.formFieldAnnotationType, actionObject.undoElement, true);\n this.updateFormFieldValueChange(actionObject.annotation.formFieldAnnotationType, actionObject.redoElement, false);\n }\n else {\n this.updateFormFieldValueChange(actionObject.annotation.formFieldAnnotationType, actionObject.annotation, actionObject.redoElement);\n }\n }\n else {\n var spanElement = document.getElementById(actionObject.annotation.id + \"_html_element\").children[0].children[0];\n spanElement.className = 'e-pdfviewer-signatureformfields-signature';\n var formFieldObj = this.pdfViewer.nameTable[actionObject.annotation.id.split(\"_\")[0]];\n var annotationObj = this.pdfViewer.nameTable[actionObject.annotation.id];\n formFieldObj.wrapper.children.push(annotationObj.wrapper.children[0]);\n if (actionObject.annotation.shapeAnnotationType === \"SignatureText\")\n formFieldObj.wrapper.children.push(annotationObj.wrapper.children[1]);\n var key = actionObject.annotation.id.split('_')[0] + '_content';\n var data = null;\n if (this.pdfViewer.formDesignerModule) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n if (data) {\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key === key) {\n if (actionObject.annotation.shapeAnnotationType === \"SignatureText\") {\n formFieldsData[i].FormField.signatureType = \"Text\";\n formFieldsData[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Text\";\n }\n else if (actionObject.annotation.shapeAnnotationType === \"SignatureImage\") {\n formFieldsData[i].FormField.signatureType = \"Image\";\n formFieldsData[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Image\";\n }\n else {\n formFieldsData[i].FormField.signatureType = \"Path\";\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Path\";\n var collectionData = processPathData(actionObject.annotation.data);\n var csData = splitArrayCollection(collectionData);\n formFieldsData[i].FormField.value = JSON.stringify(csData);\n this.pdfViewerBase.formFieldCollection[i].FormField.value = JSON.stringify(csData);\n }\n }\n }\n this.pdfViewer.add(actionObject.annotation);\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + actionObject.pageIndex);\n this.pdfViewer.renderDrawing(canvass, actionObject.pageIndex);\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n }\n if (actionObject.redoElement && actionObject.redoElement.modifiedDate !== undefined) {\n actionObject.annotation.modifiedDate = actionObject.redoElement.modifiedDate;\n }\n this.actionCollection.push(actionObject);\n this.updateToolbar();\n this.isUndoRedoAction = false;\n }\n };\n Annotation.prototype.undoRedoMultiline = function (element) {\n if (element.isMultiline && element.formFieldAnnotationType === 'Textbox') {\n this.pdfViewer.formDesignerModule.renderMultilineText(element, true);\n }\n else if (element.formFieldAnnotationType === 'Textbox') {\n this.pdfViewer.formDesignerModule.renderTextbox(element, true);\n }\n };\n Annotation.prototype.updateFormFieldValueChange = function (formFieldAnnotationType, annotation, value) {\n if (annotation) {\n var formFieldModel = this.pdfViewer.formDesigner.getFormField(annotation.id.split(\"_\")[0]);\n var data = null;\n if (this.pdfViewer.formDesignerModule) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n if (data) {\n var formFieldsData = JSON.parse(data);\n var index = this.pdfViewer.formDesigner.getFormFiledIndex(annotation.id.split('_')[0]);\n switch (formFieldAnnotationType) {\n case 'Textbox':\n case 'PasswordField':\n case 'RadioButton':\n case 'DropdownList':\n case 'ListBox':\n var inputElement = document.getElementById(annotation.id.split(\"_\")[0] + \"_content_html_element\").firstElementChild.firstElementChild;\n if (formFieldAnnotationType == 'Textbox' || formFieldAnnotationType == 'PasswordField') {\n formFieldModel.value = value;\n this.pdfViewer.formDesigner.updateValuePropertyChange(formFieldModel, inputElement, true, index, formFieldsData);\n }\n else if (formFieldAnnotationType == 'RadioButton') {\n formFieldModel.isSelected = value;\n this.pdfViewer.formDesigner.updateIsSelectedPropertyChange(formFieldModel, inputElement.firstElementChild, true, index, formFieldsData);\n }\n else if (formFieldAnnotationType == 'DropdownList' || formFieldAnnotationType == 'ListBox') {\n formFieldModel.selectedIndex = value;\n formFieldsData[index].FormField.selectedIndex = value;\n this.pdfViewerBase.formFieldCollection[index].FormField.selectedIndex = value;\n this.pdfViewer.nameTable[formFieldsData[index].Key.split(\"_\")[0]].selectedIndex = value;\n if (formFieldAnnotationType == 'ListBox') {\n for (var k = 0; k < inputElement.options.length; k++) {\n inputElement.options[k].selected = value.includes(k) ? true : false;\n }\n }\n else {\n inputElement.selectedIndex = value;\n }\n }\n break;\n case 'Checkbox':\n var checkboxDivElement = document.getElementById(annotation.id.split(\"_\")[0] + \"_content_html_element\").firstElementChild.firstElementChild.lastElementChild;\n formFieldModel.isChecked = value;\n this.pdfViewer.formDesigner.updateIsCheckedPropertyChange(formFieldModel, checkboxDivElement, true, index, formFieldsData);\n break;\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n };\n Annotation.prototype.updateFormFieldPropertiesChanges = function (formFieldAnnotationType, element) {\n switch (formFieldAnnotationType) {\n case 'Textbox':\n case 'PasswordField':\n this.pdfViewer.formDesigner.updateTextboxFormDesignerProperties(element, true);\n break;\n case 'Checkbox':\n this.pdfViewer.formDesigner.updateCheckboxFormDesignerProperties(element, true);\n break;\n case 'RadioButton':\n this.pdfViewer.formDesigner.updateRadioButtonDesignerProperties(element, true);\n break;\n case 'DropdownList':\n this.pdfViewer.formDesigner.updateDropdownFormDesignerProperties(element, true);\n break;\n case 'ListBox':\n this.pdfViewer.formDesigner.updateListBoxFormDesignerProperties(element, true);\n break;\n case 'SignatureField':\n case 'InitialField':\n this.pdfViewer.formDesigner.updateSignatureTextboxProperties(element, true);\n }\n };\n Annotation.prototype.updateCollectionForLineProperty = function (pdfAnnotationBase) {\n this.modifyInCollections(pdfAnnotationBase, 'fill');\n this.modifyInCollections(pdfAnnotationBase, 'stroke');\n this.modifyInCollections(pdfAnnotationBase, 'opacity');\n this.modifyInCollections(pdfAnnotationBase, 'thickness');\n this.modifyInCollections(pdfAnnotationBase, 'dashArray');\n this.modifyInCollections(pdfAnnotationBase, 'startArrow');\n this.modifyInCollections(pdfAnnotationBase, 'endArrow');\n };\n Annotation.prototype.updateToolbar = function (isAnnotationDelete) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateUndoRedoButtons();\n }\n if (this.actionCollection && this.actionCollection.length == 0) {\n this.pdfViewerBase.updateDocumentEditedProperty(false);\n }\n else {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n }\n if (isAnnotationDelete) {\n var isEdited = false;\n if (this.pdfViewer.annotationCollection && this.pdfViewer.annotationCollection.length > 0 && this.pdfViewer.signatureCollection && this.pdfViewer.signatureCollection.length > 0) {\n isEdited = true;\n }\n if (!isEdited && this.pdfViewer.isDocumentEdited) {\n this.pdfViewerBase.updateDocumentEditedProperty(false);\n }\n }\n };\n Annotation.prototype.createNote = function () {\n // eslint-disable-next-line max-len\n this.popupNote = createElement('div', { id: this.pdfViewer.element.id + '_annotation_note', className: 'e-pv-annotation-note', styles: 'display:none' });\n this.popupNoteAuthor = createElement('div', { id: this.pdfViewer.element.id + '_annotation_note_author', className: 'e-pv-annotation-note-author' });\n this.popupNote.appendChild(this.popupNoteAuthor);\n // eslint-disable-next-line max-len\n this.popupNoteContent = createElement('div', { id: this.pdfViewer.element.id + '_annotation_note_content', className: 'e-pv-annotation-note-content' });\n this.popupNote.appendChild(this.popupNoteContent);\n this.pdfViewerBase.mainContainer.appendChild(this.popupNote);\n };\n /**\n * @param event\n * @param color\n * @param author\n * @param note\n * @param type\n * @param event\n * @param color\n * @param author\n * @param note\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.showPopupNote = function (event, color, author, note, type) {\n var mainContainerPosition = this.pdfViewerBase.mainContainer.getBoundingClientRect();\n var popupNoteClientRect = this.popupNote.getBoundingClientRect();\n if (author) {\n this.popupNoteAuthor.textContent = author;\n }\n this.popupNoteContent.textContent = note;\n if (type === 'Highlight') {\n this.popupNote.style.backgroundColor = 'rgb(237, 232, 177)';\n }\n else if (type === 'Underline') {\n this.popupNote.style.backgroundColor = 'rgb(187, 241, 191)';\n }\n else if (type === 'Strikethrough') {\n this.popupNote.style.backgroundColor = 'rgb(242, 188, 207)';\n }\n this.popupNote.style.display = 'block';\n var topPosition = (event.pageY - mainContainerPosition.top + 5);\n var leftPosition = (event.pageX - mainContainerPosition.left + 5);\n if (leftPosition + popupNoteClientRect.width > mainContainerPosition.width) {\n leftPosition = leftPosition - popupNoteClientRect.width;\n }\n if (topPosition + popupNoteClientRect.height > mainContainerPosition.height) {\n topPosition = topPosition - popupNoteClientRect.height;\n }\n this.popupNote.style.top = topPosition + 'px';\n this.popupNote.style.left = leftPosition + 'px';\n };\n /**\n * @private\n */\n Annotation.prototype.hidePopupNote = function () {\n if (this.popupNote) {\n this.popupNote.style.display = 'none';\n }\n };\n Annotation.prototype.createTextMarkupPopup = function () {\n var _this = this;\n var elementId = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n this.popupElement = createElement('div', { id: elementId + '_popup_annotation_note', className: 'e-pv-annotation-popup-menu', styles: 'display:none' });\n var headerElement = createElement('div', { id: elementId + '_popup_header', className: 'e-pv-annotation-popup-header' });\n // eslint-disable-next-line max-len\n this.authorPopupElement = createElement('div', { id: elementId + '_popup_author', className: 'e-pv-annotation-popup-author' });\n headerElement.appendChild(this.authorPopupElement);\n // eslint-disable-next-line max-len\n var closeBtn = createElement('span', { id: elementId + '_popup_close', className: 'e-pv-annotation-popup-close e-pv-icon' });\n headerElement.appendChild(closeBtn);\n this.popupElement.appendChild(headerElement);\n // eslint-disable-next-line max-len\n this.modifiedDateElement = createElement('div', { id: elementId + '_popup_modified_time', className: 'e-pv-annotation-modified-time' });\n this.popupElement.appendChild(this.modifiedDateElement);\n // eslint-disable-next-line max-len\n var contentContainer = createElement('div', { id: elementId + '_popup_content_container', className: 'e-pv-annotation-popup-note-container' });\n this.noteContentElement = createElement('div', { id: elementId + '_popup_content', className: 'e-pv-annotation-popup-content' });\n this.noteContentElement.contentEditable = 'true';\n contentContainer.appendChild(this.noteContentElement);\n this.popupElement.appendChild(contentContainer);\n this.pdfViewerBase.viewerContainer.appendChild(this.popupElement);\n closeBtn.addEventListener('click', this.saveClosePopupMenu.bind(this));\n closeBtn.addEventListener('touchend', this.saveClosePopupMenu.bind(this));\n this.popupElement.addEventListener('mousedown', this.onPopupElementMoveStart.bind(this));\n this.popupElement.addEventListener('mousemove', this.onPopupElementMove.bind(this));\n window.addEventListener('mouseup', this.onPopupElementMoveEnd.bind(this));\n this.popupElement.addEventListener('touchstart', this.onPopupElementMoveStart.bind(this));\n this.popupElement.addEventListener('touchmove', this.onPopupElementMove.bind(this));\n window.addEventListener('touchend', this.onPopupElementMoveEnd.bind(this));\n this.noteContentElement.addEventListener('mousedown', function () {\n _this.noteContentElement.focus();\n });\n };\n // eslint-disable-next-line\n Annotation.prototype.onPopupElementMoveStart = function (event) {\n if (event.type === 'touchstart') {\n event = event.changedTouches[0];\n }\n if ((event.target.id !== (this.noteContentElement.id) || !(event.target.contains(this.noteContentElement.childNodes[0])))) {\n this.isPopupMenuMoved = true;\n var popupElementClientRect = this.popupElement.getBoundingClientRect();\n this.clientX = event.clientX - popupElementClientRect.left;\n // eslint-disable-next-line max-len\n this.clientY = (event.clientY - popupElementClientRect.top) + (this.pdfViewerBase.pageSize[this.currentAnnotPageNumber].top * this.pdfViewerBase.getZoomFactor());\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.onPopupElementMove = function (event) {\n if (event.type === 'touchmove') {\n event = event.changedTouches[0];\n }\n // eslint-disable-next-line max-len\n if (this.isPopupMenuMoved && (event.target.id !== (this.noteContentElement.id) || !(event.target.contains(this.noteContentElement.childNodes[0])))) {\n var left = (event.clientX - this.clientX) + parseFloat(this.popupElement.style.left);\n var top_1 = ((event.clientY - this.clientY) + parseFloat(this.popupElement.style.top));\n this.clientX = event.clientX;\n this.clientY = event.clientY;\n var clientPosition = this.popupElement.getBoundingClientRect();\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + this.currentAnnotPageNumber);\n // eslint-disable-next-line max-len\n if (left > parseFloat(pageDiv.style.left) && (left + clientPosition.width) < (parseFloat(pageDiv.style.left) + parseFloat(pageDiv.style.width))) {\n this.popupElement.style.left = (left) + 'px';\n }\n else {\n this.popupElement.style.left = parseFloat(this.popupElement.style.left) + 'px';\n }\n // eslint-disable-next-line max-len\n if (top_1 > parseFloat(pageDiv.style.top) && (top_1 + clientPosition.height) < (parseFloat(pageDiv.style.top) + parseFloat(pageDiv.style.height))) {\n this.popupElement.style.top = (top_1) + 'px';\n }\n else {\n this.popupElement.style.top = parseFloat(this.popupElement.style.top) + 'px';\n }\n }\n };\n Annotation.prototype.onPopupElementMoveEnd = function () {\n this.isPopupMenuMoved = false;\n };\n Annotation.prototype.saveClosePopupMenu = function () {\n if (this.textMarkupAnnotationModule) {\n this.textMarkupAnnotationModule.saveNoteContent(this.currentAnnotPageNumber, this.noteContentElement.innerText);\n }\n this.closePopupMenu();\n };\n /**\n * @private\n */\n Annotation.prototype.closePopupMenu = function () {\n if (this.popupElement) {\n this.popupElement.parentElement.removeChild(this.popupElement);\n this.popupElement = null;\n this.isPopupNoteVisible = false;\n }\n };\n /**\n * @param event\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.showAnnotationPopup = function (event) {\n if (this.textMarkupAnnotationModule) {\n this.currentAnnotPageNumber = this.getEventPageNumber(event);\n // eslint-disable-next-line max-len\n if (this.textMarkupAnnotationModule && (event.target !== (this.noteContentElement) || (event.target.contains(this.noteContentElement.childNodes[0])))) {\n this.hidePopupNote();\n if (!this.popupElement) {\n this.createTextMarkupPopup();\n this.popupElement.style.display = 'block';\n this.authorPopupElement.textContent = this.textMarkupAnnotationModule.currentTextMarkupAnnotation.author;\n // eslint-disable-next-line max-len\n this.modifiedDateElement.textContent = this.getProperDate(this.textMarkupAnnotationModule.currentTextMarkupAnnotation.modifiedDate);\n this.noteContentElement.textContent = this.textMarkupAnnotationModule.currentTextMarkupAnnotation.note;\n var clientPosition = this.popupElement.getBoundingClientRect();\n // eslint-disable-next-line max-len\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + this.currentAnnotPageNumber);\n var canvasPosition = pageDiv.getBoundingClientRect();\n var topPosition = ((event.clientY) - canvasPosition.top) + parseFloat(pageDiv.style.top);\n var leftPosition = (event.clientX);\n if ((leftPosition + clientPosition.width) > (parseFloat(pageDiv.style.left) + parseFloat(pageDiv.style.width))) {\n this.popupElement.style.left = (leftPosition - clientPosition.width) + 'px';\n }\n else {\n this.popupElement.style.left = leftPosition + 'px';\n }\n if ((topPosition + clientPosition.height) > (parseFloat(pageDiv.style.top) + parseFloat(pageDiv.style.height))) {\n this.popupElement.style.top = (topPosition - clientPosition.height) + 'px';\n }\n else {\n this.popupElement.style.top = topPosition + 'px';\n }\n this.isPopupNoteVisible = true;\n }\n }\n }\n };\n /**\n * @param args\n * @param isOpacity\n * @param args\n * @param isOpacity\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.modifyOpacity = function (args, isOpacity) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n var opacityValue = 1;\n if (isOpacity) {\n opacityValue = args / 100;\n }\n else {\n opacityValue = args.value / 100;\n }\n if (currentAnnotation.opacity !== opacityValue) {\n redoClonedObject.opacity = opacityValue;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { opacity: opacityValue });\n if (currentAnnotation.shapeAnnotationType === 'StickyNotes') {\n this.stickyNotesAnnotationModule.updateOpacityValue(currentAnnotation);\n }\n else {\n this.modifyInCollections(currentAnnotation, 'opacity');\n }\n if (currentAnnotation.shapeAnnotationType === 'HandWrittenSignature' || currentAnnotation.shapeAnnotationType === 'SignatureImage' || currentAnnotation.shapeAnnotationType === 'SignatureText') {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignaturePropertiesChange(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, false, true, false, clonedObject.opacity, redoClonedObject.opacity);\n }\n else {\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Opacity', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n }\n };\n /**\n * @param currentColor\n * @private\n */\n Annotation.prototype.modifyFontColor = function (currentColor) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.fontColor = currentColor;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { fontColor: currentColor });\n this.modifyInCollections(currentAnnotation, 'fontColor');\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'fontColor', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n };\n /**\n * @param currentValue\n * @private\n */\n Annotation.prototype.modifyFontFamily = function (currentValue) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.fontFamily = currentValue;\n if (this.pdfViewer.freeTextSettings.enableAutoFit) {\n this.updateFontFamilyRenderSize(currentAnnotation, currentValue);\n }\n else {\n this.pdfViewer.nodePropertyChange(currentAnnotation, { fontFamily: currentValue });\n }\n this.modifyInCollections(currentAnnotation, 'fontFamily');\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'fontFamily', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n };\n /**\n * @param currentValue\n * @private\n */\n Annotation.prototype.modifyFontSize = function (currentValue) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.fontSize = currentValue;\n var freeTextAnnotation = this.freeTextAnnotationModule;\n var x = currentAnnotation.bounds.x;\n var y = currentAnnotation.bounds.y;\n currentAnnotation.fontSize = currentValue;\n if (freeTextAnnotation && !freeTextAnnotation.isNewFreeTextAnnot && currentAnnotation.dynamicText !== '') {\n freeTextAnnotation.addInuptElemet({ x: x, y: y }, currentAnnotation);\n if (currentAnnotation) {\n if (currentAnnotation.previousFontSize > currentValue) {\n freeTextAnnotation.inputBoxElement.style.height = 'auto';\n freeTextAnnotation.inputBoxElement.style.height = freeTextAnnotation.inputBoxElement.scrollHeight + 5 + 'px';\n }\n var inputEleHeight = parseFloat(freeTextAnnotation.inputBoxElement.style.height);\n var inputEleWidth = parseFloat(freeTextAnnotation.inputBoxElement.style.width);\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n inputEleWidth = ((inputEleWidth) / zoomFactor);\n inputEleHeight = ((inputEleHeight) / zoomFactor);\n var heightDiff = (inputEleHeight - currentAnnotation.bounds.height);\n var y_1 = undefined;\n if (heightDiff > 0) {\n y_1 = currentAnnotation.wrapper.offsetY + (heightDiff / 2);\n y_1 = y_1 > 0 ? y_1 : undefined;\n }\n else {\n heightDiff = Math.abs(heightDiff);\n y_1 = currentAnnotation.wrapper.offsetY - (heightDiff / 2);\n y_1 = y_1 > 0 ? y_1 : undefined;\n }\n var widthDiff = (inputEleWidth - currentAnnotation.bounds.width);\n var x_1 = undefined;\n if (widthDiff > 0) {\n x_1 = currentAnnotation.wrapper.offsetX + (widthDiff / 2);\n x_1 = x_1 > 0 ? x_1 : undefined;\n }\n else {\n widthDiff = Math.abs(widthDiff);\n x_1 = currentAnnotation.wrapper.offsetX - (widthDiff / 2);\n }\n currentAnnotation.bounds.width = inputEleWidth;\n currentAnnotation.bounds.height = inputEleHeight;\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(currentAnnotation, { fontSize: currentValue, bounds: { width: currentAnnotation.bounds.width, height: currentAnnotation.bounds.height, y: y_1, x: x_1 } });\n this.pdfViewer.renderSelector(currentAnnotation.pageIndex, this.pdfViewer.annotationSelectorSettings);\n currentAnnotation.previousFontSize = currentValue;\n }\n this.modifyInCollections(currentAnnotation, 'fontSize');\n this.modifyInCollections(currentAnnotation, 'bounds');\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'fontSize', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n }\n };\n /**\n * @param currentValue\n * @private\n */\n Annotation.prototype.modifyTextAlignment = function (currentValue) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.textAlign = currentValue;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { textAlign: currentValue });\n this.modifyInCollections(currentAnnotation, 'textAlign');\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'textAlign', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n };\n /**\n * @param fontInfo\n * @param action\n * @private\n */\n Annotation.prototype.modifyTextProperties = function (fontInfo, action) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n if (action === 'bold') {\n redoClonedObject.font.isBold = fontInfo.isBold;\n }\n else if (action === 'italic') {\n redoClonedObject.font.isItalic = fontInfo.isItalic;\n }\n else if (action === 'underline') {\n redoClonedObject.font.isUnderline = fontInfo.isUnderline;\n if (redoClonedObject.font.isUnderline && redoClonedObject.font.isStrikeout) {\n redoClonedObject.font.isStrikeout = false;\n }\n }\n else if (action === 'strikeout') {\n redoClonedObject.font.isStrikeout = fontInfo.isStrikeout;\n if (redoClonedObject.font.isUnderline && redoClonedObject.font.isStrikeout) {\n redoClonedObject.font.isUnderline = false;\n }\n }\n this.pdfViewer.nodePropertyChange(currentAnnotation, { font: fontInfo });\n this.modifyInCollections(currentAnnotation, 'textPropertiesChange');\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'textPropertiesChange', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n };\n /**\n * @param thicknessValue\n * @private\n */\n Annotation.prototype.modifyThickness = function (thicknessValue) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n if (currentAnnotation.thickness !== thicknessValue) {\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.thickness = thicknessValue;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { thickness: thicknessValue });\n this.modifyInCollections(currentAnnotation, 'thickness');\n if (currentAnnotation.shapeAnnotationType === 'HandWrittenSignature' || currentAnnotation.shapeAnnotationType === 'SignatureText' || currentAnnotation.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignaturePropertiesChange(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, false, false, true, clonedObject.thickness, redoClonedObject.thickness);\n }\n else {\n this.triggerAnnotationPropChange(currentAnnotation, false, false, true, false);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Thickness', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n }\n };\n /**\n * @param color\n * @private\n */\n Annotation.prototype.modifyStrokeColor = function (color) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.strokeColor = color;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { strokeColor: color });\n this.modifyInCollections(currentAnnotation, 'stroke');\n if (currentAnnotation.shapeAnnotationType === 'HandWrittenSignature' || currentAnnotation.shapeAnnotationType === 'SignatureText' || currentAnnotation.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignaturePropertiesChange(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, true, false, false, clonedObject.strokeColor, redoClonedObject.strokeColor);\n }\n else {\n this.triggerAnnotationPropChange(currentAnnotation, false, true, false, false);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Stroke', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n };\n /**\n * @param color\n * @private\n */\n Annotation.prototype.modifyFillColor = function (color) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.fillColor = color;\n this.pdfViewer.nodePropertyChange(this.pdfViewer.selectedItems.annotations[0], { fillColor: color });\n this.modifyInCollections(currentAnnotation, 'fill');\n this.triggerAnnotationPropChange(currentAnnotation, true, false, false, false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Fill', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n };\n /**\n * @param dynamicText\n * @param annotName\n * @private\n */\n Annotation.prototype.modifyDynamicTextValue = function (dynamicText, annotName) {\n var currentAnnotation = null;\n currentAnnotation = this.pdfViewer.selectedItems.annotations.filter(function (s) { return s.annotName === annotName; })[0];\n if (currentAnnotation) {\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n currentAnnotation.dynamicText = dynamicText;\n redoClonedObject.dynamicText = dynamicText;\n if (clonedObject.dynamicText === '') {\n clonedObject.dynamicText = this.freeTextAnnotationModule.previousText;\n }\n this.pdfViewer.nodePropertyChange(this.pdfViewer.selectedItems.annotations[0], { dynamicText: dynamicText });\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'dynamicText Change', '', clonedObject, redoClonedObject);\n this.modifyInCollections(currentAnnotation, 'dynamicText');\n this.pdfViewer.renderDrawing();\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.modifyInCollections = function (annotationBase, property) {\n // eslint-disable-next-line\n var returnObj;\n if (annotationBase.measureType === '' || isNullOrUndefined(annotationBase.measureType)) {\n if (annotationBase.shapeAnnotationType === 'FreeText') {\n returnObj = this.freeTextAnnotationModule.modifyInCollection(property, annotationBase.pageIndex, annotationBase);\n }\n else if (annotationBase.shapeAnnotationType === 'HandWrittenSignature' || annotationBase.shapeAnnotationType === 'SignatureText' || annotationBase.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n returnObj = this.pdfViewerBase.signatureModule.modifySignatureCollection(property, annotationBase.pageIndex, annotationBase);\n }\n else if (annotationBase.shapeAnnotationType === 'Stamp') {\n returnObj = this.stampAnnotationModule.modifyInCollection(property, annotationBase.pageIndex, annotationBase);\n }\n else if (annotationBase.shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line max-len\n returnObj = this.inkAnnotationModule.modifySignatureInkCollection(property, annotationBase.pageIndex, annotationBase);\n }\n else {\n returnObj = this.shapeAnnotationModule.modifyInCollection(property, annotationBase.pageIndex, annotationBase);\n }\n }\n else if (annotationBase.measureType === 'Distance' || annotationBase.measureType === 'Perimeter' ||\n annotationBase.measureType === 'Radius' || annotationBase.measureType === 'Area' || annotationBase.measureType === 'Volume') {\n returnObj = this.measureAnnotationModule.modifyInCollection(property, annotationBase.pageIndex, annotationBase);\n }\n if (this.isUndoRedoAction) {\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(annotationBase, null, true);\n if (this.isUndoAction) {\n annotationBase.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n }\n }\n else {\n if (property !== 'bounds') {\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(annotationBase);\n }\n }\n return returnObj;\n };\n /**\n * @private\n */\n Annotation.prototype.createPropertiesWindow = function () {\n var _this = this;\n if (!isBlazor()) {\n var elementID = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n var dialogDiv = createElement('div', { id: elementID + '_properties_window', className: 'e-pv-properties-window' });\n var appearanceTab = this.createAppearanceTab();\n this.pdfViewerBase.pageContainer.appendChild(dialogDiv);\n this.propertiesDialog = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true, header: this.pdfViewer.localeObj.getConstant('Line Properties'),\n target: this.pdfViewer.element, content: appearanceTab, close: function () {\n _this.destroyPropertiesWindow();\n }\n });\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.propertiesDialog.buttons = [\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.onOkClicked.bind(this) },\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.onCancelClicked.bind(this) }\n ];\n }\n else {\n this.propertiesDialog.buttons = [\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.onCancelClicked.bind(this) },\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.onOkClicked.bind(this) }\n ];\n }\n if (this.pdfViewer.enableRtl) {\n this.propertiesDialog.enableRtl = true;\n }\n this.propertiesDialog.appendTo(dialogDiv);\n if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line') {\n // eslint-disable-next-line\n var fillColor = document.getElementById(this.pdfViewer.element.id + '_properties_fill_color');\n fillColor.disabled = true;\n }\n // eslint-disable-next-line max-len\n this.startArrowDropDown.content = this.createContent(this.getArrowString(this.pdfViewer.selectedItems.annotations[0].sourceDecoraterShapes)).outerHTML;\n this.endArrowDropDown.content = this.createContent(this.getArrowString(this.pdfViewer.selectedItems.annotations[0].taregetDecoraterShapes)).outerHTML;\n this.thicknessBox.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeWidth;\n this.fillColorPicker.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill;\n this.refreshColorPicker(this.fillColorPicker);\n this.strokeColorPicker.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor;\n this.refreshColorPicker(this.strokeColorPicker);\n this.updateColorInIcon(this.fillDropDown.element, this.fillColorPicker.value);\n this.updateColorInIcon(this.strokeDropDown.element, this.strokeColorPicker.value);\n this.opacitySlider.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.opacity * 100;\n this.updateOpacityIndicator();\n // eslint-disable-next-line\n if (parseInt(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray) >= 3) {\n this.lineStyleDropDown.content = this.createDropDownContent('dashed').outerHTML;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray === '2') {\n this.lineStyleDropDown.content = this.createDropDownContent('dotted').outerHTML;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray === '0') {\n this.lineStyleDropDown.content = this.createDropDownContent('solid').outerHTML;\n }\n this.selectedLineStyle = this.pdfViewer.selectedItems.annotations[0].borderStyle;\n this.selectedLineDashArray = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray;\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance') {\n this.leaderLengthBox.value = this.pdfViewer.selectedItems.annotations[0].leaderHeight;\n }\n }\n else {\n var opacityValue = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.opacity * 100;\n var lineStartElement = this.getArrowString(this.pdfViewer.selectedItems.annotations[0].sourceDecoraterShapes);\n var lineEndElement = this.getArrowString(this.pdfViewer.selectedItems.annotations[0].taregetDecoraterShapes);\n var lineStyleElement = void 0;\n // eslint-disable-next-line\n if (parseInt(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray) >= 3) {\n lineStyleElement = 'Dashed';\n }\n else if (this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray === '2') {\n lineStyleElement = 'Dotted';\n }\n else if (this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray === '0') {\n lineStyleElement = 'Solid';\n }\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenPropertiesDialog', opacityValue, lineStartElement, lineEndElement, lineStyleElement);\n }\n };\n Annotation.prototype.updatePropertiesWindowInBlazor = function () {\n // eslint-disable-next-line\n var thicknessElement = document.querySelector('#' + this.pdfViewer.element.id + '_line_thickness');\n // eslint-disable-next-line\n var fillColorElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_fill_color_button');\n // eslint-disable-next-line\n var strokeColorElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_stroke_color_button');\n // eslint-disable-next-line\n var leaderLengthElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_leader_length');\n thicknessElement.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeWidth;\n fillColorElement.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill;\n strokeColorElement.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor;\n this.onStrokeColorChange(strokeColorElement.value);\n this.onFillColorChange(fillColorElement.value);\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance') {\n // eslint-disable-next-line\n leaderLengthElement.value = parseInt(this.pdfViewer.selectedItems.annotations[0].leaderHeight.toString());\n }\n };\n Annotation.prototype.destroyPropertiesWindow = function () {\n if (this.strokeColorPicker) {\n this.strokeColorPicker.destroy();\n this.strokeColorPicker = null;\n }\n if (this.fillColorPicker) {\n this.fillColorPicker.destroy();\n this.fillColorPicker = null;\n }\n if (this.endArrowDropDown) {\n this.endArrowDropDown.destroy();\n this.endArrowDropDown = null;\n }\n if (this.startArrowDropDown) {\n this.startArrowDropDown.destroy();\n this.startArrowDropDown = null;\n }\n if (this.opacitySlider) {\n this.opacitySlider.destroy();\n this.opacitySlider = null;\n }\n if (this.thicknessBox) {\n this.thicknessBox.destroy();\n this.thicknessBox = null;\n }\n if (this.lineStyleDropDown) {\n this.lineStyleDropDown.destroy();\n this.lineStyleDropDown = null;\n }\n if (this.leaderLengthBox) {\n this.leaderLengthBox.destroy();\n this.leaderLengthBox = null;\n }\n if (this.propertiesDialog) {\n this.propertiesDialog.destroy();\n this.propertiesDialog = null;\n }\n var dialogElement = this.pdfViewerBase.getElement('_properties_window');\n if (dialogElement) {\n dialogElement.parentElement.removeChild(dialogElement);\n }\n };\n Annotation.prototype.refreshColorPicker = function (colorPick) {\n colorPick.setProperties({ 'value': colorPick.value }, true);\n colorPick.refresh();\n };\n Annotation.prototype.createAppearanceTab = function () {\n var _this = this;\n var elementID = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n var items = [{ text: this.pdfViewer.localeObj.getConstant('None') }, { text: this.pdfViewer.localeObj.getConstant('Open Arrow') }, { text: this.pdfViewer.localeObj.getConstant('Closed Arrow') },\n { text: this.pdfViewer.localeObj.getConstant('Round Arrow') }, { text: this.pdfViewer.localeObj.getConstant('Square Arrow') }, { text: this.pdfViewer.localeObj.getConstant('Diamond Arrow') }];\n // eslint-disable-next-line max-len\n var appearanceDiv = createElement('div', { id: elementID + '_properties_appearance' });\n var lineStyleContainer = createElement('div', { className: 'e-pv-properties-line-style-prop' });\n appearanceDiv.appendChild(lineStyleContainer);\n // eslint-disable-next-line max-len\n var lineHeadStartElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Start Arrow'), lineStyleContainer, 'text', 'button', true, 'e-pv-properties-line-start', elementID + '_properties_line_start');\n // eslint-disable-next-line max-len\n this.startArrowDropDown = new DropDownButton({ items: items, cssClass: 'e-pv-properties-line-start', select: this.onStartArrowHeadStyleSelect.bind(this) }, lineHeadStartElement);\n var lineHeadEndElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('End Arrow'), lineStyleContainer, 'text', 'button', true, 'e-pv-properties-line-end', elementID + '_properties_line_end');\n // eslint-disable-next-line max-len\n var borderStyleContainer = createElement('div', { className: 'e-pv-properties-border-style' });\n appearanceDiv.appendChild(borderStyleContainer);\n // eslint-disable-next-line max-len\n this.endArrowDropDown = new DropDownButton({ items: items, cssClass: 'e-pv-properties-line-end', select: this.onEndArrowHeadStyleSelect.bind(this) }, lineHeadEndElement);\n var lineStyleElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Line Style'), borderStyleContainer, 'text', 'button', true, 'e-pv-properties-line-style', elementID + '_properties_line_style');\n var dropDownTarget = this.createStyleList();\n // eslint-disable-next-line max-len\n this.lineStyleDropDown = new DropDownButton({ cssClass: 'e-pv-properties-line-style', target: dropDownTarget }, lineStyleElement);\n // eslint-disable-next-line max-len\n var thicknessElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Line Thickness'), borderStyleContainer, 'text', 'input', true, 'e-pv-properties-line-thickness', elementID + '_properties_thickness');\n this.thicknessBox = new NumericTextBox({ value: 0, format: '## pt', cssClass: 'e-pv-properties-line-thickness', min: 0, max: 12 }, thicknessElement);\n var colorStyleContainer = createElement('div', { className: 'e-pv-properties-color-style' });\n appearanceDiv.appendChild(colorStyleContainer);\n // eslint-disable-next-line max-len\n var fillColorElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Fill Color'), colorStyleContainer, 'color', 'button', true, 'e-pv-properties-line-fill-color', elementID + '_properties_fill_color');\n this.fillColorPicker = this.createColorPicker(elementID + '_properties_fill_color', true);\n this.fillColorPicker.change = function (args) {\n var currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n _this.fillDropDown.toggle();\n _this.updateColorInIcon(_this.fillDropDown.element, currentColor);\n };\n // eslint-disable-next-line max-len\n this.fillDropDown = this.createDropDownButton(fillColorElement, 'e-pv-properties-fill-color-icon', this.fillColorPicker.element.parentElement);\n this.fillDropDown.beforeOpen = this.onFillDropDownBeforeOpen.bind(this);\n this.fillDropDown.open = function () {\n _this.fillColorPicker.refresh();\n };\n // eslint-disable-next-line max-len\n var strokeColorElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Line Color'), colorStyleContainer, 'color', 'button', true, 'e-pv-properties-line-stroke-color', elementID + '_properties_stroke_color');\n this.strokeColorPicker = this.createColorPicker(elementID + '_properties_stroke_color', false);\n this.strokeColorPicker.change = function (args) {\n var currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n _this.strokeDropDown.toggle();\n _this.updateColorInIcon(_this.strokeDropDown.element, currentColor);\n };\n // eslint-disable-next-line max-len\n this.strokeDropDown = this.createDropDownButton(strokeColorElement, 'e-pv-properties-stroke-color-icon', this.strokeColorPicker.element.parentElement);\n this.strokeDropDown.beforeOpen = this.onStrokeDropDownBeforeOpen.bind(this);\n this.strokeDropDown.open = function () {\n _this.strokeColorPicker.refresh();\n };\n var opacityContainer = createElement('div', { className: 'e-pv-properties-opacity-style' });\n appearanceDiv.appendChild(opacityContainer);\n // eslint-disable-next-line max-len\n var opacityElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Opacity'), opacityContainer, '', 'div', true, 'e-pv-properties-line-opacity', elementID + '_properties_opacity');\n this.opacitySlider = new Slider({\n type: 'MinRange', max: 100, min: 0, cssClass: 'e-pv-properties-line-opacity', change: function () {\n _this.updateOpacityIndicator();\n }\n }, opacityElement);\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance') {\n // eslint-disable-next-line max-len\n var lineLengthElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Leader Length'), opacityContainer, 'text', 'input', true, 'e-pv-properties-line-leader-length', elementID + '_properties_leader_length');\n this.leaderLengthBox = new NumericTextBox({ value: 0, format: '## pt', cssClass: 'e-pv-properties-line-leader-length', min: 0, max: 100 }, lineLengthElement);\n }\n return appearanceDiv;\n };\n Annotation.prototype.createContent = function (text) {\n var divElement = createElement('div', { className: 'e-pv-properties-line-style-content' });\n divElement.textContent = text;\n return divElement;\n };\n Annotation.prototype.onStrokeDropDownBeforeOpen = function () {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.strokeColorPicker.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor;\n }\n this.strokeColorPicker.refresh();\n };\n Annotation.prototype.onFillDropDownBeforeOpen = function () {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.fillColorPicker.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor;\n }\n this.fillColorPicker.refresh();\n };\n Annotation.prototype.createStyleList = function () {\n var _this = this;\n var ulElement = createElement('ul');\n document.body.appendChild(ulElement);\n var solidLi = this.createListForStyle('solid');\n solidLi.addEventListener('click', function () {\n _this.setThickness('0', 'solid');\n });\n ulElement.appendChild(solidLi);\n var dottedLi = this.createListForStyle('dotted');\n dottedLi.addEventListener('click', function () {\n _this.setThickness('2', 'dotted');\n });\n ulElement.appendChild(dottedLi);\n var dashedLi = this.createListForStyle('dashed');\n dashedLi.addEventListener('click', function () {\n _this.setThickness('3', 'dashed');\n });\n ulElement.appendChild(dashedLi);\n return ulElement;\n };\n Annotation.prototype.createColorPicker = function (idString, isNoColor) {\n var inputElement = createElement('input', { id: idString + '_target' });\n document.body.appendChild(inputElement);\n var colorPicker = new ColorPicker({\n inline: true, mode: 'Palette', enableOpacity: false, value: '#000000', showButtons: false, modeSwitcher: false,\n noColor: isNoColor\n });\n if (this.pdfViewer.enableRtl) {\n colorPicker.enableRtl = true;\n }\n colorPicker.appendTo(inputElement);\n return colorPicker;\n };\n Annotation.prototype.createDropDownButton = function (element, iconClass, target) {\n // eslint-disable-next-line max-len\n var dropDownButton = new DropDownButton({ iconCss: iconClass + ' e-pv-icon', target: target });\n if (this.pdfViewer.enableRtl) {\n dropDownButton.enableRtl = true;\n }\n dropDownButton.appendTo(element);\n return dropDownButton;\n };\n Annotation.prototype.updateColorInIcon = function (element, color) {\n element.childNodes[0].style.borderBottomColor = color;\n };\n /**\n * @param color\n * @private\n */\n Annotation.prototype.onFillColorChange = function (color) {\n // eslint-disable-next-line\n var colorElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_fill_color_button');\n if (color !== 'transparent') {\n colorElement.children[0].style.borderBottomColor = color;\n }\n };\n /**\n * @param color\n * @private\n */\n Annotation.prototype.onStrokeColorChange = function (color) {\n // eslint-disable-next-line\n var colorElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_stroke_color_button');\n if (color !== 'transparent') {\n colorElement.children[0].style.borderBottomColor = color;\n }\n };\n Annotation.prototype.setThickness = function (value, style, isBlazor) {\n if (!isBlazor) {\n this.lineStyleDropDown.content = this.createDropDownContent(style).outerHTML;\n }\n this.selectedLineDashArray = value;\n if (value === '0') {\n this.selectedLineStyle = 'Solid';\n }\n else if (value === '2' || value === '3') {\n this.selectedLineStyle = 'Dashed';\n }\n };\n Annotation.prototype.createDropDownContent = function (style) {\n var divElement = createElement('div', { className: 'e-pv-line-styles-content-container' });\n // eslint-disable-next-line max-len\n var spanElement = createElement('span', { className: 'e-pv-line-styles-content', styles: 'border-bottom-style:' + style });\n divElement.appendChild(spanElement);\n return divElement;\n };\n Annotation.prototype.createListForStyle = function (style) {\n var liElement = createElement('li', { className: 'e-menu-item' });\n var divElement = createElement('div', { className: 'e-pv-line-styles-container' });\n // eslint-disable-next-line max-len\n var spanElement = createElement('span', { className: 'e-pv-line-styles-item', styles: 'border-bottom-style:' + style });\n divElement.appendChild(spanElement);\n liElement.appendChild(divElement);\n return liElement;\n };\n Annotation.prototype.onStartArrowHeadStyleSelect = function (args) {\n this.startArrowDropDown.content = this.createContent(args.item.text).outerHTML;\n };\n Annotation.prototype.onEndArrowHeadStyleSelect = function (args) {\n this.endArrowDropDown.content = this.createContent(args.item.text).outerHTML;\n };\n // eslint-disable-next-line max-len\n Annotation.prototype.createInputElement = function (labelText, parentElement, inputType, input, isLabelNeeded, className, idString) {\n var container = createElement('div', { id: idString + '_container', className: className + '-container' });\n if (isLabelNeeded) {\n var label = createElement('div', { id: idString + '_label', className: className + '-label' });\n label.textContent = labelText;\n container.appendChild(label);\n }\n if (this.pdfViewer.localeObj.getConstant('Opacity') === labelText) {\n this.opacityIndicator = createElement('span', { className: 'e-pv-properties-opacity-indicator' });\n container.appendChild(this.opacityIndicator);\n }\n var textBoxInput = createElement(input, { id: idString });\n if (input === 'input') {\n textBoxInput.type = inputType;\n }\n container.appendChild(textBoxInput);\n parentElement.appendChild(container);\n return textBoxInput;\n };\n Annotation.prototype.updateOpacityIndicator = function () {\n this.opacityIndicator.textContent = this.opacitySlider.value + '%';\n };\n /**\n * @private\n */\n Annotation.prototype.onOkClicked = function (opacityValue) {\n var startArrow;\n var endArrow;\n var thickness;\n var strokeColor;\n var fillColor;\n var opacity;\n if (!isBlazor()) {\n startArrow = this.getArrowTypeFromDropDown(this.startArrowDropDown.content);\n endArrow = this.getArrowTypeFromDropDown(this.endArrowDropDown.content);\n thickness = this.thicknessBox.value;\n strokeColor = this.strokeColorPicker.getValue(this.strokeColorPicker.value, 'hex');\n strokeColor = (strokeColor === '') ? '#ffffff00' : strokeColor;\n fillColor = this.fillColorPicker.getValue(this.fillColorPicker.value, 'hex');\n // eslint-disable-next-line max-len\n fillColor = (fillColor === '' || fillColor === '#transp' || this.fillColorPicker.value === '#ffffff00') ? '#ffffff00' : fillColor;\n opacity = this.opacitySlider.value / 100;\n }\n else {\n // eslint-disable-next-line\n var lineStartElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_line_start');\n // eslint-disable-next-line\n var lineEndElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_line_end');\n // eslint-disable-next-line\n var thicknessElement = document.querySelector('#' + this.pdfViewer.element.id + '_line_thickness');\n // eslint-disable-next-line\n var lineStyleElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_style');\n // eslint-disable-next-line\n var fillColorElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_fill_color_button');\n // eslint-disable-next-line\n var strokeColorElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_stroke_color_button');\n // eslint-disable-next-line\n var opacityElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_opacity');\n startArrow = this.getArrowTypeFromDropDown(lineStartElement.value, true);\n endArrow = this.getArrowTypeFromDropDown(lineEndElement.value, true);\n // eslint-disable-next-line\n thickness = parseInt(thicknessElement.value);\n strokeColor = this.getValue(strokeColorElement.children[0].style.borderBottomColor, 'hex');\n strokeColor = (strokeColor === '') ? '#ffffff00' : strokeColor;\n fillColor = this.getValue(fillColorElement.children[0].style.borderBottomColor, 'hex');\n fillColor = (fillColor === '') ? '#ffffff00' : fillColor;\n if (opacityValue) {\n opacity = (opacityValue) / 100;\n }\n else {\n opacity = opacityElement.value / 100;\n }\n if (lineStyleElement.value) {\n if (lineStyleElement.value === 'Solid') {\n this.setThickness('0', 'solid', true);\n }\n else if (lineStyleElement.value === 'Dotted') {\n this.setThickness('2', 'dotted', true);\n }\n else if (lineStyleElement.value === 'Dashed') {\n this.setThickness('3', 'dashed', true);\n }\n }\n }\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n var newNode = {};\n var isColorChanged = false;\n var isStrokeColorChanged = false;\n var isThicknessChanged = false;\n var isOpacityChanged = false;\n var isLineHeadStartStyleChanged = false;\n var isLineHeadEndStyleChanged = false;\n var isBorderDashArrayChanged = false;\n if (startArrow !== currentAnnotation.sourceDecoraterShapes) {\n newNode.sourceDecoraterShapes = startArrow;\n redoClonedObject.lineHeadStart = this.getArrowString(startArrow);\n isLineHeadStartStyleChanged = true;\n }\n if (endArrow !== currentAnnotation.taregetDecoraterShapes) {\n newNode.taregetDecoraterShapes = endArrow;\n redoClonedObject.lineHeadEnd = this.getArrowString(endArrow);\n isLineHeadEndStyleChanged = true;\n }\n if (thickness !== currentAnnotation.wrapper.children[0].style.strokeWidth) {\n newNode.thickness = thickness;\n redoClonedObject.thickness = thickness;\n isThicknessChanged = true;\n }\n if (strokeColor !== currentAnnotation.wrapper.children[0].style.strokeColor) {\n newNode.strokeColor = strokeColor;\n redoClonedObject.strokeColor = strokeColor;\n isStrokeColorChanged = true;\n }\n if (fillColor !== currentAnnotation.wrapper.children[0].style.fill) {\n newNode.fillColor = fillColor;\n redoClonedObject.fillColor = fillColor;\n isColorChanged = true;\n }\n if (opacity !== currentAnnotation.wrapper.children[0].style.opacity) {\n newNode.opacity = opacity;\n redoClonedObject.opacity = opacity;\n isOpacityChanged = true;\n }\n if (this.selectedLineDashArray !== currentAnnotation.wrapper.children[0].style.strokeDashArray) {\n newNode.borderDashArray = this.selectedLineDashArray;\n newNode.borderStyle = this.selectedLineStyle;\n redoClonedObject.borderDashArray = newNode.borderDashArray;\n redoClonedObject.borderStyle = newNode.borderStyle;\n isBorderDashArrayChanged = true;\n }\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance' && this.leaderLengthBox.value !== this.pdfViewer.selectedItems.annotations[0].leaderHeight) {\n newNode.leaderHeight = this.leaderLengthBox.value;\n }\n }\n else {\n // eslint-disable-next-line\n var leaderLengthElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_leader_length');\n // eslint-disable-next-line\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance' && parseInt(leaderLengthElement.value) !== this.pdfViewer.selectedItems.annotations[0].leaderHeight) {\n // eslint-disable-next-line\n newNode.leaderHeight = parseInt(leaderLengthElement.value);\n }\n }\n this.pdfViewer.nodePropertyChange(this.pdfViewer.selectedItems.annotations[0], newNode);\n this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill = fillColor;\n // eslint-disable-next-line max-len\n this.triggerAnnotationPropChange(this.pdfViewer.selectedItems.annotations[0], isColorChanged, isStrokeColorChanged, isThicknessChanged, isOpacityChanged, isLineHeadStartStyleChanged, isLineHeadEndStyleChanged, isBorderDashArrayChanged);\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'thickness');\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'stroke');\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'fill');\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'opacity');\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'dashArray');\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'startArrow');\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'endArrow');\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance') {\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'leaderLength');\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Line properties change', '', clonedObject, redoClonedObject);\n this.renderAnnotations(currentAnnotation.pageIndex, null, null, null);\n if (!isBlazor()) {\n this.propertiesDialog.hide();\n }\n };\n Annotation.prototype.onCancelClicked = function () {\n this.propertiesDialog.hide();\n };\n Annotation.prototype.getArrowTypeFromDropDown = function (arrowType, isBlazor) {\n if (!isBlazor) {\n arrowType = arrowType.split('
    ')[0].split('\">')[1];\n }\n var arrow = 'None';\n switch (arrowType) {\n case this.pdfViewer.localeObj.getConstant('None'):\n arrow = 'None';\n break;\n case this.pdfViewer.localeObj.getConstant('Open Arrow'):\n arrow = 'OpenArrow';\n break;\n case this.pdfViewer.localeObj.getConstant('Closed Arrow'):\n arrow = 'Arrow';\n break;\n case this.pdfViewer.localeObj.getConstant('Round Arrow'):\n arrow = 'Circle';\n break;\n case this.pdfViewer.localeObj.getConstant('Square Arrow'):\n arrow = 'Square';\n break;\n case this.pdfViewer.localeObj.getConstant('Diamond Arrow'):\n arrow = 'Diamond';\n break;\n case this.pdfViewer.localeObj.getConstant('Butt'):\n arrow = 'Butt';\n break;\n }\n return arrow;\n };\n /**\n * @param arrow\n * @private\n */\n Annotation.prototype.getArrowString = function (arrow) {\n var arrowType = this.pdfViewer.localeObj.getConstant('None');\n switch (arrow) {\n case 'Arrow':\n arrowType = this.pdfViewer.localeObj.getConstant('Closed');\n break;\n case 'OpenArrow':\n arrowType = this.pdfViewer.localeObj.getConstant('Open Arrow');\n break;\n case 'Circle':\n arrowType = this.pdfViewer.localeObj.getConstant('Round');\n break;\n case 'None':\n case 'Square':\n case 'Diamond':\n arrowType = this.pdfViewer.localeObj.getConstant(arrow);\n break;\n case 'Butt':\n arrowType = this.pdfViewer.localeObj.getConstant('Butt');\n break;\n }\n return arrowType;\n };\n /**\n * @private\n */\n Annotation.prototype.onAnnotationMouseUp = function () {\n if (this.pdfViewer.selectedItems.annotations.length !== 0) {\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n this.enableBasedOnType();\n this.pdfViewer.toolbar.annotationToolbarModule.selectAnnotationDeleteItem(true);\n if (!Browser.isDevice) {\n this.pdfViewer.toolbar.annotationToolbarModule.updateAnnnotationPropertyItems();\n }\n }\n this.pdfViewerBase.disableTextSelectionMode();\n }\n else {\n if (this.pdfViewer.textSelectionModule && !this.pdfViewerBase.isPanMode && !this.pdfViewer.designerMode) {\n this.pdfViewer.textSelectionModule.enableTextSelectionMode();\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n // eslint-disable-next-line max-len\n var isSkip = this.pdfViewer.toolbar.annotationToolbarModule.inkAnnotationSelected;\n if (this.pdfViewer.annotation.freeTextAnnotationModule && !this.pdfViewer.annotation.freeTextAnnotationModule.isInuptBoxInFocus && !isSkip) {\n this.pdfViewer.toolbar.annotationToolbarModule.enableAnnotationPropertiesTools(false);\n this.pdfViewer.toolbar.annotationToolbarModule.enableFreeTextAnnotationPropertiesTools(false);\n }\n this.pdfViewer.toolbar.annotationToolbarModule.updateAnnnotationPropertyItems();\n this.pdfViewer.toolbar.annotationToolbarModule.selectAnnotationDeleteItem(false);\n }\n }\n };\n /**\n * @param pdfAnnotationBase\n * @param event\n * @param pdfAnnotationBase\n * @param event\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.onShapesMouseup = function (pdfAnnotationBase, event) {\n // eslint-disable-next-line max-len\n pdfAnnotationBase = !isNullOrUndefined(this.pdfViewer.selectedItems.annotations[0]) ? this.pdfViewer.selectedItems.annotations[0] : pdfAnnotationBase;\n if (pdfAnnotationBase) {\n if (this.textMarkupAnnotationModule && this.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = null;\n this.textMarkupAnnotationModule.selectTextMarkupCurrentPage = null;\n }\n // eslint-disable-next-line max-len\n if ((this.pdfViewerBase.tool instanceof NodeDrawingTool || this.pdfViewerBase.tool instanceof LineTool) && !this.pdfViewerBase.tool.dragging) {\n // eslint-disable-next-line\n var setting = {\n opacity: pdfAnnotationBase.opacity, fillColor: pdfAnnotationBase.fillColor, strokeColor: pdfAnnotationBase.strokeColor,\n thickness: pdfAnnotationBase.thickness, author: pdfAnnotationBase.author, subject: pdfAnnotationBase.subject,\n modifiedDate: pdfAnnotationBase.modifiedDate\n };\n var index = this.getAnnotationIndex(pdfAnnotationBase.pageIndex, pdfAnnotationBase.id);\n // eslint-disable-next-line\n var bounds = { left: pdfAnnotationBase.bounds.x, top: pdfAnnotationBase.bounds.y, width: pdfAnnotationBase.bounds.width, height: pdfAnnotationBase.bounds.height };\n if (this.pdfViewerBase.tool instanceof LineTool) {\n setting.lineHeadStartStyle = this.getArrowString(pdfAnnotationBase.sourceDecoraterShapes);\n setting.lineHeadEndStyle = this.getArrowString(pdfAnnotationBase.taregetDecoraterShapes);\n setting.borderDashArray = pdfAnnotationBase.borderDashArray;\n }\n if (!this.pdfViewerBase.isAnnotationAdded || pdfAnnotationBase.measureType === 'Distance') {\n if (pdfAnnotationBase.measureType === '' || isNullOrUndefined(pdfAnnotationBase.measureType)) {\n // eslint-disable-next-line max-len\n this.shapeAnnotationModule.renderShapeAnnotations(pdfAnnotationBase, this.pdfViewer.annotation.getEventPageNumber(event));\n }\n else if (pdfAnnotationBase.measureType === 'Distance' || pdfAnnotationBase.measureType === 'Perimeter' ||\n pdfAnnotationBase.measureType === 'Radius') {\n // eslint-disable-next-line max-len\n this.measureAnnotationModule.renderMeasureShapeAnnotations(pdfAnnotationBase, this.pdfViewer.annotation.getEventPageNumber(event));\n }\n }\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n }\n else if (this.pdfViewerBase.tool instanceof MoveTool || this.pdfViewerBase.tool instanceof ResizeTool) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n if (pdfAnnotationBase.measureType === '' || isNullOrUndefined(pdfAnnotationBase.measureType)) {\n if (pdfAnnotationBase.shapeAnnotationType === 'FreeText') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.freeTextAnnotationModule.modifyInCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n else if (pdfAnnotationBase.shapeAnnotationType === 'HandWrittenSignature' || pdfAnnotationBase.shapeAnnotationType === 'SignatureImage' || pdfAnnotationBase.shapeAnnotationType === 'SignatureText') {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.signatureModule.modifySignatureCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n else if (pdfAnnotationBase.shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line max-len\n this.inkAnnotationModule.modifySignatureInkCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n else if (pdfAnnotationBase.shapeAnnotationType === 'Stamp' || pdfAnnotationBase.shapeAnnotationType === 'Image') {\n // eslint-disable-next-line max-len\n this.stampAnnotationModule.modifyInCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.shapeAnnotationModule.modifyInCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n // eslint-disable-next-line max-len\n }\n else if (pdfAnnotationBase.measureType === 'Distance' || pdfAnnotationBase.measureType === 'Perimeter' || pdfAnnotationBase.measureType === 'Radius' || pdfAnnotationBase.measureType === 'Area' || pdfAnnotationBase.measureType === 'Volume') {\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n if (this.pdfViewerBase.tool instanceof ResizeTool) {\n if (!pdfAnnotationBase.formFieldAnnotationType) {\n this.triggerAnnotationResize(pdfAnnotationBase);\n }\n }\n if (this.pdfViewerBase.tool instanceof MoveTool) {\n if (this.pdfViewerBase.action !== 'Select') {\n if (!pdfAnnotationBase.formFieldAnnotationType) {\n this.triggerAnnotationMove(pdfAnnotationBase);\n }\n }\n }\n }\n else if (this.pdfViewerBase.tool instanceof ConnectTool) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n if (pdfAnnotationBase.measureType === '' || isNullOrUndefined(pdfAnnotationBase.measureType)) {\n // eslint-disable-next-line max-len\n if ((pdfAnnotationBase.shapeAnnotationType === 'Line' || pdfAnnotationBase.shapeAnnotationType === 'LineWidthArrowHead' || pdfAnnotationBase.shapeAnnotationType === 'Polygon')) {\n this.pdfViewer.annotation.shapeAnnotationModule.modifyInCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n // eslint-disable-next-line max-len\n }\n else if (pdfAnnotationBase.measureType === 'Distance' || pdfAnnotationBase.measureType === 'Perimeter' || pdfAnnotationBase.measureType === 'Area' || pdfAnnotationBase.measureType === 'Volume') {\n if (pdfAnnotationBase.measureType === 'Distance') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('leaderLength', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n this.triggerAnnotationResize(pdfAnnotationBase);\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.navigationPane && this.pdfViewerBase.navigationPane.annotationMenuObj && this.pdfViewer.isSignatureEditable && (pdfAnnotationBase.shapeAnnotationType === 'HandWrittenSignature' || pdfAnnotationBase.shapeAnnotationType === 'SignatureText' || pdfAnnotationBase.shapeAnnotationType === 'SignatureImage')) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], true);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], true);\n }\n if (this.pdfViewer.toolbarModule) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.clearTextMarkupMode();\n if (pdfAnnotationBase.measureType === '' || isNullOrUndefined(pdfAnnotationBase.measureType)) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.clearMeasureMode();\n }\n else if (pdfAnnotationBase.measureType === 'Distance' || pdfAnnotationBase.measureType === 'Perimeter' || pdfAnnotationBase.measureType === 'Area' || pdfAnnotationBase.measureType === 'Volume' || pdfAnnotationBase.measureType === 'Radius') {\n this.pdfViewer.toolbarModule.annotationToolbarModule.clearShapeMode();\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1 && this.pdfViewer.selectedItems.annotations[0].formFieldAnnotationType === null) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableAnnotationPropertiesTools(true);\n }\n if (!isBlazor()) {\n if (this.pdfViewer.selectedItems.annotations.length === 1 && !this.pdfViewer.designerMode) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.selectAnnotationDeleteItem(true);\n this.pdfViewer.toolbarModule.annotationToolbarModule.setCurrentColorInPicker();\n this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden = true;\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.formDesignerModule && pdfAnnotationBase.properties.id != '' && pdfAnnotationBase.properties.id != null && pdfAnnotationBase.properties.id.slice(0, 4) != 'sign') {\n var isFieldReadOnly = document.getElementById(pdfAnnotationBase.properties.id).disabled;\n if (!isFieldReadOnly) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n else if (this.pdfViewer.annotation && isFieldReadOnly) {\n this.pdfViewer.annotation.clearSelection();\n }\n }\n else {\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n if (this.pdfViewer.isAnnotationToolbarVisible && this.pdfViewer.isFormDesignerToolbarVisible) {\n var formDesignerMainDiv = document.getElementById(this.pdfViewer.element.id + \"_formdesigner_toolbar\");\n formDesignerMainDiv.style.display = \"none\";\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.formDesignerToolbarModule.isToolbarHidden = false;\n this.pdfViewer.toolbarModule.formDesignerToolbarModule.showFormDesignerToolbar(this.pdfViewer.toolbarModule.formDesignerItem);\n this.pdfViewer.toolbarModule.annotationToolbarModule.adjustViewer(true);\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * @param pdfAnnotationBase\n * @param isNewlyAdded\n * @param pdfAnnotationBase\n * @param isNewlyAdded\n * @private\n */\n Annotation.prototype.updateCalibrateValues = function (pdfAnnotationBase, isNewlyAdded) {\n if (pdfAnnotationBase.measureType === 'Distance') {\n pdfAnnotationBase.notes = updateDistanceLabel(pdfAnnotationBase, pdfAnnotationBase.vertexPoints, this.measureAnnotationModule);\n if (pdfAnnotationBase.enableShapeLabel === true) {\n pdfAnnotationBase.labelContent = pdfAnnotationBase.notes;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('notes', pdfAnnotationBase.pageIndex, pdfAnnotationBase, isNewlyAdded);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(pdfAnnotationBase.annotName, pdfAnnotationBase.notes);\n this.renderAnnotations(pdfAnnotationBase.pageIndex, null, null, null, null);\n }\n else if (pdfAnnotationBase.measureType === 'Radius') {\n pdfAnnotationBase.notes = updateRadiusLabel(pdfAnnotationBase, this.measureAnnotationModule);\n if (pdfAnnotationBase.enableShapeLabel === true) {\n pdfAnnotationBase.labelContent = pdfAnnotationBase.notes;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('notes', pdfAnnotationBase.pageIndex, pdfAnnotationBase, isNewlyAdded);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(pdfAnnotationBase.annotName, pdfAnnotationBase.notes);\n this.renderAnnotations(pdfAnnotationBase.pageIndex, null, null, null, null);\n }\n else if (pdfAnnotationBase.measureType === 'Perimeter') {\n pdfAnnotationBase.notes = updatePerimeterLabel(pdfAnnotationBase, pdfAnnotationBase.vertexPoints, this.measureAnnotationModule);\n if (pdfAnnotationBase.enableShapeLabel === true) {\n pdfAnnotationBase.labelContent = pdfAnnotationBase.notes;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('notes', pdfAnnotationBase.pageIndex, pdfAnnotationBase, isNewlyAdded);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(pdfAnnotationBase.annotName, pdfAnnotationBase.notes);\n this.renderAnnotations(pdfAnnotationBase.pageIndex, null, null, null, null);\n }\n else if (pdfAnnotationBase.measureType === 'Area') {\n // eslint-disable-next-line max-len\n pdfAnnotationBase.notes = this.measureAnnotationModule.calculateArea(pdfAnnotationBase.vertexPoints, pdfAnnotationBase.id, pdfAnnotationBase.pageIndex);\n if (pdfAnnotationBase.enableShapeLabel === true) {\n pdfAnnotationBase.labelContent = pdfAnnotationBase.notes;\n updateCalibrateLabel(pdfAnnotationBase);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('notes', pdfAnnotationBase.pageIndex, pdfAnnotationBase, isNewlyAdded);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(pdfAnnotationBase.annotName, pdfAnnotationBase.notes);\n this.renderAnnotations(pdfAnnotationBase.pageIndex, null, null, null, null);\n }\n else if (pdfAnnotationBase.measureType === 'Volume') {\n // eslint-disable-next-line max-len\n pdfAnnotationBase.notes = this.measureAnnotationModule.calculateVolume(pdfAnnotationBase.vertexPoints, pdfAnnotationBase.id, pdfAnnotationBase.pageIndex);\n if (pdfAnnotationBase.enableShapeLabel === true) {\n pdfAnnotationBase.labelContent = pdfAnnotationBase.notes;\n updateCalibrateLabel(pdfAnnotationBase);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('notes', pdfAnnotationBase.pageIndex, pdfAnnotationBase, isNewlyAdded);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(pdfAnnotationBase.annotName, pdfAnnotationBase.notes);\n this.renderAnnotations(pdfAnnotationBase.pageIndex, null, null, null, null);\n }\n };\n /**\n * @private\n */\n Annotation.prototype.onAnnotationMouseDown = function () {\n if (this.pdfViewer.selectedItems.annotations.length === 1 && this.pdfViewer.selectedItems.annotations[0].formFieldAnnotationType === null) {\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n if (!isBlazor() && Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n var commentPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentPanel.style.display === 'none') {\n if (this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar && this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.createPropertyTools(\"\");\n }\n else {\n if (this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.createAnnotationToolbarForMobile();\n this.pdfViewer.toolbarModule.annotationToolbarModule.createPropertyTools(this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType);\n var editIcon = document.getElementById(this.pdfViewer.element.id + '_annotationIcon');\n if (editIcon && !editIcon.parentElement.classList.contains('e-pv-select')) {\n editIcon.parentElement.classList.add('e-pv-select');\n }\n }\n }\n }\n }\n this.enableBasedOnType();\n this.pdfViewer.toolbar.annotationToolbarModule.selectAnnotationDeleteItem(true);\n }\n }\n };\n Annotation.prototype.enableBasedOnType = function () {\n var isLock = false;\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (annotation && annotation.annotationSettings) {\n // eslint-disable-next-line\n isLock = annotation.annotationSettings.isLock;\n if (isLock && this.checkAllowedInteractions('PropertyChange', annotation)) {\n isLock = false;\n }\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (!isLock) {\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Stamp' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Image') {\n this.pdfViewer.toolbar.annotationToolbarModule.enableStampAnnotationPropertiesTools(true);\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'StickyNotes') {\n this.pdfViewer.toolbar.annotationToolbarModule.enableStampAnnotationPropertiesTools(true);\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Path' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText') {\n this.pdfViewer.toolbar.annotationToolbarModule.enableAnnotationPropertiesTools(false);\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n this.pdfViewer.toolbar.annotationToolbarModule.enableFreeTextAnnotationPropertiesTools(true);\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature') {\n this.pdfViewer.toolbar.annotationToolbarModule.enableSignaturePropertiesTools(true);\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink') {\n this.pdfViewer.toolbar.annotationToolbarModule.enableSignaturePropertiesTools(true);\n }\n else {\n if (this.pdfViewer.selectedItems.annotations.length === 1 && this.pdfViewer.selectedItems.annotations[0].formFieldAnnotationType === null) {\n this.pdfViewer.toolbar.annotationToolbarModule.enableAnnotationPropertiesTools(true);\n }\n }\n }\n // eslint-disable-next-line max-len\n }\n else if (!this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Path' && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createMobileAnnotationToolbar(true, true);\n }\n };\n Annotation.prototype.getProperDate = function (date) {\n var dateObject = new Date(date.toString());\n if (isNaN(dateObject.getFullYear())) {\n var dateString = date.slice(2, 16);\n // eslint-disable-next-line max-len\n dateString = dateString.slice(0, 4) + '/' + dateString.slice(4, 6) + '/' + dateString.slice(6, 8) + ' ' + dateString.slice(8, 10) + ':' + dateString.slice(10, 12) + ':' + dateString.slice(12, 14);\n dateObject = new Date(dateString);\n }\n // eslint-disable-next-line max-len\n return (dateObject.getMonth() + 1) + '/' + dateObject.getDate() + '/' + dateObject.getFullYear() + ' ' + dateObject.getHours() + ':' + dateObject.getMinutes() + ':' + dateObject.getSeconds();\n };\n /**\n * @param pageAnnotations\n * @param pageNumber\n * @private\n */\n Annotation.prototype.getPageCollection = function (pageAnnotations, pageNumber) {\n var index = null;\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].pageIndex === pageNumber) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * @param annotations\n * @param id\n * @param annotations\n * @param id\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getAnnotationWithId = function (annotations, id) {\n // eslint-disable-next-line\n var annotation;\n for (var i = 0; i < annotations.length; i++) {\n if (id === annotations[i].id) {\n annotation = annotations[i];\n }\n }\n return annotation;\n };\n /**\n * @param event\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getEventPageNumber = function (event) {\n var eventTarget = event.target;\n if (eventTarget.classList.contains('e-pv-hyperlink')) {\n eventTarget = eventTarget.parentElement;\n }\n else if (eventTarget.parentElement && eventTarget.parentElement.classList.contains('foreign-object')) {\n eventTarget = eventTarget.parentElement.parentElement.parentElement.parentElement;\n }\n var pageString;\n if (eventTarget) {\n // eslint-disable-next-line\n pageString = eventTarget.id.split('_text_')[1] || eventTarget.id.split('_textLayer_')[1] || eventTarget.id.split('_annotationCanvas_')[1] || eventTarget.id.split('_pageDiv_')[1];\n }\n if (isNaN(pageString)) {\n event = this.pdfViewerBase.annotationEvent;\n if (event) {\n eventTarget = event.target;\n // eslint-disable-next-line\n pageString = eventTarget.id.split('_text_')[1] || eventTarget.id.split('_textLayer_')[1] || eventTarget.id.split('_annotationCanvas_')[1] || eventTarget.id.split('_pageDiv_')[1];\n }\n }\n // eslint-disable-next-line\n return parseInt(pageString);\n };\n /**\n * @param commentsAnnotations\n * @param parentAnnotation\n * @param author\n * @param commentsAnnotations\n * @param parentAnnotation\n * @param author\n * @param commentsAnnotations\n * @param parentAnnotation\n * @param author\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getAnnotationComments = function (commentsAnnotations, parentAnnotation, author) {\n var newArray = [];\n var annotationObject = null;\n if (commentsAnnotations) {\n if (commentsAnnotations.length > 0) {\n for (var i = 0; i < commentsAnnotations.length; i++) {\n // eslint-disable-next-line\n var annotation = commentsAnnotations[i];\n annotationObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'sticky', author: annotation.Author, modifiedDate: annotation.ModifiedDate, note: annotation.Note, state: annotation.state, stateModel: annotation.stateModel,\n comments: [], review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n annotName: annotation.AnnotName, parentId: parentAnnotation.AnnotName, subject: 'Comments',\n isLock: annotation.IsLock\n };\n newArray[newArray.length] = annotationObject;\n }\n }\n }\n return newArray;\n };\n Annotation.prototype.getRandomNumber = function () {\n // eslint-disable-next-line\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n // eslint-disable-next-line\n var random = Math.random() * 16 | 0, v = c == 'x' ? random : (random & 0x3 | 0x8);\n return random.toString(16);\n });\n };\n /**\n * @private\n */\n Annotation.prototype.createGUID = function () {\n // eslint-disable-next-line max-len\n return this.getRandomNumber();\n };\n /**\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @private\n */\n // eslint-disable-next-line max-len\n Annotation.prototype.createAnnotationLayer = function (pageDiv, pageWidth, pageHeight, pageNumber, displayMode) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (canvas) {\n this.updateCanvas(canvas, pageWidth, pageHeight, pageNumber);\n return canvas;\n }\n else {\n // eslint-disable-next-line max-len\n var annotationCanvas = createElement('canvas', { id: this.pdfViewer.element.id + '_annotationCanvas_' + pageNumber, className: 'e-pv-annotation-canvas' });\n this.updateCanvas(annotationCanvas, pageWidth, pageHeight, pageNumber);\n pageDiv.appendChild(annotationCanvas);\n return annotationCanvas;\n }\n };\n /**\n * @param width\n * @param height\n * @param pageNumber\n * @private\n */\n Annotation.prototype.resizeAnnotations = function (width, height, pageNumber) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (canvas) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n this.pdfViewerBase.applyElementStyles(canvas, pageNumber);\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n Annotation.prototype.clearAnnotationCanvas = function (pageNumber) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n var zoom = this.pdfViewerBase.getZoomFactor();\n var ratio = this.pdfViewerBase.getZoomRatio(zoom);\n if (canvas) {\n var width = this.pdfViewerBase.pageSize[pageNumber].width;\n var height = this.pdfViewerBase.pageSize[pageNumber].height;\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n canvas.style.width = width * zoom + 'px';\n canvas.style.height = height * zoom + 'px';\n }\n };\n /**\n * @param pageNumber\n * @param shapeAnnotation\n * @param measureShapeAnnotation\n * @param textMarkupAnnotation\n * @param canvas\n * @param isImportAnnotations\n * @param pageNumber\n * @param shapeAnnotation\n * @param measureShapeAnnotation\n * @param textMarkupAnnotation\n * @param canvas\n * @param isImportAnnotations\n * @param pageNumber\n * @param shapeAnnotation\n * @param measureShapeAnnotation\n * @param textMarkupAnnotation\n * @param canvas\n * @param isImportAnnotations\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.renderAnnotations = function (pageNumber, shapeAnnotation, measureShapeAnnotation, textMarkupAnnotation, canvas, isImportAnnotations) {\n this.clearAnnotationCanvas(pageNumber);\n if (this.shapeAnnotationModule) {\n if (isImportAnnotations) {\n this.shapeAnnotationModule.renderShapeAnnotations(shapeAnnotation, pageNumber, true);\n }\n else {\n this.shapeAnnotationModule.renderShapeAnnotations(shapeAnnotation, pageNumber);\n }\n }\n if (this.measureAnnotationModule) {\n if (isImportAnnotations) {\n this.measureAnnotationModule.renderMeasureShapeAnnotations(measureShapeAnnotation, pageNumber, true);\n }\n else {\n this.measureAnnotationModule.renderMeasureShapeAnnotations(measureShapeAnnotation, pageNumber);\n }\n }\n if (canvas !== null && canvas !== undefined) {\n canvas = canvas;\n }\n else {\n canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n }\n this.pdfViewer.drawing.refreshCanvasDiagramLayer(canvas, pageNumber);\n if (this.textMarkupAnnotationModule) {\n if (isImportAnnotations) {\n // eslint-disable-next-line\n this.textMarkupAnnotationModule.renderTextMarkupAnnotationsInPage(textMarkupAnnotation, pageNumber, true);\n }\n else {\n // eslint-disable-next-line\n this.textMarkupAnnotationModule.renderTextMarkupAnnotationsInPage(textMarkupAnnotation, pageNumber);\n }\n }\n };\n /**\n * @param pageNumber\n * @param annotation\n * @param annotationId\n * @param pageNumber\n * @param annotation\n * @param annotationId\n * @param pageNumber\n * @param annotation\n * @param annotationId\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.storeAnnotations = function (pageNumber, annotation, annotationId) {\n // let annotationId: string = '_annotations_textMarkup';\n // if (annotation is ITextMarkupAnnotation) {\n // annotationId = '_annotations_textMarkup';\n // } else if (annotation as IShapeAnnotation) {\n // annotationId = '_annotations_shape';\n // } else {\n // annotationId = '_annotations_stamp';\n // }\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n if (sessionSize > 4500) {\n this.clearAnnotationStorage();\n this.pdfViewerBase.isStorageExceed = true;\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + annotationId);\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + annotationId];\n }\n var index = 0;\n if (!storeObject) {\n this.storeAnnotationCollections(annotation, pageNumber);\n var pageAnnotation = { pageIndex: pageNumber, annotations: [] };\n pageAnnotation.annotations.push(annotation);\n index = pageAnnotation.annotations.indexOf(annotation);\n var annotationCollection = [];\n annotationCollection.push(pageAnnotation);\n var annotationStringified = JSON.stringify(annotationCollection);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + annotationId] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + annotationId, annotationStringified);\n }\n }\n else {\n this.storeAnnotationCollections(annotation, pageNumber);\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + annotationId);\n }\n var pageIndex = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[pageIndex]) {\n annotObject[pageIndex].annotations.push(annotation);\n index = annotObject[pageIndex].annotations.indexOf(annotation);\n }\n else {\n var markupAnnotation = { pageIndex: pageNumber, annotations: [] };\n markupAnnotation.annotations.push(annotation);\n index = markupAnnotation.annotations.indexOf(annotation);\n annotObject.push(markupAnnotation);\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + annotationId] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + annotationId, annotationStringified);\n }\n }\n return index;\n };\n /**\n * @param type\n * @private\n */\n Annotation.prototype.getArrowType = function (type) {\n var decoratorShapes = 'None';\n switch (type) {\n case 'ClosedArrow':\n case 'Closed':\n decoratorShapes = 'Arrow';\n break;\n case 'OpenArrow':\n case 'Open':\n decoratorShapes = 'OpenArrow';\n break;\n case 'Square':\n decoratorShapes = 'Square';\n break;\n case 'Circle':\n case 'Round':\n decoratorShapes = 'Circle';\n break;\n case 'Diamond':\n decoratorShapes = 'Diamond';\n break;\n case 'Butt':\n decoratorShapes = 'Butt';\n break;\n case 'Slash':\n // decoratorShapes = 'Slash';\n break;\n }\n return decoratorShapes;\n };\n /**\n * @param arrow\n * @private\n */\n Annotation.prototype.getArrowTypeForCollection = function (arrow) {\n var arrowType;\n switch (arrow) {\n case 'Arrow':\n arrowType = 'ClosedArrow';\n break;\n case 'OpenArrow':\n case 'Square':\n case 'Circle':\n case 'Diamond':\n case 'None':\n arrowType = arrow.toString();\n break;\n case 'Butt':\n arrowType = 'Butt';\n break;\n }\n return arrowType;\n };\n /**\n * @param bound\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getBounds = function (bound, pageIndex) {\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails) {\n if (pageDetails.rotation === 1) {\n return { left: bound.top, top: pageDetails.width - (bound.left + bound.width), width: bound.height, height: bound.width };\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n return { left: pageDetails.width - bound.left - bound.width, top: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n }\n else if (pageDetails.rotation === 3) {\n return { left: pageDetails.height - bound.top - bound.height, top: bound.left, width: bound.height, height: bound.width };\n }\n else {\n return bound;\n }\n }\n else {\n return bound;\n }\n };\n /**\n * @param bound\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getInkBounds = function (bound, pageIndex) {\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails) {\n if (pageDetails.rotation === 1) {\n return { x: bound.y, y: pageDetails.width - (bound.x + bound.width), width: bound.height, height: bound.width };\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n return { x: pageDetails.width - bound.x - bound.width, y: pageDetails.height - bound.y - bound.height, width: bound.width, height: bound.height };\n }\n else if (pageDetails.rotation === 3) {\n return { x: pageDetails.height - bound.y - bound.height, y: bound.x, width: bound.height, height: bound.width };\n }\n else {\n return bound;\n }\n }\n else {\n return bound;\n }\n };\n /**\n * @param points\n * @param pageIndex\n * @param points\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getVertexPoints = function (points, pageIndex) {\n if (points) {\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails.rotation === 1) {\n var points1 = [];\n for (var i = 0; i < points.length; i++) {\n var point = { x: points[i].y, y: pageDetails.width - points[i].x };\n points1.push(point);\n }\n return points1;\n }\n else if (pageDetails.rotation === 2) {\n var points2 = [];\n for (var i = 0; i < points.length; i++) {\n var point = { x: pageDetails.width - points[i].x, y: pageDetails.height - points[i].y };\n points2.push(point);\n }\n return points2;\n }\n else if (pageDetails.rotation === 3) {\n var points3 = [];\n for (var i = 0; i < points.length; i++) {\n var point = { x: pageDetails.height - points[i].y, y: points[i].x };\n points3.push(point);\n }\n return points3;\n }\n else {\n return points;\n }\n }\n };\n /**\n * @param pageIndex\n * @param shapeAnnotations\n * @param idString\n * @param pageIndex\n * @param shapeAnnotations\n * @param idString\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getStoredAnnotations = function (pageIndex, shapeAnnotations, idString) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + idString);\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + idString];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = null;\n }\n }\n else {\n annotationCollection = null;\n }\n return annotationCollection;\n };\n /**\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @private\n */\n // eslint-disable-next-line max-len\n Annotation.prototype.triggerAnnotationPropChange = function (pdfAnnotationBase, isColor, isStroke, isThickness, isOpacity, isLineStart, isLineEnd, isDashArray, isFreeText, previousText, currentText) {\n var index = this.getAnnotationIndex(pdfAnnotationBase.pageIndex, pdfAnnotationBase.id);\n var type = this.getAnnotationType(pdfAnnotationBase.shapeAnnotationType, pdfAnnotationBase.measureType);\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationPropertiesChange', pageIndex: pdfAnnotationBase.pageIndex, annotationId: pdfAnnotationBase.annotName, annotationType: type, isColorChanged: isColor, isOpacityChanged: isOpacity, isThicknessChanged: isThickness, isStrokeColorChanged: isStroke };\n if (isFreeText) {\n eventArgs.isFreeTextChanged = isFreeText;\n eventArgs.previousText = previousText;\n eventArgs.currentText = currentText;\n }\n if (isLineStart) {\n eventArgs.isLineHeadStartStyleChanged = isLineStart;\n }\n if (isLineEnd) {\n eventArgs.isLineHeadEndStyleChanged = isLineEnd;\n }\n if (isDashArray) {\n eventArgs.isBorderDashArrayChanged = isDashArray;\n }\n this.pdfViewer.trigger('annotationPropertiesChange', eventArgs);\n };\n /**\n * @param pdfAnnotationBase\n * @private\n */\n Annotation.prototype.triggerAnnotationAdd = function (pdfAnnotationBase) {\n // eslint-disable-next-line\n var setting = {\n opacity: pdfAnnotationBase.opacity, fillColor: pdfAnnotationBase.fillColor, strokeColor: pdfAnnotationBase.strokeColor,\n thickness: pdfAnnotationBase.thickness, author: pdfAnnotationBase.author, subject: pdfAnnotationBase.subject,\n modifiedDate: pdfAnnotationBase.modifiedDate\n };\n // eslint-disable-next-line\n var bounds = { left: pdfAnnotationBase.wrapper.bounds.x, top: pdfAnnotationBase.wrapper.bounds.y, width: pdfAnnotationBase.wrapper.bounds.width, height: pdfAnnotationBase.wrapper.bounds.height };\n var type = this.getAnnotationType(pdfAnnotationBase.shapeAnnotationType, pdfAnnotationBase.measureType);\n if (type === 'Line' || type === 'Arrow' || type === 'Distance' || type === 'Perimeter') {\n setting.lineHeadStartStyle = this.getArrowString(pdfAnnotationBase.sourceDecoraterShapes);\n setting.lineHeadEndStyle = this.getArrowString(pdfAnnotationBase.taregetDecoraterShapes);\n setting.borderDashArray = pdfAnnotationBase.borderDashArray;\n }\n var labelSettings;\n if (this.pdfViewer.enableShapeLabel) {\n labelSettings = {\n // eslint-disable-next-line max-len\n fontColor: pdfAnnotationBase.fontColor, fontSize: pdfAnnotationBase.fontSize, fontFamily: pdfAnnotationBase.fontFamily,\n opacity: pdfAnnotationBase.labelOpacity, labelContent: pdfAnnotationBase.labelContent, fillColor: pdfAnnotationBase.labelFillColor\n };\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(pdfAnnotationBase.pageIndex, pdfAnnotationBase.annotName, type, bounds, setting, null, null, null, labelSettings);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(pdfAnnotationBase.pageIndex, pdfAnnotationBase.annotName, type, bounds, setting);\n }\n };\n /**\n * @param pdfAnnotationBase\n * @private\n */\n Annotation.prototype.triggerAnnotationResize = function (pdfAnnotationBase) {\n // eslint-disable-next-line\n var setting = {\n opacity: pdfAnnotationBase.opacity, fillColor: pdfAnnotationBase.fillColor, strokeColor: pdfAnnotationBase.strokeColor,\n thickness: pdfAnnotationBase.thickness, author: pdfAnnotationBase.author, subject: pdfAnnotationBase.subject,\n modifiedDate: pdfAnnotationBase.modifiedDate\n };\n var index = this.getAnnotationIndex(pdfAnnotationBase.pageIndex, pdfAnnotationBase.id);\n // eslint-disable-next-line\n var annotationBounds = pdfAnnotationBase.bounds;\n var currentPosition = { left: annotationBounds.x, top: annotationBounds.y, x: annotationBounds.x, y: annotationBounds.y, width: annotationBounds.width, height: annotationBounds.height };\n // eslint-disable-next-line max-len\n var previousPosition = { left: annotationBounds.oldProperties.x, top: annotationBounds.oldProperties.y, width: annotationBounds.oldProperties.width, height: annotationBounds.oldProperties.height };\n var type = this.getAnnotationType(pdfAnnotationBase.shapeAnnotationType, pdfAnnotationBase.measureType);\n if (type === 'Line' || type === 'Arrow' || type === 'Distance' || type === 'Perimeter') {\n setting.lineHeadStartStyle = this.getArrowString(pdfAnnotationBase.sourceDecoraterShapes);\n setting.lineHeadEndStyle = this.getArrowString(pdfAnnotationBase.taregetDecoraterShapes);\n setting.borderDashArray = pdfAnnotationBase.borderDashArray;\n }\n var labelSettings;\n if (this.pdfViewer.enableShapeLabel && (pdfAnnotationBase.shapeAnnotationType !== 'HandWrittenSignature')) {\n labelSettings = {\n // eslint-disable-next-line max-len\n fontColor: pdfAnnotationBase.fontColor, fontSize: pdfAnnotationBase.fontSize, fontFamily: pdfAnnotationBase.fontFamily,\n opacity: pdfAnnotationBase.labelOpacity, labelContent: pdfAnnotationBase.labelContent, fillColor: pdfAnnotationBase.labelFillColor, notes: pdfAnnotationBase.notes\n };\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationResize(pdfAnnotationBase.pageIndex, pdfAnnotationBase.annotName, type, currentPosition, setting, null, null, null, labelSettings);\n }\n else {\n if (pdfAnnotationBase.shapeAnnotationType === 'HandWrittenSignature' || pdfAnnotationBase.shapeAnnotationType === 'SignatureText' || pdfAnnotationBase.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignatureResize(pdfAnnotationBase.pageIndex, pdfAnnotationBase.signatureName, pdfAnnotationBase.shapeAnnotationType, pdfAnnotationBase.opacity, pdfAnnotationBase.strokeColor, pdfAnnotationBase.thickness, currentPosition, previousPosition);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationResize(pdfAnnotationBase.pageIndex, pdfAnnotationBase.annotName, type, currentPosition, setting);\n }\n }\n };\n /**\n * @param pdfAnnotationBase\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.triggerAnnotationMove = function (pdfAnnotationBase, isMoving) {\n // eslint-disable-next-line\n var setting = {\n opacity: pdfAnnotationBase.opacity, fillColor: pdfAnnotationBase.fillColor, strokeColor: pdfAnnotationBase.strokeColor,\n thickness: pdfAnnotationBase.thickness, author: pdfAnnotationBase.author, subject: pdfAnnotationBase.subject,\n modifiedDate: pdfAnnotationBase.modifiedDate\n };\n // eslint-disable-next-line\n var annotationBounds = pdfAnnotationBase.bounds;\n var currentPosition = { left: annotationBounds.x, top: annotationBounds.y, x: annotationBounds.x, y: annotationBounds.y, width: annotationBounds.width, height: annotationBounds.height };\n // eslint-disable-next-line max-len\n var previousPosition = { left: annotationBounds.oldProperties.x ? annotationBounds.oldProperties.x : annotationBounds.x, top: annotationBounds.oldProperties.y ? annotationBounds.oldProperties.y : annotationBounds.y, width: annotationBounds.width, height: annotationBounds.height };\n var type = this.getAnnotationType(pdfAnnotationBase.shapeAnnotationType, pdfAnnotationBase.measureType);\n if (type === 'Line' || type === 'Arrow' || type === 'Distance' || type === 'Perimeter') {\n setting.lineHeadStartStyle = this.getArrowString(pdfAnnotationBase.sourceDecoraterShapes);\n setting.lineHeadEndStyle = this.getArrowString(pdfAnnotationBase.taregetDecoraterShapes);\n setting.borderDashArray = pdfAnnotationBase.borderDashArray;\n }\n if (pdfAnnotationBase.shapeAnnotationType === 'HandWrittenSignature' || pdfAnnotationBase.shapeAnnotationType === 'SignatureText' || pdfAnnotationBase.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignatureMove(pdfAnnotationBase.pageIndex, pdfAnnotationBase.signatureName, pdfAnnotationBase.shapeAnnotationType, pdfAnnotationBase.opacity, pdfAnnotationBase.strokeColor, pdfAnnotationBase.thickness, previousPosition, currentPosition);\n }\n else {\n // eslint-disable-next-line max-len\n isMoving ? this.pdfViewer.fireAnnotationMoving(pdfAnnotationBase.pageIndex, pdfAnnotationBase.annotName, type, setting, previousPosition, currentPosition) : this.pdfViewer.fireAnnotationMove(pdfAnnotationBase.pageIndex, pdfAnnotationBase.annotName, type, setting, previousPosition, currentPosition);\n }\n };\n /**\n * @param annotationId\n * @param pageNumber\n * @param annotation\n * @param annotationCollection\n * @param isDblClick\n * @param isSelected\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.annotationSelect = function (annotationId, pageNumber, annotation, annotationCollection, isDblClick, isSelected) {\n // eslint-disable-next-line\n var annotSettings;\n if (annotation.shapeAnnotationType === 'textMarkup') {\n // eslint-disable-next-line max-len\n annotSettings = { type: 'TextMarkup', subType: annotation.subject, opacity: annotation.opacity, color: annotation.color, textMarkupContent: annotation.textMarkupContent, textMarkupStartIndex: annotation.textMarkupStartIndex, textMarkupEndIndex: annotation.textMarkupEndIndex, customData: annotation.customData };\n }\n else if (annotation.shapeAnnotationType === 'StickyNotes') {\n annotSettings = { type: 'StickyNotes', opacity: annotation.opacity, customData: annotation.customData };\n }\n else if (annotation.shapeAnnotationType === 'Stamp' || annotation.shapeAnnotationType === 'Image') {\n annotSettings = { type: 'Stamp', opacity: annotation.opacity, customData: annotation.customData };\n }\n else if (annotation.shapeAnnotationType === 'Ink') {\n annotSettings = {\n // eslint-disable-next-line max-len\n type: 'Ink', opacity: annotation.opacity, strokeColor: annotation.strokeColor, thickness: annotation.thickness, modifiedDate: annotation.modifiedDate,\n width: annotation.bounds.width, height: annotation.bounds.height, left: annotation.bounds.x, top: annotation.bounds.y, data: annotation.data, customData: annotation.customData\n };\n }\n else if (annotation.shapeAnnotationType === 'FreeText') {\n annotSettings = {\n type: 'FreeText', opacity: annotation.opacity, fillColor: annotation.fillColor,\n // eslint-disable-next-line max-len\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, content: annotation.dynamicText,\n // eslint-disable-next-line max-len\n fontFamily: annotation.fontFamily, fontSize: annotation.fontSize, fontColor: annotation.fontColor, textAlign: annotation.textAlign, fontStyle: this.updateFreeTextFontStyle(annotation.font), customData: annotation.customData\n };\n }\n else if (annotation.measureType === '') {\n if (annotation.shapeAnnotationType === 'Line') {\n // eslint-disable-next-line max-len\n annotSettings = { type: 'Shape', subType: 'Line', opacity: annotation.opacity, fillColor: annotation.fillColor, strokeColor: annotation.strokeColor, thickness: annotation.thickness, borderDashArray: annotation.borderDashArray, lineHeadStartStyle: annotation.sourceDecoraterShapes, lineHeadEndStyle: annotation.taregetDecoraterShapes, customData: annotation.customData };\n }\n else if (annotation.shapeAnnotationType === 'Arrow' || annotation.shapeAnnotationType === 'LineWidthArrowHead') {\n // eslint-disable-next-line max-len\n annotSettings = { type: 'Shape', subType: 'Arrow', opacity: annotation.opacity, fillColor: annotation.fillColor, strokeColor: annotation.strokeColor, thickness: annotation.thickness, borderDashArray: annotation.borderDashArray, lineHeadStartStyle: annotation.sourceDecoraterShapes, lineHeadEndStyle: annotation.taregetDecoraterShapes, customData: annotation.customData };\n }\n else if (annotation.shapeAnnotationType === 'Rectangle') {\n annotSettings = {\n type: 'Shape', subType: 'Rectangle', opacity: annotation.opacity, fillColor: annotation.fillColor,\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, customData: annotation.customData\n };\n }\n else if (annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Ellipse') {\n annotSettings = {\n type: 'Shape', subType: 'Circle', opacity: annotation.opacity, fillColor: annotation.fillColor,\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, customData: annotation.customData\n };\n }\n else if (annotation.shapeAnnotationType === 'Polygon') {\n annotSettings = {\n type: 'Shape', subType: 'Polygon', opacity: annotation.opacity, fillColor: annotation.fillColor,\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, customData: annotation.customData\n };\n }\n }\n else if (annotation.measureType !== '') {\n if (annotation.measureType === 'Distance') {\n // eslint-disable-next-line max-len\n annotSettings = { type: 'Measure', subType: 'Distance', opacity: annotation.opacity, fillColor: annotation.fillColor, strokeColor: annotation.strokeColor, thickness: annotation.thickness, borderDashArray: annotation.borderDashArray, lineHeadStartStyle: annotation.sourceDecoraterShapes, lineHeadEndStyle: annotation.taregetDecoraterShapes, customData: annotation.customData };\n }\n else if (annotation.measureType === 'Perimeter') {\n // eslint-disable-next-line max-len\n annotSettings = { type: 'Measure', subType: 'Perimeter', opacity: annotation.opacity, fillColor: annotation.fillColor, strokeColor: annotation.strokeColor, thickness: annotation.thickness, borderDashArray: annotation.borderDashArray, lineHeadStartStyle: annotation.sourceDecoraterShapes, lineHeadEndStyle: annotation.taregetDecoraterShapes, customData: annotation.customData };\n }\n else if (annotation.measureType === 'Area') {\n annotSettings = {\n type: 'Measure', subType: 'Area', opacity: annotation.opacity, fillColor: annotation.fillColor,\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, customData: annotation.customData\n };\n }\n else if (annotation.measureType === 'Radius') {\n annotSettings = {\n type: 'Measure', subType: 'Radius', opacity: annotation.opacity, fillColor: annotation.fillColor,\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, customData: annotation.customData\n };\n }\n else if (annotation.measureType === 'Volume') {\n annotSettings = {\n type: 'Measure', subType: 'Volume', opacity: annotation.opacity, fillColor: annotation.fillColor,\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, calibrate: annotation.calibrate,\n annotationId: annotation.annotName, customData: annotation.customData\n };\n }\n }\n // eslint-disable-next-line\n var overlappedCollection = [];\n // eslint-disable-next-line\n var overlappedAnnotations = this.getOverlappedAnnotations(annotation, pageNumber);\n if (overlappedAnnotations && this.overlappedCollections) {\n // eslint-disable-next-line\n var overlappedCollections = [];\n // eslint-disable-next-line\n for (var i = 0; i < overlappedAnnotations.length; i++) {\n if (overlappedAnnotations[i].shapeAnnotationType !== 'textMarkup' && this.overlappedCollections || isSelected) {\n for (var j = 0; j < this.overlappedCollections.length; j++) {\n if (overlappedAnnotations[i].annotName === this.overlappedCollections[j].annotName) {\n overlappedCollections.push(overlappedAnnotations[i]);\n break;\n }\n }\n }\n else {\n overlappedCollections.push(overlappedAnnotations[i]);\n }\n }\n overlappedAnnotations = overlappedCollections;\n }\n if (this.pdfViewer.enableMultiLineOverlap) {\n // eslint-disable-next-line\n for (var i = 0; i < overlappedAnnotations.length; i++) {\n if (overlappedAnnotations[i].shapeAnnotationType === 'textMarkup') {\n var isOverlapped = false;\n for (var j = 0; j < overlappedAnnotations[i].bounds.length; j++) {\n // eslint-disable-next-line\n var bounds = this.orderTextMarkupBounds(overlappedAnnotations[i].bounds[j]);\n // eslint-disable-next-line\n var clickedPosition = this.textMarkupAnnotationModule.annotationClickPosition;\n if (clickedPosition && (clickedPosition.x || clickedPosition.y)) {\n if (bounds.left <= clickedPosition.x && (bounds.left + bounds.width) >= clickedPosition.x) {\n if (bounds.top <= clickedPosition.y && (bounds.top + bounds.height) >= clickedPosition.y) {\n isOverlapped = true;\n }\n }\n }\n else {\n isOverlapped = true;\n }\n }\n if (!isOverlapped) {\n overlappedAnnotations.splice(i, 1);\n }\n }\n }\n }\n if (overlappedAnnotations && overlappedAnnotations.length > 0) {\n annotationCollection = overlappedAnnotations;\n // eslint-disable-next-line\n for (var i = 0; i < annotationCollection.length; i++) {\n // eslint-disable-next-line\n var overlappedObject = cloneObject(annotationCollection[i]);\n overlappedObject.annotationId = annotationCollection[i].annotName;\n if (annotationId === annotationCollection[i].annotName && annotation.measureType && annotation.measureType === 'Volume') {\n annotSettings.calibrate = annotationCollection[i].calibrate;\n }\n delete overlappedObject.annotName;\n overlappedCollection.push(overlappedObject);\n }\n }\n else {\n overlappedCollection = null;\n }\n this.addFreeTextProperties(annotation, annotSettings);\n var annotationAddMode = annotation.annotationAddMode;\n if (!isDblClick) {\n if (annotation.shapeAnnotationType === 'Stamp' || annotation.shapeAnnotationType === 'Image') {\n if (!this.pdfViewerBase.isNewStamp && this.annotationSelected) {\n if (overlappedCollection) {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationSelect(annotationId, pageNumber, annotSettings, overlappedCollection, null, null, annotationAddMode);\n }\n else {\n this.pdfViewer.fireAnnotationSelect(annotationId, pageNumber, annotSettings, null, null, null, annotationAddMode);\n }\n }\n }\n else {\n var multiPageCollection = this.textMarkupAnnotationModule.multiPageCollectionList(annotation);\n if (multiPageCollection.length === 0) {\n multiPageCollection = null;\n }\n if (this.annotationSelected) {\n if (overlappedCollection) {\n isSelected = false;\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationSelect(annotationId, pageNumber, annotSettings, overlappedCollection, multiPageCollection, isSelected, annotationAddMode);\n }\n else {\n isSelected = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationSelect(annotationId, pageNumber, annotSettings, null, multiPageCollection, isSelected, annotationAddMode);\n }\n }\n }\n }\n else {\n if (annotation.shapeAnnotationType === 'Stamp' || annotation.shapeAnnotationType === 'Image') {\n if (!this.pdfViewerBase.isNewStamp) {\n this.pdfViewer.fireAnnotationDoubleClick(annotationId, pageNumber, annotSettings);\n }\n }\n else {\n this.pdfViewer.fireAnnotationDoubleClick(annotationId, pageNumber, annotSettings);\n }\n }\n this.annotationSelected = true;\n };\n // eslint-disable-next-line\n Annotation.prototype.selectSignature = function (signatureId, pageNumber, signatureModule) {\n // eslint-disable-next-line\n var annotBounds = signatureModule.bounds;\n // eslint-disable-next-line\n var bounds = { height: annotBounds.height, width: annotBounds.width, x: annotBounds.x, y: annotBounds.y };\n if (!this.pdfViewerBase.signatureAdded) {\n // eslint-disable-next-line max-len\n var signature = { bounds: bounds, opacity: signatureModule.opacity, thickness: signatureModule.thickness, strokeColor: signatureModule.strokeColor };\n this.pdfViewer.fireSignatureSelect(signatureId, pageNumber, signature);\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.editSignature = function (signature) {\n // eslint-disable-next-line\n var currentAnnotation;\n if (signature.uniqueKey) {\n // eslint-disable-next-line\n currentAnnotation = this.pdfViewer.nameTable[signature.uniqueKey];\n }\n else {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n var pageNumber = currentAnnotation.pageIndex;\n if (currentAnnotation.shapeAnnotationType === 'HandWrittenSignature' || currentAnnotation.shapeAnnotationType === 'SignatureText' || currentAnnotation.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line\n var clonedObject = cloneObject(currentAnnotation);\n // eslint-disable-next-line\n var redoClonedObject = cloneObject(currentAnnotation);\n if (currentAnnotation.opacity !== signature.opacity) {\n redoClonedObject.opacity = signature.opacity;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { opacity: signature.opacity });\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignaturePropertiesChange(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, false, true, false, clonedObject.opacity, redoClonedObject.opacity);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Opacity', '', clonedObject, redoClonedObject);\n }\n if (currentAnnotation.strokeColor !== signature.strokeColor) {\n redoClonedObject.strokeColor = signature.strokeColor;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { strokeColor: signature.strokeColor });\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignaturePropertiesChange(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, true, false, false, clonedObject.strokeColor, redoClonedObject.strokeColor);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Stroke', '', clonedObject, redoClonedObject);\n }\n if (currentAnnotation.thickness !== signature.thickness) {\n redoClonedObject.thickness = signature.thickness;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { thickness: signature.thickness });\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignaturePropertiesChange(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, false, false, true, clonedObject.thickness, redoClonedObject.thickness);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Thickness', '', clonedObject, redoClonedObject);\n }\n currentAnnotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.pdfViewer.renderDrawing();\n this.pdfViewerBase.signatureModule.modifySignatureCollection(null, pageNumber, currentAnnotation, true);\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.deletComment = function (commentDiv) {\n if (commentDiv.parentElement.firstChild === commentDiv) {\n this.deleteAnnotation();\n }\n else {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.modifyCommentDeleteProperty(commentDiv.parentElement, commentDiv);\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.addReplyComments = function (currentAnnotation, replyComment, commentType) {\n if (commentType === 'add') {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(currentAnnotation.annotName);\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.createCommentDiv(commentsMainDiv);\n for (var j = 0; j < replyComment.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveCommentDiv(commentsMainDiv, replyComment[j]);\n }\n }\n else if (commentType === 'next') {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(currentAnnotation.annotationId);\n this.selectAnnotation(currentAnnotation);\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveCommentDiv(commentsMainDiv, replyComment);\n }\n };\n Annotation.prototype.editComments = function (commentId, editComment) {\n // eslint-disable-next-line\n var commentDiv = document.getElementById(commentId);\n commentDiv.childNodes[1].ej2_instances[0].value = editComment;\n };\n // eslint-disable-next-line\n Annotation.prototype.editAnnotation = function (annotation) {\n // eslint-disable-next-line\n var currentAnnotation;\n var annotationId;\n var annotationType;\n var pageNumber;\n var isTextMarkupUpdate = false;\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n currentAnnotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n annotationId = currentAnnotation.annotName;\n pageNumber = this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage;\n }\n else {\n if (this.pdfViewer.selectedItems.annotations[0]) {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n annotationId = currentAnnotation.annotName;\n pageNumber = currentAnnotation.pageIndex;\n }\n }\n if (annotation.uniqueKey !== undefined) {\n // eslint-disable-next-line\n currentAnnotation = this.pdfViewer.nameTable[annotation.uniqueKey];\n currentAnnotation.annotationSettings.isLock = annotation.annotationSettings.isLock;\n annotationId = currentAnnotation.annotName;\n pageNumber = currentAnnotation.pageIndex;\n if (isBlazor()) {\n if (annotation.allowedInteractions) {\n var allowedInteractionsCount = annotation.allowedInteractions.length;\n for (var i = 0; i < allowedInteractionsCount; i++) {\n if (annotation.allowedInteractions[i] === 0) {\n annotation.allowedInteractions[i] = AllowedInteraction.Select;\n }\n if (annotation.allowedInteractions[i] === 1) {\n annotation.allowedInteractions[i] = AllowedInteraction.Move;\n }\n if (annotation.allowedInteractions[i] === 2) {\n annotation.allowedInteractions[i] = AllowedInteraction.Resize;\n }\n if (annotation.allowedInteractions[i] === 3) {\n annotation.allowedInteractions[i] = AllowedInteraction.Delete;\n }\n if (annotation.allowedInteractions[i] === 4) {\n annotation.allowedInteractions[i] = AllowedInteraction.PropertyChange;\n }\n if (annotation.allowedInteractions[i] === 5) {\n annotation.allowedInteractions[i] = AllowedInteraction.None;\n }\n }\n }\n }\n // eslint-disable-next-line\n currentAnnotation.allowedInteractions = annotation.allowedInteractions ? annotation.allowedInteractions : this.updateAnnotationAllowedInteractions(annotation);\n }\n if (!currentAnnotation) {\n if (annotation.shapeAnnotationType === 'sticky' && annotation.annotationId !== undefined) {\n // eslint-disable-next-line\n currentAnnotation = this.pdfViewer.nameTable[annotation.annotationId];\n currentAnnotation.annotationSettings.isLock = annotation.annotationSettings.isLock;\n annotationId = currentAnnotation.annotName;\n pageNumber = currentAnnotation.pageIndex;\n }\n }\n if (annotation.shapeAnnotationType === 'textMarkup') {\n if (!this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n // eslint-disable-next-line max-len\n currentAnnotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.getAnnotations(annotation.pageNumber, annotation);\n for (var i = 0; i < currentAnnotation.length; i++) {\n if (annotation.annotationId === currentAnnotation[i].annotName) {\n isTextMarkupUpdate = true;\n currentAnnotation = currentAnnotation[i];\n currentAnnotation.isPrint = annotation.isPrint;\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = currentAnnotation;\n this.textMarkupAnnotationModule.selectTextMarkupCurrentPage = currentAnnotation.pageNumber;\n currentAnnotation.allowedInteractions = annotation.allowedInteractions;\n pageNumber = currentAnnotation.pageNumber;\n annotationId = annotation.annotationId;\n break;\n }\n }\n }\n }\n if (currentAnnotation) {\n // eslint-disable-next-line\n var clonedObject = cloneObject(currentAnnotation);\n // eslint-disable-next-line\n var redoClonedObject = cloneObject(currentAnnotation);\n if (annotation.shapeAnnotationType === 'textMarkup') {\n annotationType = 'textMarkup';\n }\n if (annotation && annotation.isCommentLock === true) {\n currentAnnotation.isCommentLock = annotation.isCommentLock;\n }\n if (annotation.comments) {\n for (var j_1 = 0; j_1 < annotation.comments.length; j_1++) {\n if (annotation.comments[j_1].isLock === true) {\n if (annotationType) {\n currentAnnotation.comments = annotation.comments;\n currentAnnotation.comments[j_1].isLock = annotation.comments[j_1].isLock;\n }\n else {\n currentAnnotation.properties.comments = annotation.comments;\n currentAnnotation.properties.comments[j_1].isLock = annotation.comments[j_1].isLock;\n }\n }\n }\n }\n if (annotation && annotation.note !== '' && annotation.note !== undefined) {\n if (annotationType) {\n currentAnnotation.note = annotation.note;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addTextToComments(currentAnnotation.annotName, currentAnnotation.note);\n }\n else {\n currentAnnotation.notes = annotation.note;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addTextToComments(currentAnnotation.annotName, currentAnnotation.notes);\n }\n }\n else {\n if (annotation && annotation.isCommentLock && ((annotation.type && annotation.type !== 'FreeText') || annotation.shapeAnnotationType !== 'FreeText')) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addTextToComments(currentAnnotation.annotName, ' ');\n }\n }\n if (annotation.commentId && annotation.editComment && annotation.commentType === 'edit') {\n this.editComments(annotation.commentId, annotation.editComment);\n }\n if (annotation.replyComment && annotation.commentType === 'add') {\n this.addReplyComments(currentAnnotation, annotation.replyComment, annotation.commentType);\n this.pdfViewer.annotationCollection[0].note = annotation.note;\n }\n if (annotation.nextComment && annotation.commentType === 'next') {\n this.addReplyComments(annotation, annotation.nextComment, annotation.commentType);\n }\n if (annotation.note === '' && annotation.commentType === 'delete') {\n // eslint-disable-next-line\n var commentDiv = document.getElementById(annotation.annotationId);\n this.deletComment(commentDiv);\n }\n if (annotation.comments) {\n for (var j_2 = 0; j_2 < annotation.comments.length; j_2++) {\n if (annotation.comments[j_2].note === '' && annotation.commentType === 'delete') {\n // eslint-disable-next-line\n var commentDiv = document.getElementById(annotation.comments[j_2].annotName);\n this.deletComment(commentDiv);\n }\n }\n }\n if (annotation.type === 'TextMarkup' || annotation.shapeAnnotationType === 'textMarkup') {\n if (currentAnnotation.annotationSettings && annotation.annotationSettings) {\n if (currentAnnotation.annotationSettings.isLock !== annotation.annotationSettings.isLock) {\n // eslint-disable-next-line max-len\n var pageAnnotations = this.textMarkupAnnotationModule.modifyAnnotationProperty('AnnotationSettings', annotation.annotationSettings.isLock, null);\n // eslint-disable-next-line max-len\n this.textMarkupAnnotationModule.manageAnnotations(pageAnnotations, this.textMarkupAnnotationModule.selectTextMarkupCurrentPage);\n }\n }\n if (currentAnnotation.opacity !== annotation.opacity) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyOpacityProperty(null, annotation.opacity);\n }\n if (currentAnnotation.color !== annotation.color) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyColorProperty(annotation.color);\n }\n annotationType = 'textMarkup';\n if (isTextMarkupUpdate) {\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = null;\n this.textMarkupAnnotationModule.selectTextMarkupCurrentPage = null;\n }\n // eslint-disable-next-line max-len\n }\n else if (annotation && annotation.stampAnnotationType === 'image' && annotation.shapeAnnotationType === 'stamp' && annotation.stampAnnotationPath) {\n annotationType = 'stamp';\n if (currentAnnotation.data !== annotation.stampAnnotationPath) {\n currentAnnotation.data = annotation.stampAnnotationPath;\n currentAnnotation.wrapper.children[0].imageSource = annotation.stampAnnotationPath;\n }\n if (annotation.opacity && currentAnnotation.opacity !== annotation.opacity) {\n this.annotationPropertyChange(currentAnnotation, annotation.opacity, 'Shape Opacity', clonedObject, redoClonedObject);\n }\n this.calculateAnnotationBounds(currentAnnotation, annotation);\n // eslint-disable-next-line max-len\n }\n else if (annotation.type === 'StickyNotes' || annotation.type === 'Stamp' || annotation.shapeAnnotationType === 'sticky' || annotation.shapeAnnotationType === 'stamp') {\n if (annotation.opacity && currentAnnotation.opacity !== annotation.opacity) {\n this.annotationPropertyChange(currentAnnotation, annotation.opacity, 'Shape Opacity', clonedObject, redoClonedObject);\n }\n this.calculateAnnotationBounds(currentAnnotation, annotation);\n if (annotation.type === 'StickyNotes' || annotation.shapeAnnotationType === 'sticky') {\n annotationType = 'sticky';\n }\n else {\n annotationType = 'stamp';\n }\n // eslint-disable-next-line max-len\n }\n else if (annotation.type === 'Ink' || annotation.type === 'Shape' || annotation.type === 'Measure' || annotation.shapeAnnotationType === 'Line' || annotation.shapeAnnotationType === 'Square' || annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Polygon' || annotation.shapeAnnotationType === 'Polyline' || annotation.shapeAnnotationType === 'Ink') {\n this.calculateAnnotationBounds(currentAnnotation, annotation);\n if (annotation.opacity && currentAnnotation.opacity !== annotation.opacity) {\n this.annotationPropertyChange(currentAnnotation, annotation.opacity, 'Shape Opacity', clonedObject, redoClonedObject);\n }\n if (annotation.fillColor && currentAnnotation.fillColor !== annotation.fillColor) {\n redoClonedObject.fillColor = annotation.fillColor;\n if (annotation.labelSettings && annotation.labelSettings.fillColor) {\n annotation.labelSettings.fillColor = annotation.fillColor;\n }\n this.pdfViewer.nodePropertyChange(currentAnnotation, { fillColor: annotation.fillColor });\n this.triggerAnnotationPropChange(currentAnnotation, true, false, false, false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Fill', '', clonedObject, redoClonedObject);\n }\n if (annotation.strokeColor && currentAnnotation.strokeColor !== annotation.strokeColor) {\n redoClonedObject.strokeColor = annotation.strokeColor;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { strokeColor: annotation.strokeColor });\n this.triggerAnnotationPropChange(currentAnnotation, false, true, false, false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Stroke', '', clonedObject, redoClonedObject);\n }\n if (annotation.thickness && currentAnnotation.thickness !== annotation.thickness) {\n redoClonedObject.thickness = annotation.thickness;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { thickness: annotation.thickness });\n this.triggerAnnotationPropChange(currentAnnotation, false, false, true, false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Thickness', '', clonedObject, redoClonedObject);\n }\n if (currentAnnotation.author !== annotation.author) {\n redoClonedObject.author = annotation.author;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { author: annotation.author });\n this.triggerAnnotationPropChange(currentAnnotation, false, true, false, false);\n }\n if (currentAnnotation.modifiedDate !== annotation.modifiedDate) {\n redoClonedObject.modifiedDate = annotation.modifiedDate;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { modifiedDate: annotation.modifiedDate });\n }\n if (currentAnnotation.subject !== annotation.subject) {\n redoClonedObject.subject = annotation.subject;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { subject: annotation.subject });\n this.triggerAnnotationPropChange(currentAnnotation, false, true, false, false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Stroke', '', clonedObject, redoClonedObject);\n }\n if (this.pdfViewer.enableShapeLabel && currentAnnotation.fontColor !== annotation.fontColor) {\n redoClonedObject.fontColor = annotation.fontColor;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { fontColor: annotation.fontColor });\n }\n if (this.pdfViewer.enableShapeLabel && annotation.labelSettings && annotation.labelSettings.fillColor) {\n if (currentAnnotation.labelFillColor !== annotation.labelSettings.fillColor) {\n redoClonedObject.labelFillColor = annotation.labelSettings.fillColor;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { labelFillColor: annotation.labelSettings.fillColor });\n }\n }\n // eslint-disable-next-line max-len\n if (annotation.shapeAnnotationType === 'Line' || annotation.shapeAnnotationType === 'Polyline' || annotation.shapeAnnotationType === 'Polygon') {\n if (JSON.stringify(currentAnnotation.vertexPoints) !== JSON.stringify(annotation.vertexPoints)) {\n currentAnnotation.vertexPoints = annotation.vertexPoints;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { vertexPoints: annotation.vertexPoints });\n }\n }\n // eslint-disable-next-line max-len\n if (annotation.subType === 'Line' || annotation.subType === 'Arrow' || annotation.subType === 'Distance' || annotation.subType === 'Perimeter') {\n var isSourceDecoraterShapesChanged = false;\n var isTargetDecoraterShapesChanged = false;\n var isBorderDashArrayChanged = false;\n clonedObject.lineHeadStart = currentAnnotation.sourceDecoraterShapes;\n clonedObject.lineHeadEnd = currentAnnotation.taregetDecoraterShapes;\n redoClonedObject.lineHeadStart = annotation.lineHeadStartStyle;\n redoClonedObject.lineHeadEnd = annotation.lineHeadEndStyle;\n redoClonedObject.borderDashArray = annotation.borderDashArray;\n if (currentAnnotation.taregetDecoraterShapes !== annotation.lineHeadEndStyle) {\n isTargetDecoraterShapesChanged = true;\n }\n if (currentAnnotation.sourceDecoraterShapes !== annotation.lineHeadStartStyle) {\n isSourceDecoraterShapesChanged = true;\n }\n if (currentAnnotation.borderDashArray !== annotation.borderDashArray) {\n isBorderDashArrayChanged = true;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(currentAnnotation, { sourceDecoraterShapes: annotation.lineHeadStartStyle, taregetDecoraterShapes: annotation.lineHeadEndStyle, borderDashArray: annotation.borderDashArray });\n // eslint-disable-next-line max-len\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, false, isSourceDecoraterShapesChanged, isTargetDecoraterShapesChanged, isBorderDashArrayChanged);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Line properties change', '', clonedObject, redoClonedObject);\n }\n // eslint-disable-next-line max-len\n if (annotation.type === 'Shape' || annotation.shapeAnnotationType === 'Line' || annotation.shapeAnnotationType === 'Square' || annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Polygon') {\n annotationType = 'shape';\n }\n if (annotation.type === 'Ink' || annotation.shapeAnnotationType === 'Ink') {\n annotationType = 'ink';\n }\n // eslint-disable-next-line max-len\n if (annotation.type === 'Measure' || annotation.subject === 'Distance calculation' || annotation.subject === 'Perimeter calculation' || annotation.subject === 'Radius calculation' || annotation.subject === 'Area calculation' || annotation.subject === 'Volume calculation') {\n annotationType = 'shape_measure';\n }\n if (annotation.labelSettings && this.pdfViewer.enableShapeLabel) {\n this.updateFreeTextProperties(currentAnnotation);\n this.pdfViewer.nodePropertyChange(currentAnnotation, {\n // eslint-disable-next-line max-len\n labelOpacity: annotation.labelSettings.opacity, fontColor: annotation.labelSettings.fontColor, fontSize: annotation.labelSettings.fontSize, fontFamily: annotation.labelSettings.fontFamily,\n labelContent: annotation.labelSettings.labelContent, labelFillColor: annotation.labelSettings.fillColor\n });\n }\n if (this.pdfViewer.enableShapeLabel && annotation.calibrate && annotation.calibrate.depth) {\n if (this.pdfViewer.annotationModule.measureAnnotationModule.volumeDepth !== annotation.calibrate.depth) {\n this.pdfViewer.annotationModule.measureAnnotationModule.volumeDepth = annotation.calibrate.depth;\n // eslint-disable-next-line max-len\n currentAnnotation.notes = this.pdfViewer.annotationModule.measureAnnotationModule.calculateVolume(currentAnnotation.vertexPoints);\n currentAnnotation.labelContent = currentAnnotation.notes;\n if (annotation.labelSettings && annotation.labelSettings.labelContent) {\n annotation.labelSettings.labelContent = currentAnnotation.notes;\n }\n this.pdfViewer.nodePropertyChange(currentAnnotation, { labelContent: currentAnnotation.labelContent });\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addTextToComments(currentAnnotation.annotName, currentAnnotation.notes);\n }\n }\n }\n else if (annotation.type === 'FreeText' || annotation.shapeAnnotationType === 'FreeText') {\n annotationType = 'freetext';\n if (this.pdfViewer.freeTextSettings.enableAutoFit && currentAnnotation.dynamicText !== annotation.content) {\n // eslint-disable-next-line\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + currentAnnotation.pageIndex);\n var context = canvas.getContext(\"2d\");\n var fontSize = annotation.fontSize;\n var font = void 0;\n var fontFamily = annotation.fontFamily;\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n annotation.font.isBold ? font = 'bold' + ' ' + fontSize + 'px' + ' ' + fontFamily : font = fontSize + 'px' + ' ' + fontFamily;\n context.font = font;\n var characterLength = 8;\n var highestTextNode = \"\";\n // eslint-disable-next-line\n var textNodes = [];\n var textboxValue = annotation.content ? annotation.content : annotation.dynamicText;\n if (textboxValue.indexOf('\\n') > -1) {\n textNodes = textboxValue.split('\\n');\n for (var j = 0; j < textNodes.length; j++) {\n // eslint-disable-next-line\n var textNodeData = context.measureText(textNodes[j]);\n // eslint-disable-next-line\n var highestTextNodeData = context.measureText(highestTextNode);\n if (textNodeData.width > highestTextNodeData.width) {\n highestTextNode = textNodes[j];\n }\n }\n }\n else {\n highestTextNode = textboxValue;\n }\n // eslint-disable-next-line\n var textwidth = context.measureText(highestTextNode);\n annotation.bounds.width = Math.ceil(textwidth.width + ((characterLength + 1) * 2));\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + (annotation.pageIndex));\n var maxWidth = pageDiv.clientWidth - (annotation.bounds.left * zoomFactor);\n if (annotation.bounds.width > maxWidth) {\n annotation.bounds.width = maxWidth / zoomFactor;\n }\n var height = annotation.bounds.height;\n annotation.bounds.height = height >= currentAnnotation.bounds.height ? height : currentAnnotation.bounds.height;\n }\n this.calculateAnnotationBounds(currentAnnotation, annotation);\n this.pdfViewer.nodePropertyChange(currentAnnotation, {\n // eslint-disable-next-line max-len\n opacity: annotation.opacity, fontColor: annotation.fontColor, fontSize: annotation.fontSize, fontFamily: annotation.fontFamily,\n // eslint-disable-next-line max-len\n dynamicText: annotation.content ? annotation.content : annotation.dynamicText, fillColor: annotation.fillColor, textAlign: annotation.textAlign, strokeColor: annotation.strokeColor, thickness: annotation.thickness, font: annotation.fontStyle ? this.setFreeTextFontStyle(annotation.fontStyle) : this.setFreeTextFontStyle(annotation.font),\n isReadonly: annotation.isReadonly\n });\n if (annotation.opacity && currentAnnotation.opacity !== annotation.opacity) {\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n }\n if (annotation.fillColor && currentAnnotation.fillColor !== annotation.fillColor) {\n this.triggerAnnotationPropChange(currentAnnotation, true, false, false, false);\n }\n if (annotation.strokeColor && currentAnnotation.strokeColor !== annotation.strokeColor) {\n this.triggerAnnotationPropChange(currentAnnotation, false, true, false, false);\n }\n if (annotation.thickness && currentAnnotation.thickness !== annotation.thickness) {\n this.triggerAnnotationPropChange(currentAnnotation, false, false, true, false);\n }\n if (annotation.content && this.pdfViewer.selectedItems.annotations[0]) {\n this.updateAnnotationComments(this.pdfViewer.selectedItems.annotations[0].annotName, annotation.content);\n }\n // eslint-disable-next-line\n var newCommentDiv = document.getElementById(this.pdfViewer.element.id + '_commenttextbox_editor');\n // eslint-disable-next-line\n var commentObj = new InPlaceEditor({\n value: annotation.content\n });\n commentObj.appendTo(newCommentDiv);\n }\n currentAnnotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n if (currentAnnotation.customData !== annotation.customData) {\n currentAnnotation.customData = annotation.customData;\n }\n currentAnnotation.isPrint = annotation.isPrint;\n if (annotation.type !== 'TextMarkup') {\n this.pdfViewer.renderDrawing();\n this.updateCollection(annotationId, pageNumber, annotation, annotationType);\n }\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.annotationPropertyChange = function (currentAnnotation, opacity, actionString, clonedObject, redoClonedObject) {\n this.pdfViewer.nodePropertyChange(currentAnnotation, { opacity: opacity });\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, actionString, '', clonedObject, redoClonedObject);\n };\n // eslint-disable-next-line\n Annotation.prototype.calculateAnnotationBounds = function (currentAnnotation, annotation) {\n // eslint-disable-next-line\n var bounds = this.pdfViewerBase.convertBounds(currentAnnotation.wrapper.bounds);\n // eslint-disable-next-line\n var annotBounds = this.pdfViewerBase.convertBounds(annotation.bounds);\n if (bounds && annotBounds) {\n // eslint-disable-next-line\n if (JSON.stringify(bounds) !== JSON.stringify(annotBounds) && (Math.abs(bounds.Y - annotBounds.Y) > 2) || (Math.abs(bounds.X - annotBounds.X) > 2) || (Math.abs(bounds.Width - annotBounds.Width) > 2) || (Math.abs(bounds.Height - annotBounds.Height) > 2)) {\n // eslint-disable-next-line\n var annotationBounds = { x: annotBounds.X + (annotBounds.Width / 2), y: annotBounds.Y + (annotBounds.Height / 2), width: annotBounds.Width, height: annotBounds.Height };\n this.pdfViewer.nodePropertyChange(currentAnnotation, { bounds: annotationBounds });\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, false);\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateFreeTextProperties = function (annotation) {\n if (annotation.labelSettings) {\n if (annotation.labelSettings.fillColor) {\n annotation.labelFillColor = annotation.labelSettings.fillColor;\n }\n if (annotation.labelSettings.fontColor) {\n annotation.fontColor = annotation.labelSettings.fontColor;\n }\n if (annotation.labelSettings.fontSize) {\n annotation.fontSize = annotation.labelSettings.fontSize;\n }\n if (annotation.labelSettings.fontFamily) {\n annotation.fontFamily = annotation.labelSettings.fontFamily;\n }\n if (annotation.labelSettings.opacity) {\n annotation.labelOpacity = annotation.labelSettings.opacity;\n }\n if (annotation.labelSettings.labelContent) {\n annotation.labelContent = annotation.labelSettings.labelContent;\n }\n }\n };\n Annotation.prototype.updateAnnotationComments = function (annotationId, noteContent) {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(annotationId);\n if (commentsDiv && commentsDiv.childNodes) {\n if (commentsDiv.childNodes[0].ej2_instances) {\n commentsDiv.childNodes[0].ej2_instances[0].value = noteContent;\n }\n else if (commentsDiv.childNodes[0].childNodes && commentsDiv.childNodes[0].childNodes[1].ej2_instances) {\n commentsDiv.childNodes[0].childNodes[1].ej2_instances[0].value = noteContent;\n }\n }\n };\n /**\n * @param annotation\n * @param currentAnnotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.addFreeTextProperties = function (annotation, currentAnnotation) {\n if (this.pdfViewer.enableShapeLabel && annotation && currentAnnotation) {\n currentAnnotation.labelSettings = {\n fontColor: annotation.fontColor, fontSize: annotation.fontSize, fontFamily: annotation.fontFamily,\n opacity: annotation.labelOpacity, labelContent: annotation.labelContent, fillColor: annotation.labelFillColor\n };\n }\n };\n Annotation.prototype.updateMeasurementSettings = function () {\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableMeasureAnnotation) {\n // eslint-disable-next-line max-len\n var ratioString = '1 ' + this.pdfViewer.measurementSettings.conversionUnit + ' = ' + this.pdfViewer.measurementSettings.scaleRatio + ' ' + this.pdfViewer.measurementSettings.displayUnit;\n this.measureAnnotationModule.updateMeasureValues(ratioString, this.pdfViewer.measurementSettings.displayUnit, this.pdfViewer.measurementSettings.conversionUnit, this.pdfViewer.measurementSettings.depth);\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.updateCollection = function (annotationId, pageNumber, annotation, annotationType) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_' + annotationType);\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_' + annotationType];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n if (annotationCollection !== null) {\n for (var i = 0; i < annotationCollection.length; i++) {\n if (annotationCollection[i].annotName === annotationId) {\n // eslint-disable-next-line\n var newAnnot = this.modifyAnnotationProperties(annotationCollection[i], annotation, annotationType);\n annotationCollection[i] = newAnnot;\n }\n }\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_' + annotationType);\n }\n if (annotObject[index]) {\n annotObject[index].annotations = annotationCollection;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_' + annotationType] = annotationStringified;\n }\n else {\n // eslint-disable-next-line max-len\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_' + annotationType, annotationStringified);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.modifyAnnotationProperties = function (newAnnotation, annotation, annotationType) {\n if (annotation && annotation.isCommentLock === true) {\n newAnnotation.isCommentLock = annotation.isCommentLock;\n }\n if (annotation.comments) {\n for (var j = 0; j < annotation.comments.length; j++) {\n if (annotation.comments[j].isLock === true) {\n newAnnotation.comments[j].isLock = annotation.comments[j].isLock;\n }\n }\n }\n if (annotation && annotation.note !== '' && annotation.note !== undefined) {\n newAnnotation.note = annotation.note;\n }\n if (annotation.commentId && annotation.editComment && annotation.commentType === 'edit') {\n // eslint-disable-next-line\n var commentDiv = document.getElementById(annotation.commentId);\n if (annotation.annotationId === annotation.commentId) {\n newAnnotation.note = commentDiv.childNodes[1].ej2_instances[0].value;\n }\n for (var j = 0; j < annotation.comments.length; j++) {\n if (annotation.comments[j].annotName === annotation.commentId) {\n newAnnotation.comments[j].note = commentDiv.childNodes[1].ej2_instances[0].value;\n }\n }\n }\n if (annotationType === 'textMarkup') {\n newAnnotation.opacity = annotation.opacity;\n newAnnotation.color = annotation.color;\n newAnnotation.allowedInteractions = annotation.allowedInteractions;\n }\n else if (annotationType === 'sticky' || annotationType === 'stamp') {\n if (annotation.bounds) {\n newAnnotation.bounds = annotation.bounds;\n }\n newAnnotation.opacity = annotation.opacity;\n newAnnotation.annotationSettings = annotation.annotationSettings;\n newAnnotation.allowedInteractions = annotation.allowedInteractions;\n if (annotation.stampAnnotationPath) {\n newAnnotation.stampAnnotationPath = annotation.stampAnnotationPath;\n }\n }\n else if (annotationType === 'ink') {\n if (annotation.bounds) {\n newAnnotation.bounds = annotation.bounds;\n }\n newAnnotation.opacity = annotation.opacity;\n newAnnotation.strokeColor = annotation.strokeColor;\n newAnnotation.thickness = annotation.thickness;\n newAnnotation.annotationSettings = annotation.annotationSettings;\n newAnnotation.allowedInteractions = annotation.allowedInteractions;\n }\n else if (annotationType === 'shape' || annotationType === 'shape_measure') {\n if (annotation.subType === 'Line' || annotation.subType === 'Arrow' || annotation.subType === 'Distance' ||\n annotation.subType === 'Perimeter') {\n if (annotation.bounds) {\n newAnnotation.bounds = annotation.bounds;\n }\n if (annotation.vertexPoint) {\n newAnnotation.vertexPoints = annotation.vertexPoints;\n }\n newAnnotation.opacity = annotation.opacity;\n newAnnotation.fillColor = annotation.fillColor;\n newAnnotation.strokeColor = annotation.strokeColor;\n newAnnotation.thickness = annotation.thickness;\n newAnnotation.borderDashArray = annotation.borderDashArray;\n newAnnotation.lineHeadStart = this.getArrowTypeForCollection(annotation.lineHeadStartStyle);\n newAnnotation.lineHeadEnd = this.getArrowTypeForCollection(annotation.lineHeadEndStyle);\n newAnnotation.annotationSettings = annotation.annotationSettings;\n newAnnotation.allowedInteractions = annotation.allowedInteractions;\n }\n else {\n if (annotation.bounds) {\n newAnnotation.bounds = annotation.bounds;\n }\n if (annotation.vertexPoint) {\n newAnnotation.vertexPoints = annotation.vertexPoints;\n }\n newAnnotation.opacity = annotation.opacity;\n newAnnotation.fillColor = annotation.fillColor;\n newAnnotation.strokeColor = annotation.strokeColor;\n newAnnotation.thickness = annotation.thickness;\n newAnnotation.annotationSettings = annotation.annotationSettings;\n newAnnotation.allowedInteractions = annotation.allowedInteractions;\n if (annotation.calibrate) {\n if (newAnnotation.annotName === annotation.annotationId) {\n if (newAnnotation.calibrate.depth !== annotation.calibrate.depth) {\n newAnnotation.calibrate.depth = annotation.calibrate.depth;\n this.pdfViewer.annotationModule.measureAnnotationModule.volumeDepth = annotation.calibrate.depth;\n // eslint-disable-next-line max-len\n newAnnotation.note = this.pdfViewer.annotationModule.measureAnnotationModule.calculateVolume(newAnnotation.vertexPoints);\n }\n }\n }\n }\n if (this.pdfViewer.enableShapeLabel && annotation.labelSettings) {\n var text = annotation.labelSettings.labelContent;\n newAnnotation.note = text;\n newAnnotation.fontSize = annotation.labelSettings.fontSize;\n newAnnotation.labelFillColor = annotation.labelSettings.fillColor;\n if (newAnnotation.labelContent) {\n newAnnotation.labelContent = text;\n }\n if (newAnnotation.labelSettings) {\n newAnnotation.labelSettings = annotation.labelSettings;\n }\n this.updateAnnotationComments(newAnnotation.annotName, text);\n }\n }\n else if (annotationType === 'freetext') {\n if (annotation.bounds) {\n newAnnotation.bounds = annotation.bounds;\n }\n newAnnotation.opacity = annotation.opacity;\n newAnnotation.strokeColor = annotation.strokeColor;\n newAnnotation.thickness = annotation.thickness;\n if (annotation.content) {\n newAnnotation.dynamicText = annotation.content;\n }\n newAnnotation.fontFamily = annotation.fontFamily;\n newAnnotation.fontSize = annotation.fontSize;\n newAnnotation.fontColor = annotation.fontColor;\n newAnnotation.fillColor = annotation.fillColor;\n newAnnotation.font = annotation.font ? annotation.font : annotation.fontStyle;\n newAnnotation.textAlign = annotation.textAlign;\n newAnnotation.annotationSettings = annotation.annotationSettings;\n newAnnotation.allowedInteractions = annotation.allowedInteractions;\n newAnnotation.isReadonly = annotation.isReadonly;\n }\n newAnnotation.customData = annotation.customData;\n newAnnotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n newAnnotation.isPrint = annotation.isPrint;\n if (annotation.annotationSettings && !isNullOrUndefined(annotation.annotationSettings.isLock)) {\n newAnnotation.isLocked = annotation.annotationSettings.isLock;\n }\n return newAnnotation;\n };\n /**\n * @param annotationType\n * @param annotationSubType\n * @param annotationType\n * @param annotationSubType\n * @private\n */\n Annotation.prototype.updateAnnotationAuthor = function (annotationType, annotationSubType) {\n var annotationAuthor;\n if (annotationType === 'sticky') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.stickyNotesSettings.author !== 'Guest') ? this.pdfViewer.stickyNotesSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationType === 'stamp') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.stampSettings.author !== 'Guest') ? this.pdfViewer.stampSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationType === 'shape') {\n if (annotationSubType === 'Line') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.lineSettings.author !== 'Guest') ? this.pdfViewer.lineSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'LineWidthArrowHead' || annotationSubType === 'Arrow') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.arrowSettings.author !== 'Guest') ? this.pdfViewer.arrowSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Circle' || annotationSubType === 'Ellipse' || annotationSubType === 'Oval') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.circleSettings.author !== 'Guest') ? this.pdfViewer.circleSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Rectangle' || annotationSubType === 'Square') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.rectangleSettings.author !== 'Guest') ? this.pdfViewer.rectangleSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Polygon') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.polygonSettings.author !== 'Guest') ? this.pdfViewer.polygonSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n }\n else if (annotationType === 'measure') {\n if (annotationSubType === 'Distance' || annotationSubType === 'Distance calculation') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.distanceSettings.author !== 'Guest') ? this.pdfViewer.distanceSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Perimeter' || annotationSubType === 'Perimeter calculation') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.perimeterSettings.author !== 'Guest') ? this.pdfViewer.perimeterSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Radius' || annotationSubType === 'Radius calculation') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.radiusSettings.author !== 'Guest') ? this.pdfViewer.radiusSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Area' || annotationSubType === 'Area calculation') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.areaSettings.author !== 'Guest') ? this.pdfViewer.areaSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Volume' || annotationSubType === 'Volume calculation') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.volumeSettings.author !== 'Guest') ? this.pdfViewer.volumeSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n }\n else if (annotationType === 'textMarkup') {\n if (annotationSubType === 'Highlight') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.highlightSettings.author !== 'Guest') ? this.pdfViewer.highlightSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Underline') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.underlineSettings.author !== 'Guest') ? this.pdfViewer.underlineSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Strikethrough') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.strikethroughSettings.author !== 'Guest') ? this.pdfViewer.strikethroughSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else {\n // eslint-disable-next-line max-len\n annotationAuthor = this.pdfViewer.annotationSettings.author;\n }\n }\n else if (annotationType === 'freeText') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.freeTextSettings.author !== 'Guest') ? this.pdfViewer.freeTextSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationType === 'ink') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.inkAnnotationSettings.author !== 'Guest') ? this.pdfViewer.inkAnnotationSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n if (!annotationAuthor) {\n // eslint-disable-next-line max-len\n annotationAuthor = this.pdfViewer.annotationSettings.author;\n }\n return annotationAuthor;\n };\n /**\n * @param colour\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.nameToHash = function (colour) {\n // eslint-disable-next-line\n var colours = {\n 'aliceblue': '#f0f8ff', 'antiquewhite': '#faebd7', 'aqua': '#00ffff', 'aquamarine': '#7fffd4', 'azure': '#f0ffff',\n 'beige': '#f5f5dc', 'bisque': '#ffe4c4', 'black': '#000000', 'blanchedalmond': '#ffebcd', 'blue': '#0000ff',\n 'blueviolet': '#8a2be2', 'brown': '#a52a2a', 'burlywood': '#deb887', 'yellow': '#ffff00', 'yellowgreen': '#9acd32',\n 'cadetblue': '#5f9ea0', 'chartreuse': '#7fff00', 'chocolate': '#d2691e', 'coral': '#ff7f50',\n 'cornflowerblue': '#6495ed', 'cornsilk': '#fff8dc', 'crimson': '#dc143c',\n 'cyan': '#00ffff', 'darkblue': '#00008b', 'darkcyan': '#008b8b', 'darkgoldenrod': '#b8860b', 'darkgray': '#a9a9a9',\n 'darkred': '#8b0000', 'darksalmon': '#e9967a', 'darkgreen': '#006400', 'darkkhaki': '#bdb76b',\n 'darkmagenta': '#8b008b', 'darkolivegreen': '#556b2f', 'darkorange': '#ff8c00', 'darkorchid': '#9932cc',\n 'darkseagreen': '#8fbc8f', 'darkslateblue': '#483d8b', 'darkslategray': '#2f4f4f', 'darkturquoise': '#00ced1',\n 'darkviolet': '#9400d3', 'deeppink': '#ff1493', 'deepskyblue': '#00bfff', 'dimgray': '#696969',\n 'dodgerblue': '#1e90ff', 'firebrick': '#b22222', 'floralwhite': '#fffaf0',\n 'forestgreen': '#228b22', 'fuchsia': '#ff00ff', 'gainsboro': '#dcdcdc', 'ghostwhite': '#f8f8ff',\n 'gold': '#ffd700', 'goldenrod': '#daa520', 'gray': '#808080', 'green': '#008000',\n 'greenyellow': '#adff2f', 'honeydew': '#f0fff0', 'hotpink': '#ff69b4', 'indianred ': '#cd5c5c',\n 'mediumorchid': '#ba55d3', 'mediumpurple': '#9370d8', 'indigo': '#4b0082', 'ivory': '#fffff0',\n 'navy': '#000080', 'oldlace': '#fdf5e6', 'olive': '#808000', 'khaki': '#f0e68c',\n 'lavender': '#e6e6fa', 'lavenderblush': '#fff0f5', 'lawngreen': '#7cfc00', 'lemonchiffon': '#fffacd',\n 'lightblue': '#add8e6', 'lightcoral': '#f08080', 'lightcyan': '#e0ffff',\n 'lightgoldenrodyellow': '#fafad2', 'lightgrey': '#d3d3d3', 'lightgreen': '#90ee90',\n 'lightpink': '#ffb6c1', 'lightsalmon': '#ffa07a', 'lightseagreen': '#20b2aa',\n 'lightskyblue': '#87cefa', 'lightslategray': '#778899', 'lightsteelblue': '#b0c4de',\n 'lightyellow': '#ffffe0', 'lime': '#00ff00', 'limegreen': '#32cd32', 'linen': '#faf0e6',\n 'magenta': '#ff00ff', 'maroon': '#800000', 'mediumaquamarine': '#66cdaa', 'mediumblue': '#0000cd',\n 'mediumseagreen': '#3cb371', 'mediumslateblue': '#7b68ee', 'mediumspringgreen': '#00fa9a',\n 'mediumturquoise': '#48d1cc', 'mediumvioletred': '#c71585', 'midnightblue': '#191970',\n 'mintcream': '#f5fffa', 'mistyrose': '#ffe4e1', 'moccasin': '#ffe4b5', 'navajowhite': '#ffdead',\n 'rebeccapurple': '#663399', 'red': '#ff0000', 'rosybrown': '#bc8f8f', 'royalblue': '#4169e1',\n 'olivedrab': '#6b8e23', 'orange': '#ffa500', 'orangered': '#ff4500', 'orchid': '#da70d6',\n 'palegoldenrod': '#eee8aa', 'palegreen': '#98fb98', 'paleturquoise': '#afeeee',\n 'palevioletred': '#d87093', 'papayawhip': '#ffefd5', 'peachpuff': '#ffdab9', 'peru': '#cd853f',\n 'wheat': '#f5deb3', 'white': '#ffffff', 'whitesmoke': '#f5f5f5', 'pink': '#ffc0cb', 'plum': '#dda0dd',\n 'steelblue': '#4682b4', 'violet': '#ee82ee', 'powderblue': '#b0e0e6', 'purple': '#800080',\n 'saddlebrown': '#8b4513', 'salmon': '#fa8072', 'sandybrown': '#f4a460', 'seagreen': '#2e8b57',\n 'seashell': '#fff5ee', 'sienna': '#a0522d', 'silver': '#c0c0c0', 'skyblue': '#87ceeb',\n 'slateblue': '#6a5acd', 'slategray': '#708090', 'snow': '#fffafa', 'springgreen': '#00ff7f',\n 'tan': '#d2b48c', 'teal': '#008080', 'thistle': '#d8bfd8', 'tomato': '#ff6347', 'turquoise': '#40e0d0'\n };\n if (typeof colours[colour.toLowerCase()] !== 'undefined') {\n return colours[colour.toLowerCase()];\n }\n return '';\n };\n // eslint-disable-next-line\n Annotation.prototype.updateFreeTextFontStyle = function (font) {\n // eslint-disable-next-line\n var fontStyle = 0;\n if (font.isBold === 1) {\n fontStyle = 1;\n }\n else if (font.isItalic === 2) {\n fontStyle = 2;\n }\n else if (font.isUnderline === 4) {\n fontStyle = 4;\n }\n else if (font.isStrikeout) {\n fontStyle = 8;\n }\n else {\n fontStyle = { isBold: font.isBold, isItalic: font.isItalic, isUnderline: font.isUnderline, isStrikeout: font.isUnderline };\n }\n return fontStyle;\n };\n // eslint-disable-next-line\n Annotation.prototype.setFreeTextFontStyle = function (fontStyle) {\n if (fontStyle === 1) {\n return { isBold: true };\n }\n else if (fontStyle === 2) {\n return { isItalic: true };\n }\n else if (fontStyle === 4) {\n return { isUnderline: true };\n }\n else if (fontStyle === 8) {\n return { isStrikeout: true };\n }\n else {\n return { isBold: fontStyle.isBold, isItalic: fontStyle.isItalic, isUnderline: fontStyle.isUnderline, isStrikeout: fontStyle.isUnderline };\n }\n };\n /**\n * @param annotation\n * @param isSettings\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.findAnnotationSettings = function (annotation, isSettings) {\n // eslint-disable-next-line\n var annotSettings = this.pdfViewer.annotationSettings;\n if (annotation) {\n // eslint-disable-next-line\n var shapeType = annotation.shapeAnnotationType;\n if (shapeType === 'StickyNotes' && this.pdfViewer.stickyNotesSettings) {\n annotSettings = this.pdfViewer.stickyNotesSettings;\n }\n else if (shapeType === 'Stamp' || shapeType === 'Image') {\n annotSettings = this.pdfViewer.stampSettings;\n // eslint-disable-next-line max-len\n if ((shapeType === 'image' || shapeType === 'Image')) {\n annotSettings = this.pdfViewer.customStampSettings;\n }\n }\n else if (shapeType === 'FreeText') {\n annotSettings = this.pdfViewer.freeTextSettings;\n }\n else if (annotation.measureType === '') {\n if (shapeType === 'Line') {\n annotSettings = this.pdfViewer.lineSettings;\n // eslint-disable-next-line max-len\n }\n else if ((shapeType === 'Arrow' || shapeType === 'LineWidthArrowHead')) {\n annotSettings = this.pdfViewer.arrowSettings;\n }\n else if (shapeType === 'Rectangle') {\n annotSettings = this.pdfViewer.rectangleSettings;\n // eslint-disable-next-line max-len\n }\n else if ((shapeType === 'Circle' || shapeType === 'Ellipse')) {\n annotSettings = this.pdfViewer.circleSettings;\n }\n else if (shapeType === 'Polygon' && this.pdfViewer.polygonSettings) {\n annotSettings = this.pdfViewer.polygonSettings;\n }\n }\n else if (annotation.measureType !== '') {\n if (annotation.measureType === 'Distance') {\n annotSettings = this.pdfViewer.distanceSettings;\n }\n else if (annotation.measureType === 'Perimeter') {\n annotSettings = this.pdfViewer.perimeterSettings;\n }\n else if (annotation.measureType === 'Area') {\n annotSettings = this.pdfViewer.areaSettings;\n }\n else if (annotation.measureType === 'Radius') {\n annotSettings = this.pdfViewer.radiusSettings;\n }\n else if (annotation.measureType === 'Volume') {\n annotSettings = this.pdfViewer.volumeSettings;\n }\n }\n }\n var settings = annotation ? annotation.annotationSettings : {};\n if (settings && (settings.minWidth || settings.maxWidth || settings.minHeight || settings.maxHeight)) {\n return this.updateSettings(settings);\n }\n else if (isSettings) {\n return this.updateSettings(annotSettings);\n }\n else {\n return annotSettings;\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateAnnotationSettings = function (annotation) {\n // eslint-disable-next-line\n var annotSettings = this.pdfViewer.annotationSettings;\n if (annotation.AnnotType === 'sticky') {\n annotSettings = this.pdfViewer.stickyNotesSettings;\n }\n else if (annotation.AnnotType === 'stamp' || annotation.AnnotType === 'image' || annotation.AnnotType === 'Image') {\n annotSettings = this.pdfViewer.stampSettings;\n // eslint-disable-next-line max-len\n if ((annotation.Subject === 'image' || annotation.Subject === 'Image')) {\n annotSettings = this.pdfViewer.customStampSettings;\n }\n }\n else if (annotation.AnnotType === 'freeText') {\n annotSettings = this.pdfViewer.freeTextSettings;\n }\n else if (annotation.AnnotType === 'shape') {\n if (annotation.Subject === 'Line') {\n annotSettings = this.pdfViewer.lineSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Arrow' || annotation.Subject === 'LineWidthArrowHead')) {\n annotSettings = this.pdfViewer.arrowSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Rectangle' || annotation.Subject === 'Square')) {\n annotSettings = this.pdfViewer.rectangleSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Circle' || annotation.Subject === 'Ellipse' || annotation.Subject === 'Oval')) {\n annotSettings = this.pdfViewer.circleSettings;\n }\n else if (annotation.Subject === 'Polygon') {\n annotSettings = this.pdfViewer.polygonSettings;\n }\n }\n else if (annotation.AnnotType === 'shape_measure') {\n // eslint-disable-next-line max-len\n if ((annotation.Subject === 'Distance' || annotation.Subject === 'Distance calculation')) {\n annotSettings = this.pdfViewer.distanceSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Perimeter' || annotation.Subject === 'Perimeter calculation')) {\n annotSettings = this.pdfViewer.perimeterSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Area' || annotation.Subject === 'Area calculation')) {\n annotSettings = this.pdfViewer.areaSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Radius' || annotation.Subject === 'Radius calculation')) {\n annotSettings = this.pdfViewer.radiusSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Volume' || annotation.Subject === 'Volume calculation')) {\n annotSettings = this.pdfViewer.volumeSettings;\n }\n }\n return this.updateSettings(annotSettings);\n };\n /**\n * @param annotationSettings\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateSettings = function (annotationSettings) {\n var maxHeight = 0;\n var maxWidth = 0;\n var minHeight = 0;\n var minWidth = 0;\n var isLock = false;\n var isPrint = true;\n // eslint-disable-next-line\n var settings = this.pdfViewer.annotationSettings;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n maxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n maxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n minHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n minWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n else if (settings.minWidth || settings.maxWidth || settings.minHeight || settings.maxHeight) {\n maxHeight = settings.maxHeight ? settings.maxHeight : 2000;\n maxWidth = settings.maxWidth ? settings.maxWidth : 2000;\n minHeight = settings.minHeight ? settings.minHeight : 0;\n minWidth = settings.minWidth ? settings.minWidth : 0;\n }\n isLock = annotationSettings.isLock ? annotationSettings.isLock : settings.isLock ? settings.isLock : false;\n isPrint = annotationSettings.isPrint;\n return { minWidth: minWidth, maxWidth: maxWidth, minHeight: minHeight, maxHeight: maxHeight, isLock: isLock, isPrint: isPrint };\n };\n // eslint-disable-next-line\n Annotation.prototype.getOverlappedAnnotations = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var pageCollections = this.getPageShapeAnnotations(pageNumber);\n // eslint-disable-next-line\n var selectedAnnotation;\n for (var i = 0; i < pageCollections.length; i++) {\n if (annotation.annotName === pageCollections[i].annotName) {\n selectedAnnotation = pageCollections[i];\n break;\n }\n }\n // eslint-disable-next-line\n var annotationCollection = this.findOverlappedAnnotations(selectedAnnotation, pageCollections);\n return annotationCollection;\n };\n // eslint-disable-next-line\n Annotation.prototype.getPageShapeAnnotations = function (pageNumber) {\n // eslint-disable-next-line\n var pageCollections = [];\n // eslint-disable-next-line\n var inkObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_ink');\n if (inkObject) {\n var inkAnnotObject = JSON.parse(inkObject);\n if (inkAnnotObject) {\n var index = this.getPageCollection(inkAnnotObject, pageNumber);\n if (inkAnnotObject[index]) {\n // eslint-disable-next-line\n var inkAnnotations = inkAnnotObject[index].annotations;\n if (inkAnnotations && inkAnnotations.length > 0) {\n for (var i = 0; i < inkAnnotations.length; i++) {\n pageCollections.push(inkAnnotations[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape');\n if (shapeObject) {\n var shapeAnnotObject = JSON.parse(shapeObject);\n if (shapeAnnotObject) {\n var index = this.getPageCollection(shapeAnnotObject, pageNumber);\n if (shapeAnnotObject[index]) {\n // eslint-disable-next-line\n var shapeAnnotations = shapeAnnotObject[index].annotations;\n if (shapeAnnotations && shapeAnnotations.length > 0) {\n for (var i = 0; i < shapeAnnotations.length; i++) {\n pageCollections.push(shapeAnnotations[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var measureObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape_measure');\n if (measureObject) {\n var measureAnnotationObject = JSON.parse(measureObject);\n if (measureAnnotationObject) {\n var index = this.getPageCollection(measureAnnotationObject, pageNumber);\n if (measureAnnotationObject[index]) {\n // eslint-disable-next-line\n var measureAnnotations = measureAnnotationObject[index].annotations;\n if (measureAnnotations && measureAnnotations.length > 0) {\n for (var i = 0; i < measureAnnotations.length; i++) {\n pageCollections.push(measureAnnotations[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n if (stampObject) {\n var stampAnnotationObject = JSON.parse(stampObject);\n if (stampAnnotationObject) {\n var index = this.getPageCollection(stampAnnotationObject, pageNumber);\n if (stampAnnotationObject[index]) {\n // eslint-disable-next-line\n var stampAnnotations = stampAnnotationObject[index].annotations;\n if (stampAnnotations && stampAnnotations.length > 0) {\n for (var i = 0; i < stampAnnotations.length; i++) {\n pageCollections.push(stampAnnotations[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_freetext');\n if (freeTextObject) {\n var freeTextAnnotationObject = JSON.parse(freeTextObject);\n if (freeTextAnnotationObject) {\n var index = this.getPageCollection(freeTextAnnotationObject, pageNumber);\n if (freeTextAnnotationObject[index]) {\n // eslint-disable-next-line\n var freeTextAnnotations = freeTextAnnotationObject[index].annotations;\n if (freeTextAnnotations && freeTextAnnotations.length > 0) {\n for (var i = 0; i < freeTextAnnotations.length; i++) {\n pageCollections.push(freeTextAnnotations[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n if (stickyObject) {\n var stickyNotesAnnotationObject = JSON.parse(stickyObject);\n if (stickyNotesAnnotationObject) {\n var index = this.getPageCollection(stickyNotesAnnotationObject, pageNumber);\n if (stickyNotesAnnotationObject[index]) {\n // eslint-disable-next-line\n var stickyNotesAnnotations = stickyNotesAnnotationObject[index].annotations;\n if (stickyNotesAnnotations && stickyNotesAnnotations.length > 0) {\n for (var i = 0; i < stickyNotesAnnotations.length; i++) {\n pageCollections.push(stickyNotesAnnotations[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n if (textMarkupObject) {\n var textMarkupAnnotationObject = JSON.parse(textMarkupObject);\n if (textMarkupAnnotationObject) {\n var index = this.getPageCollection(textMarkupAnnotationObject, pageNumber);\n if (textMarkupAnnotationObject[index]) {\n // eslint-disable-next-line\n var textMarkupAnnotations = textMarkupAnnotationObject[index].annotations;\n if (textMarkupAnnotations && textMarkupAnnotations.length > 0) {\n for (var i = 0; i < textMarkupAnnotations.length; i++) {\n pageCollections.push(textMarkupAnnotations[i]);\n }\n }\n }\n }\n }\n return pageCollections;\n };\n // eslint-disable-next-line\n Annotation.prototype.findOverlappedAnnotations = function (annotation, pageCollections) {\n this.overlappedAnnotations = [];\n if (annotation && annotation.bounds) {\n if (annotation.shapeAnnotationType === 'textMarkup') {\n for (var i = 0; i < annotation.bounds.length; i++) {\n // eslint-disable-next-line\n var bounds = this.orderTextMarkupBounds(annotation.bounds[i]);\n this.calculateOverlappedAnnotationBounds(annotation, bounds, pageCollections);\n }\n }\n else {\n this.calculateOverlappedAnnotationBounds(annotation, annotation.bounds, pageCollections);\n }\n }\n return this.overlappedAnnotations;\n };\n // eslint-disable-next-line\n Annotation.prototype.calculateOverlappedAnnotationBounds = function (annotation, bounds, pageCollections) {\n // eslint-disable-next-line\n var selectBounds = bounds;\n if (annotation.shapeAnnotationType === 'Ink') {\n selectBounds = { left: bounds.x, top: bounds.y, height: bounds.height, width: bounds.width };\n }\n // eslint-disable-next-line\n var left = parseInt(selectBounds.left);\n // eslint-disable-next-line\n var top = parseInt(selectBounds.top);\n // eslint-disable-next-line\n var totalHeight = parseInt(selectBounds.top + selectBounds.height);\n // eslint-disable-next-line\n var totalWidth = parseInt(selectBounds.left + selectBounds.width);\n for (var i = 0; i < pageCollections.length; i++) {\n if (annotation.annotName === pageCollections[i].annotName) {\n this.checkOverlappedCollections(pageCollections[i], this.overlappedAnnotations);\n }\n else {\n var boundsCount = 1;\n if (pageCollections[i].shapeAnnotationType === 'textMarkup') {\n boundsCount = pageCollections[i].bounds.length;\n }\n for (var j = 0; j < boundsCount; j++) {\n // eslint-disable-next-line\n var annotationBounds = void 0;\n // eslint-disable-next-line\n var annotationBoundsCollection = pageCollections[i].bounds;\n if (pageCollections[i].shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line\n annotationBoundsCollection = { left: annotationBoundsCollection.x, top: annotationBoundsCollection.y, height: annotationBoundsCollection.height, width: annotationBoundsCollection.width };\n }\n if (pageCollections[i].shapeAnnotationType !== 'textMarkup' && boundsCount === 1) {\n annotationBounds = annotationBoundsCollection;\n }\n else {\n // eslint-disable-next-line\n annotationBounds = this.orderTextMarkupBounds(annotationBoundsCollection[j]);\n }\n if (annotationBounds) {\n var isOverlapped = false;\n // eslint-disable-next-line\n if (((left <= parseInt(annotationBounds.left)) && (totalWidth >= parseInt(annotationBounds.left))) || ((left <= parseInt(annotationBounds.left + annotationBounds.width)) && (totalWidth >= parseInt(annotationBounds.left + annotationBounds.width)))) {\n isOverlapped = true;\n }\n if (isOverlapped) {\n // eslint-disable-next-line\n if (((top <= parseInt(annotationBounds.top)) && (totalHeight >= parseInt(annotationBounds.top))) || ((top <= parseInt(annotationBounds.top + annotationBounds.height)) && (totalHeight >= parseInt(annotationBounds.top + annotationBounds.height)))) {\n isOverlapped = true;\n }\n else {\n isOverlapped = false;\n }\n }\n if (isOverlapped) {\n this.checkOverlappedCollections(pageCollections[i], this.overlappedAnnotations);\n }\n else {\n // eslint-disable-next-line\n if (((parseInt(annotationBounds.left) <= left) && (parseInt(annotationBounds.left + annotationBounds.width) >= left)) || ((totalWidth >= parseInt(annotationBounds.left)) && (totalWidth <= parseInt(annotationBounds.left + annotationBounds.width)))) {\n isOverlapped = true;\n }\n if (isOverlapped) {\n // eslint-disable-next-line\n if (((parseInt(annotationBounds.top) <= top) && parseInt(annotationBounds.top + annotationBounds.height) >= top) || ((totalHeight >= parseInt(annotationBounds.top)) && (totalHeight <= parseInt(annotationBounds.top + annotationBounds.height)))) {\n isOverlapped = true;\n }\n else {\n isOverlapped = false;\n }\n }\n if (isOverlapped) {\n this.checkOverlappedCollections(pageCollections[i], this.overlappedAnnotations);\n }\n else {\n // eslint-disable-next-line\n if (((left <= parseInt(annotationBounds.left)) && (totalWidth >= parseInt(annotationBounds.left))) || ((left <= parseInt(annotationBounds.left + annotationBounds.width)) && (totalWidth >= parseInt(annotationBounds.left + annotationBounds.width)))) {\n isOverlapped = true;\n }\n if (isOverlapped) {\n // eslint-disable-next-line\n if (((parseInt(annotationBounds.top) <= top) && parseInt(annotationBounds.top + annotationBounds.height) >= top) || ((totalHeight >= parseInt(annotationBounds.top)) && (totalHeight <= parseInt(annotationBounds.top + annotationBounds.height)))) {\n isOverlapped = true;\n }\n else {\n isOverlapped = false;\n }\n }\n if (isOverlapped) {\n this.checkOverlappedCollections(pageCollections[i], this.overlappedAnnotations);\n }\n else {\n // eslint-disable-next-line\n if (((parseInt(annotationBounds.left) <= left) && (parseInt(annotationBounds.left + annotationBounds.width) >= left)) || ((totalWidth >= parseInt(annotationBounds.left)) && (totalWidth <= parseInt(annotationBounds.left + annotationBounds.width)))) {\n isOverlapped = true;\n }\n if (isOverlapped) {\n // eslint-disable-next-line\n if (((top <= parseInt(annotationBounds.top)) && (totalHeight >= parseInt(annotationBounds.top))) || ((top <= parseInt(annotationBounds.top + annotationBounds.height)) && (totalHeight >= parseInt(annotationBounds.top + annotationBounds.height)))) {\n isOverlapped = true;\n }\n else {\n isOverlapped = false;\n }\n }\n if (isOverlapped) {\n this.checkOverlappedCollections(pageCollections[i], this.overlappedAnnotations);\n }\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param type\n * @param annotation\n * @param pageNumber\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.findAnnotationMode = function (annotation, pageNumber, type) {\n // eslint-disable-next-line\n var importCollection = this.pdfViewer.viewerBase.importedAnnotation[pageNumber];\n if (importCollection) {\n // eslint-disable-next-line\n var collection = void 0;\n if (type === 'shape') {\n collection = importCollection.shapeAnnotation;\n }\n else if (type === 'shape_measure') {\n collection = importCollection.measureShapeAnnotation;\n }\n else if (type === 'freeText') {\n collection = importCollection.freeTextAnnotation;\n }\n else if (type === 'stamp') {\n collection = importCollection.stampAnnotations;\n }\n else if (type === 'sticky') {\n collection = importCollection.stickyNotesAnnotation;\n }\n else if (type === 'textMarkup') {\n collection = importCollection.textMarkupAnnotation;\n }\n if (collection) {\n for (var i = 0; i < collection.length; i++) {\n if (collection[i].AnnotName === annotation.AnnotName) {\n return 'Imported Annotation';\n }\n }\n }\n }\n return 'Existing Annotation';\n };\n // eslint-disable-next-line\n Annotation.prototype.checkOverlappedCollections = function (annotation, overlappedCollections) {\n if (overlappedCollections.length > 0) {\n var isAdded = false;\n for (var i = 0; i < overlappedCollections.length; i++) {\n if (annotation.annotName === overlappedCollections[i].annotName && annotation.bounds === overlappedCollections[i].bounds) {\n isAdded = true;\n break;\n }\n }\n if (!isAdded) {\n overlappedCollections.push(annotation);\n }\n }\n else {\n overlappedCollections.push(annotation);\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.orderTextMarkupBounds = function (bounds) {\n if (bounds.Left || bounds.Width) {\n return { left: bounds.Left, top: bounds.Top, height: bounds.Height, width: bounds.Width };\n }\n else {\n return { left: bounds.left, top: bounds.top, height: bounds.height, width: bounds.width };\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateModifiedDate = function (annotation) {\n if (annotation.modifiedDate) {\n annotation.modifiedDate = this.setAnnotationModifiedDate(annotation.modifiedDate);\n }\n if (annotation.comments && annotation.comments.length > 0) {\n for (var i = 0; i < annotation.comments.length; i++) {\n if (annotation.comments[i].modifiedDate) {\n annotation.comments[i].modifiedDate = this.setAnnotationModifiedDate(annotation.comments[i].modifiedDate);\n if (annotation.comments[i].review && annotation.comments[i].review.modifiedDate) {\n // eslint-disable-next-line max-len\n annotation.comments[i].review.modifiedDate = this.setAnnotationModifiedDate(annotation.comments[i].review.modifiedDate);\n }\n }\n }\n }\n if (annotation.review && annotation.review.modifiedDate) {\n annotation.review.modifiedDate = this.setAnnotationModifiedDate(annotation.review.modifiedDate);\n }\n };\n Annotation.prototype.setAnnotationModifiedDate = function (date) {\n var modifiedTime;\n var modifiedDateTime;\n if (date !== '') {\n // eslint-disable-next-line\n var time = parseInt(date.split(' ')[1].split(':')[0]);\n if (date.split(' ').length === 3) {\n // eslint-disable-next-line max-len\n modifiedTime = time + ':' + date.split(' ')[1].split(':')[1] + ':' + date.split(' ')[1].split(':')[2] + ' ' + date.split(' ')[2];\n }\n else {\n if (time >= 12) {\n if (time === 12) {\n modifiedTime = time + ':' + date.split(' ')[1].split(':')[1] + ':' + date.split(' ')[1].split(':')[2] + ' PM';\n }\n else {\n // eslint-disable-next-line max-len\n modifiedTime = (time - 12) + ':' + date.split(' ')[1].split(':')[1] + ':' + date.split(' ')[1].split(':')[2] + ' PM';\n }\n }\n else {\n modifiedTime = time + ':' + date.split(' ')[1].split(':')[1] + ':' + date.split(' ')[1].split(':')[2] + ' AM';\n }\n }\n // eslint-disable-next-line\n var dateString = date.split(' ')[0];\n // eslint-disable-next-line\n var dateStringSpilt = date.split(',');\n if (dateStringSpilt.length > 1) {\n modifiedDateTime = dateString + (' ') + modifiedTime;\n }\n else {\n modifiedDateTime = dateString + (', ') + modifiedTime;\n }\n }\n else {\n return date;\n }\n return modifiedDateTime;\n };\n /**\n * @private\n */\n Annotation.prototype.clear = function () {\n if (this.shapeAnnotationModule) {\n this.shapeAnnotationModule.shapeCount = 0;\n }\n if (this.measureAnnotationModule) {\n this.measureAnnotationModule.measureShapeCount = 0;\n }\n if (this.textMarkupAnnotationModule) {\n this.textMarkupAnnotationModule.clear();\n }\n if (this.stickyNotesAnnotationModule) {\n this.stickyNotesAnnotationModule.clear();\n }\n this.pdfViewer.refresh();\n this.undoCommentsElement = [];\n this.redoCommentsElement = [];\n this.overlappedAnnotations = [];\n this.previousIndex = null;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stampAnnotationModule) {\n this.pdfViewer.annotation.stampAnnotationModule.stampPageNumber = [];\n }\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.freeTextAnnotationModule) {\n this.pdfViewer.annotation.freeTextAnnotationModule.freeTextPageNumbers = [];\n this.freeTextAnnotationModule.previousText = 'Type Here';\n }\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.inkAnnotationModule) {\n this.pdfViewer.annotation.inkAnnotationModule.inkAnnotationindex = [];\n }\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n };\n // eslint-disable-next-line\n Annotation.prototype.retrieveAnnotationCollection = function () {\n return this.pdfViewer.annotationCollection;\n };\n /**\n * @param interaction\n * @param annotation\n * @param interaction\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.checkAllowedInteractions = function (interaction, annotation) {\n // eslint-disable-next-line\n var annotationInteraction = this.updateAnnotationAllowedInteractions(annotation);\n if (annotationInteraction && annotationInteraction.length > 0) {\n for (var i = 0; i < annotationInteraction.length; i++) {\n if (interaction === 'Select') {\n // eslint-disable-next-line max-len\n if (annotationInteraction[i] === 'Move' || annotationInteraction[i] === 'Resize' || annotationInteraction[i] === 'Delete' || annotationInteraction[i] === 'PropertyChange' || annotationInteraction[i] === 'Select') {\n return true;\n }\n }\n else {\n if (annotationInteraction[i] === interaction) {\n return true;\n }\n }\n }\n }\n return false;\n };\n /**\n * @param menuObj\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.checkContextMenuDeleteItem = function (menuObj) {\n // eslint-disable-next-line\n var annotation = this.findCurrentAnnotation();\n if (annotation && annotation.annotationSettings) {\n // eslint-disable-next-line\n if (annotation.annotationSettings.isLock) {\n if (this.checkAllowedInteractions('Delete', annotation)) {\n menuObj.enableItems([this.pdfViewer.localeObj.getConstant('Delete Context')], true);\n }\n else {\n menuObj.enableItems([this.pdfViewer.localeObj.getConstant('Delete Context')], false);\n }\n }\n else {\n menuObj.enableItems([this.pdfViewer.localeObj.getConstant('Delete Context')], true);\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.isEnableDelete = function () {\n // eslint-disable-next-line\n var annotation = this.findCurrentAnnotation();\n if (annotation && annotation.annotationSettings) {\n // eslint-disable-next-line\n if (annotation.annotationSettings.isLock) {\n if (this.checkAllowedInteractions('Delete', annotation)) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return true;\n }\n }\n return false;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.findCurrentAnnotation = function () {\n if (this.textMarkupAnnotationModule && this.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n return this.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n if (this.pdfViewer.selectedItems.annotations && this.pdfViewer.selectedItems.annotations[0]) {\n return this.pdfViewer.selectedItems.annotations[0];\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateAnnotationAllowedInteractions = function (annotation) {\n // eslint-disable-next-line\n var annotationInteraction = ['None'];\n if (annotation) {\n if (annotation.shapeAnnotationType === 'FreeText' && this.pdfViewer.freeTextSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.freeTextSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.shapeAnnotationType === 'Ink' && this.pdfViewer.inkAnnotationSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.inkAnnotationSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.shapeAnnotationType === 'StickyNotes' && this.pdfViewer.stickyNotesSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.stickyNotesSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.shapeAnnotationType === 'Stamp' && this.pdfViewer.stampSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.stampSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.shapeAnnotationType === 'Image' && this.pdfViewer.customStampSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.customStampSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.shapeAnnotationType === 'textMarkup') {\n if (annotation.textMarkupAnnotationType === 'Highlight' && this.pdfViewer.highlightSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.highlightSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.textMarkupAnnotationType === 'Underline' && this.pdfViewer.underlineSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.underlineSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.textMarkupAnnotationType === 'Strikethrough' && this.pdfViewer.strikethroughSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.strikethroughSettings.allowedInteractions, annotation.allowedInteractions);\n }\n }\n else {\n if (annotation.measureType !== '') {\n if (annotation.measureType === 'Distance' && this.pdfViewer.distanceSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.distanceSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.measureType === 'Perimeter' && this.pdfViewer.perimeterSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.perimeterSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.measureType === 'Radius' && this.pdfViewer.radiusSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.radiusSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.measureType === 'Area' && this.pdfViewer.areaSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.areaSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.measureType === 'Volume' && this.pdfViewer.volumeSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.volumeSettings.allowedInteractions, annotation.allowedInteractions);\n }\n }\n else {\n if (annotation.shapeAnnotationType === 'Line' && this.pdfViewer.lineSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.lineSettings.allowedInteractions, annotation.allowedInteractions);\n // eslint-disable-next-line max-len\n }\n else if ((annotation.shapeAnnotationType === 'Arrow' || annotation.shapeAnnotationType === 'LineWidthArrowHead') && this.pdfViewer.arrowSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.arrowSettings.allowedInteractions, annotation.allowedInteractions);\n // eslint-disable-next-line max-len\n }\n else if ((annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Ellipse' || annotation.shapeAnnotationType === 'Oval') && this.pdfViewer.circleSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.circleSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if ((annotation.shapeAnnotationType === 'Rectangle' || annotation.shapeAnnotationType === 'Square') && this.pdfViewer.rectangleSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.rectangleSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.shapeAnnotationType === 'Polygon' && this.pdfViewer.polygonSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.polygonSettings.allowedInteractions, annotation.allowedInteractions);\n }\n }\n }\n }\n return annotationInteraction;\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.checkIsLockSettings = function (annotation) {\n // eslint-disable-next-line\n var isLocked = false;\n if (annotation) {\n if (annotation.shapeAnnotationType === 'FreeText') {\n isLocked = this.checkLockSettings(this.pdfViewer.freeTextSettings.isLock);\n }\n else if (annotation.shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.inkAnnotationSettings.isLock);\n }\n else if (annotation.shapeAnnotationType === 'StickyNotes') {\n isLocked = this.checkLockSettings(this.pdfViewer.stickyNotesSettings.isLock);\n }\n else if (annotation.shapeAnnotationType === 'Stamp') {\n isLocked = this.checkLockSettings(this.pdfViewer.stampSettings.isLock);\n }\n else if (annotation.shapeAnnotationType === 'Image') {\n isLocked = this.checkLockSettings(this.pdfViewer.customStampSettings.isLock);\n }\n else if (annotation.shapeAnnotationType === 'textMarkup') {\n if (annotation.textMarkupAnnotationType === 'Highlight') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.highlightSettings.isLock);\n }\n else if (annotation.textMarkupAnnotationType === 'Underline') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.underlineSettings.isLock);\n }\n else if (annotation.textMarkupAnnotationType === 'Strikethrough') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.strikethroughSettings.isLock);\n }\n }\n else {\n if (annotation.measureType !== '') {\n if (annotation.measureType === 'Distance') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.distanceSettings.isLock);\n }\n else if (annotation.measureType === 'Perimeter') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.perimeterSettings.isLock);\n }\n else if (annotation.measureType === 'Radius') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.radiusSettings.isLock);\n }\n else if (annotation.measureType === 'Area') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.areaSettings.isLock);\n }\n else if (annotation.measureType === 'Volume') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.volumeSettings.isLock);\n }\n }\n else {\n if (annotation.shapeAnnotationType === 'Line') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.lineSettings.isLock);\n // eslint-disable-next-line max-len\n }\n else if ((annotation.shapeAnnotationType === 'Arrow' || annotation.shapeAnnotationType === 'LineWidthArrowHead')) {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.arrowSettings.isLock);\n // eslint-disable-next-line max-len\n }\n else if ((annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Ellipse' || annotation.shapeAnnotationType === 'Oval')) {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.circleSettings.isLock);\n }\n else if ((annotation.shapeAnnotationType === 'Rectangle' || annotation.shapeAnnotationType === 'Square')) {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.rectangleSettings.isLock);\n }\n else if (annotation.shapeAnnotationType === 'Polygon') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.polygonSettings.isLock);\n }\n }\n }\n }\n return isLocked;\n };\n // eslint-disable-next-line\n Annotation.prototype.checkLockSettings = function (locked) {\n var islock = false;\n if (locked || this.pdfViewer.annotationSettings.isLock) {\n islock = true;\n }\n return islock;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.restrictContextMenu = function () {\n // eslint-disable-next-line\n var isRestrict = false;\n // eslint-disable-next-line\n var annotation = this.findCurrentAnnotation();\n if (annotation && this.checkIsLockSettings(annotation) && this.checkAllowedInteractions('Select', annotation)) {\n isRestrict = true;\n }\n return isRestrict;\n };\n // eslint-disable-next-line\n Annotation.prototype.checkAllowedInteractionSettings = function (annotationInteraction, annotationAllowedInteraction) {\n if (annotationAllowedInteraction) {\n if (annotationAllowedInteraction.length === 1) {\n if (annotationAllowedInteraction[0] !== 'None') {\n return annotationAllowedInteraction;\n }\n }\n else {\n return annotationAllowedInteraction;\n }\n }\n if (annotationInteraction) {\n if (annotationInteraction.length === 1) {\n if (annotationInteraction[0] !== 'None') {\n return annotationInteraction;\n }\n }\n else {\n return annotationInteraction;\n }\n }\n if (this.pdfViewer.annotationSettings.allowedInteractions) {\n return this.pdfViewer.annotationSettings.allowedInteractions;\n }\n return ['None'];\n };\n /**\n * @param value\n * @param type\n * @param value\n * @param type\n * @private\n */\n Annotation.prototype.getValue = function (value, type) {\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 Annotation.prototype.convertRgbToNumberArray = function (value) {\n // eslint-disable-next-line max-len\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 Annotation.prototype.convertToRgbString = function (rgb) {\n return rgb.length ? rgb.length === 4 ? 'rgba(' + rgb.join() + ')' : 'rgb(' + rgb.join() + ')' : '';\n };\n Annotation.prototype.convertToHsvString = function (hsv) {\n return hsv.length === 4 ? 'hsva(' + hsv.join() + ')' : 'hsv(' + hsv.join() + ')';\n };\n Annotation.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 Annotation.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 Annotation.prototype.rgbToHsv = function (r, g, b, opacity) {\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 s;\n var v = max;\n var d = max - min;\n 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 Annotation.prototype.hsvToRgb = function (h, s, v, opacity) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\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 i = Math.floor(h);\n f = h - i;\n p = v * (1 - s);\n q = v * (1 - s * f);\n 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 Annotation.prototype.rgbToHex = function (rgb) {\n // eslint-disable-next-line max-len\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 /**\n * @param dataFormat\n * @private\n */\n Annotation.prototype.exportAnnotationsAsStream = function (dataFormat) {\n var _this = this;\n if (this.pdfViewer.annotationModule) {\n var isAnnotations = this.pdfViewer.viewerBase.updateExportItem();\n if (isAnnotations) {\n return new Promise(function (resolve, reject) {\n _this.pdfViewer.viewerBase.createRequestForExportAnnotations(true, dataFormat, true).then(function (value) {\n resolve(value);\n });\n });\n }\n }\n return null;\n };\n Annotation.prototype.hex = function (x) {\n if (!isNullOrUndefined(x)) {\n return ('0' + x.toString(16)).slice(-2);\n }\n else {\n return '0';\n }\n };\n /**\n * @param obj\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.cloneObject = function (obj) {\n return JSON.parse(JSON.stringify(obj));\n };\n /**\n * @private\n */\n Annotation.prototype.destroy = function () {\n this.destroyPropertiesWindow();\n this.textMarkupAnnotationModule.clear();\n };\n /**\n * @private\n */\n Annotation.prototype.getModuleName = function () {\n return 'Annotation';\n };\n /**\n * Get vertex points properties\n * @private\n */\n Annotation.prototype.getVertexPointsXY = function (points) {\n var vertexPoints = [];\n //Converting points model into vertex property\n for (var j = 0; j < points.length; j++) {\n vertexPoints[j] = { X: points[j].x, Y: points[j].y };\n }\n return vertexPoints;\n };\n /**\n * Method used to add annotations using program.\n *\n * @param annotationType - It describes type of annotation object.\n * @param options - It describes about the annotation objects and it's property.\n * @param dynamicStampItem - It describe which type of dynamic stamp.\n * @param signStampItem - It describe which type of sign stamp.\n * @param standardBusinessStampItem - It describe which type of standard business stamp.\n * @returns void\n */\n Annotation.prototype.addAnnotation = function (annotationType, options, dynamicStampItem, signStampItem, standardBusinessStampItem) {\n //Initialize the bounds and pageNumber\n var offset = { x: 1, y: 1 };\n var pageNumber = 0;\n if (options) {\n if (options.pageNumber && options.pageNumber > 0)\n pageNumber = options.pageNumber ? options.pageNumber - 1 : 0;\n }\n //Initialize the pdf annotation object array\n var annotationObject = null;\n var pdfAnnotation = [];\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n //Seperate the annotation type with it's method\n if (annotationType == 'FreeText') {\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.freeTextAnnotationModule.updateAddAnnotationDetails(options, offset);\n this.pdfViewer.annotation.freeTextAnnotationModule.isAddAnnotationProgramatically = true;\n }\n else if (annotationType == 'StickyNotes') {\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.stickyNotesAnnotationModule.updateAddAnnotationDetails(options, offset);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.isAddAnnotationProgramatically = true;\n }\n else if (annotationType == 'Highlight' || annotationType == 'Underline' || annotationType == 'Strikethrough') {\n if (annotationType == 'Highlight')\n annotationObject = options;\n else if (annotationType == 'Underline')\n annotationObject = options;\n else if (annotationType == 'Strikethrough')\n annotationObject = options;\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.textMarkupAnnotationModule.updateAddAnnotationDetails(annotationType, annotationObject);\n this.pdfViewer.annotation.textMarkupAnnotationModule.isAddAnnotationProgramatically = true;\n }\n else if (annotationType === 'Line' || annotationType === 'Arrow' || annotationType === 'Rectangle' || annotationType === 'Circle' || annotationType === 'Polygon') {\n if (annotationType == 'Line')\n annotationObject = options;\n else if (annotationType == 'Arrow')\n annotationObject = options;\n else if (annotationType == 'Rectangle')\n annotationObject = options;\n else if (annotationType == 'Circle')\n annotationObject = options;\n else if (annotationType == 'Polygon')\n annotationObject = options;\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.shapeAnnotationModule.updateAddAnnotationDetails(annotationType, annotationObject, offset);\n this.pdfViewer.annotation.shapeAnnotationModule.isAddAnnotationProgramatically = true;\n }\n else if (annotationType === 'Distance' || annotationType === 'Perimeter' || annotationType === 'Area' || annotationType === 'Radius' || annotationType === 'Volume') {\n if (annotationType == 'Distance')\n annotationObject = options;\n else if (annotationType == 'Perimeter')\n annotationObject = options;\n else if (annotationType == 'Area')\n annotationObject = options;\n else if (annotationType == 'Radius')\n annotationObject = options;\n else if (annotationType == 'Volume')\n annotationObject = options;\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.measureAnnotationModule.updateAddAnnotationDetails(annotationType, annotationObject, offset);\n this.pdfViewer.annotation.measureAnnotationModule.isAddAnnotationProgramatically = true;\n }\n else if (annotationType === 'Stamp') {\n if (options && options.customStamps) {\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.stampAnnotationModule.updateAddAnnotationDetails(options, offset, pageNumber, dynamicStampItem, signStampItem, standardBusinessStampItem);\n }\n else {\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.stampAnnotationModule.updateAddAnnotationDetails(options, offset, pageNumber, dynamicStampItem, signStampItem, standardBusinessStampItem);\n }\n this.pdfViewer.annotation.stampAnnotationModule.isAddAnnotationProgramatically = true;\n }\n else if (annotationType === 'Ink') {\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.inkAnnotationModule.updateAddAnnotationDetails(options, offset, pageNumber);\n this.pdfViewer.annotation.inkAnnotationModule.isAddAnnotationProgramatically = true;\n }\n //Annotation rendering can be done with the import annotation method.\n var pdf = { pdfAnnotation: pdfAnnotation };\n this.pdfViewerBase.isAddAnnotation = true;\n this.pdfViewerBase.importAnnotations(pdf);\n this.pdfViewerBase.isAddAnnotation = false;\n };\n /**\n * @param annotation\n * @private\n */\n Annotation.prototype.triggerAnnotationAddEvent = function (annotation) {\n var annotationType = annotation.shapeAnnotationType;\n if (annotationType === 'Stamp' || annotationType === 'Image' || annotationType === 'Path' || annotationType === 'FreeText' || annotationType === 'StickyNotes' || annotationType === 'Ink') {\n var settings = void 0;\n if (annotationType === 'FreeText') {\n settings = {\n opacity: annotation.opacity, borderColor: annotation.strokeColor, borderWidth: annotation.thickness, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n fillColor: annotation.fillColor, fontSize: annotation.fontSize, width: annotation.bounds.width, height: annotation.bounds.height, fontColor: annotation.fontColor, fontFamily: annotation.fontFamily, defaultText: annotation.dynamicText, fontStyle: annotation.font, textAlignment: annotation.textAlign\n };\n }\n else {\n settings = {\n opacity: annotation.opacity, fillColor: annotation.fillColor, strokeColor: annotation.strokeColor,\n thickness: annotation.thickness, author: annotation.author, subject: annotation.subject,\n modifiedDate: annotation.modifiedDate, data: annotation.data\n };\n }\n // eslint-disable-next-line\n var bounds = { left: annotation.bounds.x, top: annotation.bounds.y, width: annotation.bounds.width, height: annotation.bounds.height };\n var type = this.getAnnotationType(annotation.shapeAnnotationType, annotation.measureType);\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(annotation.pageIndex, annotation.annotName, type, bounds, settings);\n }\n else if (annotationType === 'SignatureText' || annotationType === 'SignatureImage' || annotationType === 'HandWrittenSignature') {\n // eslint-disable-next-line\n var bounds = { left: annotation.bounds.x, top: annotation.bounds.y, width: annotation.bounds.width, height: annotation.bounds.height };\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignatureAdd(annotation.pageIndex, annotation.signatureName, annotation.shapeAnnotationType, bounds, annotation.opacity, annotation.strokeColor, annotation.thickness, annotation.data);\n }\n else {\n // eslint-disable-next-line\n var setting = {\n opacity: annotation.opacity, fillColor: annotation.fillColor, strokeColor: annotation.strokeColor,\n thickness: annotation.thickness, author: annotation.author, subject: annotation.subject,\n modifiedDate: annotation.modifiedDate\n };\n var bounds = { left: annotation.bounds.x, top: annotation.bounds.y, width: annotation.bounds.width, height: annotation.bounds.height };\n var type = this.getAnnotationType(annotation.shapeAnnotationType, annotation.measureType);\n if (type === 'Line' || type === 'Arrow' || type === 'Distance' || type === 'Perimeter') {\n setting.lineHeadStartStyle = this.getArrowString(annotation.sourceDecoraterShapes);\n setting.lineHeadEndStyle = this.getArrowString(annotation.taregetDecoraterShapes);\n setting.borderDashArray = annotation.borderDashArray;\n }\n var labelSettings = void 0;\n if (this.pdfViewer.enableShapeLabel) {\n labelSettings = {\n // eslint-disable-next-line max-len\n fontColor: annotation.fontColor, fontSize: annotation.fontSize, fontFamily: annotation.fontFamily,\n opacity: annotation.labelOpacity, labelContent: annotation.labelContent, fillColor: annotation.labelFillColor\n };\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(annotation.pageIndex, annotation.annotName, type, bounds, setting, null, null, null, labelSettings);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(annotation.pageIndex, annotation.annotName, type, bounds, setting);\n }\n }\n };\n /**\n * @private\n */\n Annotation.prototype.triggerAnnotationUnselectEvent = function () {\n if (this.pdfViewer.selectedItems.annotations && this.pdfViewer.selectedItems.annotations[0]) {\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (annotation.shapeAnnotationType !== 'HandWrittenSignature' && annotation.shapeAnnotationType !== 'SignatureText' && annotation.shapeAnnotationType !== 'SignatureImage' && annotation.shapeAnnotationType !== 'Path') {\n this.pdfViewer.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n this.pdfViewer.clearSelection(annotation.pageIndex);\n }\n }\n };\n /**\n * @private\n */\n Annotation.prototype.updateFontFamilyRenderSize = function (currentAnnotation, currentValue) {\n var freeTextAnnotation = this.freeTextAnnotationModule;\n freeTextAnnotation.inputBoxElement.style.fontFamily = currentValue;\n freeTextAnnotation.autoFitFreeText();\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n var padding = parseFloat(freeTextAnnotation.inputBoxElement.style.paddingLeft);\n var inputEleHeight = currentAnnotation.bounds.height * zoomFactor;\n var characterLength = 8;\n var inputEleWidth = parseFloat(freeTextAnnotation.inputBoxElement.style.width) - characterLength;\n inputEleWidth = ((inputEleWidth) / zoomFactor);\n inputEleHeight = ((inputEleHeight) / zoomFactor);\n var heightDiff = (inputEleHeight - currentAnnotation.bounds.height);\n var y = undefined;\n if (heightDiff > 0) {\n y = currentAnnotation.wrapper.offsetY + (heightDiff / 2);\n y = y > 0 ? y : undefined;\n }\n else {\n heightDiff = Math.abs(heightDiff);\n y = currentAnnotation.wrapper.offsetY - (heightDiff / 2);\n y = y > 0 ? y : undefined;\n }\n var widthDiff = (inputEleWidth - currentAnnotation.bounds.width);\n var x = undefined;\n if (widthDiff > 0) {\n x = currentAnnotation.wrapper.offsetX + (widthDiff / 2);\n x = x > 0 ? x : undefined;\n }\n else {\n widthDiff = Math.abs(widthDiff);\n x = currentAnnotation.wrapper.offsetX - (widthDiff / 2);\n }\n currentAnnotation.bounds.width = inputEleWidth;\n currentAnnotation.bounds.height = inputEleHeight;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { fontFamily: currentValue, bounds: { width: currentAnnotation.bounds.width, height: currentAnnotation.bounds.height, y: y, x: x } });\n this.pdfViewer.renderSelector(currentAnnotation.pageIndex, this.pdfViewer.annotationSelectorSettings);\n this.modifyInCollections(currentAnnotation, 'bounds');\n };\n Annotation.prototype.updateCanvas = function (canvas, pageWidth, pageHeight, pageNumber) {\n var ratio = this.pdfViewerBase.getZoomRatio();\n canvas.width = pageWidth * ratio;\n canvas.height = pageHeight * ratio;\n canvas.style.width = pageWidth + 'px';\n canvas.style.height = pageHeight + 'px';\n canvas.style.position = 'absolute';\n canvas.style.zIndex = '1';\n this.pdfViewerBase.applyElementStyles(canvas, pageNumber);\n };\n return Annotation;\n}());\nexport { Annotation };\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 = this.parent.isRowDragable() ? 1 : 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.column.isForeignColumn() ? [args.foreignKeyData[0]] : [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.column.isForeignColumn() ? (this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource))\n : this.column.dataSource instanceof DataManager ?\n this.column.dataSource : new DataManager(this.column.dataSource);\n }\n };\n DropDownEditCell.prototype.ddActionComplete = function (e) {\n e.result = DataUtil.distinct(e.result, this.obj.fields.value, true);\n if (this.flag && this.column.dataSource && !this.column.edit.params.ddEditedData) {\n if ('result' in this.column.dataSource) {\n this.column.dataSource.result = e.result;\n }\n else if (this.column.dataSource instanceof DataManager) {\n this.column.dataSource.dataSource.json = e.result;\n }\n }\n this.flag = false;\n };\n DropDownEditCell.prototype.dropDownOpen = function (args) {\n var dlgElement = parentsUntil(this.obj.element, 'e-dialog');\n if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) {\n var dlgObj = select('#' + dlgElement.id, document).ej2_instances[0];\n args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString();\n }\n };\n return DropDownEditCell;\n}(EditCellBase));\nexport { DropDownEditCell };\n","import { extend, Internationalization } from '@syncfusion/ej2-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { isEditable, getComplexFieldID, getObject, createEditElement } from '../base/util';\n/**\n * `NumericEditCell` is used to handle numeric cell type editing.\n *\n * @hidden\n */\nvar NumericEditCell = /** @class */ (function () {\n function NumericEditCell(parent) {\n this.parent = parent;\n }\n NumericEditCell.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumericEditCell.prototype.create = function (args) {\n this.instances = new Internationalization(this.parent.locale);\n return createEditElement(this.parent, args.column, 'e-field', {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericEditCell.prototype.read = function (element) {\n return this.obj.value;\n };\n NumericEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new NumericTextBox(extend({\n value: parseFloat(getObject(args.column.field, args.rowData)),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText,\n enabled: isEditable(args.column, args.requestType, args.element),\n floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n locale: this.parent.locale\n }, 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 if (gObj.enableInfiniteScrolling) {\n this.uid = args.row.getAttribute('data-uid');\n var index_1 = parseInt(args.row.getAttribute('aria-rowindex'));\n this.parent.notify(events.refreshInfiniteEditrowindex, { index: index_1 });\n }\n gObj.notify(events.updateData, args);\n if (args.promise) {\n args.promise.then(function () { return gObj.refresh(); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n if (!gObj.enableInfiniteScrolling) {\n gObj.refresh();\n }\n }\n };\n NormalEdit.prototype.editFormValidate = function () {\n var gObj = this.parent;\n var isValid = gObj.editModule.editFormValidate();\n var validationArgs = {\n prevData: this.previousData, isValid: true, editIdx: this.editRowIndex, addIdx: this.addedRowIndex\n };\n gObj.notify(events.validateVirtualForm, validationArgs);\n return (isValid && validationArgs.isValid);\n };\n NormalEdit.prototype.endEdit = function () {\n var 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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) && isNullOrUndefined(column.filterBarTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n 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","/* 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) {\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));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, 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 (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 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, 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 * 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 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) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\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 _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 var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","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 if (column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n 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 if (this.parent.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n this.closeDialog();\n var iconClass = this.parent.showColumnMenu && column.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 if (options.cancel) {\n return;\n }\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n if (options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n this.destroy();\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(events.filterCmenuSelect, {});\n this.menuItem = e.item;\n this.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) || options.format;\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 var moduleName = this.parent.dataSource.adaptor && this.parent.dataSource.adaptor.getModuleName ? this.parent.dataSource.adaptor.getModuleName() : undefined;\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n var isMenuNotEqual = this.operator === 'notequal';\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[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 if (isNullOrUndefined(this.value) && (this.operator === 'equal' || this.operator === 'notequal') &&\n (moduleName !== 'ODataAdaptor' && moduleName !== 'ODataV4Adaptor')) {\n this.filterSettings.columns = [];\n if (col.type === 'string') {\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: ''\n });\n }\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: undefined\n });\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: null\n });\n }\n }\n // eslint-disable-next-line no-self-assign\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[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 && isNullOrUndefined(this.column.filterBarTemplate)) {\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 && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[field]) {\n delete this_1.actualPredicate[field];\n }\n if (this_1.values[field]) {\n delete this_1.values[field];\n }\n if (this_1.refresh) {\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar') {\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 col = this.parent.getColumnByField(args.field);\n var iconClass = this.parent.showColumnMenu && col.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array }\n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[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 var col = this.parent.getColumnByField(fieldName);\n if (this.parent.showColumnMenu && col.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (col) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns the FilterUI\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {string} returns the operator name\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n *\n * @returns {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\nexport { Filter };\n","import { EventHandler, closest, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { parentsUntil, applyBiggerTheme } from '../base/util';\nimport * as events from '../base/constant';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Group } from '../actions/group';\nimport { Sort } from '../actions/sort';\nimport { Filter } from '../actions/filter';\nimport { Resize } from '../actions/resize';\nimport * as literals from '../base/string-literals';\n/**\n * 'column menu module used to handle column menu actions'\n *\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function () {\n function ColumnMenu(parent, serviceLocator) {\n this.defaultItems = {};\n this.localeText = this.setLocaleKey();\n this.disableItems = [];\n this.hiddenItems = [];\n this.isOpen = false;\n // default class names\n this.GROUP = 'e-icon-group';\n this.UNGROUP = 'e-icon-ungroup';\n this.ASCENDING = 'e-icon-ascending';\n this.DESCENDING = 'e-icon-descending';\n this.ROOT = 'e-columnmenu';\n this.FILTER = 'e-icon-filter';\n this.POP = 'e-filter-popup';\n this.WRAP = 'e-col-menu';\n this.CHOOSER = '_chooser_';\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ColumnMenu.prototype.wireEvents = function () {\n var elements = this.getColumnMenuHandlers();\n for (var i = 0; i < elements.length; i++) {\n EventHandler.add(elements[i], 'mousedown', this.columnMenuHandlerDown, this);\n }\n };\n ColumnMenu.prototype.unwireEvents = function () {\n var elements = this.getColumnMenuHandlers();\n for (var i = 0; i < elements.length; i++) {\n EventHandler.remove(elements[i], 'mousedown', this.columnMenuHandlerDown);\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n ColumnMenu.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.columnMenu.destroy();\n this.removeEventListener();\n this.unwireFilterEvents();\n this.unwireEvents();\n if (this.element.parentNode) {\n remove(this.element);\n }\n };\n ColumnMenu.prototype.columnMenuHandlerClick = function (e) {\n if (e.target.classList.contains('e-columnmenu')) {\n this.columnMenu.items = this.getItems();\n this.columnMenu.dataBind();\n if ((this.isOpen && this.headerCell !== this.getHeaderCell(e)) || document.querySelector('.e-grid-menu .e-menu-parent.e-ul')) {\n this.columnMenu.close();\n this.openColumnMenu(e);\n }\n else if (!this.isOpen) {\n this.openColumnMenu(e);\n }\n else {\n this.columnMenu.close();\n }\n }\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.openColumnMenuByField = function (field) {\n this.openColumnMenu({ target: this.parent.getColumnHeaderByField(field).querySelector('.e-columnmenu') });\n };\n ColumnMenu.prototype.afterFilterColumnMenuClose = function () {\n if (this.columnMenu) {\n this.columnMenu.items = this.getItems();\n this.columnMenu.dataBind();\n this.columnMenu.close();\n }\n };\n ColumnMenu.prototype.openColumnMenu = function (e) {\n var pos = { top: 0, left: 0 };\n this.element.style.cssText = 'display:block;visibility:hidden';\n var elePos = this.element.getBoundingClientRect();\n var gClient = this.parent.element.getBoundingClientRect();\n this.element.style.cssText = 'display:none;visibility:visible';\n this.headerCell = this.getHeaderCell(e);\n if (Browser.isDevice) {\n pos.top = ((window.innerHeight / 2) - (elePos.height / 2));\n pos.left = ((window.innerWidth / 2) - (elePos.width / 2));\n }\n else {\n if (this.parent.enableRtl) {\n pos = calculatePosition(this.headerCell, 'left', 'bottom');\n }\n else {\n pos = calculatePosition(this.headerCell, 'right', 'bottom');\n pos.left -= elePos.width;\n if ((pos.left + elePos.width + 1) >= gClient.right) {\n pos.left -= 35;\n }\n }\n }\n this.columnMenu.open(pos.top, pos.left);\n if (e.preventDefault) {\n e.preventDefault();\n }\n applyBiggerTheme(this.parent.element, this.columnMenu.element.parentElement);\n };\n ColumnMenu.prototype.columnMenuHandlerDown = function () {\n this.isOpen = !(this.element.style.display === 'none' || this.element.style.display === '');\n };\n ColumnMenu.prototype.getColumnMenuHandlers = function () {\n return [].slice.call(this.parent.getHeaderTable().getElementsByClassName(this.ROOT));\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerRefreshed, this.wireEvents, this);\n this.parent.on(events.uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(events.initialEnd, this.render, this);\n if (this.isFilterItemAdded()) {\n this.parent.on(events.filterDialogCreated, this.filterPosition, this);\n }\n this.parent.on(events.click, this.columnMenuHandlerClick, this);\n this.parent.on(events.afterFilterColumnMenuClose, this.afterFilterColumnMenuClose, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.headerRefreshed, this.unwireEvents);\n this.parent.off(events.uiUpdate, this.enableAfterRenderMenu);\n this.parent.off(events.initialEnd, this.render);\n if (this.isFilterItemAdded()) {\n this.parent.off(events.filterDialogCreated, this.filterPosition);\n }\n this.parent.off(events.click, this.columnMenuHandlerClick);\n this.parent.on(events.afterFilterColumnMenuClose, this.afterFilterColumnMenuClose);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n ColumnMenu.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.action === 'altDownArrow') {\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.openColumnMenuByField(column.field);\n }\n }\n };\n ColumnMenu.prototype.enableAfterRenderMenu = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.columnMenu) {\n this.columnMenu.destroy();\n remove(this.element);\n }\n this.render();\n }\n };\n ColumnMenu.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_columnmenu', className: 'e-colmenu' });\n this.element.setAttribute('aria-label', this.l10n.getConstant('ColumnMenuDialogARIA'));\n this.parent.element.appendChild(this.element);\n this.columnMenu = new Menu({\n cssClass: 'e-grid-menu',\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n items: this.getItems(),\n select: this.columnMenuItemClick.bind(this),\n beforeOpen: this.columnMenuBeforeOpen.bind(this),\n onOpen: this.columnMenuOnOpen.bind(this),\n onClose: this.columnMenuOnClose.bind(this),\n beforeItemRender: this.beforeMenuItemRender.bind(this),\n beforeClose: this.columnMenuBeforeClose.bind(this)\n });\n this.columnMenu.appendTo(this.element);\n this.wireFilterEvents();\n };\n ColumnMenu.prototype.wireFilterEvents = function () {\n if (!Browser.isDevice && this.isFilterItemAdded()) {\n EventHandler.add(this.element, 'mouseover', this.appendFilter, this);\n }\n };\n ColumnMenu.prototype.unwireFilterEvents = function () {\n if (!Browser.isDevice && this.isFilterItemAdded()) {\n EventHandler.remove(this.element, 'mouseover', this.appendFilter);\n }\n };\n ColumnMenu.prototype.beforeMenuItemRender = function (args) {\n if (this.isChooserItem(args.item)) {\n var field_1 = this.getKeyFromId(args.item.id, this.CHOOSER);\n var column = this.parent.columnModel.filter(function (col) { return col.field === field_1; });\n var check = createCheckBox(this.parent.createElement, false, {\n label: args.item.text,\n checked: column[0].visible\n });\n if (this.parent.enableRtl) {\n check.classList.add('e-rtl');\n }\n args.element.innerHTML = '';\n args.element.appendChild(check);\n }\n else if (args.item.id && this.getKeyFromId(args.item.id) === 'Filter') {\n args.element.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n args.element.className += 'e-filter-item e-menu-caret-icon';\n }\n };\n ColumnMenu.prototype.columnMenuBeforeClose = function (args) {\n var colChooser = args.event ? closest(args.event.target, '.e-menu-item') : null;\n if (!isNullOrUndefined(args.parentItem) &&\n this.getKeyFromId(args.parentItem.id) === 'ColumnChooser' &&\n colChooser && this.isChooserItem(colChooser)) {\n args.cancel = true;\n }\n else if (args.event && (closest(args.event.target, '.' + this.POP)\n || (args.event.currentTarget && args.event.currentTarget.activeElement &&\n parentsUntil(args.event.currentTarget.activeElement, 'e-filter-popup'))\n || parentsUntil(args.event.target, 'e-popup') ||\n (parentsUntil(args.event.target, 'e-popup-wrapper'))) && !Browser.isDevice) {\n args.cancel = true;\n }\n };\n ColumnMenu.prototype.isChooserItem = function (item) {\n return item.id && item.id.indexOf('_colmenu_') >= 0 &&\n this.getKeyFromId(item.id, this.CHOOSER).indexOf('_colmenu_') === -1;\n };\n ColumnMenu.prototype.columnMenuBeforeOpen = function (args) {\n args.column = this.targetColumn = this.getColumn();\n this.parent.trigger(events.columnMenuOpen, args);\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 && this.ensureDisabledStatus(key) && !dItem.hide) {\n this.disableItems.push(item.text);\n }\n if (item.hide) {\n this.hiddenItems.push(item.text);\n }\n }\n this.columnMenu.enableItems(this.disableItems, false);\n this.columnMenu.hideItems(this.hiddenItems);\n };\n ColumnMenu.prototype.columnMenuOnOpen = function (args) {\n if (args.element.className === 'e-menu-parent e-ul ') {\n if (args.element.offsetHeight > window.innerHeight || this.parent.element.offsetHeight > window.innerHeight) {\n args.element.style.maxHeight = (window.innerHeight) * 0.8 + 'px';\n args.element.style.overflowY = 'auto';\n }\n }\n };\n ColumnMenu.prototype.ensureDisabledStatus = function (item) {\n var status = false;\n switch (item) {\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.allowGrouping)) {\n status = true;\n }\n break;\n case 'AutoFitAll':\n case 'AutoFit':\n status = !this.parent.ensureModuleInjected(Resize);\n break;\n case 'Ungroup':\n if (!this.parent.ensureModuleInjected(Group) || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'SortDescending':\n case 'SortAscending':\n if (this.parent.allowSorting && this.parent.ensureModuleInjected(Sort)\n && this.parent.sortSettings.columns.length > 0 && this.targetColumn && this.targetColumn.allowSorting) {\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.toLocaleLowerCase() === item.toLocaleLowerCase().replace('sort', '')) {\n status = true;\n }\n }\n }\n else if (!this.parent.allowSorting || !this.parent.ensureModuleInjected(Sort) ||\n this.parent.allowSorting && this.targetColumn && !this.targetColumn.allowSorting) {\n status = true;\n }\n break;\n case 'Filter':\n if (this.parent.allowFiltering && (this.parent.filterSettings.type !== 'FilterBar')\n && this.parent.ensureModuleInjected(Filter) && this.targetColumn && this.targetColumn.allowFiltering) {\n status = false;\n }\n else if (this.parent.ensureModuleInjected(Filter) && this.parent.allowFiltering\n && this.targetColumn && (!this.targetColumn.allowFiltering || this.parent.filterSettings.type === 'FilterBar')) {\n status = true;\n }\n }\n return status;\n };\n ColumnMenu.prototype.columnMenuItemClick = function (args) {\n var item = this.isChooserItem(args.item) ? 'ColumnChooser' : this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'SortAscending':\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'ColumnChooser':\n // eslint-disable-next-line no-case-declarations\n var key = this.getKeyFromId(args.item.id, this.CHOOSER);\n // eslint-disable-next-line no-case-declarations\n var checkbox = args.element.querySelector('.e-checkbox-wrapper .e-frame');\n if (checkbox && checkbox.classList.contains('e-check')) {\n checkbox.classList.remove('e-check');\n this.parent.hideColumns(key, 'field');\n }\n else if (checkbox) {\n this.parent.showColumns(key, 'field');\n checkbox.classList.add('e-check');\n }\n break;\n case 'Filter':\n this.getFilter(args.element, args.item.id);\n break;\n }\n args.column = this.targetColumn;\n this.parent.trigger(events.columnMenuClick, args);\n };\n ColumnMenu.prototype.columnMenuOnClose = function (args) {\n var parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][parent] instanceof Menu) {\n this.columnMenu.enableItems(this.disableItems, false);\n this.disableItems = [];\n this.columnMenu.showItems(this.hiddenItems);\n this.hiddenItems = [];\n if (this.isFilterPopupOpen()) {\n this.getFilter(args.element, args.element.id, true);\n }\n }\n if (!this.parent.isFrozenGrid()) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ColumnMenu.prototype.getDefaultItems = function () {\n return ['AutoFitAll', 'AutoFit', 'SortAscending', 'SortDescending', 'Group', 'Ungroup', 'ColumnChooser', 'Filter'];\n };\n ColumnMenu.prototype.getItems = function () {\n var items = [];\n var defultItems = this.parent.columnMenuItems ? this.parent.columnMenuItems : this.getDefault();\n for (var _i = 0, defultItems_1 = defultItems; _i < defultItems_1.length; _i++) {\n var item = defultItems_1[_i];\n if (typeof item === 'string') {\n if (item === 'ColumnChooser') {\n var col = this.getDefaultItem(item);\n col.items = this.createChooserItems();\n items.push(col);\n }\n else {\n items.push(this.getDefaultItem(item));\n }\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n ColumnMenu.prototype.getDefaultItem = function (item) {\n var menuItem = {};\n switch (item) {\n case 'SortAscending':\n menuItem = { iconCss: this.ASCENDING };\n break;\n case 'SortDescending':\n menuItem = { iconCss: this.DESCENDING };\n break;\n case 'Group':\n menuItem = { iconCss: this.GROUP };\n break;\n case 'Ungroup':\n menuItem = { iconCss: this.UNGROUP };\n break;\n case 'Filter':\n menuItem = { iconCss: this.FILTER };\n break;\n }\n this.defaultItems[item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : null\n };\n return this.defaultItems[item];\n };\n ColumnMenu.prototype.getLocaleText = function (item) {\n return this.l10n.getConstant(this.localeText[item]);\n };\n ColumnMenu.prototype.generateID = function (item, append) {\n return this.gridID + '_colmenu_' + (append ? append + item : item);\n };\n ColumnMenu.prototype.getKeyFromId = function (id, append) {\n return id.indexOf('_colmenu_') > 0 &&\n id.replace(this.gridID + '_colmenu_' + (append ? append : ''), '');\n };\n /**\n * @returns {HTMLElement} returns the HTMLElement\n * @hidden\n */\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.element;\n };\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n ColumnMenu.prototype.setLocaleKey = function () {\n var localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'ColumnChooser': 'Columnchooser',\n 'Filter': 'FilterMenu'\n };\n return localeKeys;\n };\n ColumnMenu.prototype.getHeaderCell = function (e) {\n return closest(e.target, 'th.e-headercell');\n };\n ColumnMenu.prototype.getColumn = function () {\n if (this.headerCell) {\n var uid = this.headerCell.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n return null;\n };\n ColumnMenu.prototype.createChooserItems = function () {\n var items = [];\n for (var _i = 0, _a = this.parent.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.showInColumnChooser && col.field) {\n items.push({ id: this.generateID(col.field, this.CHOOSER), text: col.headerText ? col.headerText : col.field });\n }\n }\n return items;\n };\n ColumnMenu.prototype.appendFilter = function (e) {\n var filter = 'Filter';\n if (!this.defaultItems[filter]) {\n return;\n }\n else {\n var key = this.defaultItems[filter].id;\n if (closest(e.target, '#' + key) && !this.isFilterPopupOpen()) {\n this.getFilter(e.target, key);\n }\n else if (!closest(e.target, '#' + key) && this.isFilterPopupOpen()) {\n this.getFilter(e.target, key, true);\n }\n }\n };\n ColumnMenu.prototype.getFilter = function (target, id, isClose) {\n var filterPopup = this.getFilterPop();\n if (filterPopup) {\n filterPopup.style.display = !Browser.isDevice && isClose ? 'none' : 'block';\n }\n else {\n this.parent.notify(events.filterOpen, {\n col: this.targetColumn, target: target, isClose: isClose, id: id\n });\n }\n };\n ColumnMenu.prototype.setPosition = function (li, ul) {\n var gridPos = this.parent.element.getBoundingClientRect();\n var liPos = li.getBoundingClientRect();\n var left = liPos.left - gridPos.left;\n var top = liPos.top - gridPos.top;\n if (gridPos.height < top) {\n top = top - ul.offsetHeight + liPos.height;\n }\n else if (gridPos.height < top + ul.offsetHeight) {\n top = gridPos.height - ul.offsetHeight;\n }\n if (window.innerHeight < ul.offsetHeight + top + gridPos.top) {\n top = window.innerHeight - ul.offsetHeight - gridPos.top;\n }\n if (top + gridPos.top < 0) {\n top = 0;\n }\n left += (this.parent.enableRtl ? -ul.offsetWidth : liPos.width);\n if (gridPos.width <= left + ul.offsetWidth) {\n left -= liPos.width + ul.offsetWidth;\n if (liPos.left < ul.offsetWidth) {\n left = liPos.left + ul.offsetWidth / 2;\n }\n }\n else if (left < 0) {\n left += ul.offsetWidth + liPos.width;\n }\n ul.style.top = top + 'px';\n ul.style.left = left + 'px';\n };\n ColumnMenu.prototype.filterPosition = function () {\n var filterPopup = this.getFilterPop();\n filterPopup.classList.add(this.WRAP);\n if (!Browser.isDevice) {\n var disp = filterPopup.style.display;\n filterPopup.style.cssText += 'display:block;visibility:hidden';\n var li = this.element.querySelector('.' + this.FILTER);\n if (li) {\n this.setPosition(li.parentElement, filterPopup);\n filterPopup.style.cssText += 'display:' + disp + ';visibility:visible';\n }\n }\n };\n ColumnMenu.prototype.getDefault = function () {\n var items = [];\n if (this.parent.ensureModuleInjected(Resize)) {\n items.push('AutoFitAll');\n items.push('AutoFit');\n }\n if (this.parent.allowGrouping && this.parent.ensureModuleInjected(Group)) {\n items.push('Group');\n items.push('Ungroup');\n }\n if (this.parent.allowSorting && this.parent.ensureModuleInjected(Sort)) {\n items.push('SortAscending');\n items.push('SortDescending');\n }\n items.push('ColumnChooser');\n if (this.parent.allowFiltering && (this.parent.filterSettings.type !== 'FilterBar') &&\n this.parent.ensureModuleInjected(Filter)) {\n items.push('Filter');\n }\n return items;\n };\n ColumnMenu.prototype.isFilterPopupOpen = function () {\n var filterPopup = this.getFilterPop();\n return filterPopup && filterPopup.style.display !== 'none';\n };\n ColumnMenu.prototype.getFilterPop = function () {\n if (Browser.isDevice && this.targetColumn !== null && this.parent.filterSettings.type === 'Menu') {\n return document.getElementById(this.targetColumn.uid + '-flmdlg');\n }\n return this.parent.element.querySelector('.' + this.POP);\n };\n ColumnMenu.prototype.isFilterItemAdded = function () {\n return (this.parent.columnMenuItems &&\n this.parent.columnMenuItems.indexOf('Filter') >= 0) || !this.parent.columnMenuItems;\n };\n return ColumnMenu;\n}());\nexport { ColumnMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheets class\n * @private\n */\nvar Worksheets = /** @class */ (function (_super) {\n __extends(Worksheets, _super);\n function Worksheets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Worksheets;\n}(Array));\nexport { Worksheets };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Worksheet = /** @class */ (function () {\n function Worksheet() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n this.enableRtl = false;\n }\n return Worksheet;\n}());\nexport { Worksheet };\n/**\n * Hyperlink class\n * @private\n */\nvar HyperLink = /** @class */ (function () {\n function HyperLink() {\n }\n return HyperLink;\n}());\nexport { HyperLink };\n/**\n * Grouping class\n * @private\n */\nvar Grouping = /** @class */ (function () {\n function Grouping() {\n }\n return Grouping;\n}());\nexport { Grouping };\n/**\n * FreezePane class\n * @private\n */\nvar FreezePane = /** @class */ (function () {\n function FreezePane() {\n }\n return FreezePane;\n}());\nexport { FreezePane };\n/**\n * MergeCell\n * @private\n */\nvar MergeCell = /** @class */ (function () {\n function MergeCell() {\n }\n return MergeCell;\n}());\nexport { MergeCell };\n/**\n * MergeCells class\n * @private\n */\nvar MergeCells = /** @class */ (function (_super) {\n __extends(MergeCells, _super);\n function MergeCells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (mergeCell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var mCell = _a[_i];\n if (MergeCells.isIntersecting(mCell, mergeCell)) {\n var intersectingCell = new MergeCell();\n intersectingCell.x = Math.min(mCell.x, mergeCell.x);\n intersectingCell.y = Math.min(mCell.Y, mergeCell.y);\n intersectingCell.width = Math.max(mCell.Width + mCell.X, mergeCell.width + mergeCell.x);\n intersectingCell.height = Math.max(mCell.Height + mCell.Y, mergeCell.height + mergeCell.y);\n intersectingCell.ref = (_this[count].ref.split(':')[0]) + ':' + (mergeCell.ref.split(':')[1]);\n _this[count] = intersectingCell;\n mergeCell = intersectingCell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(mergeCell);\n }\n return mergeCell;\n };\n return _this;\n }\n MergeCells.isIntersecting = function (base, compare) {\n return (base.x <= compare.x + compare.width)\n && (compare.x <= base.x + base.width)\n && (base.y <= compare.y + compare.height)\n && (compare.y <= base.y + base.height);\n };\n return MergeCells;\n}(Array));\nexport { MergeCells };\n","/**\n * CellStyle class\n * @private\n */\nvar CellStyle = /** @class */ (function () {\n function CellStyle() {\n this.numFmtId = 0;\n this.backColor = 'none';\n this.fontName = 'Calibri';\n this.fontSize = 10.5;\n this.fontColor = '#000000';\n this.italic = false;\n this.bold = false;\n this.underline = false;\n this.strikeThrough = false;\n this.wrapText = false;\n this.hAlign = 'general';\n this.vAlign = 'bottom';\n this.indent = 0;\n this.rotation = 0;\n this.numberFormat = 'GENERAL';\n this.type = 'datetime';\n this.borders = new Borders();\n this.isGlobalStyle = false;\n }\n return CellStyle;\n}());\nexport { CellStyle };\n/**\n * Font Class\n * @private\n */\nvar Font = /** @class */ (function () {\n function Font() {\n this.sz = 10.5;\n this.name = 'Calibri';\n this.u = false;\n this.b = false;\n this.i = false;\n this.color = 'FF000000';\n this.strike = false;\n }\n return Font;\n}());\nexport { Font };\n/**\n * CellXfs class\n * @private\n */\nvar CellXfs = /** @class */ (function () {\n function CellXfs() {\n }\n return CellXfs;\n}());\nexport { CellXfs };\n/**\n * Alignment class\n * @private\n */\nvar Alignment = /** @class */ (function () {\n function Alignment() {\n }\n return Alignment;\n}());\nexport { Alignment };\n/**\n * CellStyleXfs class\n * @private\n */\nvar CellStyleXfs = /** @class */ (function () {\n function CellStyleXfs() {\n }\n return CellStyleXfs;\n}());\nexport { CellStyleXfs };\n/**\n * CellStyles class\n * @private\n */\nvar CellStyles = /** @class */ (function () {\n function CellStyles() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n return CellStyles;\n}());\nexport { CellStyles };\n/**\n * NumFmt class\n * @private\n */\nvar NumFmt = /** @class */ (function () {\n function NumFmt(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n return NumFmt;\n}());\nexport { NumFmt };\n/**\n * Border class\n * @private\n */\nvar Border = /** @class */ (function () {\n function Border(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n return Border;\n}());\nexport { Border };\n/**\n * Borders class\n * @private\n */\nvar Borders = /** @class */ (function () {\n function Borders() {\n this.left = new Border('none', '#FFFFFF');\n this.right = new Border('none', '#FFFFFF');\n this.top = new Border('none', '#FFFFFF');\n this.bottom = new Border('none', '#FFFFFF');\n this.all = new Border('none', '#FFFFFF');\n }\n return Borders;\n}());\nexport { Borders };\n","/**\n * Column class\n * @private\n */\nvar Column = /** @class */ (function () {\n function Column() {\n }\n return Column;\n}());\nexport { Column };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Row class\n * @private\n */\nvar Row = /** @class */ (function () {\n function Row() {\n }\n return Row;\n}());\nexport { Row };\n/**\n * Rows class\n * @private\n */\nvar Rows = /** @class */ (function (_super) {\n __extends(Rows, _super);\n function Rows() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (row) {\n _this.push(row);\n };\n return _this;\n }\n return Rows;\n}(Array));\nexport { Rows };\n","/**\n * Image class\n * @private\n */\nvar Image = /** @class */ (function () {\n function Image() {\n }\n return Image;\n}());\nexport { Image };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Cell = /** @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\nexport { Cell };\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @class */ (function (_super) {\n __extends(Cells, _super);\n function Cells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (cell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.index === cell.index) {\n _this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(cell);\n }\n };\n return _this;\n }\n return Cells;\n}(Array));\nexport { Cells };\n","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 += '' + this.processString(value.substring(0, startindex)) + '';\n }\n while (startindex >= 0 && endIndex >= 0) {\n endIndex = value.indexOf('>', startindex + 1);\n if (endIndex >= 0) {\n var subString = value.substring(startindex + 1, endIndex);\n startindex = value.indexOf('<', endIndex + 1);\n if (startindex < 0) {\n startindex = cellValue.length;\n }\n var text = cellValue.substring(endIndex + 1, startindex);\n if (text.length !== 0) {\n var subSplit = subString.split(' ');\n if (subSplit.length > 0) {\n processedVal += '';\n }\n if (subSplit.length > 1) {\n for (var _i = 0, subSplit_1 = subSplit; _i < subSplit_1.length; _i++) {\n var element = subSplit_1[_i];\n var start = element.trim().substring(0, 5);\n switch (start) {\n case 'size=':\n processedVal += '';\n break;\n case 'face=':\n processedVal += '';\n break;\n case 'color':\n processedVal += '';\n break;\n case 'href=':\n var hyperLink = new HyperLink();\n hyperLink.target = element.substring(6, element.length - 1).trim();\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n processedVal += '';\n break;\n }\n }\n }\n else if (subSplit.length === 1) {\n var style = subSplit[0].trim();\n switch (style) {\n case 'b':\n processedVal += '';\n break;\n case 'i':\n processedVal += '';\n break;\n case 'u':\n processedVal += '';\n break;\n }\n }\n processedVal += '' + this.processString(text) + '';\n }\n }\n }\n if (processedVal === '') {\n return cellValue;\n }\n return processedVal;\n }\n else {\n return cellValue;\n }\n }\n else {\n return cellValue;\n }\n };\n Workbook.prototype.applyGlobalStyle = function (json, cellStyle) {\n var index = 0;\n if (this.cellStyles.has(json.name)) {\n cellStyle.index = this.mStyles.filter(function (a) { return (a.name === json.name); })[0].index;\n cellStyle.name = json.name;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserCellStyle = function (json, cellStyle, cellType, defStyleIndex) {\n //name\n if (json.name !== null && json.name !== undefined) {\n if (cellStyle.isGlobalStyle) {\n cellStyle.name = json.name;\n }\n else {\n this.applyGlobalStyle(json, cellStyle);\n return;\n }\n }\n //background color\n if (json.backColor !== null && json.backColor !== undefined) {\n cellStyle.backColor = json.backColor;\n }\n //borders\n //leftBorder\n cellStyle.borders = new Borders();\n //AllBorder\n if (json.borders !== null && json.borders !== undefined) {\n this.parserBorder(json.borders, cellStyle.borders.all);\n }\n //leftborder\n if (json.leftBorder !== null && json.leftBorder !== undefined) {\n this.parserBorder(json.leftBorder, cellStyle.borders.left);\n }\n //rightBorder\n if (json.rightBorder !== null && json.rightBorder !== undefined) {\n this.parserBorder(json.rightBorder, cellStyle.borders.right);\n }\n //topBorder\n if (json.topBorder !== null && json.topBorder !== undefined) {\n this.parserBorder(json.topBorder, cellStyle.borders.top);\n }\n //bottomBorder\n if (json.bottomBorder !== null && json.bottomBorder !== undefined) {\n this.parserBorder(json.bottomBorder, cellStyle.borders.bottom);\n }\n //fontName\n if (json.fontName !== null && json.fontName !== undefined) {\n cellStyle.fontName = json.fontName;\n }\n //fontSize\n if (json.fontSize !== null && json.fontSize !== undefined) {\n cellStyle.fontSize = json.fontSize;\n }\n //fontColor\n if (json.fontColor !== null && json.fontColor !== undefined) {\n cellStyle.fontColor = json.fontColor;\n }\n //italic\n if (json.italic !== null && json.italic !== undefined) {\n cellStyle.italic = json.italic;\n }\n //bold\n if (json.bold !== null && json.bold !== undefined) {\n cellStyle.bold = json.bold;\n }\n //hAlign\n if (json.hAlign !== null && json.hAlign !== undefined) {\n cellStyle.hAlign = json.hAlign.toLowerCase();\n }\n //indent\n if (json.indent !== null && json.indent !== undefined) {\n cellStyle.indent = json.indent;\n if (!(cellStyle.hAlign === 'left' || cellStyle.hAlign === 'right')) {\n cellStyle.hAlign = 'left';\n }\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n cellStyle.rotation = json.rotation;\n }\n //vAlign\n if (json.vAlign !== null && json.vAlign !== undefined) {\n cellStyle.vAlign = json.vAlign.toLowerCase();\n }\n //underline\n if (json.underline !== null && json.underline !== undefined) {\n cellStyle.underline = json.underline;\n }\n //strikeThrough\n if (json.strikeThrough !== null && json.strikeThrough !== undefined) {\n cellStyle.strikeThrough = json.strikeThrough;\n }\n //wrapText\n if (json.wrapText !== null && json.wrapText !== undefined) {\n cellStyle.wrapText = json.wrapText;\n }\n //numberFormat\n if (json.numberFormat !== null && json.numberFormat !== undefined) {\n if (json.type !== null && json.type !== undefined) {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, json.type);\n }\n else {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, cellType);\n }\n }\n else if (defStyleIndex !== undefined) {\n cellStyle.numFmtId = 14;\n cellStyle.numberFormat = 'GENERAL';\n }\n else {\n cellStyle.numberFormat = 'GENERAL';\n }\n cellStyle.index = this.processCellStyle(cellStyle);\n };\n Workbook.prototype.switchNumberFormat = function (numberFormat, type) {\n var format = this.getNumberFormat(numberFormat, type);\n if (format !== numberFormat) {\n var numFmt = this.mNumFmt.get(numberFormat);\n if (numFmt !== undefined) {\n numFmt.formatCode = format;\n if (this.mNumFmt.has(format)) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXfs = _a[_i];\n if (cellStyleXfs.numFmtId === numFmt.numFmtId) {\n cellStyleXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n for (var _b = 0, _c = this.mCellXfs; _b < _c.length; _b++) {\n var cellXfs = _c[_b];\n if (cellXfs.numFmtId === numFmt.numFmtId) {\n cellXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n }\n }\n }\n };\n Workbook.prototype.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.strike === toCompareStyle.strikeThrough &&\n font.name === toCompareStyle.fontName &&\n font.sz === toCompareStyle.fontSize;\n if (result) {\n break;\n }\n }\n index = index - 1;\n return { index: index, result: result };\n };\n Workbook.prototype.isNewBorder = function (toCompareStyle) {\n var bStyle = new CellStyle();\n if (this.isAllBorder(toCompareStyle.borders)) {\n return (bStyle.borders.all.color === toCompareStyle.borders.all.color &&\n bStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle);\n }\n else {\n return (bStyle.borders.left.color === toCompareStyle.borders.left.color &&\n bStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n bStyle.borders.right.color === toCompareStyle.borders.right.color &&\n bStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n bStyle.borders.top.color === toCompareStyle.borders.top.color &&\n bStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n bStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n bStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle);\n }\n };\n Workbook.prototype.isAllBorder = function (toCompareBorder) {\n var allBorderStyle = new CellStyle();\n return allBorderStyle.borders.all.color !== toCompareBorder.all.color &&\n allBorderStyle.borders.all.lineStyle !== toCompareBorder.all.lineStyle;\n };\n Workbook.prototype.compareStyle = function (toCompareStyle) {\n var result = true;\n var index = 0;\n var globalStyleIndex = 0;\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var baseStyle = _a[_i];\n result = baseStyle.isGlobalStyle ? false : (baseStyle.backColor === toCompareStyle.backColor &&\n baseStyle.bold === toCompareStyle.bold &&\n baseStyle.numFmtId === toCompareStyle.numFmtId &&\n baseStyle.numberFormat === toCompareStyle.numberFormat &&\n baseStyle.type === toCompareStyle.type &&\n baseStyle.fontColor === toCompareStyle.fontColor &&\n baseStyle.fontName === toCompareStyle.fontName &&\n baseStyle.fontSize === toCompareStyle.fontSize &&\n baseStyle.hAlign === toCompareStyle.hAlign &&\n baseStyle.italic === toCompareStyle.italic &&\n baseStyle.underline === toCompareStyle.underline &&\n baseStyle.strikeThrough === toCompareStyle.strikeThrough &&\n baseStyle.vAlign === toCompareStyle.vAlign &&\n baseStyle.indent === toCompareStyle.indent &&\n baseStyle.rotation === toCompareStyle.rotation &&\n baseStyle.wrapText === toCompareStyle.wrapText &&\n (baseStyle.borders.all.color === toCompareStyle.borders.all.color &&\n baseStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle) &&\n (baseStyle.borders.left.color === toCompareStyle.borders.left.color &&\n baseStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n baseStyle.borders.right.color === toCompareStyle.borders.right.color &&\n baseStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n baseStyle.borders.top.color === toCompareStyle.borders.top.color &&\n baseStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n baseStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n baseStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle));\n if (result) {\n index = baseStyle.index;\n break;\n }\n }\n return { index: index, result: result };\n };\n Workbook.prototype.contains = function (array, item) {\n var index = array.indexOf(item);\n return index > -1 && index < array.length;\n };\n Workbook.prototype.getCellValueType = function (value) {\n if (value instanceof Date) {\n return 'datetime';\n }\n else if (typeof (value) === 'boolean') {\n return 'boolean';\n }\n else if (typeof (value) === 'number') {\n return 'number';\n }\n else {\n return 'string';\n }\n };\n Workbook.prototype.parseCellType = function (cell) {\n var type = cell.type;\n var saveType;\n var value = cell.value;\n switch (type) {\n case 'datetime':\n value = this.toOADate(value);\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n var value_1 = this.globalStyles.get(cell.cellStyle.name);\n this.switchNumberFormat(value_1.format, value_1.type);\n }\n }\n saveType = 'n';\n break;\n //TODO: Update the number format index and style\n case 'boolean':\n value = value ? 1 : 0;\n saveType = 'b';\n break;\n case 'number':\n saveType = 'n';\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n this.switchNumberFormat(this.globalStyles.get(cell.cellStyle.name).format, 'number');\n }\n }\n break;\n case 'string':\n this.sharedStringCount++;\n saveType = 's';\n var sstvalue = this.processCellValue(value, cell);\n if (!this.contains(this.sharedString, sstvalue)) {\n this.sharedString.push(sstvalue);\n }\n value = this.sharedString.indexOf(sstvalue);\n break;\n default:\n break;\n }\n cell.saveType = saveType;\n cell.value = value;\n };\n Workbook.prototype.parserImages = function (json, sheet) {\n var imagesLength = json.length;\n sheet.images = [];\n var imageId = 0;\n for (var p = 0; p < imagesLength; p++) {\n var image = this.parserImage(json[p]);\n sheet.images.push(image);\n }\n };\n Workbook.prototype.parseFilters = function (json, sheet) {\n sheet.autoFilters = new AutoFilters();\n if (json.row !== null && json.row !== undefined)\n sheet.autoFilters.row = json.row;\n else\n throw new Error('Argument Null Exception: row null or empty');\n if (json.lastRow !== null && json.lastRow !== undefined)\n sheet.autoFilters.lastRow = json.lastRow;\n else\n throw new Error('Argument Null Exception: lastRow cannot be null or empty');\n if (json.column !== null && json.column !== undefined)\n sheet.autoFilters.column = json.column;\n else\n throw new Error('Argument Null Exception: column cannot be null or empty');\n if (json.lastColumn !== null && json.row !== undefined)\n sheet.autoFilters.lastColumn = json.lastColumn;\n else\n throw new Error('Argument Null Exception: lastColumn cannot be null or empty');\n };\n Workbook.prototype.parserImage = function (json) {\n var image = new Image();\n if (json.image !== null && json.image !== undefined) {\n image.image = json.image;\n }\n if (json.row !== null && json.row !== undefined) {\n image.row = json.row;\n }\n if (json.column !== null && json.column !== undefined) {\n image.column = json.column;\n }\n if (json.lastRow !== null && json.lastRow !== undefined) {\n image.lastRow = json.lastRow;\n }\n if (json.lastColumn !== null && json.lastColumn !== undefined) {\n image.lastColumn = json.lastColumn;\n }\n if (json.width !== null && json.width !== undefined) {\n image.width = json.width;\n }\n if (json.height !== null && json.height !== undefined) {\n image.height = json.height;\n }\n if (json.horizontalFlip !== null && json.horizontalFlip !== undefined) {\n image.horizontalFlip = json.horizontalFlip;\n }\n if (json.verticalFlip !== null && json.verticalFlip !== undefined) {\n image.verticalFlip = json.verticalFlip;\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n image.rotation = json.rotation;\n }\n return image;\n };\n 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 var sheetName = this.worksheets[i].name;\n sheetName = sheetName.replace(\"&\", \"&\");\n sheetName = sheetName.replace(\"<\", \"<\");\n sheetName = sheetName.replace(\">\", \">\");\n sheetName = sheetName.replace(\"\\\"\", \""\");\n sheets += '';\n }\n sheets += '';\n workbookTemp += sheets;\n if (this.printTitles.size > 0) {\n var printTitle_1 = '';\n this.printTitles.forEach(function (value, key) {\n printTitle_1 += '' + value + '';\n });\n printTitle_1 += '';\n workbookTemp += printTitle_1;\n }\n this.addToArchive(workbookTemp + '', 'xl/workbook.xml');\n };\n Workbook.prototype.saveWorksheets = function () {\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n this.saveWorksheet(this.worksheets[i], i);\n }\n };\n Workbook.prototype.saveWorksheet = function (sheet, index) {\n var sheetBlob = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetString = '';\n if (!sheet.isSummaryRowBelow) {\n sheetString += ('' + '' + '' + '');\n }\n else {\n sheetString += ('');\n }\n sheetString += this.saveSheetView(sheet);\n if (sheet.columns !== undefined) {\n var colString = '';\n for (var _i = 0, _a = sheet.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n if (column.width !== undefined) {\n colString += '';\n }\n else {\n colString += '';\n }\n }\n sheetString += (colString + '');\n }\n sheetString += ('');\n sheetBlob.append(sheetString);\n sheetString = '';\n if (sheet.rows !== undefined) {\n for (var _b = 0, _c = sheet.rows; _b < _c.length; _b++) {\n var row = _c[_b];\n var rowString = '');\n for (var _d = 0, _e = row.cells; _d < _e.length; _d++) {\n var cell = _e[_d];\n if (cell !== undefined && (cell.value !== undefined || cell.cellStyle !== undefined)) {\n rowString += ('');\n if (cell.formula !== undefined) {\n rowString += ('' + cell.formula + '');\n }\n if (cell.value !== undefined) {\n rowString += ('' + cell.value + '');\n }\n else {\n rowString += ('');\n }\n }\n }\n rowString += ('');\n sheetBlob.append(rowString);\n }\n }\n sheetString += ('');\n /* tslint:disable-next-line:max-line-length */\n if (sheet.autoFilters !== null && sheet.autoFilters !== undefined)\n sheetString += ('');\n if (sheet.mergeCells.length > 0) {\n sheetString += ('');\n for (var _f = 0, _g = sheet.mergeCells; _f < _g.length; _f++) {\n var mCell = _g[_f];\n sheetString += ('');\n }\n sheetString += ('');\n }\n if (sheet.hyperLinks.length > 0) {\n sheetString += ('');\n for (var _h = 0, _j = sheet.hyperLinks; _h < _j.length; _h++) {\n var hLink = _j[_h];\n sheetString += ('');\n }\n sheetString += ('');\n }\n /* tslint:disable-next-line:max-line-length */\n sheetString += ('');\n if (sheet.images != undefined && sheet.images.length > 0) {\n this.drawingCount++;\n this.saveDrawings(sheet, sheet.index);\n sheetString += '';\n }\n this.addToArchive(this.saveSheetRelations(sheet), ('xl/worksheets/_rels/sheet' + sheet.index + '.xml.rels'));\n sheetBlob.append(sheetString + '');\n this.addToArchive(sheetBlob.getBlob(), 'xl/worksheets' + '/sheet' + (index + 1) + '.xml');\n };\n Workbook.prototype.saveDrawings = function (sheet, index) {\n var drawings = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetDrawingString = '';\n if (sheet.images !== undefined) {\n var imgId = 0;\n for (var _i = 0, _a = sheet.images; _i < _a.length; _i++) {\n var pic = _a[_i];\n if (pic.height !== undefined && pic.width !== undefined) {\n this.updatelastRowOffset(sheet, pic);\n this.updatelastColumnOffSet(sheet, pic);\n }\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.strike = style.strikeThrough;\n font.color = ('FF' + style.fontColor.replace('#', ''));\n this.mFonts.push(font);\n cellXfs.fontId = this.mFonts.length - 1;\n }\n else {\n cellXfs.fontId = compareFontResult.index;\n }\n //Add fill\n if (style.backColor !== 'none') {\n var backColor = 'FF' + style.backColor.replace('#', '');\n if (this.mFills.has(backColor)) {\n var fillId = this.mFills.get(backColor);\n cellXfs.fillId = fillId;\n }\n else {\n var fillId = this.mFills.size + 2;\n this.mFills.set(backColor, fillId);\n cellXfs.fillId = (fillId);\n }\n }\n else {\n cellXfs.fillId = 0;\n }\n //Add border \n if (!this.isNewBorder(style)) {\n this.mBorders.push(style.borders);\n cellXfs.borderId = this.mBorders.length;\n }\n else {\n cellXfs.borderId = 0;\n }\n //Add Number Format \n if (style.numberFormat !== 'GENERAL') {\n if (this.mNumFmt.has(style.numberFormat)) {\n var numFmt = this.mNumFmt.get(style.numberFormat);\n cellXfs.numFmtId = numFmt.numFmtId;\n }\n else {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n cellXfs.numFmtId = id;\n }\n }\n else {\n if (style.numberFormat === 'GENERAL' && style.numFmtId === 14) {\n cellXfs.numFmtId = 14;\n }\n else {\n cellXfs.numFmtId = 0;\n }\n }\n //Add alignment \n if (!style.isGlobalStyle) {\n cellXfs.applyAlignment = 1;\n }\n cellXfs.alignment = new Alignment();\n cellXfs.alignment.indent = style.indent;\n cellXfs.alignment.horizontal = style.hAlign;\n cellXfs.alignment.vertical = style.vAlign;\n cellXfs.alignment.wrapText = style.wrapText ? 1 : 0;\n cellXfs.alignment.rotation = style.rotation;\n if (style.isGlobalStyle) {\n this.mCellStyleXfs.push(cellXfs);\n this.mCellXfs.push(cellXfs);\n }\n else {\n //Add cellxfs\n this.mCellXfs.push(cellXfs);\n }\n }\n };\n Workbook.prototype.saveNumberFormats = function () {\n if (this.mNumFmt.size >= 1) {\n var numFmtStyle_1 = '';\n this.mNumFmt.forEach(function (value, key) {\n numFmtStyle_1 += '';\n });\n return (numFmtStyle_1 += '');\n }\n else {\n return '';\n }\n };\n Workbook.prototype.saveFonts = function () {\n /* tslint:disable-next-line:max-line-length */\n var fontStyle = '';\n if (this.mFonts.length >= 1) {\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n fontStyle += '';\n if (font.b) {\n fontStyle += '';\n }\n if (font.i) {\n fontStyle += '';\n }\n if (font.u) {\n fontStyle += '';\n }\n if (font.strike) {\n fontStyle += '';\n }\n fontStyle += '';\n fontStyle += '';\n fontStyle += '';\n }\n }\n return fontStyle + '';\n };\n Workbook.prototype.saveFills = function () {\n /* tslint:disable-next-line:max-line-length */\n var fillsStyle = '';\n if (this.mFills.size >= 1) {\n this.mFills.forEach(function (value, key) {\n /* tslint:disable-next-line:max-line-length */\n fillsStyle += '';\n });\n }\n return fillsStyle + '';\n };\n Workbook.prototype.saveBorders = function () {\n /* tslint:disable-next-line:max-line-length */\n var bordersStyle = '';\n if (this.mBorders.length >= 1) {\n for (var _i = 0, _a = this.mBorders; _i < _a.length; _i++) {\n var borders = _a[_i];\n if (this.isAllBorder(borders)) {\n var color = borders.all.color.replace('#', '');\n var lineStyle = borders.all.lineStyle;\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n }\n }\n return bordersStyle + '';\n };\n Workbook.prototype.saveCellStyles = function () {\n var _this = this;\n var cellStyleString = '';\n this.cellStyles.forEach(function (value, key) {\n cellStyleString += '';\n if (this.mCellStyleXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n else {\n cellXfsStyle += ' />';\n }\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveCellXfs = function () {\n /* tslint:disable-next-line:max-line-length */\n var cellXfsStyle = '';\n if (this.mCellXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellXfs; _i < _a.length; _i++) {\n var cellXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveAlignment = function (cellXf) {\n var alignString = '';\n return alignString;\n };\n Workbook.prototype.saveApp = function (builtInProperties) {\n /* tslint:disable-next-line:max-line-length */\n var appString = 'Essential XlsIO';\n if (builtInProperties !== undefined) {\n if (builtInProperties.manager !== undefined) {\n appString += '' + builtInProperties.manager + '';\n }\n if (builtInProperties.company !== undefined) {\n appString += '' + builtInProperties.company + '';\n }\n }\n this.addToArchive((appString + ''), 'docProps/app.xml');\n };\n Workbook.prototype.saveCore = function (builtInProperties) {\n var createdDate = new Date();\n /* tslint:disable-next-line:max-line-length */\n var coreString = '';\n if (this.builtInProperties !== undefined) {\n if (builtInProperties.author !== undefined) {\n coreString += '' + builtInProperties.author + '';\n }\n if (builtInProperties.subject !== undefined) {\n coreString += '' + builtInProperties.subject + '';\n }\n if (builtInProperties.category !== undefined) {\n coreString += '' + builtInProperties.category + '';\n }\n if (builtInProperties.comments !== undefined) {\n coreString += '' + builtInProperties.comments + '';\n }\n if (builtInProperties.title !== undefined) {\n coreString += '' + builtInProperties.title + '';\n }\n if (builtInProperties.tags !== undefined) {\n coreString += '' + builtInProperties.tags + '';\n }\n if (builtInProperties.status !== undefined) {\n coreString += '' + builtInProperties.status + '';\n }\n if (builtInProperties.createdDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.createdDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n if (builtInProperties.modifiedDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.modifiedDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n coreString += '' + createdDate.toISOString() + '';\n }\n /* tslint:disable-next-line:max-line-length */\n coreString += '';\n this.addToArchive(coreString, 'docProps/core.xml');\n };\n Workbook.prototype.saveTopLevelRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var topRelation = '';\n this.addToArchive(topRelation, '_rels/.rels');\n };\n Workbook.prototype.saveWorkbookRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var wbRelation = '';\n var length = this.worksheets.length;\n var count = 0;\n for (var i = 0; i < length; i++, count++) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n this.addToArchive((wbRelation + ''), 'xl/_rels/workbook.xml.rels');\n };\n Workbook.prototype.saveContentType = function () {\n /* tslint:disable-next-line:max-line-length */\n var contentTypeString = '';\n var sheetsOverride = '';\n var length = this.worksheets.length;\n 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 ? gObj.groupSettings.columns.length - 1 : 0;\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) - 1;\n var col = gObj.getColumnByField(item.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n var cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel', data: item };\n this.parent.trigger(events.exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n var captionModelGen = new CaptionSummaryModelGenerator(gObj);\n var groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, (dataSource.level + dataSource.childLevels) - 1, excelRows, this.rowLength);\n cells.push(cell);\n if (excelRows[excelRows.length - 1].cells.length > 0) {\n var lIndex = dataSource.level + dataSource.childLevels + groupCaptionSummaryRows[0].cells.length;\n var hIndex = 0;\n for (var _a = 0, _b = excelRows[excelRows.length - 1].cells; _a < _b.length; _a++) {\n var tCell = _b[_a];\n if (tCell.index < lIndex) {\n lIndex = tCell.index;\n }\n if (tCell.index > hIndex) {\n hIndex = tCell.index;\n }\n if (cells[cells.length - 1].index !== tCell.index) {\n cells.push(tCell);\n }\n }\n if ((lIndex - cell.index) > 1) {\n cell.colSpan = lIndex - cell.index;\n }\n while (hIndex < (headerRow.columns.length + level + dataSource.childLevels)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n var span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (var _c = 0, _d = headerRow.columns; _c < _d.length; _c++) {\n var col_1 = _d[_c];\n if (col_1.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n var grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1) + dataSource.childLevels, true);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level - 1), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1), true);\n }\n }\n };\n ExcelExport.prototype.processRecordRows = function (gObj, record, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n var index = 1;\n var cells = [];\n var columns = headerRow.columns;\n var rows = helper.getGridRowModel(columns, record, gObj, startIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n cells = [];\n startIndex++;\n index = 1;\n var templateRowHeight = void 0;\n for (var c = 0, len = row.cells.length; c < len; c++) {\n var gCell = row.cells[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 && this.groupedColLength < 8 && (level + 1) > 0) {\n excelRow.grouping = { outlineLevel: (level + 1), isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\n if (row.isExpand && !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 indent = gObj.groupSettings.columns.length ? indent - 1 : indent;\n excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.fillAggregates = function (gObj, rows, indent, excelRows, customIndex) {\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n var cells = [];\n var isEmpty = true;\n var index = 0;\n for (var _a = 0, _b = row.cells; _a < _b.length; _a++) {\n var cell = _b[_a];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eCell = {};\n 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","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { useThemeProps } from '@mui/material/styles';\nimport { useDefaultDates, useUtils } from '../internals/hooks/useUtils';\nimport { parsePickerInputValue } from '../internals/utils/date-utils';\nexport function useDateTimePickerDefaultizedProps(props, name) {\n var _themeProps$ampm, _ref, _themeProps$minDateTi, _ref2, _themeProps$maxDateTi, _themeProps$minDateTi2, _themeProps$maxDateTi2;\n\n // This is technically unsound if the type parameters appear in optional props.\n // Optional props can be filled by `useThemeProps` with types that don't match the type parameters.\n const themeProps = useThemeProps({\n props,\n name\n });\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const ampm = (_themeProps$ampm = themeProps.ampm) != null ? _themeProps$ampm : utils.is12HourCycleInCurrentLocale();\n\n if (themeProps.orientation != null && themeProps.orientation !== 'portrait') {\n throw new Error('We are not supporting custom orientation for DateTimePicker yet :(');\n }\n\n return _extends({\n ampm,\n orientation: 'portrait',\n openTo: 'day',\n views: ['year', 'day', 'hours', 'minutes'],\n ampmInClock: true,\n acceptRegex: ampm ? /[\\dap]/gi : /\\d/gi,\n disableMaskedInput: false,\n inputFormat: ampm ? utils.formats.keyboardDateTime12h : utils.formats.keyboardDateTime24h,\n disableIgnoringDatePartForTimeValidation: Boolean(themeProps.minDateTime || themeProps.maxDateTime)\n }, themeProps, {\n minDate: (_ref = (_themeProps$minDateTi = themeProps.minDateTime) != null ? _themeProps$minDateTi : themeProps.minDate) != null ? _ref : defaultDates.minDate,\n maxDate: (_ref2 = (_themeProps$maxDateTi = themeProps.maxDateTime) != null ? _themeProps$maxDateTi : themeProps.maxDate) != null ? _ref2 : defaultDates.maxDate,\n minTime: (_themeProps$minDateTi2 = themeProps.minDateTime) != null ? _themeProps$minDateTi2 : themeProps.minTime,\n maxTime: (_themeProps$maxDateTi2 = themeProps.maxDateTime) != null ? _themeProps$maxDateTi2 : themeProps.maxTime\n });\n}\nexport const dateTimePickerValueManager = {\n emptyValue: null,\n getTodayValue: utils => utils.date(),\n parseInput: parsePickerInputValue,\n areValuesEqual: (utils, a, b) => utils.isEqual(a, b)\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Tab from '@mui/material/Tab';\nimport Tabs, { tabsClasses } from '@mui/material/Tabs';\nimport { styled } from '@mui/material/styles';\nimport { Time, DateRange } from '../internals/components/icons';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { useLocaleText } from '../internals/hooks/useUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst viewToTab = openView => {\n if (['day', 'month', 'year'].includes(openView)) {\n return 'date';\n }\n\n return 'time';\n};\n\nconst tabToView = tab => {\n if (tab === 'date') {\n return 'day';\n }\n\n return 'hours';\n};\n\nconst DateTimePickerTabsRoot = styled(Tabs)(({\n ownerState,\n theme\n}) => _extends({\n boxShadow: `0 -1px 0 0 inset ${theme.palette.divider}`\n}, ownerState.wrapperVariant === 'desktop' && {\n order: 1,\n boxShadow: `0 1px 0 0 inset ${theme.palette.divider}`,\n [`& .${tabsClasses.indicator}`]: {\n bottom: 'auto',\n top: 0\n }\n}));\n/**\n * @ignore - internal component.\n */\n\nexport const DateTimePickerTabs = props => {\n const {\n dateRangeIcon = /*#__PURE__*/_jsx(DateRange, {}),\n onChange,\n timeIcon = /*#__PURE__*/_jsx(Time, {}),\n view\n } = props;\n const localeText = useLocaleText();\n const wrapperVariant = React.useContext(WrapperVariantContext);\n\n const ownerState = _extends({}, props, {\n wrapperVariant\n });\n\n const handleChange = (event, value) => {\n onChange(tabToView(value));\n };\n\n return /*#__PURE__*/_jsxs(DateTimePickerTabsRoot, {\n ownerState: ownerState,\n variant: \"fullWidth\",\n value: viewToTab(view),\n onChange: handleChange,\n children: [/*#__PURE__*/_jsx(Tab, {\n value: \"date\",\n \"aria-label\": localeText.dateTableLabel,\n icon: /*#__PURE__*/_jsx(React.Fragment, {\n children: dateRangeIcon\n })\n }), /*#__PURE__*/_jsx(Tab, {\n value: \"time\",\n \"aria-label\": localeText.timeTableLabel,\n icon: /*#__PURE__*/_jsx(React.Fragment, {\n children: timeIcon\n })\n })]\n });\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ampm\", \"parsedValue\", \"dateRangeIcon\", \"hideTabs\", \"isMobileKeyboardViewOpen\", \"onChange\", \"openView\", \"setOpenView\", \"timeIcon\", \"toggleMobileKeyboardView\", \"toolbarFormat\", \"toolbarPlaceholder\", \"toolbarTitle\", \"views\"];\nimport * as React from 'react';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/material';\nimport { PickersToolbarText } from '../internals/components/PickersToolbarText';\nimport { PickersToolbar, pickersToolbarClasses } from '../internals/components/PickersToolbar';\nimport { PickersToolbarButton } from '../internals/components/PickersToolbarButton';\nimport { DateTimePickerTabs } from './DateTimePickerTabs';\nimport { useUtils } from '../internals/hooks/useUtils';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const dateTimePickerToolbarClasses = generateUtilityClasses('MuiDateTimePickerToolbar', ['root', 'dateContainer', 'timeContainer', 'separator']);\nconst DateTimePickerToolbarRoot = styled(PickersToolbar, {\n name: 'MuiDateTimePickerToolbar',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n paddingLeft: 16,\n paddingRight: 16,\n justifyContent: 'space-around',\n [`& .${pickersToolbarClasses.penIconButton}`]: {\n position: 'absolute',\n top: 8,\n right: 8\n }\n});\nconst DateTimePickerToolbarDateContainer = styled('div', {\n name: 'MuiDateTimePickerToolbar',\n slot: 'DateContainer',\n overridesResolver: (props, styles) => styles.dateContainer\n})({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start'\n});\nconst DateTimePickerToolbarTimeContainer = styled('div', {\n name: 'MuiDateTimePickerToolbar',\n slot: 'TimeContainer',\n overridesResolver: (props, styles) => styles.timeContainer\n})({\n display: 'flex'\n});\nconst DateTimePickerToolbarSeparator = styled(PickersToolbarText, {\n name: 'MuiDateTimePickerToolbar',\n slot: 'Separator',\n overridesResolver: (props, styles) => styles.separator\n})({\n margin: '0 4px 0 2px',\n cursor: 'default'\n});\n/**\n * @ignore - internal component.\n */\n\nexport const DateTimePickerToolbar = props => {\n const {\n ampm,\n parsedValue,\n dateRangeIcon,\n hideTabs,\n isMobileKeyboardViewOpen,\n openView,\n setOpenView,\n timeIcon,\n toggleMobileKeyboardView,\n toolbarFormat,\n toolbarPlaceholder = '––',\n toolbarTitle = 'Select date & time',\n views\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const utils = useUtils();\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const showTabs = wrapperVariant === 'desktop' ? true : !hideTabs && typeof window !== 'undefined' && window.innerHeight > 667;\n\n const formatHours = time => ampm ? utils.format(time, 'hours12h') : utils.format(time, 'hours24h');\n\n const dateText = React.useMemo(() => {\n if (!parsedValue) {\n return toolbarPlaceholder;\n }\n\n if (toolbarFormat) {\n return utils.formatByString(parsedValue, toolbarFormat);\n }\n\n return utils.format(parsedValue, 'shortDate');\n }, [parsedValue, toolbarFormat, toolbarPlaceholder, utils]);\n const ownerState = props;\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [wrapperVariant !== 'desktop' && /*#__PURE__*/_jsxs(DateTimePickerToolbarRoot, _extends({\n toolbarTitle: toolbarTitle,\n isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: toggleMobileKeyboardView,\n className: dateTimePickerToolbarClasses.root\n }, other, {\n isLandscape: false,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsxs(DateTimePickerToolbarDateContainer, {\n className: dateTimePickerToolbarClasses.dateContainer,\n ownerState: ownerState,\n children: [views.includes('year') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n tabIndex: -1,\n variant: \"subtitle1\",\n onClick: () => setOpenView('year'),\n selected: openView === 'year',\n value: parsedValue ? utils.format(parsedValue, 'year') : '–'\n }), views.includes('day') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n tabIndex: -1,\n variant: \"h4\",\n onClick: () => setOpenView('day'),\n selected: openView === 'day',\n value: dateText\n })]\n }), /*#__PURE__*/_jsxs(DateTimePickerToolbarTimeContainer, {\n className: dateTimePickerToolbarClasses.timeContainer,\n ownerState: ownerState,\n children: [views.includes('hours') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n variant: \"h3\",\n onClick: () => setOpenView('hours'),\n selected: openView === 'hours',\n value: parsedValue ? formatHours(parsedValue) : '--'\n }), views.includes('minutes') && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {\n variant: \"h3\",\n value: \":\",\n className: dateTimePickerToolbarClasses.separator,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(PickersToolbarButton, {\n variant: \"h3\",\n onClick: () => setOpenView('minutes'),\n selected: openView === 'minutes',\n value: parsedValue ? utils.format(parsedValue, 'minutes') : '--'\n })]\n }), views.includes('seconds') && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {\n variant: \"h3\",\n value: \":\",\n className: dateTimePickerToolbarClasses.separator,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(PickersToolbarButton, {\n variant: \"h3\",\n onClick: () => setOpenView('seconds'),\n selected: openView === 'seconds',\n value: parsedValue ? utils.format(parsedValue, 'seconds') : '--'\n })]\n })]\n })]\n })), showTabs && /*#__PURE__*/_jsx(DateTimePickerTabs, {\n dateRangeIcon: dateRangeIcon,\n timeIcon: timeIcon,\n view: openView,\n onChange: setOpenView\n })]\n });\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"minDate\", \"maxDate\", \"disableFuture\", \"shouldDisableDate\", \"disablePast\"];\nimport { useValidation } from './useValidation';\nimport { validateDate } from './useDateValidation';\nimport { validateTime } from './useTimeValidation';\nexport const validateDateTime = ({\n props,\n value,\n adapter\n}) => {\n const {\n minDate,\n maxDate,\n disableFuture,\n shouldDisableDate,\n disablePast\n } = props,\n timeValidationProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n const dateValidationResult = validateDate({\n adapter,\n value,\n props: {\n minDate,\n maxDate,\n disableFuture,\n shouldDisableDate,\n disablePast\n }\n });\n\n if (dateValidationResult !== null) {\n return dateValidationResult;\n }\n\n return validateTime({\n adapter,\n value,\n props: timeValidationProps\n });\n};\n\nconst isSameDateTimeError = (a, b) => a === b;\n\nexport function useDateTimeValidation(props) {\n return useValidation(props, validateDateTime, isSameDateTimeError);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"PaperProps\", \"PopperProps\", \"ToolbarComponent\", \"TransitionComponent\", \"value\", \"components\", \"componentsProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDateTimePickerDefaultizedProps, dateTimePickerValueManager } from '../DateTimePicker/shared';\nimport { DateTimePickerToolbar } from '../DateTimePicker/DateTimePickerToolbar';\nimport { DesktopWrapper } from '../internals/components/wrappers/DesktopWrapper';\nimport { CalendarOrClockPicker } from '../internals/components/CalendarOrClockPicker';\nimport { useDateTimeValidation } from '../internals/hooks/validation/useDateTimeValidation';\nimport { KeyboardDateInput } from '../internals/components/KeyboardDateInput';\nimport { usePickerState } from '../internals/hooks/usePickerState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Time Picker](https://mui.com/x/react-date-pickers/date-time-picker/)\n *\n * API:\n *\n * - [DesktopDateTimePicker API](https://mui.com/x/api/date-pickers/desktop-date-time-picker/)\n */\nexport const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTimePicker(inProps, ref) {\n const props = useDateTimePickerDefaultizedProps(inProps, 'MuiDesktopDateTimePicker');\n const validationError = useDateTimeValidation(props) !== null;\n const {\n pickerProps,\n inputProps,\n wrapperProps\n } = usePickerState(props, dateTimePickerValueManager);\n\n const {\n PaperProps,\n PopperProps,\n ToolbarComponent = DateTimePickerToolbar,\n TransitionComponent,\n components,\n componentsProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const AllDateInputProps = _extends({}, inputProps, other, {\n components,\n componentsProps,\n ref,\n validationError\n });\n\n return /*#__PURE__*/_jsx(DesktopWrapper, _extends({}, wrapperProps, {\n DateInputProps: AllDateInputProps,\n KeyboardDateInputComponent: KeyboardDateInput,\n PopperProps: PopperProps,\n PaperProps: PaperProps,\n TransitionComponent: TransitionComponent,\n components: components,\n componentsProps: componentsProps,\n children: /*#__PURE__*/_jsx(CalendarOrClockPicker, _extends({}, pickerProps, {\n autoFocus: true,\n toolbarTitle: props.label || props.toolbarTitle,\n ToolbarComponent: ToolbarComponent,\n DateInputProps: AllDateInputProps,\n components: components,\n componentsProps: componentsProps\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? DesktopDateTimePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * 12h/24h view for hour selection clock.\n * @default `utils.is12HourCycleInCurrentLocale()`\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n autoFocus: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Date tab icon.\n */\n dateRangeIcon: PropTypes.node,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * To show tabs.\n */\n hideTabs: PropTypes.bool,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n */\n maxDateTime: PropTypes.any,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n */\n minDateTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarOrClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n */\n openTo: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Paper props passed down to [Paper](https://mui.com/material-ui/api/paper/) component.\n */\n PaperProps: PropTypes.object,\n\n /**\n * Popper props passed down to [Popper](https://mui.com/material-ui/api/popper/) component.\n */\n PopperProps: PropTypes.object,\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Time tab icon.\n */\n timeIcon: PropTypes.node,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DateTimePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date & time'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * Custom component for popper [Transition](https://mui.com/material-ui/transitions/#transitioncomponent-prop).\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired)\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ToolbarComponent\", \"value\", \"onChange\", \"components\", \"componentsProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDateTimePickerDefaultizedProps, dateTimePickerValueManager } from '../DateTimePicker/shared';\nimport { DateTimePickerToolbar } from '../DateTimePicker/DateTimePickerToolbar';\nimport { MobileWrapper } from '../internals/components/wrappers/MobileWrapper';\nimport { CalendarOrClockPicker } from '../internals/components/CalendarOrClockPicker';\nimport { useDateTimeValidation } from '../internals/hooks/validation/useDateTimeValidation';\nimport { PureDateInput } from '../internals/components/PureDateInput';\nimport { usePickerState } from '../internals/hooks/usePickerState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Time Picker](https://mui.com/x/react-date-pickers/date-time-picker/)\n *\n * API:\n *\n * - [MobileDateTimePicker API](https://mui.com/x/api/date-pickers/mobile-date-time-picker/)\n */\nexport const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTimePicker(inProps, ref) {\n const props = useDateTimePickerDefaultizedProps(inProps, 'MuiMobileDateTimePicker');\n const validationError = useDateTimeValidation(props) !== null;\n const {\n pickerProps,\n inputProps,\n wrapperProps\n } = usePickerState(props, dateTimePickerValueManager); // Note that we are passing down all the value without spread.\n // It saves us >1kb gzip and make any prop available automatically on any level down.\n\n const {\n ToolbarComponent = DateTimePickerToolbar,\n components,\n componentsProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const DateInputProps = _extends({}, inputProps, other, {\n components,\n componentsProps,\n ref,\n validationError\n });\n\n return /*#__PURE__*/_jsx(MobileWrapper, _extends({}, other, wrapperProps, {\n DateInputProps: DateInputProps,\n PureDateInputComponent: PureDateInput,\n components: components,\n componentsProps: componentsProps,\n children: /*#__PURE__*/_jsx(CalendarOrClockPicker, _extends({}, pickerProps, {\n autoFocus: true,\n toolbarTitle: props.label || props.toolbarTitle,\n ToolbarComponent: ToolbarComponent,\n DateInputProps: DateInputProps,\n components: components,\n componentsProps: componentsProps\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MobileDateTimePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * 12h/24h view for hour selection clock.\n * @default `utils.is12HourCycleInCurrentLocale()`\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n autoFocus: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Date tab icon.\n */\n dateRangeIcon: PropTypes.node,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * Props applied to the [`Dialog`](https://mui.com/material-ui/api/dialog/) element.\n */\n DialogProps: PropTypes.object,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * To show tabs.\n */\n hideTabs: PropTypes.bool,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n */\n maxDateTime: PropTypes.any,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n */\n minDateTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarOrClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n */\n openTo: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Time tab icon.\n */\n timeIcon: PropTypes.node,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DateTimePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date & time'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired)\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"desktopModeMediaQuery\", \"DialogProps\", \"PopperProps\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { DesktopDateTimePicker } from '../DesktopDateTimePicker';\nimport { MobileDateTimePicker } from '../MobileDateTimePicker';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Time Picker](https://mui.com/x/react-date-pickers/date-time-picker/)\n * - [Pickers](https://mui.com/x/react-date-pickers/)\n *\n * API:\n *\n * - [DateTimePicker API](https://mui.com/x/api/date-pickers/date-time-picker/)\n */\nconst DateTimePicker = /*#__PURE__*/React.forwardRef(function DateTimePicker(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDateTimePicker'\n });\n\n const {\n desktopModeMediaQuery = '@media (pointer: fine)',\n DialogProps,\n PopperProps,\n TransitionComponent\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const isDesktop = useMediaQuery(desktopModeMediaQuery);\n\n if (isDesktop) {\n return /*#__PURE__*/_jsx(DesktopDateTimePicker, _extends({\n ref: ref,\n PopperProps: PopperProps,\n TransitionComponent: TransitionComponent\n }, other));\n }\n\n return /*#__PURE__*/_jsx(MobileDateTimePicker, _extends({\n ref: ref,\n DialogProps: DialogProps\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DateTimePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * 12h/24h view for hour selection clock.\n * @default `utils.is12HourCycleInCurrentLocale()`\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n autoFocus: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Date tab icon.\n */\n dateRangeIcon: PropTypes.node,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * CSS media query when `Mobile` mode will be changed to `Desktop`.\n * @default '@media (pointer: fine)'\n * @example '@media (min-width: 720px)' or theme.breakpoints.up(\"sm\")\n */\n desktopModeMediaQuery: PropTypes.string,\n\n /**\n * Props applied to the [`Dialog`](https://mui.com/material-ui/api/dialog/) element.\n */\n DialogProps: PropTypes.object,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * To show tabs.\n */\n hideTabs: PropTypes.bool,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n */\n maxDateTime: PropTypes.any,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n */\n minDateTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarOrClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n */\n openTo: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Paper props passed down to [Paper](https://mui.com/material-ui/api/paper/) component.\n */\n PaperProps: PropTypes.object,\n\n /**\n * Popper props passed down to [Popper](https://mui.com/material-ui/api/popper/) component.\n */\n PopperProps: PropTypes.object,\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Time tab icon.\n */\n timeIcon: PropTypes.node,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DateTimePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date & time'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * Custom component for popper [Transition](https://mui.com/material-ui/transitions/#transitioncomponent-prop).\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired)\n} : void 0;\nexport { DateTimePicker };","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioButtonUncheckedIcon from '../internal/svg-icons/RadioButtonUnchecked';\nimport RadioButtonCheckedIcon from '../internal/svg-icons/RadioButtonChecked';\nimport styled from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RadioButtonIconRoot = styled('span')({\n position: 'relative',\n display: 'flex'\n});\nconst RadioButtonIconBackground = styled(RadioButtonUncheckedIcon, {\n skipSx: true\n})({\n // Scale applied to prevent dot misalignment in Safari\n transform: 'scale(1)'\n});\nconst RadioButtonIconDot = styled(RadioButtonCheckedIcon, {\n skipSx: true\n})(({\n theme,\n ownerState\n}) => _extends({\n left: 0,\n position: 'absolute',\n transform: 'scale(0)',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeIn,\n duration: theme.transitions.duration.shortest\n })\n}, ownerState.checked && {\n transform: 'scale(1)',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.shortest\n })\n}));\n/**\n * @ignore - internal component.\n */\n\nfunction RadioButtonIcon(props) {\n const {\n checked = false,\n classes = {},\n fontSize\n } = props;\n\n const ownerState = _extends({}, props, {\n checked\n });\n\n return /*#__PURE__*/_jsxs(RadioButtonIconRoot, {\n className: classes.root,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, {\n fontSize: fontSize,\n className: classes.background,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(RadioButtonIconDot, {\n fontSize: fontSize,\n className: classes.dot,\n ownerState: ownerState\n })]\n });\n}\n\nprocess.env.NODE_ENV !== \"production\" ? RadioButtonIcon.propTypes = {\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * The size of the component.\n * `small` is equivalent to the dense radio styling.\n */\n fontSize: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default RadioButtonIcon;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getRadioUtilityClass(slot) {\n return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary']);\nexport default radioClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checked\", \"checkedIcon\", \"color\", \"icon\", \"name\", \"onChange\", \"size\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport SwitchBase from '../internal/SwitchBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport RadioButtonIcon from './RadioButtonIcon';\nimport capitalize from '../utils/capitalize';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport useRadioGroup from '../RadioGroup/useRadioGroup';\nimport radioClasses, { getRadioUtilityClass } from './radioClasses';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`]\n };\n return _extends({}, classes, composeClasses(slots, getRadioUtilityClass, classes));\n};\n\nconst RadioRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiRadio',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: theme.palette.text.secondary,\n '&:hover': {\n backgroundColor: alpha(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n}, ownerState.color !== 'default' && {\n [`&.${radioClasses.checked}`]: {\n color: theme.palette[ownerState.color].main\n }\n}, {\n [`&.${radioClasses.disabled}`]: {\n color: theme.palette.action.disabled\n }\n}));\n\nfunction areEqualValues(a, b) {\n if (typeof b === 'object' && b !== null) {\n return a === b;\n } // The value could be a number, the DOM will stringify it anyway.\n\n\n return String(a) === String(b);\n}\n\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {\n checked: true\n});\n\nconst defaultIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {});\n\nconst Radio = /*#__PURE__*/React.forwardRef(function Radio(inProps, ref) {\n var _defaultIcon$props$fo, _defaultCheckedIcon$p;\n\n const props = useThemeProps({\n props: inProps,\n name: 'MuiRadio'\n });\n\n const {\n checked: checkedProp,\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon = defaultIcon,\n name: nameProp,\n onChange: onChangeProp,\n size = 'medium'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n color,\n size\n });\n\n const classes = useUtilityClasses(ownerState);\n const radioGroup = useRadioGroup();\n let checked = checkedProp;\n const onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n let name = nameProp;\n\n if (radioGroup) {\n if (typeof checked === 'undefined') {\n checked = areEqualValues(radioGroup.value, props.value);\n }\n\n if (typeof name === 'undefined') {\n name = radioGroup.name;\n }\n }\n\n return /*#__PURE__*/_jsx(RadioRoot, _extends({\n type: \"radio\",\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_defaultIcon$props$fo = defaultIcon.props.fontSize) != null ? _defaultIcon$props$fo : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(checkedIcon, {\n fontSize: (_defaultCheckedIcon$p = defaultCheckedIcon.props.fontSize) != null ? _defaultCheckedIcon$p : size\n }),\n ownerState: ownerState,\n classes: classes,\n name: name,\n checked: checked,\n onChange: onChange,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Radio.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n\n /**\n * The icon to display when the component is checked.\n * @default \n */\n checkedIcon: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'primary'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect is disabled.\n */\n disableRipple: PropTypes.bool,\n\n /**\n * The icon to display when the component is unchecked.\n * @default \n */\n icon: PropTypes.node,\n\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n\n /**\n * Callback fired when the state is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n\n /**\n * The size of the component.\n * `small` is equivalent to the dense radio styling.\n * @default 'medium'\n */\n size: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The value of the component. The DOM API casts this to a string.\n */\n value: PropTypes.any\n} : void 0;\nexport default Radio;","import * as React from 'react';\nimport RadioGroupContext from './RadioGroupContext';\nexport default function useRadioGroup() {\n return React.useContext(RadioGroupContext);\n}","// Source from https://github.com/alitaheri/normalize-scroll-left\nlet cachedType;\n/**\n * Based on the jquery plugin https://github.com/othree/jquery.rtl-scroll-type\n *\n * Types of scrollLeft, assuming scrollWidth=100 and direction is rtl.\n *\n * Type | <- Most Left | Most Right -> | Initial\n * ---------------- | ------------ | ------------- | -------\n * default | 0 | 100 | 100\n * negative (spec*) | -100 | 0 | 0\n * reverse | 100 | 0 | 0\n *\n * Edge 85: default\n * Safari 14: negative\n * Chrome 85: negative\n * Firefox 81: negative\n * IE11: reverse\n *\n * spec* https://drafts.csswg.org/cssom-view/#dom-window-scroll\n */\n\nexport function detectScrollType() {\n if (cachedType) {\n return cachedType;\n }\n\n const dummy = document.createElement('div');\n const container = document.createElement('div');\n container.style.width = '10px';\n container.style.height = '1px';\n dummy.appendChild(container);\n dummy.dir = 'rtl';\n dummy.style.fontSize = '14px';\n dummy.style.width = '4px';\n dummy.style.height = '1px';\n dummy.style.position = 'absolute';\n dummy.style.top = '-1000px';\n dummy.style.overflow = 'scroll';\n document.body.appendChild(dummy);\n cachedType = 'reverse';\n\n if (dummy.scrollLeft > 0) {\n cachedType = 'default';\n } else {\n dummy.scrollLeft = 1;\n\n if (dummy.scrollLeft === 0) {\n cachedType = 'negative';\n }\n }\n\n document.body.removeChild(dummy);\n return cachedType;\n} // Based on https://stackoverflow.com/a/24394376\n\nexport function getNormalizedScrollLeft(element, direction) {\n const scrollLeft = element.scrollLeft; // Perform the calculations only when direction is rtl to avoid messing up the ltr behavior\n\n if (direction !== 'rtl') {\n return scrollLeft;\n }\n\n const type = detectScrollType();\n\n switch (type) {\n case 'negative':\n return element.scrollWidth - element.clientWidth + scrollLeft;\n\n case 'reverse':\n return element.scrollWidth - element.clientWidth - scrollLeft;\n\n default:\n return scrollLeft;\n }\n}","function easeInOutSin(time) {\n return (1 + Math.sin(Math.PI * time - Math.PI / 2)) / 2;\n}\n\nexport default function animate(property, element, to, options = {}, cb = () => {}) {\n const {\n ease = easeInOutSin,\n duration = 300 // standard\n\n } = options;\n let start = null;\n const from = element[property];\n let cancelled = false;\n\n const cancel = () => {\n cancelled = true;\n };\n\n const step = timestamp => {\n if (cancelled) {\n cb(new Error('Animation cancelled'));\n return;\n }\n\n if (start === null) {\n start = timestamp;\n }\n\n const time = Math.min(1, (timestamp - start) / duration);\n element[property] = ease(time) * (to - from) + from;\n\n if (time >= 1) {\n requestAnimationFrame(() => {\n cb(null);\n });\n return;\n }\n\n requestAnimationFrame(step);\n };\n\n if (from === to) {\n cb(new Error('Element already at target position'));\n return cancel;\n }\n\n requestAnimationFrame(step);\n return cancel;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from '../utils/debounce';\nimport { ownerWindow } from '../utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n width: 99,\n height: 99,\n position: 'absolute',\n top: -9999,\n overflow: 'scroll'\n};\n/**\n * @ignore - internal component.\n * The component originates from https://github.com/STORIS/react-scrollbar-size.\n * It has been moved into the core in order to minimize the bundle size.\n */\n\nexport default function ScrollbarSize(props) {\n const {\n onChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const scrollbarHeight = React.useRef();\n const nodeRef = React.useRef(null);\n\n const setMeasurements = () => {\n scrollbarHeight.current = nodeRef.current.offsetHeight - nodeRef.current.clientHeight;\n };\n\n React.useEffect(() => {\n const handleResize = debounce(() => {\n const prevHeight = scrollbarHeight.current;\n setMeasurements();\n\n if (prevHeight !== scrollbarHeight.current) {\n onChange(scrollbarHeight.current);\n }\n });\n const containerWindow = ownerWindow(nodeRef.current);\n containerWindow.addEventListener('resize', handleResize);\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener('resize', handleResize);\n };\n }, [onChange]);\n React.useEffect(() => {\n setMeasurements();\n onChange(scrollbarHeight.current);\n }, [onChange]);\n return /*#__PURE__*/_jsx(\"div\", _extends({\n style: styles,\n ref: nodeRef\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? ScrollbarSize.propTypes = {\n onChange: PropTypes.func.isRequired\n} : void 0;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTabScrollButtonUtilityClass(slot) {\n return generateUtilityClass('MuiTabScrollButton', slot);\n}\nconst tabScrollButtonClasses = generateUtilityClasses('MuiTabScrollButton', ['root', 'vertical', 'horizontal', 'disabled']);\nexport default tabScrollButtonClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar _KeyboardArrowLeft, _KeyboardArrowRight;\n\nconst _excluded = [\"className\", \"direction\", \"orientation\", \"disabled\"];\n\n/* eslint-disable jsx-a11y/aria-role */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport KeyboardArrowLeft from '../internal/svg-icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '../internal/svg-icons/KeyboardArrowRight';\nimport ButtonBase from '../ButtonBase';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport tabScrollButtonClasses, { getTabScrollButtonUtilityClass } from './tabScrollButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n orientation,\n disabled\n } = ownerState;\n const slots = {\n root: ['root', orientation, disabled && 'disabled']\n };\n return composeClasses(slots, getTabScrollButtonUtilityClass, classes);\n};\n\nconst TabScrollButtonRoot = styled(ButtonBase, {\n name: 'MuiTabScrollButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.orientation && styles[ownerState.orientation]];\n }\n})(({\n ownerState\n}) => _extends({\n width: 40,\n flexShrink: 0,\n opacity: 0.8,\n [`&.${tabScrollButtonClasses.disabled}`]: {\n opacity: 0\n }\n}, ownerState.orientation === 'vertical' && {\n width: '100%',\n height: 40,\n '& svg': {\n transform: `rotate(${ownerState.isRtl ? -90 : 90}deg)`\n }\n}));\nconst TabScrollButton = /*#__PURE__*/React.forwardRef(function TabScrollButton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTabScrollButton'\n });\n\n const {\n className,\n direction\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n\n const ownerState = _extends({\n isRtl\n }, props);\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TabScrollButtonRoot, _extends({\n component: \"div\",\n className: clsx(classes.root, className),\n ref: ref,\n role: null,\n ownerState: ownerState,\n tabIndex: null\n }, other, {\n children: direction === 'left' ? _KeyboardArrowLeft || (_KeyboardArrowLeft = /*#__PURE__*/_jsx(KeyboardArrowLeft, {\n fontSize: \"small\"\n })) : _KeyboardArrowRight || (_KeyboardArrowRight = /*#__PURE__*/_jsx(KeyboardArrowRight, {\n fontSize: \"small\"\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TabScrollButton.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The direction the button should indicate.\n */\n direction: PropTypes.oneOf(['left', 'right']).isRequired,\n\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * The component orientation (layout flow direction).\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TabScrollButton;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-label\", \"aria-labelledby\", \"action\", \"centered\", \"children\", \"className\", \"component\", \"allowScrollButtonsMobile\", \"indicatorColor\", \"onChange\", \"orientation\", \"ScrollButtonComponent\", \"scrollButtons\", \"selectionFollowsFocus\", \"TabIndicatorProps\", \"TabScrollButtonProps\", \"textColor\", \"value\", \"variant\", \"visibleScrollbar\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useTheme from '../styles/useTheme';\nimport debounce from '../utils/debounce';\nimport { getNormalizedScrollLeft, detectScrollType } from '../utils/scrollLeft';\nimport animate from '../internal/animate';\nimport ScrollbarSize from './ScrollbarSize';\nimport TabScrollButton from '../TabScrollButton';\nimport useEventCallback from '../utils/useEventCallback';\nimport tabsClasses, { getTabsUtilityClass } from './tabsClasses';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst nextItem = (list, item) => {\n if (list === item) {\n return list.firstChild;\n }\n\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n\n return list.firstChild;\n};\n\nconst previousItem = (list, item) => {\n if (list === item) {\n return list.lastChild;\n }\n\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n\n return list.lastChild;\n};\n\nconst moveFocus = (list, currentFocus, traversalFunction) => {\n let wrappedOnce = false;\n let nextFocus = traversalFunction(list, currentFocus);\n\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return;\n }\n\n wrappedOnce = true;\n } // Same logic as useAutocomplete.js\n\n\n const nextFocusDisabled = nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n\n if (!nextFocus.hasAttribute('tabindex') || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus);\n } else {\n nextFocus.focus();\n return;\n }\n }\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n vertical,\n fixed,\n hideScrollbar,\n scrollableX,\n scrollableY,\n centered,\n scrollButtonsHideMobile,\n classes\n } = ownerState;\n const slots = {\n root: ['root', vertical && 'vertical'],\n scroller: ['scroller', fixed && 'fixed', hideScrollbar && 'hideScrollbar', scrollableX && 'scrollableX', scrollableY && 'scrollableY'],\n flexContainer: ['flexContainer', vertical && 'flexContainerVertical', centered && 'centered'],\n indicator: ['indicator'],\n scrollButtons: ['scrollButtons', scrollButtonsHideMobile && 'scrollButtonsHideMobile'],\n scrollableX: [scrollableX && 'scrollableX'],\n hideScrollbar: [hideScrollbar && 'hideScrollbar']\n };\n return composeClasses(slots, getTabsUtilityClass, classes);\n};\n\nconst TabsRoot = styled('div', {\n name: 'MuiTabs',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${tabsClasses.scrollButtons}`]: styles.scrollButtons\n }, {\n [`& .${tabsClasses.scrollButtons}`]: ownerState.scrollButtonsHideMobile && styles.scrollButtonsHideMobile\n }, styles.root, ownerState.vertical && styles.vertical];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n overflow: 'hidden',\n minHeight: 48,\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch',\n display: 'flex'\n}, ownerState.vertical && {\n flexDirection: 'column'\n}, ownerState.scrollButtonsHideMobile && {\n [`& .${tabsClasses.scrollButtons}`]: {\n [theme.breakpoints.down('sm')]: {\n display: 'none'\n }\n }\n}));\nconst TabsScroller = styled('div', {\n name: 'MuiTabs',\n slot: 'Scroller',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.scroller, ownerState.fixed && styles.fixed, ownerState.hideScrollbar && styles.hideScrollbar, ownerState.scrollableX && styles.scrollableX, ownerState.scrollableY && styles.scrollableY];\n }\n})(({\n ownerState\n}) => _extends({\n position: 'relative',\n display: 'inline-block',\n flex: '1 1 auto',\n whiteSpace: 'nowrap'\n}, ownerState.fixed && {\n overflowX: 'hidden',\n width: '100%'\n}, ownerState.hideScrollbar && {\n // Hide dimensionless scrollbar on MacOS\n scrollbarWidth: 'none',\n // Firefox\n '&::-webkit-scrollbar': {\n display: 'none' // Safari + Chrome\n\n }\n}, ownerState.scrollableX && {\n overflowX: 'auto',\n overflowY: 'hidden'\n}, ownerState.scrollableY && {\n overflowY: 'auto',\n overflowX: 'hidden'\n}));\nconst FlexContainer = styled('div', {\n name: 'MuiTabs',\n slot: 'FlexContainer',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.flexContainer, ownerState.vertical && styles.flexContainerVertical, ownerState.centered && styles.centered];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex'\n}, ownerState.vertical && {\n flexDirection: 'column'\n}, ownerState.centered && {\n justifyContent: 'center'\n}));\nconst TabsIndicator = styled('span', {\n name: 'MuiTabs',\n slot: 'Indicator',\n overridesResolver: (props, styles) => styles.indicator\n})(({\n ownerState,\n theme\n}) => _extends({\n position: 'absolute',\n height: 2,\n bottom: 0,\n width: '100%',\n transition: theme.transitions.create()\n}, ownerState.indicatorColor === 'primary' && {\n backgroundColor: theme.palette.primary.main\n}, ownerState.indicatorColor === 'secondary' && {\n backgroundColor: theme.palette.secondary.main\n}, ownerState.vertical && {\n height: '100%',\n width: 2,\n right: 0\n}));\nconst TabsScrollbarSize = styled(ScrollbarSize, {\n name: 'MuiTabs',\n slot: 'ScrollbarSize'\n})({\n overflowX: 'auto',\n overflowY: 'hidden',\n // Hide dimensionless scrollbar on MacOS\n scrollbarWidth: 'none',\n // Firefox\n '&::-webkit-scrollbar': {\n display: 'none' // Safari + Chrome\n\n }\n});\nconst defaultIndicatorStyle = {};\nlet warnedOnceTabPresent = false;\nconst Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTabs'\n });\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n\n const {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n action,\n centered = false,\n children: childrenProp,\n className,\n component = 'div',\n allowScrollButtonsMobile = false,\n indicatorColor = 'primary',\n onChange,\n orientation = 'horizontal',\n ScrollButtonComponent = TabScrollButton,\n scrollButtons = 'auto',\n selectionFollowsFocus,\n TabIndicatorProps = {},\n TabScrollButtonProps = {},\n textColor = 'primary',\n value,\n variant = 'standard',\n visibleScrollbar = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const scrollable = variant === 'scrollable';\n const vertical = orientation === 'vertical';\n const scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n const start = vertical ? 'top' : 'left';\n const end = vertical ? 'bottom' : 'right';\n const clientSize = vertical ? 'clientHeight' : 'clientWidth';\n const size = vertical ? 'height' : 'width';\n\n const ownerState = _extends({}, props, {\n component,\n allowScrollButtonsMobile,\n indicatorColor,\n orientation,\n vertical,\n scrollButtons,\n textColor,\n variant,\n visibleScrollbar,\n fixed: !scrollable,\n hideScrollbar: scrollable && !visibleScrollbar,\n scrollableX: scrollable && !vertical,\n scrollableY: scrollable && vertical,\n centered: centered && !scrollable,\n scrollButtonsHideMobile: !allowScrollButtonsMobile\n });\n\n const classes = useUtilityClasses(ownerState);\n\n if (process.env.NODE_ENV !== 'production') {\n if (centered && scrollable) {\n console.error('MUI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n }\n }\n\n const [mounted, setMounted] = React.useState(false);\n const [indicatorStyle, setIndicatorStyle] = React.useState(defaultIndicatorStyle);\n const [displayScroll, setDisplayScroll] = React.useState({\n start: false,\n end: false\n });\n const [scrollerStyle, setScrollerStyle] = React.useState({\n overflow: 'hidden',\n scrollbarWidth: 0\n });\n const valueToIndex = new Map();\n const tabsRef = React.useRef(null);\n const tabListRef = React.useRef(null);\n\n const getTabsMeta = () => {\n const tabsNode = tabsRef.current;\n let tabsMeta;\n\n if (tabsNode) {\n const rect = tabsNode.getBoundingClientRect(); // create a new object with ClientRect class props + scrollLeft\n\n tabsMeta = {\n clientWidth: tabsNode.clientWidth,\n scrollLeft: tabsNode.scrollLeft,\n scrollTop: tabsNode.scrollTop,\n scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, theme.direction),\n scrollWidth: tabsNode.scrollWidth,\n top: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n right: rect.right\n };\n }\n\n let tabMeta;\n\n if (tabsNode && value !== false) {\n const children = tabListRef.current.children;\n\n if (children.length > 0) {\n const tab = children[valueToIndex.get(value)];\n\n if (process.env.NODE_ENV !== 'production') {\n if (!tab) {\n console.error([`MUI: The \\`value\\` provided to the Tabs component is invalid.`, `None of the Tabs' children match with \"${value}\".`, valueToIndex.keys ? `You can provide one of the following values: ${Array.from(valueToIndex.keys()).join(', ')}.` : null].join('\\n'));\n }\n }\n\n tabMeta = tab ? tab.getBoundingClientRect() : null;\n\n if (process.env.NODE_ENV !== 'production') {\n if (process.env.NODE_ENV !== 'test' && !warnedOnceTabPresent && tabMeta && tabMeta.width === 0 && tabMeta.height === 0) {\n tabsMeta = null;\n console.error(['MUI: The `value` provided to the Tabs component is invalid.', `The Tab with this \\`value\\` (\"${value}\") is not part of the document layout.`, \"Make sure the tab item is present in the document or that it's not `display: none`.\"].join('\\n'));\n warnedOnceTabPresent = true;\n }\n }\n }\n }\n\n return {\n tabsMeta,\n tabMeta\n };\n };\n\n const updateIndicatorState = useEventCallback(() => {\n const {\n tabsMeta,\n tabMeta\n } = getTabsMeta();\n let startValue = 0;\n let startIndicator;\n\n if (vertical) {\n startIndicator = 'top';\n\n if (tabMeta && tabsMeta) {\n startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n }\n } else {\n startIndicator = isRtl ? 'right' : 'left';\n\n if (tabMeta && tabsMeta) {\n const correction = isRtl ? tabsMeta.scrollLeftNormalized + tabsMeta.clientWidth - tabsMeta.scrollWidth : tabsMeta.scrollLeft;\n startValue = (isRtl ? -1 : 1) * (tabMeta[startIndicator] - tabsMeta[startIndicator] + correction);\n }\n }\n\n const newIndicatorStyle = {\n [startIndicator]: startValue,\n // May be wrong until the font is loaded.\n [size]: tabMeta ? tabMeta[size] : 0\n }; // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n\n if (isNaN(indicatorStyle[startIndicator]) || isNaN(indicatorStyle[size])) {\n setIndicatorStyle(newIndicatorStyle);\n } else {\n const dStart = Math.abs(indicatorStyle[startIndicator] - newIndicatorStyle[startIndicator]);\n const dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n\n if (dStart >= 1 || dSize >= 1) {\n setIndicatorStyle(newIndicatorStyle);\n }\n }\n });\n\n const scroll = (scrollValue, {\n animation = true\n } = {}) => {\n if (animation) {\n animate(scrollStart, tabsRef.current, scrollValue, {\n duration: theme.transitions.duration.standard\n });\n } else {\n tabsRef.current[scrollStart] = scrollValue;\n }\n };\n\n const moveTabsScroll = delta => {\n let scrollValue = tabsRef.current[scrollStart];\n\n if (vertical) {\n scrollValue += delta;\n } else {\n scrollValue += delta * (isRtl ? -1 : 1); // Fix for Edge\n\n scrollValue *= isRtl && detectScrollType() === 'reverse' ? -1 : 1;\n }\n\n scroll(scrollValue);\n };\n\n const getScrollSize = () => {\n const containerSize = tabsRef.current[clientSize];\n let totalSize = 0;\n const children = Array.from(tabListRef.current.children);\n\n for (let i = 0; i < children.length; i += 1) {\n const tab = children[i];\n\n if (totalSize + tab[clientSize] > containerSize) {\n break;\n }\n\n totalSize += tab[clientSize];\n }\n\n return totalSize;\n };\n\n const handleStartScrollClick = () => {\n moveTabsScroll(-1 * getScrollSize());\n };\n\n const handleEndScrollClick = () => {\n moveTabsScroll(getScrollSize());\n }; // TODO Remove as browser support for hidding the scrollbar\n // with CSS improves.\n\n\n const handleScrollbarSizeChange = React.useCallback(scrollbarWidth => {\n setScrollerStyle({\n overflow: null,\n scrollbarWidth\n });\n }, []);\n\n const getConditionalElements = () => {\n const conditionalElements = {};\n conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/_jsx(TabsScrollbarSize, {\n onChange: handleScrollbarSizeChange,\n className: clsx(classes.scrollableX, classes.hideScrollbar)\n }) : null;\n const scrollButtonsActive = displayScroll.start || displayScroll.end;\n const showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === true);\n conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n orientation: orientation,\n direction: isRtl ? 'right' : 'left',\n onClick: handleStartScrollClick,\n disabled: !displayScroll.start\n }, TabScrollButtonProps, {\n className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n })) : null;\n conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n orientation: orientation,\n direction: isRtl ? 'left' : 'right',\n onClick: handleEndScrollClick,\n disabled: !displayScroll.end\n }, TabScrollButtonProps, {\n className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n })) : null;\n return conditionalElements;\n };\n\n const scrollSelectedIntoView = useEventCallback(animation => {\n const {\n tabsMeta,\n tabMeta\n } = getTabsMeta();\n\n if (!tabMeta || !tabsMeta) {\n return;\n }\n\n if (tabMeta[start] < tabsMeta[start]) {\n // left side of button is out of view\n const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n scroll(nextScrollStart, {\n animation\n });\n } else if (tabMeta[end] > tabsMeta[end]) {\n // right side of button is out of view\n const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n scroll(nextScrollStart, {\n animation\n });\n }\n });\n const updateScrollButtonState = useEventCallback(() => {\n if (scrollable && scrollButtons !== false) {\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollWidth,\n clientWidth\n } = tabsRef.current;\n let showStartScroll;\n let showEndScroll;\n\n if (vertical) {\n showStartScroll = scrollTop > 1;\n showEndScroll = scrollTop < scrollHeight - clientHeight - 1;\n } else {\n const scrollLeft = getNormalizedScrollLeft(tabsRef.current, theme.direction); // use 1 for the potential rounding error with browser zooms.\n\n showStartScroll = isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n showEndScroll = !isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n }\n\n if (showStartScroll !== displayScroll.start || showEndScroll !== displayScroll.end) {\n setDisplayScroll({\n start: showStartScroll,\n end: showEndScroll\n });\n }\n }\n });\n React.useEffect(() => {\n const handleResize = debounce(() => {\n updateIndicatorState();\n updateScrollButtonState();\n });\n const win = ownerWindow(tabsRef.current);\n win.addEventListener('resize', handleResize);\n let resizeObserver;\n\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(handleResize);\n Array.from(tabListRef.current.children).forEach(child => {\n resizeObserver.observe(child);\n });\n }\n\n return () => {\n handleResize.clear();\n win.removeEventListener('resize', handleResize);\n\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n };\n }, [updateIndicatorState, updateScrollButtonState]);\n const handleTabsScroll = React.useMemo(() => debounce(() => {\n updateScrollButtonState();\n }), [updateScrollButtonState]);\n React.useEffect(() => {\n return () => {\n handleTabsScroll.clear();\n };\n }, [handleTabsScroll]);\n React.useEffect(() => {\n setMounted(true);\n }, []);\n React.useEffect(() => {\n updateIndicatorState();\n updateScrollButtonState();\n });\n React.useEffect(() => {\n // Don't animate on the first render.\n scrollSelectedIntoView(defaultIndicatorStyle !== indicatorStyle);\n }, [scrollSelectedIntoView, indicatorStyle]);\n React.useImperativeHandle(action, () => ({\n updateIndicator: updateIndicatorState,\n updateScrollButtons: updateScrollButtonState\n }), [updateIndicatorState, updateScrollButtonState]);\n\n const indicator = /*#__PURE__*/_jsx(TabsIndicator, _extends({}, TabIndicatorProps, {\n className: clsx(classes.indicator, TabIndicatorProps.className),\n ownerState: ownerState,\n style: _extends({}, indicatorStyle, TabIndicatorProps.style)\n }));\n\n let childIndex = 0;\n const children = React.Children.map(childrenProp, child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n const childValue = child.props.value === undefined ? childIndex : child.props.value;\n valueToIndex.set(childValue, childIndex);\n const selected = childValue === value;\n childIndex += 1;\n return /*#__PURE__*/React.cloneElement(child, _extends({\n fullWidth: variant === 'fullWidth',\n indicator: selected && !mounted && indicator,\n selected,\n selectionFollowsFocus,\n onChange,\n textColor,\n value: childValue\n }, childIndex === 1 && value === false && !child.props.tabIndex ? {\n tabIndex: 0\n } : {}));\n });\n\n const handleKeyDown = event => {\n const list = tabListRef.current;\n const currentFocus = ownerDocument(list).activeElement; // Keyboard navigation assumes that [role=\"tab\"] are siblings\n // though we might warn in the future about nested, interactive elements\n // as a a11y violation\n\n const role = currentFocus.getAttribute('role');\n\n if (role !== 'tab') {\n return;\n }\n\n let previousItemKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n let nextItemKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n\n if (orientation === 'horizontal' && isRtl) {\n // swap previousItemKey with nextItemKey\n previousItemKey = 'ArrowRight';\n nextItemKey = 'ArrowLeft';\n }\n\n switch (event.key) {\n case previousItemKey:\n event.preventDefault();\n moveFocus(list, currentFocus, previousItem);\n break;\n\n case nextItemKey:\n event.preventDefault();\n moveFocus(list, currentFocus, nextItem);\n break;\n\n case 'Home':\n event.preventDefault();\n moveFocus(list, null, nextItem);\n break;\n\n case 'End':\n event.preventDefault();\n moveFocus(list, null, previousItem);\n break;\n\n default:\n break;\n }\n };\n\n const conditionalElements = getConditionalElements();\n return /*#__PURE__*/_jsxs(TabsRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref,\n as: component\n }, other, {\n children: [conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/_jsxs(TabsScroller, {\n className: classes.scroller,\n ownerState: ownerState,\n style: {\n overflow: scrollerStyle.overflow,\n [vertical ? `margin${isRtl ? 'Left' : 'Right'}` : 'marginBottom']: visibleScrollbar ? undefined : -scrollerStyle.scrollbarWidth\n },\n ref: tabsRef,\n onScroll: handleTabsScroll,\n children: [/*#__PURE__*/_jsx(FlexContainer, {\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-orientation\": orientation === 'vertical' ? 'vertical' : null,\n className: classes.flexContainer,\n ownerState: ownerState,\n onKeyDown: handleKeyDown,\n ref: tabListRef,\n role: \"tablist\",\n children: children\n }), mounted && indicator]\n }), conditionalElements.scrollButtonEnd]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Tabs.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Callback fired when the component mounts.\n * This is useful when you want to trigger an action programmatically.\n * It supports two actions: `updateIndicator()` and `updateScrollButtons()`\n *\n * @param {object} actions This object contains all possible actions\n * that can be triggered programmatically.\n */\n action: refType,\n\n /**\n * If `true`, the scroll buttons aren't forced hidden on mobile.\n * By default the scroll buttons are hidden on mobile and takes precedence over `scrollButtons`.\n * @default false\n */\n allowScrollButtonsMobile: PropTypes.bool,\n\n /**\n * The label for the Tabs as a string.\n */\n 'aria-label': PropTypes.string,\n\n /**\n * An id or list of ids separated by a space that label the Tabs.\n */\n 'aria-labelledby': PropTypes.string,\n\n /**\n * If `true`, the tabs are centered.\n * This prop is intended for large views.\n * @default false\n */\n centered: PropTypes.bool,\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * Determines the color of the indicator.\n * @default 'primary'\n */\n indicatorColor: PropTypes.oneOf(['primary', 'secondary']),\n\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n * @param {any} value We default to the index of the child (number)\n */\n onChange: PropTypes.func,\n\n /**\n * The component orientation (layout flow direction).\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n\n /**\n * The component used to render the scroll buttons.\n * @default TabScrollButton\n */\n ScrollButtonComponent: PropTypes.elementType,\n\n /**\n * Determine behavior of scroll buttons when tabs are set to scroll:\n *\n * - `auto` will only present them when not all the items are visible.\n * - `true` will always present them.\n * - `false` will never present them.\n *\n * By default the scroll buttons are hidden on mobile.\n * This behavior can be disabled with `allowScrollButtonsMobile`.\n * @default 'auto'\n */\n scrollButtons: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOf(['auto', false, true]),\n\n /**\n * If `true` the selected tab changes on focus. Otherwise it only\n * changes on activation.\n */\n selectionFollowsFocus: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * Props applied to the tab indicator element.\n * @default {}\n */\n TabIndicatorProps: PropTypes.object,\n\n /**\n * Props applied to the [`TabScrollButton`](/api/tab-scroll-button/) element.\n * @default {}\n */\n TabScrollButtonProps: PropTypes.object,\n\n /**\n * Determines the color of the `Tab`.\n * @default 'primary'\n */\n textColor: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n\n /**\n * The value of the currently selected `Tab`.\n * If you don't want any selected `Tab`, you can set this prop to `false`.\n */\n value: PropTypes.any,\n\n /**\n * Determines additional display behavior of the tabs:\n *\n * - `scrollable` will invoke scrolling properties and allow for horizontally\n * scrolling (or swiping) of the tab bar.\n * -`fullWidth` will make the tabs grow to use all the available space,\n * which should be used for small views, like on mobile.\n * - `standard` will render the default state.\n * @default 'standard'\n */\n variant: PropTypes.oneOf(['fullWidth', 'scrollable', 'standard']),\n\n /**\n * If `true`, the scrollbar is visible. It can be useful when displaying\n * a long vertical list of tabs.\n * @default false\n */\n visibleScrollbar: PropTypes.bool\n} : void 0;\nexport default Tabs;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { useThemeProps } from '@mui/material/styles';\nimport { Clock } from '../internals/components/icons';\nimport { useLocaleText, useUtils } from '../internals/hooks/useUtils';\nimport { parsePickerInputValue } from '../internals/utils/date-utils';\nexport function useTimePickerDefaultizedProps(props, name) {\n var _themeProps$ampm;\n\n // This is technically unsound if the type parameters appear in optional props.\n // Optional props can be filled by `useThemeProps` with types that don't match the type parameters.\n const themeProps = useThemeProps({\n props,\n name\n });\n const utils = useUtils();\n const ampm = (_themeProps$ampm = themeProps.ampm) != null ? _themeProps$ampm : utils.is12HourCycleInCurrentLocale();\n const localeText = useLocaleText();\n const getOpenDialogAriaText = localeText.openTimePickerDialogue;\n return _extends({\n ampm,\n openTo: 'hours',\n views: ['hours', 'minutes'],\n acceptRegex: ampm ? /[\\dapAP]/gi : /\\d/gi,\n disableMaskedInput: false,\n getOpenDialogAriaText,\n inputFormat: ampm ? utils.formats.fullTime12h : utils.formats.fullTime24h\n }, themeProps, {\n components: _extends({\n OpenPickerIcon: Clock\n }, themeProps.components)\n });\n}\nexport const timePickerValueManager = {\n emptyValue: null,\n parseInput: parsePickerInputValue,\n getTodayValue: utils => utils.date(),\n areValuesEqual: (utils, a, b) => utils.isEqual(a, b),\n valueReducer: (utils, lastValidValue, newValue) => {\n if (!lastValidValue || !utils.isValid(newValue)) {\n return newValue;\n }\n\n return utils.mergeDateAndTime(lastValidValue, newValue);\n }\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getTimePickerToolbarUtilityClass(slot) {\n return generateUtilityClass('MuiTimePickerToolbar', slot);\n}\nexport const timePickerToolbarClasses = generateUtilityClasses('MuiTimePickerToolbar', ['root', 'separator', 'hourMinuteLabel', 'hourMinuteLabelLandscape', 'hourMinuteLabelReverse', 'ampmSelection', 'ampmLandscape', 'ampmLabel']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"ampm\", \"ampmInClock\", \"parsedValue\", \"isLandscape\", \"isMobileKeyboardViewOpen\", \"onChange\", \"openView\", \"setOpenView\", \"toggleMobileKeyboardView\", \"toolbarTitle\", \"views\", \"disabled\", \"readOnly\"];\nimport * as React from 'react';\nimport { useTheme, styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { PickersToolbarText } from '../internals/components/PickersToolbarText';\nimport { PickersToolbarButton } from '../internals/components/PickersToolbarButton';\nimport { PickersToolbar, pickersToolbarClasses } from '../internals/components/PickersToolbar';\nimport { arrayIncludes } from '../internals/utils/utils';\nimport { useUtils } from '../internals/hooks/useUtils';\nimport { useMeridiemMode } from '../internals/hooks/date-helpers-hooks';\nimport { getTimePickerToolbarUtilityClass, timePickerToolbarClasses } from './timePickerToolbarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n theme,\n isLandscape,\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n separator: ['separator'],\n hourMinuteLabel: ['hourMinuteLabel', isLandscape && 'hourMinuteLabelLandscape', theme.direction === 'rtl' && 'hourMinuteLabelReverse'],\n ampmSelection: ['ampmSelection', isLandscape && 'ampmLandscape'],\n ampmLabel: ['ampmLabel']\n };\n return composeClasses(slots, getTimePickerToolbarUtilityClass, classes);\n};\n\nconst TimePickerToolbarRoot = styled(PickersToolbar, {\n name: 'MuiTimePickerToolbar',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n [`& .${pickersToolbarClasses.penIconButtonLandscape}`]: {\n marginTop: 'auto'\n }\n});\nconst TimePickerToolbarSeparator = styled(PickersToolbarText, {\n name: 'MuiTimePickerToolbar',\n slot: 'Separator',\n overridesResolver: (props, styles) => styles.separator\n})({\n outline: 0,\n margin: '0 4px 0 2px',\n cursor: 'default'\n});\nconst TimePickerToolbarHourMinuteLabel = styled('div', {\n name: 'MuiTimePickerToolbar',\n slot: 'HourMinuteLabel',\n overridesResolver: (props, styles) => styles.hourMinuteLabel\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'flex-end'\n}, ownerState.isLandscape && {\n marginTop: 'auto'\n}, theme.direction === 'rtl' && {\n flexDirection: 'row-reverse'\n}));\nconst TimePickerToolbarAmPmSelection = styled('div', {\n name: 'MuiTimePickerToolbar',\n slot: 'AmPmSelection',\n overridesResolver: (props, styles) => styles.ampmSelection\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column',\n marginRight: 'auto',\n marginLeft: 12\n}, ownerState.isLandscape && {\n margin: '4px 0 auto',\n flexDirection: 'row',\n justifyContent: 'space-around',\n flexBasis: '100%'\n}, {\n [`& .${timePickerToolbarClasses.ampmLabel}`]: {\n fontSize: 17\n }\n}));\n/**\n * @ignore - internal component.\n */\n\nexport const TimePickerToolbar = props => {\n const {\n ampm,\n ampmInClock,\n parsedValue,\n isLandscape,\n isMobileKeyboardViewOpen,\n onChange,\n openView,\n setOpenView,\n toggleMobileKeyboardView,\n toolbarTitle = 'Select time',\n views,\n disabled,\n readOnly\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const utils = useUtils();\n const theme = useTheme();\n const showAmPmControl = Boolean(ampm && !ampmInClock);\n const {\n meridiemMode,\n handleMeridiemChange\n } = useMeridiemMode(parsedValue, ampm, onChange);\n\n const formatHours = time => ampm ? utils.format(time, 'hours12h') : utils.format(time, 'hours24h');\n\n const ownerState = props;\n const classes = useUtilityClasses(_extends({}, ownerState, {\n theme\n }));\n\n const separator = /*#__PURE__*/_jsx(TimePickerToolbarSeparator, {\n tabIndex: -1,\n value: \":\",\n variant: \"h3\",\n selected: false,\n className: classes.separator\n });\n\n return /*#__PURE__*/_jsxs(TimePickerToolbarRoot, _extends({\n viewType: \"clock\",\n landscapeDirection: \"row\",\n toolbarTitle: toolbarTitle,\n isLandscape: isLandscape,\n isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: toggleMobileKeyboardView,\n ownerState: ownerState,\n className: classes.root\n }, other, {\n children: [/*#__PURE__*/_jsxs(TimePickerToolbarHourMinuteLabel, {\n className: classes.hourMinuteLabel,\n ownerState: ownerState,\n children: [arrayIncludes(views, 'hours') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n tabIndex: -1,\n variant: \"h3\",\n onClick: () => setOpenView('hours'),\n selected: openView === 'hours',\n value: parsedValue ? formatHours(parsedValue) : '--'\n }), arrayIncludes(views, ['hours', 'minutes']) && separator, arrayIncludes(views, 'minutes') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n tabIndex: -1,\n variant: \"h3\",\n onClick: () => setOpenView('minutes'),\n selected: openView === 'minutes',\n value: parsedValue ? utils.format(parsedValue, 'minutes') : '--'\n }), arrayIncludes(views, ['minutes', 'seconds']) && separator, arrayIncludes(views, 'seconds') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n variant: \"h3\",\n onClick: () => setOpenView('seconds'),\n selected: openView === 'seconds',\n value: parsedValue ? utils.format(parsedValue, 'seconds') : '--'\n })]\n }), showAmPmControl && /*#__PURE__*/_jsxs(TimePickerToolbarAmPmSelection, {\n className: classes.ampmSelection,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(PickersToolbarButton, {\n disableRipple: true,\n variant: \"subtitle2\",\n selected: meridiemMode === 'am',\n typographyClassName: classes.ampmLabel,\n value: utils.getMeridiemText('am'),\n onClick: readOnly ? undefined : () => handleMeridiemChange('am'),\n disabled: disabled\n }), /*#__PURE__*/_jsx(PickersToolbarButton, {\n disableRipple: true,\n variant: \"subtitle2\",\n selected: meridiemMode === 'pm',\n typographyClassName: classes.ampmLabel,\n value: utils.getMeridiemText('pm'),\n onClick: readOnly ? undefined : () => handleMeridiemChange('pm'),\n disabled: disabled\n })]\n })]\n }));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"PaperProps\", \"PopperProps\", \"ToolbarComponent\", \"TransitionComponent\", \"value\", \"components\", \"componentsProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTimePickerDefaultizedProps, timePickerValueManager } from '../TimePicker/shared';\nimport { TimePickerToolbar } from '../TimePicker/TimePickerToolbar';\nimport { DesktopWrapper } from '../internals/components/wrappers/DesktopWrapper';\nimport { CalendarOrClockPicker } from '../internals/components/CalendarOrClockPicker';\nimport { useTimeValidation } from '../internals/hooks/validation/useTimeValidation';\nimport { KeyboardDateInput } from '../internals/components/KeyboardDateInput';\nimport { usePickerState } from '../internals/hooks/usePickerState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Time Picker](https://mui.com/x/react-date-pickers/time-picker/)\n *\n * API:\n *\n * - [DesktopTimePicker API](https://mui.com/x/api/date-pickers/desktop-time-picker/)\n */\nexport const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePicker(inProps, ref) {\n const props = useTimePickerDefaultizedProps(inProps, 'MuiDesktopTimePicker');\n const validationError = useTimeValidation(props) !== null;\n const {\n pickerProps,\n inputProps,\n wrapperProps\n } = usePickerState(props, timePickerValueManager);\n\n const {\n PaperProps,\n PopperProps,\n ToolbarComponent = TimePickerToolbar,\n TransitionComponent,\n components,\n componentsProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const DateInputProps = _extends({}, inputProps, other, {\n components,\n componentsProps,\n ref,\n validationError\n });\n\n return /*#__PURE__*/_jsx(DesktopWrapper, _extends({}, wrapperProps, {\n DateInputProps: DateInputProps,\n KeyboardDateInputComponent: KeyboardDateInput,\n PopperProps: PopperProps,\n PaperProps: PaperProps,\n TransitionComponent: TransitionComponent,\n components: components,\n componentsProps: componentsProps,\n children: /*#__PURE__*/_jsx(CalendarOrClockPicker, _extends({}, pickerProps, {\n autoFocus: true,\n toolbarTitle: props.label || props.toolbarTitle,\n ToolbarComponent: ToolbarComponent,\n DateInputProps: DateInputProps,\n components: components,\n componentsProps: componentsProps\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? DesktopTimePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * 12h/24h view for hour selection clock.\n * @default `utils.is12HourCycleInCurrentLocale()`\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {ClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n */\n openTo: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Paper props passed down to [Paper](https://mui.com/material-ui/api/paper/) component.\n */\n PaperProps: PropTypes.object,\n\n /**\n * Popper props passed down to [Popper](https://mui.com/material-ui/api/popper/) component.\n */\n PopperProps: PropTypes.object,\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default TimePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select time'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * Custom component for popper [Transition](https://mui.com/material-ui/transitions/#transitioncomponent-prop).\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'minutes', 'seconds']).isRequired)\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ToolbarComponent\", \"value\", \"onChange\", \"components\", \"componentsProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTimePickerDefaultizedProps, timePickerValueManager } from '../TimePicker/shared';\nimport { TimePickerToolbar } from '../TimePicker/TimePickerToolbar';\nimport { MobileWrapper } from '../internals/components/wrappers/MobileWrapper';\nimport { CalendarOrClockPicker } from '../internals/components/CalendarOrClockPicker';\nimport { useTimeValidation } from '../internals/hooks/validation/useTimeValidation';\nimport { PureDateInput } from '../internals/components/PureDateInput';\nimport { usePickerState } from '../internals/hooks/usePickerState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Time Picker](https://mui.com/x/react-date-pickers/time-picker/)\n *\n * API:\n *\n * - [MobileTimePicker API](https://mui.com/x/api/date-pickers/mobile-time-picker/)\n */\nexport const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker(inProps, ref) {\n const props = useTimePickerDefaultizedProps(inProps, 'MuiMobileTimePicker');\n const validationError = useTimeValidation(props) !== null;\n const {\n pickerProps,\n inputProps,\n wrapperProps\n } = usePickerState(props, timePickerValueManager); // Note that we are passing down all the value without spread.\n // It saves us >1kb gzip and make any prop available automatically on any level down.\n\n const {\n ToolbarComponent = TimePickerToolbar,\n components,\n componentsProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const DateInputProps = _extends({}, inputProps, other, {\n components,\n componentsProps,\n ref,\n validationError\n });\n\n return /*#__PURE__*/_jsx(MobileWrapper, _extends({}, other, wrapperProps, {\n DateInputProps: DateInputProps,\n PureDateInputComponent: PureDateInput,\n components: components,\n componentsProps: componentsProps,\n children: /*#__PURE__*/_jsx(CalendarOrClockPicker, _extends({}, pickerProps, {\n autoFocus: true,\n toolbarTitle: props.label || props.toolbarTitle,\n ToolbarComponent: ToolbarComponent,\n DateInputProps: DateInputProps,\n components: components,\n componentsProps: componentsProps\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MobileTimePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * 12h/24h view for hour selection clock.\n * @default `utils.is12HourCycleInCurrentLocale()`\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Props applied to the [`Dialog`](https://mui.com/material-ui/api/dialog/) element.\n */\n DialogProps: PropTypes.object,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {ClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n */\n openTo: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default TimePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select time'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'minutes', 'seconds']).isRequired)\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"desktopModeMediaQuery\", \"DialogProps\", \"PopperProps\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport { useThemeProps } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport PropTypes from 'prop-types';\nimport { DesktopTimePicker } from '../DesktopTimePicker';\nimport { MobileTimePicker } from '../MobileTimePicker';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Pickers](https://mui.com/x/react-date-pickers/)\n * - [Time Picker](https://mui.com/x/react-date-pickers/time-picker/)\n *\n * API:\n *\n * - [TimePicker API](https://mui.com/x/api/date-pickers/time-picker/)\n */\nexport const TimePicker = /*#__PURE__*/React.forwardRef(function TimePicker(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTimePicker'\n });\n\n const {\n desktopModeMediaQuery = '@media (pointer: fine)',\n DialogProps,\n PopperProps,\n TransitionComponent\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const isDesktop = useMediaQuery(desktopModeMediaQuery);\n\n if (isDesktop) {\n return /*#__PURE__*/_jsx(DesktopTimePicker, _extends({\n ref: ref,\n PopperProps: PopperProps,\n TransitionComponent: TransitionComponent\n }, other));\n }\n\n return /*#__PURE__*/_jsx(MobileTimePicker, _extends({\n ref: ref,\n DialogProps: DialogProps\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TimePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * 12h/24h view for hour selection clock.\n * @default `utils.is12HourCycleInCurrentLocale()`\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * CSS media query when `Mobile` mode will be changed to `Desktop`.\n * @default '@media (pointer: fine)'\n * @example '@media (min-width: 720px)' or theme.breakpoints.up(\"sm\")\n */\n desktopModeMediaQuery: PropTypes.string,\n\n /**\n * Props applied to the [`Dialog`](https://mui.com/material-ui/api/dialog/) element.\n */\n DialogProps: PropTypes.object,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {ClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n */\n openTo: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Paper props passed down to [Paper](https://mui.com/material-ui/api/paper/) component.\n */\n PaperProps: PropTypes.object,\n\n /**\n * Popper props passed down to [Popper](https://mui.com/material-ui/api/popper/) component.\n */\n PopperProps: PropTypes.object,\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default TimePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select time'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * Custom component for popper [Transition](https://mui.com/material-ui/transitions/#transitioncomponent-prop).\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'minutes', 'seconds']).isRequired)\n} : void 0;","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.isDestroyed) {\n return;\n }\n ;\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() && !this.isVue) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = this.isVue ? this.getPagerTemplate()(data, this, 'template') : this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = this.isAllPage ? 1 : (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /**\n * @param {string} 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.pagerModule.isAllPage = true;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n this.pagerModule.isAllPage = false;\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n this.pagerModule.trigger('dropDownChanged', { pageSize: this.pagerModule.isAllPage ? this.pagerModule.totalRecordsCount :\n 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] = this.pagerModule.isAllPage ? this.pagerModule.getLocalizedLabel('All') : value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n *\n * @param {string} args - specifies the arguments\n * @param {string} args.requestType - specfies the request type\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n *\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': '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, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @class */ (function () {\n /**\n * Constructor for the Grid paging module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PageSettingsModel} pageSettings - specifies the PageSettingsModel\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n this.isCancel = false;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n var pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n 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 && !this.isCancel) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.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 if (!this.isCancel) {\n this.parent.notify(events.modelChanged, args);\n }\n if (args.cancel) {\n e.cancel = true;\n this.pagerObj.currentPage = prevPage;\n this.isCancel = true;\n return;\n }\n this.isCancel = false;\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function () {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.isVue = this.parent.isVue;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.addEventListener(literals.create, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: events.initialLoad, handler: this.handlers.load },\n { event: events.initialEnd, handler: this.handlers.end },\n { event: events.dataReady, handler: this.handlers.ready },\n { event: events.pageComplete, handler: this.handlers.complete },\n { event: events.uiUpdate, handler: this.handlers.updateLayout },\n { event: events.inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: events.keyPressed, handler: this.handlers.keyPress },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return (this.parent.isReact || this.parent.isVue) && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n var result = void 0;\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n if (this.parent.isReact) {\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n else {\n result = this.pagerObj.templateFn(data, this.parent, 'pagerTemplate');\n appendChildren(this.pagerObj.element, result);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.removeEventListener(literals.create, this.handlers.created);\n }\n this.parent.off(events.pagerRefresh, this.renderReactPagerTemplate);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","import generateUtilityClasses from '../generateUtilityClasses';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSliderUtilityClass(slot) {\n return generateUtilityClass('MuiSlider', slot);\n}\nconst sliderUnstyledClasses = generateUtilityClasses('MuiSlider', ['root', 'active', 'focusVisible', 'disabled', 'dragging', 'marked', 'vertical', 'trackInverted', 'trackFalse', 'rail', 'track', 'mark', 'markActive', 'markLabel', 'markLabelActive', 'thumb', 'valueLabel', 'valueLabelOpen', 'valueLabelCircle', 'valueLabelLabel']);\nexport default sliderUnstyledClasses;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport sliderUnstyledClasses from './sliderUnstyledClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useValueLabelClasses = props => {\n const {\n open\n } = props;\n const utilityClasses = {\n offset: clsx(open && sliderUnstyledClasses.valueLabelOpen),\n circle: sliderUnstyledClasses.valueLabelCircle,\n label: sliderUnstyledClasses.valueLabelLabel\n };\n return utilityClasses;\n};\n/**\n * @ignore - internal component.\n */\n\n\nfunction SliderValueLabelUnstyled(props) {\n const {\n children,\n className,\n value,\n theme\n } = props;\n const classes = useValueLabelClasses(props);\n return /*#__PURE__*/React.cloneElement(children, {\n className: clsx(children.props.className)\n }, /*#__PURE__*/_jsxs(React.Fragment, {\n children: [children.props.children, /*#__PURE__*/_jsx(\"span\", {\n className: clsx(classes.offset, className),\n theme: theme,\n \"aria-hidden\": true,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: classes.circle,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: classes.label,\n children: value\n })\n })\n })]\n }));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? SliderValueLabelUnstyled.propTypes = {\n children: PropTypes.element.isRequired,\n className: PropTypes.string,\n theme: PropTypes.any,\n value: PropTypes.node\n} : void 0;\nexport default SliderValueLabelUnstyled;","const visuallyHidden = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n whiteSpace: 'nowrap',\n width: '1px'\n};\nexport default visuallyHidden;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"aria-label\", \"aria-labelledby\", \"aria-valuetext\", \"className\", \"component\", \"classes\", \"defaultValue\", \"disableSwap\", \"disabled\", \"getAriaLabel\", \"getAriaValueText\", \"marks\", \"max\", \"min\", \"name\", \"onChange\", \"onChangeCommitted\", \"onMouseDown\", \"orientation\", \"scale\", \"step\", \"tabIndex\", \"track\", \"value\", \"valueLabelDisplay\", \"valueLabelFormat\", \"isRtl\", \"components\", \"componentsProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, unstable_useIsFocusVisible as useIsFocusVisible, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerDocument as ownerDocument, unstable_useEventCallback as useEventCallback, unstable_useForkRef as useForkRef, unstable_useControlled as useControlled, visuallyHidden } from '@mui/utils';\nimport isHostComponent from '../utils/isHostComponent';\nimport composeClasses from '../composeClasses';\nimport { getSliderUtilityClass } from './sliderUnstyledClasses';\nimport SliderValueLabelUnstyled from './SliderValueLabelUnstyled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst INTENTIONAL_DRAG_COUNT_THRESHOLD = 2;\n\nfunction asc(a, b) {\n return a - b;\n}\n\nfunction clamp(value, min, max) {\n if (value == null) {\n return min;\n }\n\n return Math.min(Math.max(min, value), max);\n}\n\nfunction findClosest(values, currentValue) {\n const {\n index: closestIndex\n } = values.reduce((acc, value, index) => {\n const distance = Math.abs(currentValue - value);\n\n if (acc === null || distance < acc.distance || distance === acc.distance) {\n return {\n distance,\n index\n };\n }\n\n return acc;\n }, null);\n return closestIndex;\n}\n\nfunction trackFinger(event, touchId) {\n if (touchId.current !== undefined && event.changedTouches) {\n for (let i = 0; i < event.changedTouches.length; i += 1) {\n const touch = event.changedTouches[i];\n\n if (touch.identifier === touchId.current) {\n return {\n x: touch.clientX,\n y: touch.clientY\n };\n }\n }\n\n return false;\n }\n\n return {\n x: event.clientX,\n y: event.clientY\n };\n}\n\nfunction valueToPercent(value, min, max) {\n return (value - min) * 100 / (max - min);\n}\n\nfunction percentToValue(percent, min, max) {\n return (max - min) * percent + min;\n}\n\nfunction getDecimalPrecision(num) {\n // This handles the case when num is very small (0.00000001), js will turn this into 1e-8.\n // When num is bigger than 1 or less than -1 it won't get converted to this notation so it's fine.\n if (Math.abs(num) < 1) {\n const parts = num.toExponential().split('e-');\n const matissaDecimalPart = parts[0].split('.')[1];\n return (matissaDecimalPart ? matissaDecimalPart.length : 0) + parseInt(parts[1], 10);\n }\n\n const decimalPart = num.toString().split('.')[1];\n return decimalPart ? decimalPart.length : 0;\n}\n\nfunction roundValueToStep(value, step, min) {\n const nearest = Math.round((value - min) / step) * step + min;\n return Number(nearest.toFixed(getDecimalPrecision(step)));\n}\n\nfunction setValueIndex({\n values,\n newValue,\n index\n}) {\n const output = values.slice();\n output[index] = newValue;\n return output.sort(asc);\n}\n\nfunction focusThumb({\n sliderRef,\n activeIndex,\n setActive\n}) {\n const doc = ownerDocument(sliderRef.current);\n\n if (!sliderRef.current.contains(doc.activeElement) || Number(doc.activeElement.getAttribute('data-index')) !== activeIndex) {\n sliderRef.current.querySelector(`[type=\"range\"][data-index=\"${activeIndex}\"]`).focus();\n }\n\n if (setActive) {\n setActive(activeIndex);\n }\n}\n\nconst axisProps = {\n horizontal: {\n offset: percent => ({\n left: `${percent}%`\n }),\n leap: percent => ({\n width: `${percent}%`\n })\n },\n 'horizontal-reverse': {\n offset: percent => ({\n right: `${percent}%`\n }),\n leap: percent => ({\n width: `${percent}%`\n })\n },\n vertical: {\n offset: percent => ({\n bottom: `${percent}%`\n }),\n leap: percent => ({\n height: `${percent}%`\n })\n }\n};\n\nconst Identity = x => x; // TODO: remove support for Safari < 13.\n// https://caniuse.com/#search=touch-action\n//\n// Safari, on iOS, supports touch action since v13.\n// Over 80% of the iOS phones are compatible\n// in August 2020.\n// Utilizing the CSS.supports method to check if touch-action is supported.\n// Since CSS.supports is supported on all but Edge@12 and IE and touch-action\n// is supported on both Edge@12 and IE if CSS.supports is not available that means that\n// touch-action will be supported\n\n\nlet cachedSupportsTouchActionNone;\n\nfunction doesSupportTouchActionNone() {\n if (cachedSupportsTouchActionNone === undefined) {\n if (typeof CSS !== 'undefined' && typeof CSS.supports === 'function') {\n cachedSupportsTouchActionNone = CSS.supports('touch-action', 'none');\n } else {\n cachedSupportsTouchActionNone = true;\n }\n }\n\n return cachedSupportsTouchActionNone;\n}\n\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n dragging,\n marked,\n orientation,\n track,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', dragging && 'dragging', marked && 'marked', orientation === 'vertical' && 'vertical', track === 'inverted' && 'trackInverted', track === false && 'trackFalse'],\n rail: ['rail'],\n track: ['track'],\n mark: ['mark'],\n markActive: ['markActive'],\n markLabel: ['markLabel'],\n markLabelActive: ['markLabelActive'],\n valueLabel: ['valueLabel'],\n thumb: ['thumb', disabled && 'disabled'],\n active: ['active'],\n disabled: ['disabled'],\n focusVisible: ['focusVisible']\n };\n return composeClasses(slots, getSliderUtilityClass, classes);\n};\n\nconst Forward = ({\n children\n}) => children;\n\nconst SliderUnstyled = /*#__PURE__*/React.forwardRef(function SliderUnstyled(props, ref) {\n const {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-valuetext': ariaValuetext,\n className,\n component = 'span',\n classes: classesProp,\n defaultValue,\n disableSwap = false,\n disabled = false,\n getAriaLabel,\n getAriaValueText,\n marks: marksProp = false,\n max = 100,\n min = 0,\n name,\n onChange,\n onChangeCommitted,\n onMouseDown,\n orientation = 'horizontal',\n scale = Identity,\n step = 1,\n tabIndex,\n track = 'normal',\n value: valueProp,\n valueLabelDisplay = 'off',\n valueLabelFormat = Identity,\n isRtl = false,\n components = {},\n componentsProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const touchId = React.useRef(); // We can't use the :active browser pseudo-classes.\n // - The active state isn't triggered when clicking on the rail.\n // - The active state isn't transferred when inversing a range slider.\n\n const [active, setActive] = React.useState(-1);\n const [open, setOpen] = React.useState(-1);\n const [dragging, setDragging] = React.useState(false);\n const moveCount = React.useRef(0);\n const [valueDerived, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue != null ? defaultValue : min,\n name: 'Slider'\n });\n\n const handleChange = onChange && ((event, value, thumbIndex) => {\n // Redefine target to allow name and value to be read.\n // This allows seamless integration with the most popular form libraries.\n // https://github.com/mui-org/material-ui/issues/13485#issuecomment-676048492\n // Clone the event to not override `target` of the original event.\n const nativeEvent = event.nativeEvent || event;\n const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n Object.defineProperty(clonedEvent, 'target', {\n writable: true,\n value: {\n value,\n name\n }\n });\n onChange(clonedEvent, value, thumbIndex);\n });\n\n const range = Array.isArray(valueDerived);\n let values = range ? valueDerived.slice().sort(asc) : [valueDerived];\n values = values.map(value => clamp(value, min, max));\n const marks = marksProp === true && step !== null ? [...Array(Math.floor((max - min) / step) + 1)].map((_, index) => ({\n value: min + step * index\n })) : marksProp || [];\n const {\n isFocusVisibleRef,\n onBlur: handleBlurVisible,\n onFocus: handleFocusVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(-1);\n const sliderRef = React.useRef();\n const handleFocusRef = useForkRef(focusVisibleRef, sliderRef);\n const handleRef = useForkRef(ref, handleFocusRef);\n\n const handleFocus = event => {\n const index = Number(event.currentTarget.getAttribute('data-index'));\n handleFocusVisible(event);\n\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(index);\n }\n\n setOpen(index);\n };\n\n const handleBlur = event => {\n handleBlurVisible(event);\n\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(-1);\n }\n\n setOpen(-1);\n };\n\n const handleMouseOver = useEventCallback(event => {\n const index = Number(event.currentTarget.getAttribute('data-index'));\n setOpen(index);\n });\n const handleMouseLeave = useEventCallback(() => {\n setOpen(-1);\n });\n useEnhancedEffect(() => {\n if (disabled && sliderRef.current.contains(document.activeElement)) {\n // This is necessary because Firefox and Safari will keep focus\n // on a disabled element:\n // https://codesandbox.io/s/mui-pr-22247-forked-h151h?file=/src/App.js\n document.activeElement.blur();\n }\n }, [disabled]);\n\n if (disabled && active !== -1) {\n setActive(-1);\n }\n\n if (disabled && focusVisible !== -1) {\n setFocusVisible(-1);\n }\n\n const handleHiddenInputChange = event => {\n const index = Number(event.currentTarget.getAttribute('data-index'));\n const value = values[index];\n const marksValues = marks.map(mark => mark.value);\n const marksIndex = marksValues.indexOf(value);\n let newValue = event.target.valueAsNumber;\n\n if (marks && step == null) {\n newValue = newValue < value ? marksValues[marksIndex - 1] : marksValues[marksIndex + 1];\n }\n\n newValue = clamp(newValue, min, max);\n\n if (marks && step == null) {\n const markValues = marks.map(mark => mark.value);\n const currentMarkIndex = markValues.indexOf(values[index]);\n newValue = newValue < values[index] ? markValues[currentMarkIndex - 1] : markValues[currentMarkIndex + 1];\n }\n\n if (range) {\n // Bound the new value to the thumb's neighbours.\n if (disableSwap) {\n newValue = clamp(newValue, values[index - 1] || -Infinity, values[index + 1] || Infinity);\n }\n\n const previousValue = newValue;\n newValue = setValueIndex({\n values,\n newValue,\n index\n });\n let activeIndex = index; // Potentially swap the index if needed.\n\n if (!disableSwap) {\n activeIndex = newValue.indexOf(previousValue);\n }\n\n focusThumb({\n sliderRef,\n activeIndex\n });\n }\n\n setValueState(newValue);\n setFocusVisible(index);\n\n if (handleChange) {\n handleChange(event, newValue, index);\n }\n\n if (onChangeCommitted) {\n onChangeCommitted(event, newValue);\n }\n };\n\n const previousIndex = React.useRef();\n let axis = orientation;\n\n if (isRtl && orientation !== \"vertical\") {\n axis += '-reverse';\n }\n\n const getFingerNewValue = ({\n finger,\n move = false,\n values: values2\n }) => {\n const {\n current: slider\n } = sliderRef;\n const {\n width,\n height,\n bottom,\n left\n } = slider.getBoundingClientRect();\n let percent;\n\n if (axis.indexOf('vertical') === 0) {\n percent = (bottom - finger.y) / height;\n } else {\n percent = (finger.x - left) / width;\n }\n\n if (axis.indexOf('-reverse') !== -1) {\n percent = 1 - percent;\n }\n\n let newValue;\n newValue = percentToValue(percent, min, max);\n\n if (step) {\n newValue = roundValueToStep(newValue, step, min);\n } else {\n const marksValues = marks.map(mark => mark.value);\n const closestIndex = findClosest(marksValues, newValue);\n newValue = marksValues[closestIndex];\n }\n\n newValue = clamp(newValue, min, max);\n let activeIndex = 0;\n\n if (range) {\n if (!move) {\n activeIndex = findClosest(values2, newValue);\n } else {\n activeIndex = previousIndex.current;\n } // Bound the new value to the thumb's neighbours.\n\n\n if (disableSwap) {\n newValue = clamp(newValue, values2[activeIndex - 1] || -Infinity, values2[activeIndex + 1] || Infinity);\n }\n\n const previousValue = newValue;\n newValue = setValueIndex({\n values: values2,\n newValue,\n index: activeIndex\n }); // Potentially swap the index if needed.\n\n if (!(disableSwap && move)) {\n activeIndex = newValue.indexOf(previousValue);\n previousIndex.current = activeIndex;\n }\n }\n\n return {\n newValue,\n activeIndex\n };\n };\n\n const handleTouchMove = useEventCallback(nativeEvent => {\n const finger = trackFinger(nativeEvent, touchId);\n\n if (!finger) {\n return;\n }\n\n moveCount.current += 1; // Cancel move in case some other element consumed a mouseup event and it was not fired.\n\n if (nativeEvent.type === 'mousemove' && nativeEvent.buttons === 0) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n handleTouchEnd(nativeEvent);\n return;\n }\n\n const {\n newValue,\n activeIndex\n } = getFingerNewValue({\n finger,\n move: true,\n values\n });\n focusThumb({\n sliderRef,\n activeIndex,\n setActive\n });\n setValueState(newValue);\n\n if (!dragging && moveCount.current > INTENTIONAL_DRAG_COUNT_THRESHOLD) {\n setDragging(true);\n }\n\n if (handleChange) {\n handleChange(nativeEvent, newValue, activeIndex);\n }\n });\n const handleTouchEnd = useEventCallback(nativeEvent => {\n const finger = trackFinger(nativeEvent, touchId);\n setDragging(false);\n\n if (!finger) {\n return;\n }\n\n const {\n newValue\n } = getFingerNewValue({\n finger,\n values\n });\n setActive(-1);\n\n if (nativeEvent.type === 'touchend') {\n setOpen(-1);\n }\n\n if (onChangeCommitted) {\n onChangeCommitted(nativeEvent, newValue);\n }\n\n touchId.current = undefined; // eslint-disable-next-line @typescript-eslint/no-use-before-define\n\n stopListening();\n });\n const handleTouchStart = useEventCallback(nativeEvent => {\n // If touch-action: none; is not supported we need to prevent the scroll manually.\n if (!doesSupportTouchActionNone()) {\n nativeEvent.preventDefault();\n }\n\n const touch = nativeEvent.changedTouches[0];\n\n if (touch != null) {\n // A number that uniquely identifies the current finger in the touch session.\n touchId.current = touch.identifier;\n }\n\n const finger = trackFinger(nativeEvent, touchId);\n const {\n newValue,\n activeIndex\n } = getFingerNewValue({\n finger,\n values\n });\n focusThumb({\n sliderRef,\n activeIndex,\n setActive\n });\n setValueState(newValue);\n\n if (handleChange) {\n handleChange(nativeEvent, newValue, activeIndex);\n }\n\n moveCount.current = 0;\n const doc = ownerDocument(sliderRef.current);\n doc.addEventListener('touchmove', handleTouchMove);\n doc.addEventListener('touchend', handleTouchEnd);\n });\n const stopListening = React.useCallback(() => {\n const doc = ownerDocument(sliderRef.current);\n doc.removeEventListener('mousemove', handleTouchMove);\n doc.removeEventListener('mouseup', handleTouchEnd);\n doc.removeEventListener('touchmove', handleTouchMove);\n doc.removeEventListener('touchend', handleTouchEnd);\n }, [handleTouchEnd, handleTouchMove]);\n React.useEffect(() => {\n const {\n current: slider\n } = sliderRef;\n slider.addEventListener('touchstart', handleTouchStart, {\n passive: doesSupportTouchActionNone()\n });\n return () => {\n slider.removeEventListener('touchstart', handleTouchStart, {\n passive: doesSupportTouchActionNone()\n });\n stopListening();\n };\n }, [stopListening, handleTouchStart]);\n React.useEffect(() => {\n if (disabled) {\n stopListening();\n }\n }, [disabled, stopListening]);\n const handleMouseDown = useEventCallback(event => {\n if (onMouseDown) {\n onMouseDown(event);\n } // Only handle left clicks\n\n\n if (event.button !== 0) {\n return;\n } // Avoid text selection\n\n\n event.preventDefault();\n const finger = trackFinger(event, touchId);\n const {\n newValue,\n activeIndex\n } = getFingerNewValue({\n finger,\n values\n });\n focusThumb({\n sliderRef,\n activeIndex,\n setActive\n });\n setValueState(newValue);\n\n if (handleChange) {\n handleChange(event, newValue, activeIndex);\n }\n\n moveCount.current = 0;\n const doc = ownerDocument(sliderRef.current);\n doc.addEventListener('mousemove', handleTouchMove);\n doc.addEventListener('mouseup', handleTouchEnd);\n });\n const trackOffset = valueToPercent(range ? values[0] : min, min, max);\n const trackLeap = valueToPercent(values[values.length - 1], min, max) - trackOffset;\n\n const trackStyle = _extends({}, axisProps[axis].offset(trackOffset), axisProps[axis].leap(trackLeap));\n\n const Root = components.Root || component;\n const rootProps = componentsProps.root || {};\n const Rail = components.Rail || 'span';\n const railProps = componentsProps.rail || {};\n const Track = components.Track || 'span';\n const trackProps = componentsProps.track || {};\n const Thumb = components.Thumb || 'span';\n const thumbProps = componentsProps.thumb || {};\n const ValueLabel = components.ValueLabel || SliderValueLabelUnstyled;\n const valueLabelProps = componentsProps.valueLabel || {};\n const Mark = components.Mark || 'span';\n const markProps = componentsProps.mark || {};\n const MarkLabel = components.MarkLabel || 'span';\n const markLabelProps = componentsProps.markLabel || {}; // all props with defaults\n // consider extracting to hook an reusing the lint rule for the varints\n\n const ownerState = _extends({}, props, {\n classes: classesProp,\n disabled,\n dragging,\n isRtl,\n marked: marks.length > 0 && marks.some(mark => mark.label),\n max,\n min,\n orientation,\n scale,\n step,\n track,\n valueLabelDisplay,\n valueLabelFormat\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(Root, _extends({\n ref: handleRef,\n onMouseDown: handleMouseDown\n }, rootProps, !isHostComponent(Root) && {\n as: component,\n ownerState: _extends({}, ownerState, rootProps.ownerState)\n }, other, {\n className: clsx(classes.root, rootProps.className, className),\n children: [/*#__PURE__*/_jsx(Rail, _extends({}, railProps, !isHostComponent(Rail) && {\n ownerState: _extends({}, ownerState, railProps.ownerState)\n }, {\n className: clsx(classes.rail, railProps.className)\n })), /*#__PURE__*/_jsx(Track, _extends({}, trackProps, !isHostComponent(Track) && {\n ownerState: _extends({}, ownerState, trackProps.ownerState)\n }, {\n className: clsx(classes.track, trackProps.className),\n style: _extends({}, trackStyle, trackProps.style)\n })), marks.map((mark, index) => {\n const percent = valueToPercent(mark.value, min, max);\n const style = axisProps[axis].offset(percent);\n let markActive;\n\n if (track === false) {\n markActive = values.indexOf(mark.value) !== -1;\n } else {\n markActive = track === 'normal' && (range ? mark.value >= values[0] && mark.value <= values[values.length - 1] : mark.value <= values[0]) || track === 'inverted' && (range ? mark.value <= values[0] || mark.value >= values[values.length - 1] : mark.value >= values[0]);\n }\n\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(Mark, _extends({\n \"data-index\": index\n }, markProps, !isHostComponent(Mark) && {\n ownerState: _extends({}, ownerState, markProps.ownerState),\n markActive\n }, {\n style: _extends({}, style, markProps.style),\n className: clsx(classes.mark, markProps.className, markActive && classes.markActive)\n })), mark.label != null ? /*#__PURE__*/_jsx(MarkLabel, _extends({\n \"aria-hidden\": true,\n \"data-index\": index\n }, markLabelProps, !isHostComponent(MarkLabel) && {\n ownerState: _extends({}, ownerState, markLabelProps.ownerState)\n }, {\n markLabelActive: markActive,\n style: _extends({}, style, markLabelProps.style),\n className: clsx(classes.markLabel, markLabelProps.className, markActive && classes.markLabelActive),\n children: mark.label\n })) : null]\n }, mark.value);\n }), values.map((value, index) => {\n const percent = valueToPercent(value, min, max);\n const style = axisProps[axis].offset(percent);\n const ValueLabelComponent = valueLabelDisplay === 'off' ? Forward : ValueLabel;\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: /*#__PURE__*/_jsx(ValueLabelComponent, _extends({\n valueLabelFormat: valueLabelFormat,\n valueLabelDisplay: valueLabelDisplay,\n value: typeof valueLabelFormat === 'function' ? valueLabelFormat(scale(value), index) : valueLabelFormat,\n index: index,\n open: open === index || active === index || valueLabelDisplay === 'on',\n disabled: disabled\n }, valueLabelProps, {\n className: clsx(classes.valueLabel, valueLabelProps.className)\n }, !isHostComponent(ValueLabel) && {\n ownerState: _extends({}, ownerState, valueLabelProps.ownerState)\n }, {\n children: /*#__PURE__*/_jsx(Thumb, _extends({\n \"data-index\": index,\n onMouseOver: handleMouseOver,\n onMouseLeave: handleMouseLeave\n }, thumbProps, {\n className: clsx(classes.thumb, thumbProps.className, active === index && classes.active, focusVisible === index && classes.focusVisible)\n }, !isHostComponent(Thumb) && {\n ownerState: _extends({}, ownerState, thumbProps.ownerState)\n }, {\n style: _extends({}, style, {\n pointerEvents: disableSwap && active !== index ? 'none' : undefined\n }, thumbProps.style),\n children: /*#__PURE__*/_jsx(\"input\", {\n tabIndex: tabIndex,\n \"data-index\": index,\n \"aria-label\": getAriaLabel ? getAriaLabel(index) : ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-orientation\": orientation,\n \"aria-valuemax\": scale(max),\n \"aria-valuemin\": scale(min),\n \"aria-valuenow\": scale(value),\n \"aria-valuetext\": getAriaValueText ? getAriaValueText(scale(value), index) : ariaValuetext,\n onFocus: handleFocus,\n onBlur: handleBlur,\n name: name,\n type: \"range\",\n min: props.min,\n max: props.max,\n step: props.step,\n disabled: disabled,\n value: values[index],\n onChange: handleHiddenInputChange,\n style: _extends({}, visuallyHidden, {\n direction: isRtl ? 'rtl' : 'ltr',\n // So that VoiceOver's focus indicator matches the thumb's dimensions\n width: '100%',\n height: '100%'\n })\n })\n }))\n }))\n }, index);\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SliderUnstyled.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The label of the slider.\n */\n 'aria-label': chainPropTypes(PropTypes.string, props => {\n const range = Array.isArray(props.value || props.defaultValue);\n\n if (range && props['aria-label'] != null) {\n return new Error('MUI: You need to use the `getAriaLabel` prop instead of `aria-label` when using a range slider.');\n }\n\n return null;\n }),\n\n /**\n * The id of the element containing a label for the slider.\n */\n 'aria-labelledby': PropTypes.string,\n\n /**\n * A string value that provides a user-friendly name for the current value of the slider.\n */\n 'aria-valuetext': chainPropTypes(PropTypes.string, props => {\n const range = Array.isArray(props.value || props.defaultValue);\n\n if (range && props['aria-valuetext'] != null) {\n return new Error('MUI: You need to use the `getAriaValueText` prop instead of `aria-valuetext` when using a range slider.');\n }\n\n return null;\n }),\n\n /**\n * @ignore\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * The components used for each slot inside the Slider.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n Mark: PropTypes.elementType,\n MarkLabel: PropTypes.elementType,\n Rail: PropTypes.elementType,\n Root: PropTypes.elementType,\n Thumb: PropTypes.elementType,\n Track: PropTypes.elementType,\n ValueLabel: PropTypes.elementType\n }),\n\n /**\n * The props used for each slot inside the Slider.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),\n\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the active thumb doesn't swap when moving pointer over a thumb while dragging another thumb.\n * @default false\n */\n disableSwap: PropTypes.bool,\n\n /**\n * Accepts a function which returns a string value that provides a user-friendly name for the thumb labels of the slider.\n * This is important for screen reader users.\n * @param {number} index The thumb label's index to format.\n * @returns {string}\n */\n getAriaLabel: PropTypes.func,\n\n /**\n * Accepts a function which returns a string value that provides a user-friendly name for the current value of the slider.\n * This is important for screen reader users.\n * @param {number} value The thumb label's value to format.\n * @param {number} index The thumb label's index to format.\n * @returns {string}\n */\n getAriaValueText: PropTypes.func,\n\n /**\n * Indicates whether the theme context has rtl direction. It is set automatically.\n * @default false\n */\n isRtl: PropTypes.bool,\n\n /**\n * Marks indicate predetermined values to which the user can move the slider.\n * If `true` the marks are spaced according the value of the `step` prop.\n * If an array, it should contain objects with `value` and an optional `label` keys.\n * @default false\n */\n marks: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape({\n label: PropTypes.node,\n value: PropTypes.number.isRequired\n })), PropTypes.bool]),\n\n /**\n * The maximum allowed value of the slider.\n * Should not be equal to min.\n * @default 100\n */\n max: PropTypes.number,\n\n /**\n * The minimum allowed value of the slider.\n * Should not be equal to max.\n * @default 0\n */\n min: PropTypes.number,\n\n /**\n * Name attribute of the hidden `input` element.\n */\n name: PropTypes.string,\n\n /**\n * Callback function that is fired when the slider's value changed.\n *\n * @param {Event} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (any).\n * **Warning**: This is a generic event not a change event.\n * @param {number | number[]} value The new value.\n * @param {number} activeThumb Index of the currently moved thumb.\n */\n onChange: PropTypes.func,\n\n /**\n * Callback function that is fired when the `mouseup` is triggered.\n *\n * @param {React.SyntheticEvent | Event} event The event source of the callback. **Warning**: This is a generic event not a change event.\n * @param {number | number[]} value The new value.\n */\n onChangeCommitted: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func,\n\n /**\n * The component orientation.\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n\n /**\n * A transformation function, to change the scale of the slider.\n * @default (x) => x\n */\n scale: PropTypes.func,\n\n /**\n * The granularity with which the slider can step through values. (A \"discrete\" slider.)\n * The `min` prop serves as the origin for the valid values.\n * We recommend (max - min) to be evenly divisible by the step.\n *\n * When step is `null`, the thumb can only be slid onto marks provided with the `marks` prop.\n * @default 1\n */\n step: PropTypes.number,\n\n /**\n * Tab index attribute of the hidden `input` element.\n */\n tabIndex: PropTypes.number,\n\n /**\n * The track presentation:\n *\n * - `normal` the track will render a bar representing the slider value.\n * - `inverted` the track will render a bar representing the remaining slider value.\n * - `false` the track will render without a bar.\n * @default 'normal'\n */\n track: PropTypes.oneOf(['inverted', 'normal', false]),\n\n /**\n * The value of the slider.\n * For ranged sliders, provide an array with two values.\n */\n value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),\n\n /**\n * Controls when the value label is displayed:\n *\n * - `auto` the value label will display when the thumb is hovered or focused.\n * - `on` will display persistently.\n * - `off` will never display.\n * @default 'off'\n */\n valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on']),\n\n /**\n * The format function the value label's value.\n *\n * When a function is provided, it should have the following signature:\n *\n * - {number} value The value label's value to format\n * - {number} index The value label's index to format\n * @default (x) => x\n */\n valueLabelFormat: PropTypes.oneOfType([PropTypes.func, PropTypes.string])\n} : void 0;\nexport default SliderUnstyled;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"components\", \"componentsProps\", \"color\", \"size\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { generateUtilityClasses, isHostComponent } from '@mui/base';\nimport SliderUnstyled, { SliderValueLabelUnstyled, sliderUnstyledClasses, getSliderUtilityClass } from '@mui/base/SliderUnstyled';\nimport { alpha, lighten, darken } from '@mui/system';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { slotShouldForwardProp } from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport capitalize from '../utils/capitalize';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const sliderClasses = _extends({}, sliderUnstyledClasses, generateUtilityClasses('MuiSlider', ['colorPrimary', 'colorSecondary', 'thumbColorPrimary', 'thumbColorSecondary', 'sizeSmall', 'thumbSizeSmall']));\nexport const SliderRoot = styled('span', {\n name: 'MuiSlider',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const marks = ownerState.marksProp === true && ownerState.step !== null ? [...Array(Math.floor((ownerState.max - ownerState.min) / ownerState.step) + 1)].map((_, index) => ({\n value: ownerState.min + ownerState.step * index\n })) : ownerState.marksProp || [];\n const marked = marks.length > 0 && marks.some(mark => mark.label);\n return [styles.root, styles[`color${capitalize(ownerState.color)}`], ownerState.size !== 'medium' && styles[`size${capitalize(ownerState.size)}`], marked && styles.marked, ownerState.orientation === 'vertical' && styles.vertical, ownerState.track === 'inverted' && styles.trackInverted, ownerState.track === false && styles.trackFalse];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n borderRadius: 12,\n boxSizing: 'content-box',\n display: 'inline-block',\n position: 'relative',\n cursor: 'pointer',\n touchAction: 'none',\n color: theme.palette[ownerState.color].main,\n WebkitTapHighlightColor: 'transparent'\n}, ownerState.orientation === 'horizontal' && _extends({\n height: 4,\n width: '100%',\n padding: '13px 0',\n // The primary input mechanism of the device includes a pointing device of limited accuracy.\n '@media (pointer: coarse)': {\n // Reach 42px touch target, about ~8mm on screen.\n padding: '20px 0'\n }\n}, ownerState.size === 'small' && {\n height: 2\n}, ownerState.marked && {\n marginBottom: 20\n}), ownerState.orientation === 'vertical' && _extends({\n height: '100%',\n width: 4,\n padding: '0 13px',\n // The primary input mechanism of the device includes a pointing device of limited accuracy.\n '@media (pointer: coarse)': {\n // Reach 42px touch target, about ~8mm on screen.\n padding: '0 20px'\n }\n}, ownerState.size === 'small' && {\n width: 2\n}, ownerState.marked && {\n marginRight: 44\n}), {\n '@media print': {\n colorAdjust: 'exact'\n },\n [`&.${sliderClasses.disabled}`]: {\n pointerEvents: 'none',\n cursor: 'default',\n color: theme.palette.grey[400]\n },\n [`&.${sliderClasses.dragging}`]: {\n [`& .${sliderClasses.thumb}, & .${sliderClasses.track}`]: {\n transition: 'none'\n }\n }\n}));\nexport const SliderRail = styled('span', {\n name: 'MuiSlider',\n slot: 'Rail',\n overridesResolver: (props, styles) => styles.rail\n})(({\n ownerState\n}) => _extends({\n display: 'block',\n position: 'absolute',\n borderRadius: 'inherit',\n backgroundColor: 'currentColor',\n opacity: 0.38\n}, ownerState.orientation === 'horizontal' && {\n width: '100%',\n height: 'inherit',\n top: '50%',\n transform: 'translateY(-50%)'\n}, ownerState.orientation === 'vertical' && {\n height: '100%',\n width: 'inherit',\n left: '50%',\n transform: 'translateX(-50%)'\n}, ownerState.track === 'inverted' && {\n opacity: 1\n}));\nexport const SliderTrack = styled('span', {\n name: 'MuiSlider',\n slot: 'Track',\n overridesResolver: (props, styles) => styles.track\n})(({\n theme,\n ownerState\n}) => {\n const color = // Same logic as the LinearProgress track color\n theme.palette.mode === 'light' ? lighten(theme.palette[ownerState.color].main, 0.62) : darken(theme.palette[ownerState.color].main, 0.5);\n return _extends({\n display: 'block',\n position: 'absolute',\n borderRadius: 'inherit',\n border: '1px solid currentColor',\n backgroundColor: 'currentColor',\n transition: theme.transitions.create(['left', 'width', 'bottom', 'height'], {\n duration: theme.transitions.duration.shortest\n })\n }, ownerState.size === 'small' && {\n border: 'none'\n }, ownerState.orientation === 'horizontal' && {\n height: 'inherit',\n top: '50%',\n transform: 'translateY(-50%)'\n }, ownerState.orientation === 'vertical' && {\n width: 'inherit',\n left: '50%',\n transform: 'translateX(-50%)'\n }, ownerState.track === false && {\n display: 'none'\n }, ownerState.track === 'inverted' && {\n backgroundColor: color,\n borderColor: color\n });\n});\nexport const SliderThumb = styled('span', {\n name: 'MuiSlider',\n slot: 'Thumb',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.thumb, styles[`thumbColor${capitalize(ownerState.color)}`], ownerState.size !== 'medium' && styles[`thumbSize${capitalize(ownerState.size)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n position: 'absolute',\n width: 20,\n height: 20,\n boxSizing: 'border-box',\n borderRadius: '50%',\n outline: 0,\n backgroundColor: 'currentColor',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: theme.transitions.create(['box-shadow', 'left', 'bottom'], {\n duration: theme.transitions.duration.shortest\n })\n}, ownerState.size === 'small' && {\n width: 12,\n height: 12\n}, ownerState.orientation === 'horizontal' && {\n top: '50%',\n transform: 'translate(-50%, -50%)'\n}, ownerState.orientation === 'vertical' && {\n left: '50%',\n transform: 'translate(-50%, 50%)'\n}, {\n '&:before': _extends({\n position: 'absolute',\n content: '\"\"',\n borderRadius: 'inherit',\n width: '100%',\n height: '100%',\n boxShadow: theme.shadows[2]\n }, ownerState.size === 'small' && {\n boxShadow: 'none'\n }),\n '&::after': {\n position: 'absolute',\n content: '\"\"',\n borderRadius: '50%',\n // 42px is the hit target\n width: 42,\n height: 42,\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n },\n [`&:hover, &.${sliderClasses.focusVisible}`]: {\n boxShadow: `0px 0px 0px 8px ${alpha(theme.palette[ownerState.color].main, 0.16)}`,\n '@media (hover: none)': {\n boxShadow: 'none'\n }\n },\n [`&.${sliderClasses.active}`]: {\n boxShadow: `0px 0px 0px 14px ${alpha(theme.palette[ownerState.color].main, 0.16)}`\n },\n [`&.${sliderClasses.disabled}`]: {\n '&:hover': {\n boxShadow: 'none'\n }\n }\n}));\nexport const SliderValueLabel = styled(SliderValueLabelUnstyled, {\n name: 'MuiSlider',\n slot: 'ValueLabel',\n overridesResolver: (props, styles) => styles.valueLabel\n})(({\n theme,\n ownerState\n}) => _extends({\n [`&.${sliderClasses.valueLabelOpen}`]: {\n transform: 'translateY(-100%) scale(1)'\n },\n zIndex: 1,\n whiteSpace: 'nowrap'\n}, theme.typography.body2, {\n fontWeight: 500,\n transition: theme.transitions.create(['transform'], {\n duration: theme.transitions.duration.shortest\n }),\n top: -10,\n transformOrigin: 'bottom center',\n transform: 'translateY(-100%) scale(0)',\n position: 'absolute',\n backgroundColor: theme.palette.grey[600],\n borderRadius: 2,\n color: theme.palette.common.white,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0.25rem 0.75rem'\n}, ownerState.size === 'small' && {\n fontSize: theme.typography.pxToRem(12),\n padding: '0.25rem 0.5rem'\n}, {\n '&:before': {\n position: 'absolute',\n content: '\"\"',\n width: 8,\n height: 8,\n bottom: 0,\n left: '50%',\n transform: 'translate(-50%, 50%) rotate(45deg)',\n backgroundColor: 'inherit'\n }\n}));\nexport const SliderMark = styled('span', {\n name: 'MuiSlider',\n slot: 'Mark',\n shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'markActive',\n overridesResolver: (props, styles) => styles.mark\n})(({\n theme,\n ownerState,\n markActive\n}) => _extends({\n position: 'absolute',\n width: 2,\n height: 2,\n borderRadius: 1,\n backgroundColor: 'currentColor'\n}, ownerState.orientation === 'horizontal' && {\n top: '50%',\n transform: 'translate(-1px, -50%)'\n}, ownerState.orientation === 'vertical' && {\n left: '50%',\n transform: 'translate(-50%, 1px)'\n}, markActive && {\n backgroundColor: theme.palette.background.paper,\n opacity: 0.8\n}));\nexport const SliderMarkLabel = styled('span', {\n name: 'MuiSlider',\n slot: 'MarkLabel',\n shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'markLabelActive',\n overridesResolver: (props, styles) => styles.markLabel\n})(({\n theme,\n ownerState,\n markLabelActive\n}) => _extends({}, theme.typography.body2, {\n color: theme.palette.text.secondary,\n position: 'absolute',\n whiteSpace: 'nowrap'\n}, ownerState.orientation === 'horizontal' && {\n top: 30,\n transform: 'translateX(-50%)',\n '@media (pointer: coarse)': {\n top: 40\n }\n}, ownerState.orientation === 'vertical' && {\n left: 36,\n transform: 'translateY(50%)',\n '@media (pointer: coarse)': {\n left: 44\n }\n}, markLabelActive && {\n color: theme.palette.text.primary\n}));\nSliderRoot.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * @ignore\n */\n children: PropTypes.node,\n\n /**\n * @ignore\n */\n ownerState: PropTypes.shape({\n 'aria-label': PropTypes.string,\n 'aria-labelledby': PropTypes.string,\n 'aria-valuetext': PropTypes.string,\n classes: PropTypes.object,\n color: PropTypes.oneOf(['primary', 'secondary']),\n defaultValue: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),\n disabled: PropTypes.bool,\n getAriaLabel: PropTypes.func,\n getAriaValueText: PropTypes.func,\n isRtl: PropTypes.bool,\n marks: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape({\n label: PropTypes.node,\n value: PropTypes.number.isRequired\n })), PropTypes.bool]),\n max: PropTypes.number,\n min: PropTypes.number,\n name: PropTypes.string,\n onChange: PropTypes.func,\n onChangeCommitted: PropTypes.func,\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n scale: PropTypes.func,\n step: PropTypes.number,\n track: PropTypes.oneOf(['inverted', 'normal', false]),\n value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),\n valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on']),\n valueLabelFormat: PropTypes.oneOfType([PropTypes.func, PropTypes.string])\n })\n};\n\nconst extendUtilityClasses = ownerState => {\n const {\n color,\n size,\n classes = {}\n } = ownerState;\n return _extends({}, classes, {\n root: clsx(classes.root, getSliderUtilityClass(`color${capitalize(color)}`), classes[`color${capitalize(color)}`], size && [getSliderUtilityClass(`size${capitalize(size)}`), classes[`size${capitalize(size)}`]]),\n thumb: clsx(classes.thumb, getSliderUtilityClass(`thumbColor${capitalize(color)}`), classes[`thumbColor${capitalize(color)}`], size && [getSliderUtilityClass(`thumbSize${capitalize(size)}`), classes[`thumbSize${capitalize(size)}`]])\n });\n};\n\nconst shouldSpreadOwnerState = Component => {\n return !Component || !isHostComponent(Component);\n};\n\nconst Slider = /*#__PURE__*/React.forwardRef(function Slider(inputProps, ref) {\n var _componentsProps$root, _componentsProps$thum, _componentsProps$trac, _componentsProps$valu;\n\n const props = useThemeProps({\n props: inputProps,\n name: 'MuiSlider'\n });\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n\n const {\n components = {},\n componentsProps = {},\n color = 'primary',\n size = 'medium'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n color,\n size\n });\n\n const classes = extendUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(SliderUnstyled, _extends({}, other, {\n isRtl: isRtl,\n components: _extends({\n Root: SliderRoot,\n Rail: SliderRail,\n Track: SliderTrack,\n Thumb: SliderThumb,\n ValueLabel: SliderValueLabel,\n Mark: SliderMark,\n MarkLabel: SliderMarkLabel\n }, components),\n componentsProps: _extends({}, componentsProps, {\n root: _extends({}, componentsProps.root, shouldSpreadOwnerState(components.Root) && {\n ownerState: _extends({}, (_componentsProps$root = componentsProps.root) == null ? void 0 : _componentsProps$root.ownerState, {\n color,\n size\n })\n }),\n thumb: _extends({}, componentsProps.thumb, shouldSpreadOwnerState(components.Thumb) && {\n ownerState: _extends({}, (_componentsProps$thum = componentsProps.thumb) == null ? void 0 : _componentsProps$thum.ownerState, {\n color,\n size\n })\n }),\n track: _extends({}, componentsProps.track, shouldSpreadOwnerState(components.Track) && {\n ownerState: _extends({}, (_componentsProps$trac = componentsProps.track) == null ? void 0 : _componentsProps$trac.ownerState, {\n color,\n size\n })\n }),\n valueLabel: _extends({}, componentsProps.valueLabel, shouldSpreadOwnerState(components.ValueLabel) && {\n ownerState: _extends({}, (_componentsProps$valu = componentsProps.valueLabel) == null ? void 0 : _componentsProps$valu.ownerState, {\n color,\n size\n })\n })\n }),\n classes: classes,\n ref: ref\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Slider.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The label of the slider.\n */\n 'aria-label': chainPropTypes(PropTypes.string, props => {\n const range = Array.isArray(props.value || props.defaultValue);\n\n if (range && props['aria-label'] != null) {\n return new Error('MUI: You need to use the `getAriaLabel` prop instead of `aria-label` when using a range slider.');\n }\n\n return null;\n }),\n\n /**\n * The id of the element containing a label for the slider.\n */\n 'aria-labelledby': PropTypes.string,\n\n /**\n * A string value that provides a user-friendly name for the current value of the slider.\n */\n 'aria-valuetext': chainPropTypes(PropTypes.string, props => {\n const range = Array.isArray(props.value || props.defaultValue);\n\n if (range && props['aria-valuetext'] != null) {\n return new Error('MUI: You need to use the `getAriaValueText` prop instead of `aria-valuetext` when using a range slider.');\n }\n\n return null;\n }),\n\n /**\n * @ignore\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'primary'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n\n /**\n * The components used for each slot inside the Slider.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n Mark: PropTypes.elementType,\n MarkLabel: PropTypes.elementType,\n Rail: PropTypes.elementType,\n Root: PropTypes.elementType,\n Thumb: PropTypes.elementType,\n Track: PropTypes.elementType,\n ValueLabel: PropTypes.elementType\n }),\n\n /**\n * The props used for each slot inside the Slider.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),\n\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the active thumb doesn't swap when moving pointer over a thumb while dragging another thumb.\n * @default false\n */\n disableSwap: PropTypes.bool,\n\n /**\n * Accepts a function which returns a string value that provides a user-friendly name for the thumb labels of the slider.\n * This is important for screen reader users.\n * @param {number} index The thumb label's index to format.\n * @returns {string}\n */\n getAriaLabel: PropTypes.func,\n\n /**\n * Accepts a function which returns a string value that provides a user-friendly name for the current value of the slider.\n * This is important for screen reader users.\n * @param {number} value The thumb label's value to format.\n * @param {number} index The thumb label's index to format.\n * @returns {string}\n */\n getAriaValueText: PropTypes.func,\n\n /**\n * Indicates whether the theme context has rtl direction. It is set automatically.\n * @default false\n */\n isRtl: PropTypes.bool,\n\n /**\n * Marks indicate predetermined values to which the user can move the slider.\n * If `true` the marks are spaced according the value of the `step` prop.\n * If an array, it should contain objects with `value` and an optional `label` keys.\n * @default false\n */\n marks: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape({\n label: PropTypes.node,\n value: PropTypes.number.isRequired\n })), PropTypes.bool]),\n\n /**\n * The maximum allowed value of the slider.\n * Should not be equal to min.\n * @default 100\n */\n max: PropTypes.number,\n\n /**\n * The minimum allowed value of the slider.\n * Should not be equal to max.\n * @default 0\n */\n min: PropTypes.number,\n\n /**\n * Name attribute of the hidden `input` element.\n */\n name: PropTypes.string,\n\n /**\n * Callback function that is fired when the slider's value changed.\n *\n * @param {Event} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (any).\n * **Warning**: This is a generic event not a change event.\n * @param {number | number[]} value The new value.\n * @param {number} activeThumb Index of the currently moved thumb.\n */\n onChange: PropTypes.func,\n\n /**\n * Callback function that is fired when the `mouseup` is triggered.\n *\n * @param {React.SyntheticEvent | Event} event The event source of the callback. **Warning**: This is a generic event not a change event.\n * @param {number | number[]} value The new value.\n */\n onChangeCommitted: PropTypes.func,\n\n /**\n * The component orientation.\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n\n /**\n * A transformation function, to change the scale of the slider.\n * @default (x) => x\n */\n scale: PropTypes.func,\n\n /**\n * The size of the slider.\n * @default 'medium'\n */\n size: PropTypes.oneOf(['small', 'medium']),\n\n /**\n * The granularity with which the slider can step through values. (A \"discrete\" slider.)\n * The `min` prop serves as the origin for the valid values.\n * We recommend (max - min) to be evenly divisible by the step.\n *\n * When step is `null`, the thumb can only be slid onto marks provided with the `marks` prop.\n * @default 1\n */\n step: PropTypes.number,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * Tab index attribute of the hidden `input` element.\n */\n tabIndex: PropTypes.number,\n\n /**\n * The track presentation:\n *\n * - `normal` the track will render a bar representing the slider value.\n * - `inverted` the track will render a bar representing the remaining slider value.\n * - `false` the track will render without a bar.\n * @default 'normal'\n */\n track: PropTypes.oneOf(['inverted', 'normal', false]),\n\n /**\n * The value of the slider.\n * For ranged sliders, provide an array with two values.\n */\n value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),\n\n /**\n * Controls when the value label is displayed:\n *\n * - `auto` the value label will display when the thumb is hovered or focused.\n * - `on` will display persistently.\n * - `off` will never display.\n * @default 'off'\n */\n valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on']),\n\n /**\n * The format function the value label's value.\n *\n * When a function is provided, it should have the following signature:\n *\n * - {number} value The value label's value to format\n * - {number} index The value label's index to format\n * @default (x) => x\n */\n valueLabelFormat: PropTypes.oneOfType([PropTypes.func, PropTypes.string])\n} : void 0;\nexport default Slider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { useThemeProps } from '@mui/material/styles';\nimport { useDefaultDates, useUtils } from '../internals/hooks/useUtils';\nimport { parsePickerInputValue } from '../internals/utils/date-utils';\nexport const isYearOnlyView = views => views.length === 1 && views[0] === 'year';\nexport const isYearAndMonthViews = views => views.length === 2 && views.indexOf('month') !== -1 && views.indexOf('year') !== -1;\n\nconst getFormatAndMaskByViews = (views, utils) => {\n if (isYearOnlyView(views)) {\n return {\n inputFormat: utils.formats.year\n };\n }\n\n if (isYearAndMonthViews(views)) {\n return {\n disableMaskedInput: true,\n inputFormat: utils.formats.monthAndYear\n };\n }\n\n return {\n inputFormat: utils.formats.keyboardDate\n };\n};\n\nexport function useDatePickerDefaultizedProps(props, name) {\n var _themeProps$views;\n\n const utils = useUtils();\n const defaultDates = useDefaultDates(); // This is technically unsound if the type parameters appear in optional props.\n // Optional props can be filled by `useThemeProps` with types that don't match the type parameters.\n\n const themeProps = useThemeProps({\n props,\n name\n });\n const views = (_themeProps$views = themeProps.views) != null ? _themeProps$views : ['year', 'day'];\n return _extends({\n openTo: 'day',\n minDate: defaultDates.minDate,\n maxDate: defaultDates.maxDate\n }, getFormatAndMaskByViews(views, utils), themeProps, {\n views\n });\n}\nexport const datePickerValueManager = {\n emptyValue: null,\n getTodayValue: utils => utils.date(),\n parseInput: parsePickerInputValue,\n areValuesEqual: (utils, a, b) => utils.isEqual(a, b)\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"parsedValue\", \"isLandscape\", \"isMobileKeyboardViewOpen\", \"onChange\", \"toggleMobileKeyboardView\", \"toolbarFormat\", \"toolbarPlaceholder\", \"toolbarTitle\", \"views\"];\nimport * as React from 'react';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/material';\nimport { PickersToolbar, pickersToolbarClasses } from '../internals/components/PickersToolbar';\nimport { useUtils } from '../internals/hooks/useUtils';\nimport { isYearAndMonthViews, isYearOnlyView } from './shared';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const datePickerToolbarClasses = generateUtilityClasses('MuiDatePickerToolbar', ['root', 'title']);\nconst DatePickerToolbarRoot = styled(PickersToolbar, {\n name: 'MuiDatePickerToolbar',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n [`& .${pickersToolbarClasses.penIconButton}`]: {\n position: 'relative',\n top: 4\n }\n});\nconst DatePickerToolbarTitle = styled(Typography, {\n name: 'MuiDatePickerToolbar',\n slot: 'Title',\n overridesResolver: (props, styles) => styles.title\n})(({\n ownerState\n}) => _extends({}, ownerState.isLandscape && {\n margin: 'auto 16px auto auto'\n}));\n\n/**\n * @ignore - internal component.\n */\nexport const DatePickerToolbar = /*#__PURE__*/React.forwardRef(function DatePickerToolbar(props, ref) {\n const {\n parsedValue,\n isLandscape,\n isMobileKeyboardViewOpen,\n toggleMobileKeyboardView,\n toolbarFormat,\n toolbarPlaceholder = '––',\n toolbarTitle = 'Select date',\n views\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const utils = useUtils();\n const dateText = React.useMemo(() => {\n if (!parsedValue) {\n return toolbarPlaceholder;\n }\n\n if (toolbarFormat) {\n return utils.formatByString(parsedValue, toolbarFormat);\n }\n\n if (isYearOnlyView(views)) {\n return utils.format(parsedValue, 'year');\n }\n\n if (isYearAndMonthViews(views)) {\n return utils.format(parsedValue, 'month');\n } // Little localization hack (Google is doing the same for android native pickers):\n // For english localization it is convenient to include weekday into the date \"Mon, Jun 1\".\n // For other locales using strings like \"June 1\", without weekday.\n\n\n return /en/.test(utils.getCurrentLocaleCode()) ? utils.format(parsedValue, 'normalDateWithWeekday') : utils.format(parsedValue, 'normalDate');\n }, [parsedValue, toolbarFormat, toolbarPlaceholder, utils, views]);\n const ownerState = props;\n return /*#__PURE__*/_jsx(DatePickerToolbarRoot, _extends({\n ref: ref,\n toolbarTitle: toolbarTitle,\n isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: toggleMobileKeyboardView,\n isLandscape: isLandscape,\n ownerState: ownerState,\n className: datePickerToolbarClasses.root\n }, other, {\n children: /*#__PURE__*/_jsx(DatePickerToolbarTitle, {\n variant: \"h4\",\n align: isLandscape ? 'left' : 'center',\n ownerState: ownerState,\n className: datePickerToolbarClasses.title,\n children: dateText\n })\n }));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"PopperProps\", \"PaperProps\", \"ToolbarComponent\", \"TransitionComponent\", \"value\", \"components\", \"componentsProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDatePickerDefaultizedProps, datePickerValueManager } from '../DatePicker/shared';\nimport { DatePickerToolbar } from '../DatePicker/DatePickerToolbar';\nimport { DesktopWrapper } from '../internals/components/wrappers/DesktopWrapper';\nimport { CalendarOrClockPicker } from '../internals/components/CalendarOrClockPicker';\nimport { useDateValidation } from '../internals/hooks/validation/useDateValidation';\nimport { KeyboardDateInput } from '../internals/components/KeyboardDateInput';\nimport { usePickerState } from '../internals/hooks/usePickerState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/x/react-date-pickers/date-picker/)\n *\n * API:\n *\n * - [DesktopDatePicker API](https://mui.com/x/api/date-pickers/desktop-date-picker/)\n */\nexport const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePicker(inProps, ref) {\n const props = useDatePickerDefaultizedProps(inProps, 'MuiDesktopDatePicker');\n const validationError = useDateValidation(props) !== null;\n const {\n pickerProps,\n inputProps,\n wrapperProps\n } = usePickerState(props, datePickerValueManager);\n\n const {\n PopperProps,\n PaperProps,\n ToolbarComponent = DatePickerToolbar,\n TransitionComponent,\n components,\n componentsProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const AllDateInputProps = _extends({}, inputProps, other, {\n components,\n componentsProps,\n ref,\n validationError\n });\n\n return /*#__PURE__*/_jsx(DesktopWrapper, _extends({}, wrapperProps, {\n DateInputProps: AllDateInputProps,\n KeyboardDateInputComponent: KeyboardDateInput,\n PopperProps: PopperProps,\n PaperProps: PaperProps,\n TransitionComponent: TransitionComponent,\n components: components,\n componentsProps: componentsProps,\n children: /*#__PURE__*/_jsx(CalendarOrClockPicker, _extends({}, pickerProps, {\n autoFocus: true,\n toolbarTitle: props.label || props.toolbarTitle,\n ToolbarComponent: ToolbarComponent,\n DateInputProps: AllDateInputProps,\n components: components,\n componentsProps: componentsProps\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? DesktopDatePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n autoFocus: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n */\n getViewSwitchingButtonText: PropTypes.func,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n */\n openTo: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Paper props passed down to [Paper](https://mui.com/material-ui/api/paper/) component.\n */\n PaperProps: PropTypes.object,\n\n /**\n * Popper props passed down to [Popper](https://mui.com/material-ui/api/popper/) component.\n */\n PopperProps: PropTypes.object,\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DatePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * Custom component for popper [Transition](https://mui.com/material-ui/transitions/#transitioncomponent-prop).\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired)\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ToolbarComponent\", \"value\", \"onChange\", \"components\", \"componentsProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDatePickerDefaultizedProps, datePickerValueManager } from '../DatePicker/shared';\nimport { DatePickerToolbar } from '../DatePicker/DatePickerToolbar';\nimport { MobileWrapper } from '../internals/components/wrappers/MobileWrapper';\nimport { CalendarOrClockPicker } from '../internals/components/CalendarOrClockPicker';\nimport { useDateValidation } from '../internals/hooks/validation/useDateValidation';\nimport { PureDateInput } from '../internals/components/PureDateInput';\nimport { usePickerState } from '../internals/hooks/usePickerState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/x/react-date-pickers/date-picker/)\n *\n * API:\n *\n * - [MobileDatePicker API](https://mui.com/x/api/date-pickers/mobile-date-picker/)\n */\nexport const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker(inProps, ref) {\n const props = useDatePickerDefaultizedProps(inProps, 'MuiMobileDatePicker');\n const validationError = useDateValidation(props) !== null;\n const {\n pickerProps,\n inputProps,\n wrapperProps\n } = usePickerState(props, datePickerValueManager); // Note that we are passing down all the value without spread.\n // It saves us >1kb gzip and make any prop available automatically on any level down.\n\n const {\n ToolbarComponent = DatePickerToolbar,\n components,\n componentsProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const DateInputProps = _extends({}, inputProps, other, {\n components,\n componentsProps,\n ref,\n validationError\n });\n\n return /*#__PURE__*/_jsx(MobileWrapper, _extends({}, other, wrapperProps, {\n DateInputProps: DateInputProps,\n PureDateInputComponent: PureDateInput,\n components: components,\n componentsProps: componentsProps,\n children: /*#__PURE__*/_jsx(CalendarOrClockPicker, _extends({}, pickerProps, {\n autoFocus: true,\n toolbarTitle: props.label || props.toolbarTitle,\n ToolbarComponent: ToolbarComponent,\n DateInputProps: DateInputProps,\n components: components,\n componentsProps: componentsProps\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MobileDatePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n autoFocus: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * Props applied to the [`Dialog`](https://mui.com/material-ui/api/dialog/) element.\n */\n DialogProps: PropTypes.object,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n */\n getViewSwitchingButtonText: PropTypes.func,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n */\n openTo: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DatePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired)\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"desktopModeMediaQuery\", \"DialogProps\", \"PopperProps\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport { useThemeProps } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport PropTypes from 'prop-types';\nimport { DesktopDatePicker } from '../DesktopDatePicker';\nimport { MobileDatePicker } from '../MobileDatePicker';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/x/react-date-pickers/date-picker/)\n * - [Pickers](https://mui.com/x/react-date-pickers/)\n *\n * API:\n *\n * - [DatePicker API](https://mui.com/x/api/date-pickers/date-picker/)\n */\nexport const DatePicker = /*#__PURE__*/React.forwardRef(function DatePicker(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDatePicker'\n });\n\n const {\n desktopModeMediaQuery = '@media (pointer: fine)',\n DialogProps,\n PopperProps,\n TransitionComponent\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const isDesktop = useMediaQuery(desktopModeMediaQuery);\n\n if (isDesktop) {\n return /*#__PURE__*/_jsx(DesktopDatePicker, _extends({\n ref: ref,\n PopperProps: PopperProps,\n TransitionComponent: TransitionComponent\n }, other));\n }\n\n return /*#__PURE__*/_jsx(MobileDatePicker, _extends({\n ref: ref,\n DialogProps: DialogProps\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DatePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n autoFocus: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * CSS media query when `Mobile` mode will be changed to `Desktop`.\n * @default '@media (pointer: fine)'\n * @example '@media (min-width: 720px)' or theme.breakpoints.up(\"sm\")\n */\n desktopModeMediaQuery: PropTypes.string,\n\n /**\n * Props applied to the [`Dialog`](https://mui.com/material-ui/api/dialog/) element.\n */\n DialogProps: PropTypes.object,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization\n */\n getViewSwitchingButtonText: PropTypes.func,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n */\n openTo: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Paper props passed down to [Paper](https://mui.com/material-ui/api/paper/) component.\n */\n PaperProps: PropTypes.object,\n\n /**\n * Popper props passed down to [Popper](https://mui.com/material-ui/api/popper/) component.\n */\n PopperProps: PropTypes.object,\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DatePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * Custom component for popper [Transition](https://mui.com/material-ui/transitions/#transitioncomponent-prop).\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired)\n} : void 0;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getListItemUtilityClass(slot) {\n return generateUtilityClass('MuiListItem', slot);\n}\nconst listItemClasses = generateUtilityClasses('MuiListItem', ['root', 'container', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'padding', 'button', 'secondaryAction', 'selected']);\nexport default listItemClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from '../List/ListContext';\nimport { getListItemSecondaryActionClassesUtilityClass } from './listItemSecondaryActionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n disableGutters,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disableGutters && 'disableGutters']\n };\n return composeClasses(slots, getListItemSecondaryActionClassesUtilityClass, classes);\n};\n\nconst ListItemSecondaryActionRoot = styled('div', {\n name: 'MuiListItemSecondaryAction',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.disableGutters && styles.disableGutters];\n }\n})(({\n ownerState\n}) => _extends({\n position: 'absolute',\n right: 16,\n top: '50%',\n transform: 'translateY(-50%)'\n}, ownerState.disableGutters && {\n right: 0\n}));\n/**\n * Must be used as the last child of ListItem to function properly.\n */\n\nconst ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListItemSecondaryAction'\n });\n\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const context = React.useContext(ListContext);\n\n const ownerState = _extends({}, props, {\n disableGutters: context.disableGutters\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListItemSecondaryActionRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component, normally an `IconButton` or selection control.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default ListItemSecondaryAction;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"],\n _excluded2 = [\"alignItems\", \"autoFocus\", \"button\", \"children\", \"className\", \"component\", \"components\", \"componentsProps\", \"ContainerComponent\", \"ContainerProps\", \"dense\", \"disabled\", \"disableGutters\", \"disablePadding\", \"divider\", \"focusVisibleClassName\", \"secondaryAction\", \"selected\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses, isHostComponent } from '@mui/base';\nimport { chainPropTypes, elementTypeAcceptingRef } from '@mui/utils';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport isMuiElement from '../utils/isMuiElement';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport ListContext from '../List/ListContext';\nimport listItemClasses, { getListItemUtilityClass } from './listItemClasses';\nimport { listItemButtonClasses } from '../ListItemButton';\nimport ListItemSecondaryAction from '../ListItemSecondaryAction';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters, !ownerState.disablePadding && styles.padding, ownerState.button && styles.button, ownerState.hasSecondaryAction && styles.secondaryAction];\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n alignItems,\n button,\n classes,\n dense,\n disabled,\n disableGutters,\n disablePadding,\n divider,\n hasSecondaryAction,\n selected\n } = ownerState;\n const slots = {\n root: ['root', dense && 'dense', !disableGutters && 'gutters', !disablePadding && 'padding', divider && 'divider', disabled && 'disabled', button && 'button', alignItems === 'flex-start' && 'alignItemsFlexStart', hasSecondaryAction && 'secondaryAction', selected && 'selected'],\n container: ['container']\n };\n return composeClasses(slots, getListItemUtilityClass, classes);\n};\n\nexport const ListItemRoot = styled('div', {\n name: 'MuiListItem',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n position: 'relative',\n textDecoration: 'none',\n width: '100%',\n boxSizing: 'border-box',\n textAlign: 'left'\n}, !ownerState.disablePadding && _extends({\n paddingTop: 8,\n paddingBottom: 8\n}, ownerState.dense && {\n paddingTop: 4,\n paddingBottom: 4\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, !!ownerState.secondaryAction && {\n // Add some space to avoid collision as `ListItemSecondaryAction`\n // is absolutely positioned.\n paddingRight: 48\n}), !!ownerState.secondaryAction && {\n [`& > .${listItemButtonClasses.root}`]: {\n paddingRight: 48\n }\n}, {\n [`&.${listItemClasses.focusVisible}`]: {\n backgroundColor: theme.palette.action.focus\n },\n [`&.${listItemClasses.selected}`]: {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${listItemClasses.focusVisible}`]: {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n },\n [`&.${listItemClasses.disabled}`]: {\n opacity: theme.palette.action.disabledOpacity\n }\n}, ownerState.alignItems === 'flex-start' && {\n alignItems: 'flex-start'\n}, ownerState.divider && {\n borderBottom: `1px solid ${theme.palette.divider}`,\n backgroundClip: 'padding-box'\n}, ownerState.button && {\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shortest\n }),\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: theme.palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${listItemClasses.selected}:hover`]: {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n }\n}, ownerState.hasSecondaryAction && {\n // Add some space to avoid collision as `ListItemSecondaryAction`\n // is absolutely positioned.\n paddingRight: 48\n}));\nconst ListItemContainer = styled('li', {\n name: 'MuiListItem',\n slot: 'Container',\n overridesResolver: (props, styles) => styles.container\n})({\n position: 'relative'\n});\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\n\nconst ListItem = /*#__PURE__*/React.forwardRef(function ListItem(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListItem'\n });\n\n const {\n alignItems = 'center',\n autoFocus = false,\n button = false,\n children: childrenProp,\n className,\n component: componentProp,\n components = {},\n componentsProps = {},\n ContainerComponent = 'li',\n ContainerProps: {\n className: ContainerClassName\n } = {},\n dense = false,\n disabled = false,\n disableGutters = false,\n disablePadding = false,\n divider = false,\n focusVisibleClassName,\n secondaryAction,\n selected = false\n } = props,\n ContainerProps = _objectWithoutPropertiesLoose(props.ContainerProps, _excluded),\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n\n const context = React.useContext(ListContext);\n const childContext = {\n dense: dense || context.dense || false,\n alignItems,\n disableGutters\n };\n const listItemRef = React.useRef(null);\n useEnhancedEffect(() => {\n if (autoFocus) {\n if (listItemRef.current) {\n listItemRef.current.focus();\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('MUI: Unable to set focus to a ListItem whose component has not been rendered.');\n }\n }\n }, [autoFocus]);\n const children = React.Children.toArray(childrenProp); // v4 implementation, deprecated in v5, will be removed in v6\n\n const hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n\n const ownerState = _extends({}, props, {\n alignItems,\n autoFocus,\n button,\n dense: childContext.dense,\n disabled,\n disableGutters,\n disablePadding,\n divider,\n hasSecondaryAction,\n selected\n });\n\n const classes = useUtilityClasses(ownerState);\n const handleRef = useForkRef(listItemRef, ref);\n const Root = components.Root || ListItemRoot;\n const rootProps = componentsProps.root || {};\n\n const componentProps = _extends({\n className: clsx(classes.root, rootProps.className, className),\n disabled\n }, other);\n\n let Component = componentProp || 'li';\n\n if (button) {\n componentProps.component = componentProp || 'div';\n componentProps.focusVisibleClassName = clsx(listItemClasses.focusVisible, focusVisibleClassName);\n Component = ButtonBase;\n } // v4 implementation, deprecated in v5, will be removed in v6\n\n\n if (hasSecondaryAction) {\n // Use div by default.\n Component = !componentProps.component && !componentProp ? 'div' : Component; // Avoid nesting of li > li.\n\n if (ContainerComponent === 'li') {\n if (Component === 'li') {\n Component = 'div';\n } else if (componentProps.component === 'li') {\n componentProps.component = 'div';\n }\n }\n\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsxs(ListItemContainer, _extends({\n as: ContainerComponent,\n className: clsx(classes.container, ContainerClassName),\n ref: handleRef,\n ownerState: ownerState\n }, ContainerProps, {\n children: [/*#__PURE__*/_jsx(Root, _extends({}, rootProps, !isHostComponent(Root) && {\n as: Component,\n ownerState: _extends({}, ownerState, rootProps.ownerState)\n }, componentProps, {\n children: children\n })), children.pop()]\n }))\n });\n }\n\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {\n as: Component,\n ref: handleRef,\n ownerState: ownerState\n }, !isHostComponent(Root) && {\n ownerState: _extends({}, ownerState, rootProps.ownerState)\n }, componentProps, {\n children: [children, secondaryAction && /*#__PURE__*/_jsx(ListItemSecondaryAction, {\n children: secondaryAction\n })]\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Defines the `align-items` style property.\n * @default 'center'\n */\n alignItems: PropTypes.oneOf(['center', 'flex-start']),\n\n /**\n * If `true`, the list item is focused during the first mount.\n * Focus will also be triggered if the value changes from false to true.\n * @default false\n * @deprecated checkout [ListItemButton](/api/list-item-button/) instead\n */\n autoFocus: PropTypes.bool,\n\n /**\n * If `true`, the list item is a button (using `ButtonBase`). Props intended\n * for `ButtonBase` can then be applied to `ListItem`.\n * @default false\n * @deprecated checkout [ListItemButton](/api/list-item-button/) instead\n */\n button: PropTypes.bool,\n\n /**\n * The content of the component if a `ListItemSecondaryAction` is used it must\n * be the last child.\n */\n children: chainPropTypes(PropTypes.node, props => {\n const children = React.Children.toArray(props.children); // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n\n let secondaryActionIndex = -1;\n\n for (let i = children.length - 1; i >= 0; i -= 1) {\n const child = children[i];\n\n if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n secondaryActionIndex = i;\n break;\n }\n } // is ListItemSecondaryAction the last child of ListItem\n\n\n if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n return new Error('MUI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n }\n\n return null;\n }),\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * The components used for each slot inside the InputBase.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n\n /**\n * The props used for each slot inside the Input.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * The container component used when a `ListItemSecondaryAction` is the last child.\n * @default 'li'\n * @deprecated\n */\n ContainerComponent: elementTypeAcceptingRef,\n\n /**\n * Props applied to the container component if used.\n * @default {}\n * @deprecated\n */\n ContainerProps: PropTypes.object,\n\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n * The prop defaults to the value inherited from the parent List component.\n * @default false\n */\n dense: PropTypes.bool,\n\n /**\n * If `true`, the component is disabled.\n * @default false\n * @deprecated checkout [ListItemButton](/api/list-item-button/) instead\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the left and right padding is removed.\n * @default false\n */\n disableGutters: PropTypes.bool,\n\n /**\n * If `true`, all padding is removed.\n * @default false\n */\n disablePadding: PropTypes.bool,\n\n /**\n * If `true`, a 1px light border is added to the bottom of the list item.\n * @default false\n */\n divider: PropTypes.bool,\n\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * The element to display at the end of ListItem.\n */\n secondaryAction: PropTypes.node,\n\n /**\n * Use to apply selected styling.\n * @default false\n * @deprecated checkout [ListItemButton](/api/list-item-button/) instead\n */\n selected: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItem;","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}","const hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@mui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested'; // To support composition of theme.\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n if (typeof localTheme === 'function') {\n const mergedTheme = localTheme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!mergedTheme) {\n console.error(['MUI: You should return an object from your theme function, i.e.', ' ({})} />'].join('\\n'));\n }\n }\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, localTheme);\n}\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\n\n\nfunction ThemeProvider(props) {\n const {\n children,\n theme: localTheme\n } = props;\n const outerTheme = useTheme();\n\n if (process.env.NODE_ENV !== 'production') {\n if (outerTheme === null && typeof localTheme === 'function') {\n console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', ' outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n\n const theme = React.useMemo(() => {\n const output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n\n if (output != null) {\n output[nested] = outerTheme !== null;\n }\n\n return output;\n }, [localTheme, outerTheme]);\n return /*#__PURE__*/_jsx(ThemeContext.Provider, {\n value: theme,\n children: children\n });\n}\n\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\n\nexport default ThemeProvider;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider as MuiThemeProvider } from '@mui/private-theming';\nimport { exactProp } from '@mui/utils';\nimport { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';\nimport useTheme from '../useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction InnerThemeProvider(props) {\n const theme = useTheme();\n return /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {\n value: typeof theme === 'object' ? theme : {},\n children: props.children\n });\n}\n\nprocess.env.NODE_ENV !== \"production\" ? InnerThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node\n} : void 0;\n/**\n * This component makes the `theme` available down the React tree.\n * It should preferably be used at **the root of your component tree**.\n */\n\nfunction ThemeProvider(props) {\n const {\n children,\n theme: localTheme\n } = props;\n return /*#__PURE__*/_jsx(MuiThemeProvider, {\n theme: localTheme,\n children: /*#__PURE__*/_jsx(InnerThemeProvider, {\n children: children\n })\n });\n}\n\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\n\nexport default ThemeProvider;","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\n\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The previous `parse` implementation was renamed to `parseISO`.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * parseISO('2016-01-01')\n * ```\n *\n * - `parseISO` now validates separate date and time values in ISO-8601 strings\n * and returns `Invalid Date` if the date is invalid.\n *\n * ```javascript\n * parseISO('2018-13-32')\n * //=> Invalid Date\n * ```\n *\n * - `parseISO` now doesn't fall back to `new Date` constructor\n * if it fails to parse a string argument. Instead, it returns `Invalid Date`.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? 2 : toInteger(options.additionalDigits);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString; // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null; // either year or century is null, not both\n\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import addDays from 'date-fns/addDays';\nimport addSeconds from 'date-fns/addSeconds';\nimport addMinutes from 'date-fns/addMinutes';\nimport addHours from 'date-fns/addHours';\nimport addWeeks from 'date-fns/addWeeks';\nimport addMonths from 'date-fns/addMonths';\nimport addYears from 'date-fns/addYears';\nimport differenceInYears from 'date-fns/differenceInYears';\nimport differenceInQuarters from 'date-fns/differenceInQuarters';\nimport differenceInMonths from 'date-fns/differenceInMonths';\nimport differenceInWeeks from 'date-fns/differenceInWeeks';\nimport differenceInDays from 'date-fns/differenceInDays';\nimport differenceInHours from 'date-fns/differenceInHours';\nimport differenceInMinutes from 'date-fns/differenceInMinutes';\nimport differenceInSeconds from 'date-fns/differenceInSeconds';\nimport differenceInMilliseconds from 'date-fns/differenceInMilliseconds';\nimport eachDayOfInterval from 'date-fns/eachDayOfInterval';\nimport endOfDay from 'date-fns/endOfDay';\nimport endOfWeek from 'date-fns/endOfWeek';\nimport endOfYear from 'date-fns/endOfYear';\nimport format from 'date-fns/format';\nimport getHours from 'date-fns/getHours';\nimport getSeconds from 'date-fns/getSeconds';\nimport getYear from 'date-fns/getYear';\nimport isAfter from 'date-fns/isAfter';\nimport isBefore from 'date-fns/isBefore';\nimport isEqual from 'date-fns/isEqual';\nimport isSameDay from 'date-fns/isSameDay';\nimport isSameYear from 'date-fns/isSameYear';\nimport isSameMonth from 'date-fns/isSameMonth';\nimport isSameHour from 'date-fns/isSameHour';\nimport isValid from 'date-fns/isValid';\nimport dateFnsParse from 'date-fns/parse';\nimport setHours from 'date-fns/setHours';\nimport setMinutes from 'date-fns/setMinutes';\nimport setMonth from 'date-fns/setMonth';\nimport getDay from 'date-fns/getDay';\nimport getDaysInMonth from 'date-fns/getDaysInMonth';\nimport setSeconds from 'date-fns/setSeconds';\nimport setYear from 'date-fns/setYear';\nimport startOfDay from 'date-fns/startOfDay';\nimport startOfMonth from 'date-fns/startOfMonth';\nimport endOfMonth from 'date-fns/endOfMonth';\nimport startOfWeek from 'date-fns/startOfWeek';\nimport startOfYear from 'date-fns/startOfYear';\nimport parseISO from 'date-fns/parseISO';\nimport formatISO from 'date-fns/formatISO';\nimport isWithinInterval from 'date-fns/isWithinInterval';\nimport longFormatters from 'date-fns/_lib/format/longFormatters';\nimport defaultLocale from 'date-fns/locale/en-US';\n\nvar defaultFormats = {\n dayOfMonth: \"d\",\n fullDate: \"PP\",\n fullDateWithWeekday: \"PPPP\",\n fullDateTime: \"PP p\",\n fullDateTime12h: \"PP hh:mm aaa\",\n fullDateTime24h: \"PP HH:mm\",\n fullTime: \"p\",\n fullTime12h: \"hh:mm aaa\",\n fullTime24h: \"HH:mm\",\n hours12h: \"hh\",\n hours24h: \"HH\",\n keyboardDate: \"P\",\n keyboardDateTime: \"P p\",\n keyboardDateTime12h: \"P hh:mm aaa\",\n keyboardDateTime24h: \"P HH:mm\",\n minutes: \"mm\",\n month: \"LLLL\",\n monthAndDate: \"MMMM d\",\n monthAndYear: \"LLLL yyyy\",\n monthShort: \"MMM\",\n weekday: \"EEEE\",\n weekdayShort: \"EEE\",\n normalDate: \"d MMMM\",\n normalDateWithWeekday: \"EEE, MMM d\",\n seconds: \"ss\",\n shortDate: \"MMM d\",\n year: \"yyyy\",\n};\nvar DateFnsUtils = /** @class */ (function () {\n function DateFnsUtils(_a) {\n var _this = this;\n var _b = _a === void 0 ? {} : _a, locale = _b.locale, formats = _b.formats;\n this.lib = \"date-fns\";\n // Note: date-fns input types are more lenient than this adapter, so we need to expose our more\n // strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage.\n this.is12HourCycleInCurrentLocale = function () {\n if (_this.locale) {\n return /a/.test(_this.locale.formatLong.time());\n }\n // By default date-fns is using en-US locale with am/pm enabled\n return true;\n };\n this.getFormatHelperText = function (format) {\n // @see https://github.com/date-fns/date-fns/blob/master/src/format/index.js#L31\n var longFormatRegexp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n var locale = _this.locale || defaultLocale;\n return format\n .match(longFormatRegexp)\n .map(function (token) {\n var firstCharacter = token[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(token, locale.formatLong, {});\n }\n return token;\n })\n .join(\"\")\n .replace(/(aaa|aa|a)/g, \"(a|p)m\")\n .toLocaleLowerCase();\n };\n this.parseISO = function (isoString) {\n return parseISO(isoString);\n };\n this.toISO = function (value) {\n return formatISO(value, { format: \"extended\" });\n };\n this.getCurrentLocaleCode = function () {\n var _a;\n return ((_a = _this.locale) === null || _a === void 0 ? void 0 : _a.code) || \"en-US\";\n };\n this.addSeconds = function (value, count) {\n return addSeconds(value, count);\n };\n this.addMinutes = function (value, count) {\n return addMinutes(value, count);\n };\n this.addHours = function (value, count) {\n return addHours(value, count);\n };\n this.addDays = function (value, count) {\n return addDays(value, count);\n };\n this.addWeeks = function (value, count) {\n return addWeeks(value, count);\n };\n this.addMonths = function (value, count) {\n return addMonths(value, count);\n };\n this.isValid = function (value) {\n return isValid(_this.date(value));\n };\n this.getDiff = function (value, comparing, unit) {\n switch (unit) {\n case \"years\":\n return differenceInYears(value, _this.date(comparing));\n case \"quarters\":\n return differenceInQuarters(value, _this.date(comparing));\n case \"months\":\n return differenceInMonths(value, _this.date(comparing));\n case \"weeks\":\n return differenceInWeeks(value, _this.date(comparing));\n case \"days\":\n return differenceInDays(value, _this.date(comparing));\n case \"hours\":\n return differenceInHours(value, _this.date(comparing));\n case \"minutes\":\n return differenceInMinutes(value, _this.date(comparing));\n case \"seconds\":\n return differenceInSeconds(value, _this.date(comparing));\n default: {\n return differenceInMilliseconds(value, _this.date(comparing));\n }\n }\n };\n this.isAfter = function (value, comparing) {\n return isAfter(value, comparing);\n };\n this.isBefore = function (value, comparing) {\n return isBefore(value, comparing);\n };\n this.startOfDay = function (value) {\n return startOfDay(value);\n };\n this.endOfDay = function (value) {\n return endOfDay(value);\n };\n this.getHours = function (value) {\n return getHours(value);\n };\n this.setHours = function (value, count) {\n return setHours(value, count);\n };\n this.setMinutes = function (value, count) {\n return setMinutes(value, count);\n };\n this.getSeconds = function (value) {\n return getSeconds(value);\n };\n this.setSeconds = function (value, count) {\n return setSeconds(value, count);\n };\n this.isSameDay = function (value, comparing) {\n return isSameDay(value, comparing);\n };\n this.isSameMonth = function (value, comparing) {\n return isSameMonth(value, comparing);\n };\n this.isSameYear = function (value, comparing) {\n return isSameYear(value, comparing);\n };\n this.isSameHour = function (value, comparing) {\n return isSameHour(value, comparing);\n };\n this.startOfYear = function (value) {\n return startOfYear(value);\n };\n this.endOfYear = function (value) {\n return endOfYear(value);\n };\n this.startOfMonth = function (value) {\n return startOfMonth(value);\n };\n this.endOfMonth = function (value) {\n return endOfMonth(value);\n };\n this.startOfWeek = function (value) {\n return startOfWeek(value, { locale: _this.locale });\n };\n this.endOfWeek = function (value) {\n return endOfWeek(value, { locale: _this.locale });\n };\n this.getYear = function (value) {\n return getYear(value);\n };\n this.setYear = function (value, count) {\n return setYear(value, count);\n };\n this.date = function (value) {\n if (typeof value === \"undefined\") {\n return new Date();\n }\n if (value === null) {\n return null;\n }\n return new Date(value);\n };\n this.toJsDate = function (value) {\n return value;\n };\n this.parse = function (value, formatString) {\n if (value === \"\") {\n return null;\n }\n return dateFnsParse(value, formatString, new Date(), { locale: _this.locale });\n };\n this.format = function (date, formatKey) {\n return _this.formatByString(date, _this.formats[formatKey]);\n };\n this.formatByString = function (date, formatString) {\n return format(date, formatString, { locale: _this.locale });\n };\n this.isEqual = function (date, comparing) {\n if (date === null && comparing === null) {\n return true;\n }\n return isEqual(date, comparing);\n };\n this.isNull = function (date) {\n return date === null;\n };\n this.isAfterDay = function (date, value) {\n return isAfter(date, endOfDay(value));\n };\n this.isBeforeDay = function (date, value) {\n return isBefore(date, startOfDay(value));\n };\n this.isBeforeYear = function (date, value) {\n return isBefore(date, startOfYear(value));\n };\n this.isAfterYear = function (date, value) {\n return isAfter(date, endOfYear(value));\n };\n this.isWithinRange = function (date, _a) {\n var start = _a[0], end = _a[1];\n return isWithinInterval(date, { start: start, end: end });\n };\n this.formatNumber = function (numberToFormat) {\n return numberToFormat;\n };\n this.getMinutes = function (date) {\n return date.getMinutes();\n };\n this.getMonth = function (date) {\n return date.getMonth();\n };\n this.getDaysInMonth = function (date) {\n return getDaysInMonth(date);\n };\n this.setMonth = function (date, count) {\n return setMonth(date, count);\n };\n this.getMeridiemText = function (ampm) {\n return ampm === \"am\" ? \"AM\" : \"PM\";\n };\n this.getNextMonth = function (date) {\n return addMonths(date, 1);\n };\n this.getPreviousMonth = function (date) {\n return addMonths(date, -1);\n };\n this.getMonthArray = function (date) {\n var firstMonth = startOfYear(date);\n var monthArray = [firstMonth];\n while (monthArray.length < 12) {\n var prevMonth = monthArray[monthArray.length - 1];\n monthArray.push(_this.getNextMonth(prevMonth));\n }\n return monthArray;\n };\n this.mergeDateAndTime = function (date, time) {\n return _this.setSeconds(_this.setMinutes(_this.setHours(date, _this.getHours(time)), _this.getMinutes(time)), _this.getSeconds(time));\n };\n this.getWeekdays = function () {\n var now = new Date();\n return eachDayOfInterval({\n start: startOfWeek(now, { locale: _this.locale }),\n end: endOfWeek(now, { locale: _this.locale }),\n }).map(function (day) { return _this.formatByString(day, \"EEEEEE\"); });\n };\n this.getWeekArray = function (date) {\n var start = startOfWeek(startOfMonth(date), { locale: _this.locale });\n var end = endOfWeek(endOfMonth(date), { locale: _this.locale });\n var count = 0;\n var current = start;\n var nestedWeeks = [];\n var lastDay = null;\n while (isBefore(current, end)) {\n var weekNumber = Math.floor(count / 7);\n nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];\n var day = getDay(current);\n if (lastDay !== day) {\n lastDay = day;\n nestedWeeks[weekNumber].push(current);\n count += 1;\n }\n current = addDays(current, 1);\n }\n return nestedWeeks;\n };\n this.getYearRange = function (start, end) {\n var startDate = startOfYear(start);\n var endDate = endOfYear(end);\n var years = [];\n var current = startDate;\n while (isBefore(current, endDate)) {\n years.push(current);\n current = addYears(current, 1);\n }\n return years;\n };\n this.locale = locale;\n this.formats = Object.assign({}, defaultFormats, formats);\n }\n return DateFnsUtils;\n}());\n\nexport { DateFnsUtils as default };\n","import toDate from \"../toDate/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time with local time zone, or both.\n * @returns {String} the formatted date string (in local time zone)\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.represenation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\n\nexport default function formatISO(date, options) {\n requiredArgs(1, arguments);\n var originalDate = toDate(date);\n\n if (isNaN(originalDate.getTime())) {\n throw new RangeError('Invalid time value');\n }\n\n var format = !(options !== null && options !== void 0 && options.format) ? 'extended' : String(options.format);\n var representation = !(options !== null && options !== void 0 && options.representation) ? 'complete' : String(options.representation);\n\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n\n var result = '';\n var tzOffset = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : ''; // Representation is either 'date' or 'complete'\n\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4); // yyyyMMdd or yyyy-MM-dd.\n\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n } // Representation is either 'time' or 'complete'\n\n\n if (representation !== 'date') {\n // Add the timezone.\n var offset = originalDate.getTimezoneOffset();\n\n if (offset !== 0) {\n var absoluteOffset = Math.abs(offset);\n var hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2); // If less than 0, the sign is +, because it is ahead of time.\n\n var sign = offset < 0 ? '+' : '-';\n tzOffset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n tzOffset = 'Z';\n }\n\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2); // If there's also date, separate it with time with 'T'\n\n var separator = result === '' ? '' : 'T'; // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n\n var time = [hour, minute, second].join(timeDelimiter); // HHmmss or HH:mm:ss.\n\n result = \"\".concat(result).concat(separator).concat(time).concat(tzOffset);\n }\n\n return result;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"classes\", \"className\", \"displayIcon\", \"expansionIcon\", \"icon\", \"label\", \"nodeId\", \"onClick\", \"onMouseDown\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport useTreeItem from './useTreeItem';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst TreeItemContent = /*#__PURE__*/React.forwardRef(function TreeItemContent(props, ref) {\n const {\n classes,\n className,\n displayIcon,\n expansionIcon,\n icon: iconProp,\n label,\n nodeId,\n onClick,\n onMouseDown\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n disabled,\n expanded,\n selected,\n focused,\n handleExpansion,\n handleSelection,\n preventSelection\n } = useTreeItem(nodeId);\n const icon = iconProp || expansionIcon || displayIcon;\n\n const handleMouseDown = event => {\n preventSelection(event);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n };\n\n const handleClick = event => {\n handleExpansion(event);\n handleSelection(event);\n\n if (onClick) {\n onClick(event);\n }\n };\n\n return (\n /*#__PURE__*/\n\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions -- Key event is handled by the TreeView */\n _jsxs(\"div\", _extends({\n className: clsx(className, classes.root, expanded && classes.expanded, selected && classes.selected, focused && classes.focused, disabled && classes.disabled),\n onClick: handleClick,\n onMouseDown: handleMouseDown,\n ref: ref\n }, other, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classes.iconContainer,\n children: icon\n }), /*#__PURE__*/_jsx(\"div\", {\n className: classes.label,\n children: label\n })]\n }))\n );\n});\nprocess.env.NODE_ENV !== \"production\" ? TreeItemContent.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * className applied to the root element.\n */\n className: PropTypes.string,\n\n /**\n * The icon to display next to the tree node's label. Either a parent or end icon.\n */\n displayIcon: PropTypes.node,\n\n /**\n * The icon to display next to the tree node's label. Either an expansion or collapse icon.\n */\n expansionIcon: PropTypes.node,\n\n /**\n * The icon to display next to the tree node's label.\n */\n icon: PropTypes.node,\n\n /**\n * The tree node label.\n */\n label: PropTypes.node,\n\n /**\n * The id of the node.\n */\n nodeId: PropTypes.string.isRequired,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func\n} : void 0;\nexport default TreeItemContent;","import * as React from 'react';\nimport TreeViewContext from '../TreeView/TreeViewContext';\nexport default function useTreeItem(nodeId) {\n const {\n focus,\n isExpanded,\n isExpandable,\n isFocused,\n isDisabled,\n isSelected,\n multiSelect,\n selectNode,\n selectRange,\n toggleExpansion\n } = React.useContext(TreeViewContext);\n const expandable = isExpandable ? isExpandable(nodeId) : false;\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n\n const handleExpansion = event => {\n if (!disabled) {\n if (!focused) {\n focus(event, nodeId);\n }\n\n const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey); // If already expanded and trying to toggle selection don't close\n\n if (expandable && !(multiple && isExpanded(nodeId))) {\n toggleExpansion(event, nodeId);\n }\n }\n };\n\n const handleSelection = event => {\n if (!disabled) {\n if (!focused) {\n focus(event, nodeId);\n }\n\n const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n selectRange(event, {\n end: nodeId\n });\n } else {\n selectNode(event, nodeId, true);\n }\n } else {\n selectNode(event, nodeId);\n }\n }\n };\n\n const preventSelection = event => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n };\n\n return {\n disabled,\n expanded,\n selected,\n focused,\n handleExpansion,\n handleSelection,\n preventSelection\n };\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/core';\nexport function getTreeItemUtilityClass(slot) {\n return generateUtilityClass('MuiTreeItem', slot);\n}\nconst treeItemClasses = generateUtilityClasses('MuiTreeItem', ['root', 'group', 'content', 'expanded', 'selected', 'focused', 'disabled', 'iconContainer', 'label']);\nexport default treeItemClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"collapseIcon\", \"ContentComponent\", \"ContentProps\", \"endIcon\", \"expandIcon\", \"disabled\", \"icon\", \"id\", \"label\", \"nodeId\", \"onClick\", \"onMouseDown\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { elementTypeAcceptingRef } from '@mui/utils';\nimport Collapse from '@mui/material/Collapse';\nimport { alpha, styled, useThemeProps } from '@mui/material/styles';\nimport { ownerDocument, useForkRef, unsupportedProp } from '@mui/material/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/core';\nimport TreeViewContext from '../TreeView/TreeViewContext';\nimport { DescendantProvider, useDescendant } from '../TreeView/descendants';\nimport TreeItemContent from './TreeItemContent';\nimport treeItemClasses, { getTreeItemUtilityClass } from './treeItemClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n content: ['content'],\n expanded: ['expanded'],\n selected: ['selected'],\n focused: ['focused'],\n disabled: ['disabled'],\n iconContainer: ['iconContainer'],\n label: ['label'],\n group: ['group']\n };\n return composeClasses(slots, getTreeItemUtilityClass, classes);\n};\n\nconst TreeItemRoot = styled('li', {\n name: 'MuiTreeItem',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n outline: 0\n});\nconst StyledTreeItemContent = styled(TreeItemContent, {\n name: 'MuiTreeItem',\n slot: 'Content',\n overridesResolver: (props, styles) => {\n return [styles.content, styles.iconContainer && {\n [`& .${treeItemClasses.iconContainer}`]: styles.iconContainer\n }, styles.label && {\n [`& .${treeItemClasses.label}`]: styles.label\n }];\n }\n})(({\n theme\n}) => ({\n padding: '0 8px',\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n WebkitTapHighlightColor: 'transparent',\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${treeItemClasses.disabled}`]: {\n opacity: theme.palette.action.disabledOpacity,\n backgroundColor: 'transparent'\n },\n [`&.${treeItemClasses.focused}`]: {\n backgroundColor: theme.palette.action.focus\n },\n [`&.${treeItemClasses.selected}`]: {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n },\n [`&.${treeItemClasses.focused}`]: {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n },\n [`& .${treeItemClasses.iconContainer}`]: {\n marginRight: 4,\n width: 15,\n display: 'flex',\n flexShrink: 0,\n justifyContent: 'center',\n '& svg': {\n fontSize: 18\n }\n },\n [`& .${treeItemClasses.label}`]: _extends({\n width: '100%',\n // fixes overflow - see https://github.com/mui-org/material-ui/issues/27372\n minWidth: 0,\n paddingLeft: 4,\n position: 'relative'\n }, theme.typography.body1)\n}));\nconst TreeItemGroup = styled(Collapse, {\n name: 'MuiTreeItem',\n slot: 'Group',\n overridesResolver: (props, styles) => styles.group\n})({\n margin: 0,\n padding: 0,\n marginLeft: 17\n});\nconst TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTreeItem'\n });\n\n const {\n children,\n className,\n collapseIcon,\n ContentComponent = TreeItemContent,\n ContentProps,\n endIcon,\n expandIcon,\n disabled: disabledProp,\n icon,\n id: idProp,\n label,\n nodeId,\n onClick,\n onMouseDown,\n TransitionComponent = Collapse,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n icons: contextIcons = {},\n focus,\n isExpanded,\n isFocused,\n isSelected,\n isDisabled,\n multiSelect,\n disabledItemsFocusable,\n mapFirstChar,\n unMapFirstChar,\n registerNode,\n unregisterNode,\n treeId\n } = React.useContext(TreeViewContext);\n let id = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = React.useState(null);\n const contentRef = React.useRef(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n const descendant = React.useMemo(() => ({\n element: treeitemElement,\n id: nodeId\n }), [nodeId, treeitemElement]);\n const {\n index,\n parentId\n } = useDescendant(descendant);\n const expandable = Boolean(Array.isArray(children) ? children.length : children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const ownerState = _extends({}, props, {\n expanded,\n focused,\n selected,\n disabled\n });\n\n const classes = useUtilityClasses(ownerState);\n let displayIcon;\n let expansionIcon;\n\n if (expandable) {\n if (!expanded) {\n expansionIcon = expandIcon || contextIcons.defaultExpandIcon;\n } else {\n expansionIcon = collapseIcon || contextIcons.defaultCollapseIcon;\n }\n }\n\n if (expandable) {\n displayIcon = contextIcons.defaultParentIcon;\n } else {\n displayIcon = endIcon || contextIcons.defaultEndIcon;\n }\n\n React.useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n expandable,\n disabled: disabledProp\n });\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [registerNode, unregisterNode, parentId, index, nodeId, expandable, disabledProp, id]);\n React.useEffect(() => {\n if (mapFirstChar && unMapFirstChar && label) {\n mapFirstChar(nodeId, contentRef.current.textContent.substring(0, 1).toLowerCase());\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n let ariaSelected;\n\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n function handleFocus(event) {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n ownerDocument(event.target).getElementById(treeId).focus({\n preventScroll: true\n });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n\n if (!focused && event.currentTarget === event.target && !unfocusable) {\n focus(event, nodeId);\n }\n }\n\n return /*#__PURE__*/_jsxs(TreeItemRoot, _extends({\n className: clsx(classes.root, className),\n role: \"treeitem\",\n \"aria-expanded\": expandable ? expanded : null,\n \"aria-selected\": ariaSelected,\n \"aria-disabled\": disabled || null,\n ref: handleRef,\n id: id,\n tabIndex: -1\n }, other, {\n ownerState: ownerState,\n onFocus: handleFocus,\n children: [/*#__PURE__*/_jsx(StyledTreeItemContent, _extends({\n as: ContentComponent,\n ref: contentRef,\n classes: {\n root: classes.content,\n expanded: classes.expanded,\n selected: classes.selected,\n focused: classes.focused,\n disabled: classes.disabled,\n iconContainer: classes.iconContainer,\n label: classes.label\n },\n label: label,\n nodeId: nodeId,\n onClick: onClick,\n onMouseDown: onMouseDown,\n icon: icon,\n expansionIcon: expansionIcon,\n displayIcon: displayIcon,\n ownerState: ownerState\n }, ContentProps)), children && /*#__PURE__*/_jsx(DescendantProvider, {\n id: nodeId,\n children: /*#__PURE__*/_jsx(TreeItemGroup, _extends({\n as: TransitionComponent,\n unmountOnExit: true,\n className: classes.group,\n in: expanded,\n component: \"ul\",\n role: \"group\"\n }, TransitionProps, {\n children: children\n }))\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TreeItem.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The icon used to collapse the node.\n */\n collapseIcon: PropTypes.node,\n\n /**\n * The component used for the content node.\n * @default TreeItemContent\n */\n ContentComponent: elementTypeAcceptingRef,\n\n /**\n * Props applied to ContentComponent\n */\n ContentProps: PropTypes.object,\n\n /**\n * If `true`, the node is disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * The icon displayed next to a end node.\n */\n endIcon: PropTypes.node,\n\n /**\n * The icon used to expand the node.\n */\n expandIcon: PropTypes.node,\n\n /**\n * The icon to display next to the tree node's label.\n */\n icon: PropTypes.node,\n\n /**\n * @ignore\n */\n id: PropTypes.string,\n\n /**\n * The tree node label.\n */\n label: PropTypes.node,\n\n /**\n * The id of the node.\n */\n nodeId: PropTypes.string.isRequired,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n\n /**\n * This prop isn't supported.\n * Use the `onNodeFocus` callback on the tree if you need to monitor a node's focus.\n */\n onFocus: unsupportedProp,\n\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.object,\n\n /**\n * The component used for the transition.\n * [Follow this guide](/components/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Collapse\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition) component.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default TreeItem;","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 var dataRows = this.parent.vcRows.filter(function (row) { return row.isDataRow; });\n if ((this.parent.isManualRefresh && dataRows.length === data['records'].length) || !this.parent.isManualRefresh) {\n return result = this.parent.vcRows;\n }\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 (foreignKeyData) {\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], null, null, null, null, foreignKeyData));\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(rowObj.foreignKeyData);\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 else 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","/* eslint-disable */\nimport { createElement, Browser, isBlazor, isNullOrUndefined, closest } from '@syncfusion/ej2-base';\nimport { Toolbar as Tool, Menu } from '@syncfusion/ej2-navigations';\n// eslint-disable-next-line max-len\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { ColorPicker, Slider } from '@syncfusion/ej2-inputs';\nimport { cloneObject } from '../drawing/drawing-util';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { Query } from '@syncfusion/ej2-data';\nimport { DynamicStampItem, SignStampItem, StandardBusinessStampItem } from '../base/types';\n/**\n * @hidden\n */\nvar AnnotationToolbar = /** @class */ (function () {\n function AnnotationToolbar(viewer, viewerBase, toolbar) {\n var _this = this;\n this.toolbarBorderHeight = 1;\n /**\n * @private\n */\n this.isToolbarHidden = false;\n /**\n * @private\n */\n this.isMobileAnnotEnabled = false;\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n this.isStrikethroughEnabled = false;\n this.isHighlightBtnVisible = true;\n this.isCommentBtnVisible = true;\n this.isUnderlineBtnVisible = true;\n this.isStrikethroughBtnVisible = true;\n this.isColorToolVisible = true;\n this.isOpacityToolVisible = true;\n this.isDeleteAnnotationToolVisible = true;\n this.isCurrentAnnotationOpacitySet = false;\n this.isStampBtnVisible = false;\n this.isShapeBtnVisible = false;\n this.isSignatureBtnVisible = false;\n this.isInkBtnVisible = false;\n this.isFontFamilyToolVisible = false;\n this.isFontSizeToolVisible = false;\n this.isFontAlignToolVisible = false;\n this.isFontColorToolVisible = false;\n this.isFontStylesToolVisible = false;\n this.isCommentPanelBtnVisible = false;\n this.isFreeTextBtnVisible = false;\n this.isCalibrateBtnVisible = false;\n this.isStrokeColorToolVisible = false;\n this.isThicknessToolVisible = false;\n this.stampMenu = [];\n this.stampParentID = '';\n /**\n * @private\n */\n this.inkAnnotationSelected = false;\n /**\n * @private\n */\n this.openSignaturePopup = false;\n this.isSavedSignatureClicked = false;\n this.saveSignatureCount = 0;\n this.saveInitialCount = 0;\n /**\n * @private\n */\n this.isToolbarCreated = false;\n // eslint-disable-next-line\n this.addStampImage = function (args) {\n // eslint-disable-next-line\n var proxy = _this;\n // eslint-disable-next-line\n var upoadedFiles = args.target.files;\n if (args.target.files[0] !== null) {\n var uploadedFile = upoadedFiles[0];\n _this.pdfViewer.annotationModule.stampAnnotationModule.customStampName = uploadedFile.name.split('.')[0];\n if (uploadedFile.type.split('/')[0] === 'image') {\n var reader = new FileReader();\n // eslint-disable-next-line\n reader.onload = function (e) {\n var uploadedFileUrl = e.currentTarget.result;\n proxy.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n proxy.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n proxy.pdfViewerBase.stampAdded = true;\n _this.pdfViewer.annotationModule.stampAnnotationModule.createCustomStampAnnotation(uploadedFileUrl);\n proxy.pdfViewerBase.stampAdded = false;\n };\n reader.readAsDataURL(uploadedFile);\n }\n }\n args.target.value = '';\n args.currentTarget.value = '';\n };\n this.onShapeToolbarClicked = function (args) {\n var elementId = _this.pdfViewer.element.id;\n var shapeAnnotationModule = _this.pdfViewer.annotation.shapeAnnotationModule;\n if (!Browser.isDevice) {\n _this.deselectAllItems();\n _this.resetFreeTextAnnot();\n }\n else {\n // eslint:disable-next-line\n var element = args.originalEvent.target;\n _this.pdfViewer.toolbarModule.selectItem(element.parentElement);\n }\n switch (args.originalEvent.target.id) {\n case elementId + '_shape_line':\n case elementId + '_shape_lineIcon':\n shapeAnnotationModule.setAnnotationType('Line');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.lineFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.lineStrokeColor);\n _this.handleShapeTool(elementId + '_shape_line');\n break;\n case elementId + '_shape_arrow':\n case elementId + '_shape_arrowIcon':\n shapeAnnotationModule.setAnnotationType('Arrow');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.arrowFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.arrowStrokeColor);\n _this.handleShapeTool(elementId + '_shape_arrow');\n break;\n case elementId + '_shape_rectangle':\n case elementId + '_shape_rectangleIcon':\n shapeAnnotationModule.setAnnotationType('Rectangle');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.rectangleFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.rectangleStrokeColor);\n _this.handleShapeTool(elementId + '_shape_rectangle');\n break;\n case elementId + '_shape_circle':\n case elementId + '_shape_circleIcon':\n shapeAnnotationModule.setAnnotationType('Circle');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.circleFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.circleStrokeColor);\n _this.handleShapeTool(elementId + '_shape_circle');\n break;\n case elementId + '_shape_pentagon':\n case elementId + '_shape_pentagonIcon':\n shapeAnnotationModule.setAnnotationType('Polygon');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.polygonFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.polygonStrokeColor);\n _this.handleShapeTool(elementId + '_shape_pentagon');\n break;\n }\n // this.pdfViewer.clearSelection();\n };\n this.pdfViewer = viewer;\n this.pdfViewerBase = viewerBase;\n this.primaryToolbar = toolbar;\n }\n /**\n * @private\n */\n AnnotationToolbar.prototype.initializeAnnotationToolbar = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_annotation_toolbar', className: 'e-pv-annotation-toolbar' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n this.toolbar = new Tool({\n width: '', height: '', overflowMode: 'Popup', cssClass: 'e-pv-toolbar-scroll',\n items: this.createToolbarItems(), clicked: this.onToolbarClicked.bind(this),\n created: function () {\n _this.createDropDowns();\n }\n });\n this.toolbar.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.appendTo(this.toolbarElement);\n this.afterToolbarCreation();\n this.createStampContainer();\n this.createSignContainer();\n this.applyAnnotationToolbarSettings();\n this.updateToolbarItems();\n this.showAnnotationToolbar(null, true);\n };\n AnnotationToolbar.prototype.createMobileAnnotationToolbar = function (isEnable, isPath) {\n var _this = this;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n if (this.toolbarElement == null && isEnable) {\n this.isMobileAnnotEnabled = true;\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_annotation_toolbar', className: 'e-pv-annotation-toolbar' });\n this.pdfViewerBase.viewerMainContainer.insertBefore(this.toolbarElement, this.pdfViewerBase.viewerContainer);\n this.toolbar = new Tool({\n width: '', height: '', overflowMode: 'Popup',\n items: this.createMobileToolbarItems(isPath), clicked: this.onToolbarClicked.bind(this),\n created: function () {\n _this.createDropDowns(isPath);\n }\n });\n this.toolbar.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.pdfViewerBase.navigationPane.goBackToToolbar();\n this.pdfViewer.toolbarModule.showToolbar(false);\n this.toolbar.appendTo(this.toolbarElement);\n this.deleteItem = this.pdfViewerBase.getElement('_annotation_delete');\n this.deleteItem.firstElementChild.id = this.pdfViewer.element.id + '_annotation_delete';\n }\n else if (this.toolbarElement != null) {\n if (isEnable) {\n this.isMobileAnnotEnabled = true;\n this.pdfViewerBase.navigationPane.goBackToToolbar();\n this.pdfViewer.toolbarModule.showToolbar(false);\n this.toolbarElement.style.display = 'block';\n }\n else if (!isEnable) {\n this.isMobileAnnotEnabled = false;\n this.pdfViewer.toolbarModule.showToolbar(true);\n this.hideMobileAnnotationToolbar();\n }\n }\n }\n else {\n this.isMobileAnnotEnabled = true;\n }\n };\n AnnotationToolbar.prototype.hideMobileAnnotationToolbar = function () {\n if (this.toolbarElement != null) {\n if (this.pdfViewer.selectedItems.annotations.length > 0 || this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n if (this.propertyToolbar && this.propertyToolbar.element.children.length > 0) {\n this.propertyToolbar.element.style.display = 'block';\n this.toolbarCreated = true;\n }\n }\n else {\n if (this.toolbar.element.children.length > 0) {\n this.toolbarCreated = true;\n }\n else {\n this.toolbarCreated = false;\n }\n if (this.propertyToolbar && this.propertyToolbar.element.style.display !== 'none') {\n this.propertyToolbar.element.style.display = 'none';\n if (!this.toolbarCreated) {\n var editIcon = document.getElementById(this.pdfViewer.element.id + '_annotationIcon');\n if (editIcon && editIcon.parentElement.classList.contains('e-pv-select')) {\n this.createAnnotationToolbarForMobile();\n }\n }\n }\n }\n if (this.toolbarElement.children.length > 0) {\n this.toolbarElement.style.display = 'block';\n }\n this.adjustMobileViewer();\n }\n else if (this.toolbarCreated && this.propertyToolbar && this.propertyToolbar.element.children.length > 0) {\n this.propertyToolbar.element.style.display = 'none';\n this.adjustMobileViewer();\n this.toolbarCreated = false;\n }\n };\n AnnotationToolbar.prototype.FreeTextForMobile = function () {\n var _this = this;\n this.hideExistingTool();\n // eslint-disable-next-line max-len\n this.freetextToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_freeTextToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.freetextToolbarElement);\n // eslint-disable-next-line max-len\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n var fontFamilyTemplate = this.getTemplate('input', '_annotation_fontname', 'e-pv-annotation-fontname-container');\n var fontSizeTemplate = this.getTemplate('input', '_annotation_fontsize', 'e-pv-annotation-fontsize-container');\n var textColorTemplate = this.getTemplate('span', '_annotation_textcolor', 'e-pv-annotation-textcolor-container');\n var alignmentTemplate = this.getTemplate('span', '_annotation_textalign', 'e-pv-annotation-textalign-container');\n // eslint-disable-next-line max-len\n var textPropertiesTemplate = this.getTemplate('span', '_annotation_textproperties', 'e-pv-annotation-textprop-container');\n // eslint:disable-next-line\n var items;\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { type: 'Separator', align: 'Left', cssClass: 'e-pv-hightlight-separator-container' },\n { template: fontFamilyTemplate },\n { template: fontSizeTemplate },\n { template: textColorTemplate },\n { template: alignmentTemplate },\n { template: textPropertiesTemplate },\n { template: colorTemplate },\n { template: strokeTemplate },\n { template: thicknessTemplate },\n { template: opacityTemplate },\n ];\n this.toolbar = new Tool({\n items: items, width: '', height: '', overflowMode: 'Scrollable', created: function () {\n // eslint-disable-next-line max-len\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(_this.pdfViewer.element.id + '_annotation_freeTextEdit');\n }\n });\n this.toolbar.appendTo(this.freetextToolbarElement);\n this.showFreeTextPropertiesTool();\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.createPropertyTools = function (shapeType) {\n var _this = this;\n if (shapeType !== \"\") {\n if (this.propertyToolbar) {\n this.propertyToolbar.destroy();\n }\n if (this.toolbar) {\n this.toolbar.destroy();\n }\n // eslint-disable-next-line max-len\n var shapeToolbarElement = void 0;\n shapeToolbarElement = document.getElementById(this.pdfViewer.element.id + '_propertyToolbar');\n if (shapeToolbarElement) {\n shapeToolbarElement.parentElement.removeChild(shapeToolbarElement);\n }\n // eslint-disable-next-line max-len\n shapeToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_propertyToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(shapeToolbarElement);\n var id_1;\n var propertyToolbar = new Tool({\n // eslint-disable-next-line max-len\n items: this.createPropertyToolbarForMobile(shapeType), width: '', height: '', overflowMode: 'Scrollable',\n created: function () {\n if (_this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n id_1 = _this.pdfViewer.element.id + '_underlineIcon';\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n id_1 = _this.pdfViewer.element.id + '_annotation_freeTextEdit';\n // eslint-disable-next-line max-len\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Stamp' || _this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'StickyNotes' || _this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Image') {\n id_1 = _this.pdfViewer.element.id + '_annotation_stamp';\n // eslint-disable-next-line max-len\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || _this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText') {\n id_1 = _this.pdfViewer.element.id + '_annotation_handwrittenSign';\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink' || _this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Path') {\n id_1 = _this.pdfViewer.element.id + '_annotation_inkIcon';\n }\n else if (shapeType === 'Highlight' || shapeType === 'Underline' || shapeType === 'Strikethrough') {\n id_1 = _this.pdfViewer.element.id + '_highlightIcon';\n }\n else {\n id_1 = _this.pdfViewer.element.id + '_annotation_shapesIcon';\n }\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(id_1);\n }\n });\n propertyToolbar.isStringTemplate = true;\n propertyToolbar.appendTo(shapeToolbarElement);\n if (!this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line') {\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, false);\n }\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature') {\n var commentIcon = document.getElementById(this.pdfViewer.element.id + '_annotation_commentPanel');\n this.toolbar.enableItems(commentIcon.parentElement, false);\n }\n }\n this.showPropertyTool(propertyToolbar, id_1);\n }\n };\n AnnotationToolbar.prototype.showPropertyTool = function (existingTool, id) {\n if (this.toolbar) {\n this.toolbar.destroy();\n }\n this.propertyToolbar = existingTool;\n this.applyProperiesToolSettings(id);\n //this.propertyToolbar.element.style.display = 'block';\n if (this.pdfViewer.selectedItems.annotations[0]) {\n // eslint:disable-next-line\n var selectedAnnotation = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line max-len\n if (selectedAnnotation.shapeAnnotationType !== 'SignatureText' && selectedAnnotation.shapeAnnotationType !== 'HandWrittenSignature' && selectedAnnotation.shapeAnnotationType !== 'Stamp' && selectedAnnotation.shapeAnnotationType !== 'Image' && selectedAnnotation.shapeAnnotationType !== 'Ink' && selectedAnnotation.shapeAnnotationType !== 'Path' && selectedAnnotation.shapeAnnotationType !== 'StickyNotes') {\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.selectedItems.annotations[0].fillColor);\n this.updateColorInIcon(this.strokeDropDownElement, this.pdfViewer.selectedItems.annotations[0].strokeColor);\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n // eslint:disable-next-line\n var fontFamily = this.fontFamilyElement;\n fontFamily.ej2_instances[0].value = this.pdfViewer.selectedItems.annotations[0].fontFamily;\n // eslint:disable-next-line\n var fontColor = this.fontColorElement;\n fontColor.children[0].style.borderBottomColor = this.pdfViewer.selectedItems.annotations[0].fontColor;\n this.pdfViewer.annotation.modifyTextAlignment(this.pdfViewer.selectedItems.annotations[0].textAlign);\n this.updateTextAlignInIcon(this.pdfViewer.selectedItems.annotations[0].textAlign);\n }\n }\n else {\n if (this.strokeDropDownElement) {\n this.updateColorInIcon(this.strokeDropDownElement, this.pdfViewer.selectedItems.annotations[0].strokeColor);\n }\n }\n }\n this.toolbarCreated = true;\n this.adjustMobileViewer();\n };\n AnnotationToolbar.prototype.stampToolMobileForMobile = function (args) {\n var _this = this;\n this.hideExistingTool();\n if (this.stampToolbarElement) {\n this.stampToolbarElement.parentElement.removeChild(this.stampToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.stampToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_stampToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.stampToolbarElement);\n // eslint-disable-next-line max-len\n this.toolbar = new Tool({\n items: this.createStampToolbarItemsForMobile(), width: '', height: '', overflowMode: 'Scrollable', clicked: this.onShapeToolbarClicked.bind(this),\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(args);\n }\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.stampToolbarElement);\n this.showStampPropertiesTool();\n //this.afterShapeToolbarCreationForMobile();\n };\n AnnotationToolbar.prototype.shapeToolMobile = function (args) {\n var _this = this;\n this.hideExistingTool();\n if (this.shapeToolbarElement) {\n this.shapeToolbarElement.parentElement.removeChild(this.shapeToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.shapeToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_shapeToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.shapeToolbarElement);\n // eslint-disable-next-line max-len\n this.toolbar = new Tool({\n items: this.createShapeToolbarItemsForMobile(), width: '', height: '', overflowMode: 'Scrollable', clicked: this.onShapeToolbarClicked.bind(this),\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(args.originalEvent.target.id);\n }\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.shapeToolbarElement);\n this.afterShapeToolbarCreationForMobile();\n this.showShapeTool();\n };\n AnnotationToolbar.prototype.calibrateToolMobile = function (args) {\n var _this = this;\n this.hideExistingTool();\n if (this.calibrateToolbarElement) {\n this.calibrateToolbarElement.parentElement.removeChild(this.calibrateToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.calibrateToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_calibrateToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.calibrateToolbarElement);\n // eslint-disable-next-line max-len\n this.toolbar = new Tool({\n items: this.createCalibrateToolbarItemsForMobile(), width: '', height: '', overflowMode: 'Scrollable', clicked: this.onCalibrateToolbarClicked.bind(this),\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(args.originalEvent.target.id);\n }\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.calibrateToolbarElement);\n this.afterCalibrateToolbarCreationForMobile();\n this.showShapeTool();\n };\n AnnotationToolbar.prototype.textMarkupForMobile = function (args) {\n var _this = this;\n this.hideExistingTool();\n if (this.textMarkupToolbarElement) {\n this.textMarkupToolbarElement.parentElement.removeChild(this.textMarkupToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.textMarkupToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_mobileAnnotationToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.textMarkupToolbarElement);\n // eslint-disable-next-line max-len\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint:disable-next-line\n var items;\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { type: 'Separator', align: 'Left', cssClass: 'e-pv-hightlight-separator-container' },\n { template: colorTemplate, align: 'left' },\n { template: opacityTemplate, align: 'left' }\n ];\n this.propertyToolbar = new Tool({\n items: items, width: '', height: '', overflowMode: 'Scrollable',\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(args.originalEvent.target.id);\n }\n });\n this.propertyToolbar.isStringTemplate = true;\n this.propertyToolbar.appendTo(this.textMarkupToolbarElement);\n this.showTextMarkupPropertiesTool();\n };\n AnnotationToolbar.prototype.showShapeTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 7, 7);\n }\n else {\n this.showColorEditTool(false, 7, 7);\n }\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 8, 8);\n }\n else {\n this.showStrokeColorEditTool(false, 8, 8);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 9, 9);\n }\n else {\n this.showThicknessEditTool(false, 9, 9);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 10, 10);\n }\n else {\n this.showOpacityEditTool(false, 10, 10);\n }\n }\n };\n AnnotationToolbar.prototype.signatureInkForMobile = function () {\n var _this = this;\n this.hideExistingTool();\n if (this.signatureInkToolbarElement) {\n this.signatureInkToolbarElement.parentElement.removeChild(this.signatureInkToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.signatureInkToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_mobileAnnotationToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.signatureInkToolbarElement);\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n // eslint:disable-next-line\n var items;\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { template: opacityTemplate, align: 'left' },\n { template: strokeTemplate, aign: 'left' },\n { template: thicknessTemplate, align: 'left' }\n ];\n this.toolbar = new Tool({\n items: items, width: '', height: '', overflowMode: 'Scrollable',\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(_this.pdfViewer.element.id + '_annotation_inkIcon');\n }\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.signatureInkToolbarElement);\n };\n AnnotationToolbar.prototype.hideExistingTool = function () {\n if (this.toolbar && !this.pdfViewer.enableDesktopMode) {\n this.toolbar.destroy();\n }\n if (this.propertyToolbar && !this.pdfViewer.enableDesktopMode) {\n this.propertyToolbar.destroy();\n }\n var mobileAnnotationToolbar = document.getElementById(this.pdfViewer.element.id + '_mobileAnnotationToolbar');\n if (mobileAnnotationToolbar) {\n mobileAnnotationToolbar.style.display = 'none';\n }\n };\n AnnotationToolbar.prototype.applyProperiesToolSettings = function (type) {\n switch (type) {\n case this.pdfViewer.element.id + '_highlightIcon':\n this.showTextMarkupPropertiesTool();\n break;\n case this.pdfViewer.element.id + '_annotation_freeTextEdit':\n this.showFreeTextPropertiesTool();\n break;\n case this.pdfViewer.element.id + '_annotation_shapesIcon':\n this.shapePropertiesTool();\n break;\n case 'stampTool':\n case this.pdfViewer.element.id + '_annotation_stamp':\n this.showStampPropertiesTool();\n break;\n case this.pdfViewer.element.id + '_annotation_handwrittenSign':\n case this.pdfViewer.element.id + '_annotation_inkIcon':\n this.showInkPropertiesTool();\n break;\n }\n };\n AnnotationToolbar.prototype.showFreeTextPropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('FontFamilyAnnotationTool') !== -1) {\n this.showFontFamilyAnnotationTool(true, 2, 2);\n }\n else {\n this.showFontFamilyAnnotationTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('FontSizeAnnotationTool') !== -1) {\n this.showFontSizeAnnotationTool(true, 3, 3);\n }\n else {\n this.showFontSizeAnnotationTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('FontColorAnnotationTool') !== -1) {\n this.showFontColorAnnotationTool(true, 4, 4);\n }\n else {\n this.showFontColorAnnotationTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('FontAlignAnnotationTool') !== -1) {\n this.showFontAlignAnnotationTool(true, 5, 5);\n }\n else {\n this.showFontAlignAnnotationTool(false, 5, 5);\n }\n if (annotationToolbarItems.indexOf('FontStylesAnnotationTool') !== -1) {\n this.showFontStylesAnnotationTool(true, 6, 6);\n }\n else {\n this.showFontStylesAnnotationTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 7, 7);\n }\n else {\n this.showColorEditTool(false, 7, 7);\n }\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 8, 8);\n }\n else {\n this.showStrokeColorEditTool(false, 8, 8);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 9, 9);\n }\n else {\n this.showThicknessEditTool(false, 9, 9);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 10, 10);\n }\n else {\n this.showOpacityEditTool(false, 10, 10);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 11, 11);\n }\n else {\n this.showCommentPanelTool(false, 11, 11);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 12, 12);\n }\n else {\n this.showAnnotationDeleteTool(false, 12, 12);\n }\n }\n };\n AnnotationToolbar.prototype.shapePropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 2, 2);\n }\n else {\n this.showColorEditTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 3, 3);\n }\n else {\n this.showStrokeColorEditTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 4, 4);\n }\n else {\n this.showThicknessEditTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 5, 5);\n }\n else {\n this.showOpacityEditTool(false, 5, 5);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 6, 6);\n }\n else {\n this.showCommentPanelTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 7, 7);\n }\n else {\n this.showAnnotationDeleteTool(false, 7, 7);\n }\n }\n };\n AnnotationToolbar.prototype.showStampPropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 2, 2);\n }\n else {\n this.showOpacityEditTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 3, 3);\n }\n else {\n this.showCommentPanelTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 4, 4);\n }\n else {\n this.showAnnotationDeleteTool(false, 4, 4);\n }\n }\n };\n AnnotationToolbar.prototype.showTextMarkupPropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 2, 2);\n }\n else {\n this.showColorEditTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 3, 3);\n }\n else {\n this.showOpacityEditTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 4, 4);\n }\n else {\n this.showCommentPanelTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 5, 5);\n }\n else {\n this.showAnnotationDeleteTool(false, 5, 5);\n }\n }\n };\n AnnotationToolbar.prototype.showInkPropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 2, 2);\n }\n else {\n this.showStrokeColorEditTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 3, 3);\n }\n else {\n this.showThicknessEditTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 4, 4);\n }\n else {\n this.showOpacityEditTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 5, 5);\n }\n else {\n this.showCommentPanelTool(false, 5, 5);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 6, 6);\n }\n else {\n this.showAnnotationDeleteTool(false, 6, 6);\n }\n }\n };\n /**\n * @private\n */\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createAnnotationToolbarForMobile = function (id) {\n var hideToolbar;\n if (id) {\n var editIcon = document.getElementById(id);\n if (editIcon.parentElement.classList.contains('e-pv-select')) {\n hideToolbar = true;\n editIcon.parentElement.classList.remove('e-pv-select');\n }\n else {\n hideToolbar = false;\n this.pdfViewer.toolbarModule.selectItem(editIcon.parentElement);\n }\n }\n if (hideToolbar) {\n this.toolbarCreated = false;\n this.adjustMobileViewer();\n if (this.toolbar) {\n this.toolbar.destroy();\n }\n if (this.propertyToolbar) {\n this.propertyToolbar.destroy();\n }\n var mobileAnnotationToolbar = document.getElementById(this.pdfViewer.element.id + '_mobileAnnotationToolbar');\n if (mobileAnnotationToolbar) {\n mobileAnnotationToolbar.style.display = 'none';\n }\n return [];\n }\n else {\n this.isToolbarCreated = true;\n if (this.propertyToolbar) {\n this.propertyToolbar.destroy();\n }\n if (this.toolbarElement) {\n this.toolbarElement.parentElement.removeChild(this.toolbarElement);\n }\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_mobileAnnotationToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left;' });\n //this.toolbarElement.append(this.pdfViewerBase.viewerContainer);\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n var stampTemplate = this.getTemplate('span', '_annotation_stamp', 'e-pv-annotation-stamp-container');\n var signTemplate = this.getTemplate('span', '_annotation_signature', 'e-pv-annotation-handwritten-container');\n // eslint:disable-next-line\n var items = void 0;\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-comment-icon e-pv-icon', className: 'e-pv-comment-container', id: this.pdfViewer.element.id + '_comment' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-highlight-icon e-pv-icon', className: 'e-pv-highlight-container', id: this.pdfViewer.element.id + '_highlight' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-underline-icon e-pv-icon', className: 'e-pv-underline-container', id: this.pdfViewer.element.id + '_underline' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-strikethrough-icon e-pv-icon', className: 'e-pv-strikethrough-container', id: this.pdfViewer.element.id + '_strikethrough' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-annotation-shape-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_annotation_shapes' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-annotation-calibrate-icon e-pv-icon', className: 'e-pv-annotation-calibrate-container', id: this.pdfViewer.element.id + '_annotation_calibrate' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-freetext-icon e-pv-icon', className: 'e-pv-annotation-freetextedit-container', id: this.pdfViewer.element.id + '_annotation_freeTextEdit' },\n { type: 'Separator', align: 'Left' },\n { template: stampTemplate },\n { type: 'Separator', align: 'Left' },\n { template: signTemplate, align: 'Left', },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-inkannotation-icon e-pv-icon', className: 'e-pv-annotation-ink-container', id: this.pdfViewer.element.id + '_annotation_ink', align: 'Left', },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-comment-panel-icon e-pv-icon', className: 'e-pv-comment-panel-icon-container', id: this.pdfViewer.element.id + '_annotation_commentPanel', align: 'Right' }\n ];\n if (this.toolbarCreated && this.toolbar) {\n this.toolbar.destroy();\n this.toolbarCreated = false;\n this.adjustMobileViewer();\n }\n else {\n // eslint-disable-next-line max-len\n this.toolbar = new Tool({ items: items, width: '', height: '', overflowMode: 'Scrollable', clicked: this.onToolbarClicked.bind(this) });\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.toolbarElement);\n this.afterMobileToolbarCreation();\n this.createStampContainer();\n this.createSignContainer();\n this.applyMobileAnnotationToolbarSettings();\n this.toolbarCreated = true;\n this.adjustMobileViewer();\n }\n return items;\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.adjustMobileViewer = function () {\n var toolbarHeight;\n if (this.toolbarElement) {\n toolbarHeight = this.toolbarElement.clientHeight;\n }\n var isPrimaryTool = false;\n if (this.toolbarElement && this.toolbarElement.children.length === 0 && this.propertyToolbar && this.propertyToolbar.element.children.length > 0) {\n toolbarHeight = this.propertyToolbar.element.clientHeight;\n if (this.pdfViewer.toolbarModule.toolbarElement.style.display === 'none') {\n this.pdfViewer.toolbarModule.toolbarElement.style.display = 'block';\n }\n }\n else if (this.freetextToolbarElement && this.freetextToolbarElement.children.length > 0) {\n toolbarHeight = this.freetextToolbarElement.clientHeight;\n }\n else if (toolbarHeight === 0 && this.pdfViewer.toolbarModule.toolbar) {\n toolbarHeight = this.pdfViewer.toolbarModule.toolbarElement.clientHeight;\n isPrimaryTool = true;\n }\n else if (!toolbarHeight && this.propertyToolbar && this.propertyToolbar.element.children.length > 0) {\n toolbarHeight = this.propertyToolbar.element.clientHeight;\n }\n if (this.pdfViewer.enableToolbar && this.toolbarCreated) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (toolbarHeight + toolbarHeight)) + 'px';\n }\n else {\n if (!isPrimaryTool) {\n if (this.pdfViewerBase.viewerContainer.style.height.split('%').length > 1) {\n this.pdfViewerBase.viewerContainer.style.height = this.resetViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (-toolbarHeight)) + 'px';\n }\n else {\n this.pdfViewerBase.viewerContainer.style.height = this.resetViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (toolbarHeight)) + 'px';\n }\n }\n }\n };\n /**\n * Shows /hides the toolbar in the PdfViewer\n * @param {boolean} enableToolbar - If set true , its show the Toolbar\n * @returns void\n */\n AnnotationToolbar.prototype.showToolbar = function (enable) {\n var toolbar = this.toolbarElement;\n if (enable) {\n toolbar.style.display = 'block';\n if (Browser.isDevice && this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.hideMobileAnnotationToolbar();\n }\n }\n else {\n toolbar.style.display = 'none';\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createMobileToolbarItems = function (isPath) {\n var colorTemplate = this.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) });\n // eslint-disable-next-line max-len\n if (!isPath) {\n items.push({ template: colorTemplate, align: 'right' });\n items.push({ template: opacityTemplate, align: 'right' });\n items.push({ type: 'Separator', align: 'right' });\n }\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-annotation-delete-icon e-pv-icon', className: 'e-pv-annotation-delete-container', id: this.pdfViewer.element.id + '_annotation_delete', align: 'right' });\n return items;\n };\n AnnotationToolbar.prototype.goBackToToolbar = function () {\n this.isMobileAnnotEnabled = false;\n if (this.toolbarElement.children.length > 0) {\n this.toolbarElement.style.display = 'block';\n }\n else {\n this.toolbarCreated = false;\n this.toolbar.destroy();\n this.createAnnotationToolbarForMobile();\n }\n var page = this.pdfViewerBase.getSelectTextMarkupCurrentPage();\n if (page) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage = null;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.clearAnnotationSelection(page);\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createToolbarItems = function () {\n var colorTemplate = this.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n var strokeTemplate = this.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n var shapesTemplate = this.getTemplate('span', '_annotation_shapes', 'e-pv-annotation-shapes-container');\n var calibrateTemplate = this.getTemplate('span', '_annotation_calibrate', 'e-pv-annotation-calibrate-container');\n var stampTemplate = this.getTemplate('span', '_annotation_stamp', 'e-pv-annotation-stamp-container');\n var fontFamilyTemplate = this.getTemplate('input', '_annotation_fontname', 'e-pv-annotation-fontname-container');\n var fontSizeTemplate = this.getTemplate('input', '_annotation_fontsize', 'e-pv-annotation-fontsize-container');\n var textColorTemplate = this.getTemplate('span', '_annotation_textcolor', 'e-pv-annotation-textcolor-container');\n var alignmentTemplate = this.getTemplate('span', '_annotation_textalign', 'e-pv-annotation-textalign-container');\n var textPropertiesTemplate = this.getTemplate('span', '_annotation_textproperties', 'e-pv-annotation-textprop-container');\n var signTemplate = this.getTemplate('span', '_annotation_signature', 'e-pv-annotation-handwritten-container');\n // eslint-disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-highlight-icon e-pv-icon', className: 'e-pv-highlight-container', id: this.pdfViewer.element.id + '_highlight', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-underline-icon e-pv-icon', className: 'e-pv-underline-container', id: this.pdfViewer.element.id + '_underline', align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-strikethrough-icon e-pv-icon', className: 'e-pv-strikethrough-container', id: this.pdfViewer.element.id + '_strikethrough', align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-hightlight-separator-container' });\n items.push({ template: shapesTemplate, align: 'Left', cssClass: 'e-pv-shape-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-shape-separator-container' });\n items.push({ template: calibrateTemplate, align: 'Left', cssClass: 'e-pv-calibrate-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-calibrate-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-freetext-icon e-pv-icon', className: 'e-pv-annotation-freetextedit-container', id: this.pdfViewer.element.id + '_annotation_freeTextEdit', align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-freetext-separator-container' });\n items.push({ template: stampTemplate, align: 'Left', cssClass: 'e-pv-stamp-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-stamp-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ template: signTemplate, align: 'Left', cssClass: 'e-pv-sign-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-sign-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-inkannotation-icon e-pv-icon', className: 'e-pv-annotation-ink-container', id: this.pdfViewer.element.id + '_annotation_ink', align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-ink-separator-container' });\n items.push({ template: fontFamilyTemplate, align: 'Left', cssClass: 'e-pv-fontfamily-container' });\n items.push({ template: fontSizeTemplate, align: 'Left', cssClass: 'e-pv-fontsize-container' });\n items.push({ template: textColorTemplate, align: 'Left', cssClass: 'e-pv-text-color-container' });\n items.push({ template: alignmentTemplate, align: 'Left', cssClass: 'e-pv-alignment-container' });\n items.push({ template: textPropertiesTemplate, align: 'Left', cssClass: 'e-pv-text-properties-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-text-separator-container' });\n items.push({ template: colorTemplate, align: 'Left', cssClass: 'e-pv-color-template-container' });\n items.push({ template: strokeTemplate, align: 'Left', cssClass: 'e-pv-stroke-template-container' });\n items.push({ template: thicknessTemplate, align: 'Left', cssClass: 'e-pv-thickness-template-container' });\n items.push({ template: opacityTemplate, align: 'Left', cssClass: 'e-pv-opacity-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-opacity-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-annotation-delete-icon e-pv-icon', className: 'e-pv-annotation-delete-container', id: this.pdfViewer.element.id + '_annotation_delete', align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-comment-panel-icon e-pv-icon', className: 'e-pv-comment-panel-icon-container', id: this.pdfViewer.element.id + '_annotation_commentPanel', align: 'Right' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-annotation-tools-close-icon e-pv-icon', className: 'e-pv-annotation-tools-close-container', id: this.pdfViewer.element.id + '_annotation_close', align: 'Right' });\n return items;\n };\n AnnotationToolbar.prototype.createSignContainer = function () {\n var _this = this;\n this.handWrittenSignatureItem = this.pdfViewerBase.getElement('_annotation_signature');\n // eslint-disable-next-line max-len\n this.primaryToolbar.createTooltip(this.pdfViewerBase.getElement('_annotation_signature'), this.pdfViewer.localeObj.getConstant('SignatureFieldDialogHeaderText'));\n // eslint-disable-next-line\n var proxy = this;\n var items = [];\n if (this.pdfViewer.handWrittenSignatureSettings.signatureItem.length === 0 || this.pdfViewer.handWrittenSignatureSettings.signatureItem.length == 2) {\n items = [\n {\n text: 'ADD SIGNATURE'\n },\n {\n separator: true\n },\n {\n text: 'ADD INITIAL'\n }\n ];\n }\n else {\n if (this.pdfViewer.handWrittenSignatureSettings.signatureItem[0] === 'Signature') {\n items = [\n {\n text: 'ADD SIGNATURE'\n }\n ];\n }\n else {\n items = [\n {\n text: 'ADD INITIAL'\n }\n ];\n }\n }\n var saveOptions = {\n items: items,\n iconCss: 'e-pv-handwritten-icon e-pv-icon',\n cssClass: 'e-pv-handwritten-popup',\n open: function (args) {\n proxy.openSignature();\n },\n beforeItemRender: function (args) {\n _this.pdfViewer.clearSelection(_this.pdfViewerBase.currentPageNumber - 1);\n if (args.element && args.element.className.indexOf(\"e-separator\") !== -1) {\n args.element.style.margin = \"8px 0\";\n }\n if (args.item.text === 'ADD SIGNATURE') {\n args.element.innerHTML = '';\n _this.saveSignatureCount = 0;\n for (var collection = _this.pdfViewerBase.signatureModule.signaturecollection.length; collection > 0; collection--) {\n if (_this.saveSignatureCount < _this.pdfViewerBase.signatureModule.getSaveLimit(_this.pdfViewer.handWrittenSignatureSettings.saveSignatureLimit)) {\n args.element.style.display = 'block';\n // eslint-disable-next-line\n var signatureCollection = _this.pdfViewerBase.signatureModule.signaturecollection[collection - 1];\n // eslint-disable-next-line\n var collectionKey = signatureCollection.image[0].imageData;\n var signatureID = signatureCollection.image[0].id.split('_')[1];\n if (!signatureCollection.isInitial && collectionKey !== '') {\n // eslint-disable-next-line max-len\n var signatureContainer = createElement('div');\n signatureContainer.id = 's' + signatureID;\n signatureContainer.style.display = 'block';\n signatureContainer.style.paddingBottom = '10px';\n var signatureSpan = createElement('span');\n signatureSpan.id = 'sign_border_' + signatureID;\n signatureSpan.classList.add('e-pv-align-border');\n var signatureImage = void 0;\n if (signatureCollection.image[0].signatureType === 'SignatureText') {\n signatureImage = createElement('div');\n signatureImage.classList.add('e-pv-align-border-div');\n signatureImage.innerText = collectionKey;\n signatureImage.style.fontFamily = signatureCollection.image[0].fontFamily;\n signatureImage.style.fontSize = '15px';\n signatureImage.style.display = 'inline-flex';\n signatureImage.style.alignItems = 'center';\n signatureImage.style.position = 'relative';\n signatureImage.id = 'sign_' + signatureID;\n signatureImage.style.width = '80px';\n signatureImage.style.height = '53px';\n signatureImage.style.overflow = 'hidden';\n signatureImage.style.textOverflow = 'ellipsis';\n signatureImage.style.paddingLeft = '11px';\n }\n else {\n signatureImage = createElement('img');\n signatureImage.id = 'sign_' + signatureID;\n signatureImage.src = collectionKey;\n signatureImage.width = 80;\n signatureImage.height = 32;\n signatureImage.classList.add('e-pv-signatureimage');\n signatureImage.style.paddingLeft = '20px';\n signatureImage.style.paddingRight = '18px';\n signatureImage.style.paddingTop = '12px';\n signatureImage.style.paddingBottom = '12px';\n signatureImage.style.boxSizing = 'content-box';\n }\n signatureImage.addEventListener('mouseover', _this.hoverSignatureImage.bind(_this));\n signatureImage.addEventListener('mouseleave', _this.leaveSignatureImage.bind(_this));\n var signatureDeleteSpan = createElement('span');\n signatureDeleteSpan.id = 'delete_' + signatureID;\n signatureDeleteSpan.classList.add('e-pv-delete');\n signatureDeleteSpan.classList.add('e-pv-align');\n signatureSpan.append(signatureImage);\n signatureSpan.append(signatureDeleteSpan);\n signatureContainer.append(signatureSpan);\n args.element.appendChild(signatureContainer);\n args.element.style.pointerEvents = 'auto';\n args.element.style.background = 'none';\n _this.pdfViewerBase.getElement('_annotation_signature-popup').style.width = '206px';\n _this.saveSignatureCount++;\n }\n }\n }\n var addInitialSpan = createElement('button');\n addInitialSpan.classList.add(\"e-control\", \"e-btn\", \"e-lib\", \"e-outline\", \"e-primary\");\n addInitialSpan.textContent = _this.pdfViewer.localeObj.getConstant('HandwrittenSignatureDialogHeaderText');\n addInitialSpan.style.width = \"130px\";\n addInitialSpan.style.height = \"36px\";\n addInitialSpan.addEventListener('click', _this.clickSignature.bind(_this));\n args.element.appendChild(addInitialSpan);\n args.element.addEventListener('mouseover', _this.hoverInitialBtn.bind(_this));\n args.element.style.width = '206px';\n args.element.style.display = 'flex';\n args.element.style.flexDirection = 'column';\n args.element.style.height = 'auto';\n args.element.style.alignItems = 'center';\n }\n if (args.item.text === 'ADD INITIAL') {\n _this.saveInitialCount = 0;\n args.element.innerHTML = '';\n for (var collection = _this.pdfViewerBase.signatureModule.signaturecollection.length; collection > 0; collection--) {\n if (_this.saveInitialCount < _this.pdfViewerBase.signatureModule.getSaveLimit(_this.pdfViewer.handWrittenSignatureSettings.saveInitialLimit)) {\n // eslint-disable-next-line\n var signatureCollection = _this.pdfViewerBase.signatureModule.signaturecollection[collection - 1];\n // eslint-disable-next-line\n var collectionKey = signatureCollection.image[0].imageData;\n var signatureID = signatureCollection.image[0].id.split('_')[1];\n if (signatureCollection.isInitial && collectionKey !== '') {\n var signatureContainer = createElement('div');\n signatureContainer.id = 's' + signatureID;\n signatureContainer.style.display = 'block';\n signatureContainer.style.paddingBottom = '10px';\n var signatureSpan = createElement('span');\n signatureSpan.id = 'sign_border_' + signatureID;\n signatureSpan.classList.add('e-pv-align-border');\n var signatureImage = void 0;\n if (signatureCollection.image[0].signatureType === 'SignatureText') {\n signatureImage = createElement('div');\n signatureImage.classList.add('e-pv-align-border-div');\n signatureImage.innerText = collectionKey;\n signatureImage.style.fontFamily = signatureCollection.image[0].fontFamily;\n signatureImage.style.fontSize = '15px';\n signatureImage.style.display = 'inline-flex';\n signatureImage.style.alignItems = 'center';\n signatureImage.style.position = 'relative';\n signatureImage.id = 'sign_' + signatureID;\n signatureImage.style.width = '80px';\n signatureImage.style.height = '53px';\n signatureImage.style.overflow = 'hidden';\n signatureImage.style.textOverflow = 'ellipsis';\n signatureImage.style.paddingLeft = '11px';\n }\n else {\n signatureImage = createElement('img');\n signatureImage.id = 'sign_' + signatureID;\n signatureImage.src = collectionKey;\n signatureImage.width = 80;\n signatureImage.height = 32;\n signatureImage.classList.add('e-pv-signatureimage');\n signatureImage.style.paddingLeft = '20px';\n signatureImage.style.paddingRight = '18px';\n signatureImage.style.paddingTop = '12px';\n signatureImage.style.paddingBottom = '12px';\n signatureImage.style.boxSizing = 'content-box';\n }\n signatureImage.addEventListener('mouseover', _this.hoverSignatureImage.bind(_this));\n signatureImage.addEventListener('mouseleave', _this.leaveSignatureImage.bind(_this));\n signatureImage.width = 80;\n signatureImage.height = 32;\n var signatureDeleteSpan = createElement('span');\n signatureDeleteSpan.id = 'delete_' + signatureID;\n signatureDeleteSpan.classList.add('e-pv-delete');\n signatureDeleteSpan.classList.add('e-pv-align');\n signatureSpan.append(signatureImage);\n signatureSpan.append(signatureDeleteSpan);\n signatureContainer.append(signatureSpan);\n args.element.appendChild(signatureContainer);\n // eslint-disable-next-line max-len\n args.element.style.pointerEvents = 'auto';\n args.element.style.background = 'none';\n _this.pdfViewerBase.getElement('_annotation_signature-popup').style.width = '206px';\n _this.saveInitialCount++;\n }\n }\n }\n _this.isSignatureIteam = false;\n var addInitialSpan = createElement('button');\n addInitialSpan.classList.add(\"e-control\", \"e-btn\", \"e-lib\", \"e-outline\", \"e-primary\");\n addInitialSpan.textContent = _this.pdfViewer.localeObj.getConstant('HandwrittenInitialDialogHeaderText');\n addInitialSpan.style.width = \"130px\";\n addInitialSpan.style.height = \"36px\";\n addInitialSpan.addEventListener('click', _this.clickInitial.bind(_this));\n args.element.appendChild(addInitialSpan);\n args.element.addEventListener('mouseover', _this.hoverInitialBtn.bind(_this));\n args.element.style.width = '206px';\n args.element.style.display = 'flex';\n args.element.style.flexDirection = 'column';\n args.element.style.height = 'auto';\n args.element.style.alignItems = 'center';\n }\n },\n select: function (args) {\n _this.pdfViewer.clearSelection(_this.pdfViewerBase.currentPageNumber - 1);\n }\n };\n var drpDownBtn = new DropDownButton(saveOptions);\n if (this.pdfViewer.enableRtl) {\n drpDownBtn.enableRtl = this.pdfViewer.enableRtl;\n }\n drpDownBtn.appendTo(this.handWrittenSignatureItem);\n };\n AnnotationToolbar.prototype.updateSignatureCount = function () {\n var count = 0;\n this.openSignaturePopup = false;\n // eslint-disable-next-line\n var signatureCollection = this.pdfViewerBase.signatureModule.signaturecollection;\n for (var collection = 0; collection < signatureCollection.length; collection++) {\n // eslint-disable-next-line\n var colletionList = signatureCollection[collection];\n if (colletionList.image[0].imageData === '') {\n count++;\n }\n }\n };\n AnnotationToolbar.prototype.openSignature = function () {\n this.saveInitialCount = 0;\n this.saveSignatureCount = 0;\n for (var collection = this.pdfViewerBase.signatureModule.signaturecollection.length; collection > 0; collection--) {\n if (this.saveSignatureCount < this.pdfViewerBase.signatureModule.getSaveLimit(this.pdfViewer.handWrittenSignatureSettings.saveSignatureLimit)) {\n // eslint-disable-next-line\n var signatureCollection = this.pdfViewerBase.signatureModule.signaturecollection[collection - 1];\n if (signatureCollection.image[0].imageData !== '') {\n if (!signatureCollection.isInitial) {\n this.saveSignatureCount++;\n // eslint-disable-next-line\n var addedSignature = document.getElementById('sign_border_' + signatureCollection.image[0].id.split('_')[1] + '');\n // eslint-disable-next-line\n var deleteSignature = document.getElementById('delete_' + signatureCollection.image[0].id.split('_')[1] + '');\n deleteSignature.style.backgroundClip = 'content-box';\n addedSignature.addEventListener('click', this.renderAddedSignature.bind(this));\n deleteSignature.addEventListener('click', this.deleteSavedSign.bind(this));\n deleteSignature.addEventListener('mouseover', this.hoverSignatureDelete.bind(this));\n deleteSignature.addEventListener('mouseleave', this.leaveSignatureDelete.bind(this));\n addedSignature.addEventListener('mouseover', this.hoverSignatureDelete.bind(this));\n addedSignature.addEventListener('mouseleave', this.leaveSignatureDelete.bind(this));\n }\n }\n }\n }\n for (var collection = this.pdfViewerBase.signatureModule.signaturecollection.length; collection > 0; collection--) {\n if (this.saveInitialCount < this.pdfViewerBase.signatureModule.getSaveLimit(this.pdfViewer.handWrittenSignatureSettings.saveInitialLimit)) {\n // eslint-disable-next-line\n var signatureCollection = this.pdfViewerBase.signatureModule.signaturecollection[collection - 1];\n if (signatureCollection.image[0].imageData !== '') {\n if (signatureCollection.isInitial) {\n this.saveInitialCount++;\n // eslint-disable-next-line\n var addedSignature = document.getElementById('sign_border_' + signatureCollection.image[0].id.split('_')[1] + '');\n // eslint-disable-next-line\n var deleteSignature = document.getElementById('delete_' + signatureCollection.image[0].id.split('_')[1] + '');\n deleteSignature.style.backgroundClip = 'content-box';\n addedSignature.addEventListener('click', this.renderAddedSignature.bind(this));\n deleteSignature.addEventListener('click', this.deleteSavedSign.bind(this));\n deleteSignature.addEventListener('mouseover', this.hoverSignatureDelete.bind(this));\n deleteSignature.addEventListener('mouseleave', this.leaveSignatureDelete.bind(this));\n addedSignature.addEventListener('mouseover', this.hoverSignatureDelete.bind(this));\n addedSignature.addEventListener('mouseleave', this.leaveSignatureDelete.bind(this));\n }\n }\n }\n }\n };\n AnnotationToolbar.prototype.hoverSignatureDelete = function () {\n var eventTarget = event.target;\n if (eventTarget.id === 'sign_' + eventTarget.id.split('_')[1] || eventTarget.classList.contains('e-pv-delete')) {\n eventTarget.classList.add('e-pv-signaturehover');\n eventTarget.style.cursor = 'pointer';\n }\n };\n AnnotationToolbar.prototype.hoverInitialBtn = function (event) {\n var eventTarget = event.target;\n var currentFieldID = '';\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.userAgent.indexOf('Trident') !== -1) {\n currentFieldID = eventTarget.id;\n }\n else {\n currentFieldID = isNullOrUndefined(event.path) ? event.composedPath()[0].id : event.path[0].id;\n }\n if (currentFieldID !== 'sign_' + currentFieldID.split(\"_\")[1] && currentFieldID !== 'delete_' + currentFieldID.split(\"_\")[1]) {\n var liElement = document.getElementById(eventTarget.id);\n if (isNullOrUndefined(liElement)) {\n liElement = document.getElementById(eventTarget.parentElement.id);\n }\n if (liElement != null && (eventTarget.id !== 'sign_' + eventTarget.id.split('_')[1] || eventTarget.id !== 'sign_border_' + eventTarget.id.split('_')[2])) {\n liElement.style.background = 'transparent';\n liElement.style.cursor = 'default';\n }\n else if (liElement.parentElement != null && (eventTarget.id !== 'sign_' + eventTarget.id.split('_')[1] || eventTarget.id !== 'sign_border_' + eventTarget.id.split('_')[2])) {\n liElement.parentElement.style.background = 'transparent';\n liElement.parentElement.style.cursor = 'default';\n }\n }\n };\n AnnotationToolbar.prototype.hoverSignatureImage = function () {\n var eventTarget = event.target;\n if (eventTarget.id === 'sign_' + eventTarget.id.split('_')[1] || eventTarget.classList.contains('e-pv-delete')) {\n eventTarget.classList.add('e-pv-signaturehover');\n eventTarget.classList.remove('e-pv-signatureimage');\n eventTarget.style.cursor = 'pointer';\n }\n };\n AnnotationToolbar.prototype.leaveSignatureDelete = function () {\n var eventTarget = event.target;\n if (eventTarget.id === 'sign_' + eventTarget.id.split('_')[1] || eventTarget.classList.contains('e-pv-delete')) {\n eventTarget.classList.remove('e-pv-signaturehover');\n if (eventTarget.children[0] && eventTarget.children[0].tagName === 'IMG') {\n eventTarget.children[0].classList.remove('e-pv-signaturehover');\n }\n eventTarget.style.cursor = 'default';\n }\n };\n AnnotationToolbar.prototype.clickSignature = function () {\n this.pdfViewerBase.isInitialField = false;\n this.addSignature();\n };\n AnnotationToolbar.prototype.clickInitial = function () {\n this.pdfViewerBase.isInitialField = true;\n this.addSignature();\n };\n AnnotationToolbar.prototype.leaveSignatureImage = function () {\n var eventTarget = event.target;\n if (eventTarget.id === 'sign_' + eventTarget.id.split('_')[1] || eventTarget.classList.contains('e-pv-delete')) {\n eventTarget.classList.remove('e-pv-signaturehover');\n if (eventTarget.tagName === 'IMG')\n eventTarget.classList.add('e-pv-signatureimage');\n if (eventTarget.children[0] && eventTarget.children[0].tagName === 'IMG') {\n eventTarget.children[0].classList.remove('e-pv-signaturehover');\n eventTarget.children[0].classList.add('e-pv-signatureimage');\n }\n eventTarget.style.cursor = 'default';\n }\n };\n AnnotationToolbar.prototype.addSignature = function () {\n this.deselectAllItems();\n this.showSignaturepanel();\n };\n AnnotationToolbar.prototype.renderAddedSignature = function () {\n this.pdfViewerBase.isAddedSignClicked = true;\n this.isSavedSignatureClicked = true;\n this.pdfViewerBase.signatureModule.RenderSavedSignature();\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.deleteSavedSign = function (event) {\n event.stopPropagation();\n // eslint-disable-next-line\n var signaturecollection = this.pdfViewerBase.signatureModule.signaturecollection;\n for (var collection = signaturecollection.length; collection > 0; collection--) {\n if (event.target.parentElement.children[0].id === 'sign_' + signaturecollection[collection - 1].image[0].id.split('_')[1]) {\n // eslint-disable-next-line\n var RemoveSignature = signaturecollection[collection - 1];\n RemoveSignature.image[0].imageData = '';\n this.pdfViewerBase.signatureModule.signaturecollection.splice(collection - 1, 1);\n break;\n }\n }\n event.target.parentElement.remove();\n };\n AnnotationToolbar.prototype.getTemplate = function (elementName, id, className) {\n var element = createElement(elementName, { id: this.pdfViewer.element.id + id });\n if (className) {\n element.className = className;\n }\n return element.outerHTML;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createStampContainer = function () {\n var _this = this;\n this.stampElement = this.pdfViewerBase.getElement('_annotation_stamp');\n // eslint-disable-next-line max-len\n this.primaryToolbar.createTooltip(this.pdfViewerBase.getElement('_annotation_stamp'), this.pdfViewer.localeObj.getConstant('Add Stamp'));\n var contextMenuElement = createElement('ul', { id: this.pdfViewer.element.id + 'contextMenuElement' });\n this.pdfViewerBase.getElement('_annotation_stamp').appendChild(contextMenuElement);\n var items = [];\n if (this.pdfViewer.stampSettings.dynamicStamps && this.pdfViewer.stampSettings.dynamicStamps.length > 0) {\n var dynamicStamps_1 = [];\n items.push({ text: this.pdfViewer.localeObj.getConstant('Dynamic'), label: 'Dynamic', items: dynamicStamps_1 });\n this.pdfViewer.stampSettings.dynamicStamps.forEach(function (stampItem, index) {\n var name = DynamicStampItem[stampItem];\n switch (name) {\n case 'NotApproved':\n name = 'Not Approved';\n break;\n }\n dynamicStamps_1.push({ text: _this.pdfViewer.localeObj.getConstant(name), label: name });\n });\n }\n if (this.pdfViewer.stampSettings.signStamps && this.pdfViewer.stampSettings.signStamps.length > 0) {\n var signStamps_1 = [];\n items.push({ text: this.pdfViewer.localeObj.getConstant('Sign Here'), label: 'Sign Here', items: signStamps_1 });\n this.pdfViewer.stampSettings.signStamps.forEach(function (stampItem, index) {\n var name = SignStampItem[stampItem];\n switch (name) {\n case 'InitialHere':\n name = 'Initial Here';\n break;\n case 'SignHere':\n name = 'Sign Here';\n break;\n }\n signStamps_1.push({ text: _this.pdfViewer.localeObj.getConstant(name), label: name });\n });\n }\n if (this.pdfViewer.stampSettings.standardBusinessStamps && this.pdfViewer.stampSettings.standardBusinessStamps.length > 0) {\n var standardsBusinessStamps_1 = [];\n items.push({ text: this.pdfViewer.localeObj.getConstant('Standard Business'), label: 'Standard Business', items: standardsBusinessStamps_1 });\n this.pdfViewer.stampSettings.standardBusinessStamps.forEach(function (stampItem, index) {\n var name = StandardBusinessStampItem[stampItem];\n switch (name) {\n case 'NotApproved':\n name = 'Not Approved';\n break;\n case 'ForPublicRelease':\n name = 'For Public Release';\n break;\n case 'NotForPublicRelease':\n name = 'Not For Public Release';\n break;\n case 'ForComment':\n name = 'For Comment';\n break;\n case 'PreliminaryResults':\n name = 'Preliminary Results';\n break;\n case 'InformationOnly':\n name = 'Information Only';\n break;\n }\n standardsBusinessStamps_1.push({ text: _this.pdfViewer.localeObj.getConstant(name), label: name });\n });\n }\n if (this.pdfViewer.customStampSettings.enableCustomStamp && !Browser.isDevice) {\n if (items.length > 0) {\n items.push({ separator: true });\n }\n items.push({ text: this.pdfViewer.localeObj.getConstant('Custom Stamp'), label: 'Custom Stamp', items: [] });\n }\n this.stampMenu = [\n {\n iconCss: 'e-pv-stamp-icon e-pv-icon',\n items: items\n }\n ];\n var menuOptions = {\n items: this.stampMenu,\n cssClass: 'e-custom-scroll',\n showItemOnClick: true,\n enableScrolling: true,\n beforeOpen: function (args) {\n _this.resetFreeTextAnnot();\n if (args.parentItem.text === '' && _this.pdfViewer.customStampSettings.isAddToMenu && args.items.length > 0) {\n // eslint-disable-next-line\n var currentElements = null;\n for (var i = 0; i < args.items.length; i++) {\n if (args.items[i].text === _this.pdfViewer.localeObj.getConstant('Custom Stamp')) {\n args.items[i].items = [];\n currentElements = args.items[i];\n break;\n }\n }\n // eslint-disable-next-line\n var elements = _this.pdfViewerBase.customStampCollection;\n // eslint-disable-next-line\n var stampElements = _this.pdfViewer.customStampSettings.customStamps;\n if (elements.length === 0 && stampElements && stampElements.length > 0) {\n for (var n = 0; n < stampElements.length; n++) {\n // eslint-disable-next-line max-len\n elements.push({ customStampName: stampElements[n].customStampName, customStampImageSource: stampElements[n].customStampImageSource });\n }\n }\n for (var m = 0; m < elements.length; m++) {\n if (currentElements != null) {\n currentElements.items.push({ text: elements[m].customStampName });\n for (var i = 0; i < args.items.length; i++) {\n if (args.items[i].text === _this.pdfViewer.localeObj.getConstant('Custom Stamp')) {\n var liElem = args.element.children[i];\n if (liElem && !liElem.childElementCount) {\n var span = document.createElement('span');\n span.className = 'e-icons e-caret e-menu-caret-icon';\n liElem.appendChild(span);\n liElem.setAttribute('aria-haspopup', 'true');\n liElem.setAttribute('aria-expanded', 'false');\n }\n }\n }\n }\n }\n }\n if (args.parentItem.text === _this.pdfViewer.localeObj.getConstant('Custom Stamp')) {\n // eslint-disable-next-line\n var stampElements = _this.pdfViewer.customStampSettings.customStamps;\n if (stampElements && stampElements.length > 10) {\n closest(args.element, '.e-menu-wrapper').style.height = '350px';\n }\n }\n _this.stampParentID = args.parentItem.text;\n _this.menuItems.showItemOnClick = false;\n },\n beforeClose: function (args) {\n // eslint-disable-next-line max-len\n if ((args.parentItem && args.parentItem.text !== _this.pdfViewer.localeObj.getConstant('Custom Stamp') && args.parentItem.text !== 'Standard Business' && args.parentItem.text !== 'Dynamic' && args.parentItem.text !== 'Sign Here') || !args.parentItem) {\n _this.menuItems.showItemOnClick = true;\n }\n },\n select: function (args) {\n _this.pdfViewerBase.isAlreadyAdded = false;\n if (args.item.text === _this.pdfViewer.localeObj.getConstant('Custom Stamp')) {\n _this.updateInteractionTools();\n _this.checkStampAnnotations();\n _this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n // eslint-disable-next-line\n var stampImage = document.getElementById(_this.pdfViewer.element.id + '_stampElement');\n if (stampImage) {\n stampImage.click();\n }\n _this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n // eslint-disable-next-line max-len\n }\n else if (_this.stampParentID === _this.pdfViewer.localeObj.getConstant('Custom Stamp') && args.item.text !== '') {\n // eslint-disable-next-line\n var elements = _this.pdfViewerBase.customStampCollection;\n for (var n = 0; n < elements.length; n++) {\n if (elements[n].customStampName === args.item.text) {\n _this.pdfViewer.annotationModule.stampAnnotationModule.customStampName = args.item.text;\n _this.checkStampAnnotations();\n _this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n _this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n _this.pdfViewerBase.stampAdded = true;\n _this.pdfViewerBase.isAlreadyAdded = true;\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.stampAnnotationModule.createCustomStampAnnotation(elements[n].customStampImageSource);\n _this.pdfViewerBase.stampAdded = false;\n }\n }\n // eslint-disable-next-line max-len\n }\n else if (args.item.text !== _this.pdfViewer.localeObj.getConstant('Dynamic') && args.item.text !== '' && args.item.text !== 'Standard Business' && (_this.stampParentID === 'Sign Here' || args.item.text !== 'Sign Here')) {\n _this.updateInteractionTools();\n _this.checkStampAnnotations();\n _this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n _this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n _this.pdfViewerBase.stampAdded = true;\n _this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n if (_this.stampParentID === _this.pdfViewer.localeObj.getConstant('Dynamic')) {\n _this.pdfViewerBase.isDynamicStamp = true;\n _this.pdfViewer.annotationModule.stampAnnotationModule.retrieveDynamicStampAnnotation(args.item.label);\n }\n else {\n _this.pdfViewerBase.isDynamicStamp = false;\n _this.pdfViewer.annotationModule.stampAnnotationModule.retrievestampAnnotation(args.item.label);\n }\n if (Browser.isDevice) {\n _this.stampToolMobileForMobile(_this.pdfViewer.element.id + '_annotation_stamp');\n }\n }\n }\n };\n this.menuItems = new Menu(menuOptions, '#' + this.pdfViewer.element.id + 'contextMenuElement');\n contextMenuElement.parentElement.classList.add('e-pv-stamp');\n if (this.pdfViewer.enableRtl) {\n this.menuItems.enableRtl = true;\n }\n return contextMenuElement;\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.createCustomStampElement = function () {\n // eslint-disable-next-line\n var stampImage = createElement('input', { id: this.pdfViewer.element.id + '_stampElement', attrs: { 'type': 'file' } });\n stampImage.setAttribute('accept', '.jpg,.jpeg,.png');\n stampImage.style.position = 'absolute';\n stampImage.style.left = '0px';\n stampImage.style.top = '0px';\n stampImage.style.visibility = 'hidden';\n document.body.appendChild(stampImage);\n stampImage.addEventListener('change', this.addStampImage);\n };\n AnnotationToolbar.prototype.checkStampAnnotations = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode && this.pdfViewer.selectedItems && this.pdfViewer.selectedItems.annotations) {\n for (var i = 0; i < this.pdfViewer.selectedItems.annotations.length; i++) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[i];\n // eslint-disable-next-line\n if (annotation && !annotation.annotName && !annotation.author && (annotation.shapeAnnotationType !== 'Shape' || annotation.shapeAnnotationType !== 'Image')) {\n this.pdfViewer.remove(annotation);\n this.pdfViewer.annotation.renderAnnotations(annotation.pageIndex, null, null, null);\n this.pdfViewer.clearSelection(annotation.pageIndex);\n }\n }\n }\n };\n AnnotationToolbar.prototype.createDropDowns = function (isPath) {\n var _this = this;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.shapeElement = this.pdfViewerBase.getElement('_annotation_shapes');\n var shapeToolbar = this.createShapeOptions(this.shapeElement.id, true);\n // eslint-disable-next-line max-len\n this.shapeDropDown = this.createDropDownButton(this.shapeElement, 'e-pv-annotation-shape-icon', shapeToolbar.element, this.pdfViewer.localeObj.getConstant('Add Shapes'));\n this.calibrateElement = this.pdfViewerBase.getElement('_annotation_calibrate');\n var calibrateToolbar = this.createShapeOptions(this.calibrateElement.id, false);\n // eslint-disable-next-line max-len\n this.calibrateDropDown = this.createDropDownButton(this.calibrateElement, 'e-pv-annotation-calibrate-icon', calibrateToolbar.element, this.pdfViewer.localeObj.getConstant('Calibrate'));\n }\n if (!isPath) {\n this.colorDropDownElement = this.pdfViewerBase.getElement('_annotation_color');\n this.colorPalette = this.createColorPicker(this.colorDropDownElement.id);\n this.colorPalette.change = this.onColorPickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.colorDropDown = this.createDropDownButton(this.colorDropDownElement, 'e-pv-annotation-color-icon', this.colorPalette.element.parentElement, this.pdfViewer.localeObj.getConstant('Color edit'));\n this.colorDropDown.beforeOpen = this.colorDropDownBeforeOpen.bind(this);\n this.colorDropDown.open = this.colorDropDownOpen.bind(this);\n this.pdfViewerBase.getElement('_annotation_color-popup').addEventListener('click', this.onColorPickerCancelClick.bind(this));\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.strokeDropDownElement = this.pdfViewerBase.getElement('_annotation_stroke');\n this.strokeColorPicker = this.createColorPicker(this.strokeDropDownElement.id);\n this.strokeColorPicker.change = this.onStrokePickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.strokeDropDown = this.createDropDownButton(this.strokeDropDownElement, 'e-pv-annotation-stroke-icon', this.strokeColorPicker.element.parentElement, this.pdfViewer.localeObj.getConstant('Stroke edit'));\n this.strokeDropDown.beforeOpen = this.strokeDropDownBeforeOpen.bind(this);\n this.strokeDropDown.open = this.strokeDropDownOpen.bind(this);\n this.pdfViewerBase.getElement('_annotation_stroke-popup').addEventListener('click', this.onStrokePickerCancelClick.bind(this));\n this.thicknessElement = this.pdfViewerBase.getElement('_annotation_thickness');\n var thicknessContainer = this.createThicknessSlider(this.thicknessElement.id);\n // eslint-disable-next-line max-len\n this.thicknessDropDown = this.createDropDownButton(this.thicknessElement, 'e-pv-annotation-thickness-icon', thicknessContainer, this.pdfViewer.localeObj.getConstant('Change thickness'));\n this.thicknessDropDown.beforeOpen = this.thicknessDropDownBeforeOpen.bind(this);\n this.thicknessSlider.change = this.thicknessChange.bind(this);\n this.thicknessSlider.changed = this.thicknessChange.bind(this);\n this.thicknessDropDown.open = this.thicknessDropDownOpen.bind(this);\n }\n if (!isPath) {\n this.opacityDropDownElement = this.pdfViewerBase.getElement('_annotation_opacity');\n var sliderContainer = this.createSlider(this.opacityDropDownElement.id);\n // eslint-disable-next-line max-len\n this.opacityDropDown = this.createDropDownButton(this.opacityDropDownElement, 'e-pv-annotation-opacity-icon', sliderContainer, this.pdfViewer.localeObj.getConstant('Opacity edit'));\n this.opacityDropDown.beforeOpen = this.opacityDropDownBeforeOpen.bind(this);\n this.opacitySlider.change = this.opacityChange.bind(this);\n this.opacitySlider.changed = this.opacityChange.bind(this);\n this.opacityDropDown.open = this.opacityDropDownOpen.bind(this);\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.fontFamilyElement = this.pdfViewerBase.getElement('_annotation_fontname');\n this.createDropDownListForFamily(this.fontFamilyElement);\n //this.fontFamilyElement.style.textAlign = 'left';\n this.fontFamilyElement.addEventListener('change', function () {\n _this.onFontFamilyChange.bind(_this);\n });\n this.fontSizeElement = this.pdfViewerBase.getElement('_annotation_fontsize');\n this.createDropDownListForSize(this.fontSizeElement);\n this.fontColorElement = this.pdfViewerBase.getElement('_annotation_textcolor');\n this.fontColorPalette = this.createColorPicker(this.fontColorElement.id);\n this.fontColorPalette.change = this.onFontColorChange.bind(this);\n // eslint-disable-next-line max-len\n this.fontColorDropDown = this.createDropDownButton(this.fontColorElement, 'e-pv-annotation-textcolor-icon', this.fontColorPalette.element.parentElement, this.pdfViewer.localeObj.getConstant('Font color'));\n this.textAlignElement = this.pdfViewerBase.getElement('_annotation_textalign');\n this.alignmentToolbar = this.createShapeOptions(this.textAlignElement.id, undefined, true);\n // eslint-disable-next-line max-len\n this.textAlignDropDown = this.createDropDownButton(this.textAlignElement, 'e-pv-annotation-textalign-icon', this.alignmentToolbar.element, this.pdfViewer.localeObj.getConstant('Text Align'));\n this.textAlignDropDown.beforeOpen = this.textAlignDropDownBeforeOpen.bind(this);\n this.textPropElement = this.pdfViewerBase.getElement('_annotation_textproperties');\n this.propertiesToolbar = this.createShapeOptions(this.textPropElement.id, undefined, false, true);\n // eslint-disable-next-line max-len\n this.textPropertiesDropDown = this.createPropDropDownButton(this.textPropElement, 'e-pv-annotation-textprop-icon', this.propertiesToolbar.element, this.pdfViewer.localeObj.getConstant('Text Properties'));\n this.textPropertiesDropDown.beforeOpen = this.textPropertiesDropDownBeforeOpen.bind(this);\n }\n };\n AnnotationToolbar.prototype.mobileColorpicker = function (id) {\n var _this = this;\n this.opacityDropDownElement = this.pdfViewerBase.getElement('_annotation_opacity');\n var sliderContainer = this.createSlider(this.opacityDropDownElement.id);\n // eslint-disable-next-line max-len\n this.opacityDropDown = this.createDropDownButton(this.opacityDropDownElement, 'e-pv-annotation-opacity-icon', sliderContainer, this.pdfViewer.localeObj.getConstant('Opacity edit'));\n this.opacityDropDown.beforeOpen = this.opacityDropDownBeforeOpen.bind(this);\n this.opacitySlider.change = this.opacityChange.bind(this);\n this.opacitySlider.changed = this.opacityChange.bind(this);\n this.opacityDropDown.open = this.opacityDropDownOpen.bind(this);\n if (id === this.pdfViewer.element.id + '_annotation_shapes') {\n id = this.pdfViewer.element.id + '_annotation_shapesIcon';\n }\n else if (id === this.pdfViewer.element.id + '_annotation_calibrate') {\n id = this.pdfViewer.element.id + '_annotation_calibrateIcon';\n }\n else if (id === this.pdfViewer.element.id + '_highlight') {\n id = this.pdfViewer.element.id + '_highlightIcon';\n }\n else if (id === this.pdfViewer.element.id + '_underline') {\n id = this.pdfViewer.element.id + '_underlineIcon';\n }\n else if (id === this.pdfViewer.element.id + '_strikethrough') {\n id = this.pdfViewer.element.id + '_strikethroughIcon';\n }\n // eslint-disable-next-line max-len\n if (id === this.pdfViewer.element.id + '_annotation_shapesIcon' || id === this.pdfViewer.element.id + '_annotation_calibrateIcon' || id === this.pdfViewer.element.id + '_annotation_freeTextEdit' ||\n // eslint-disable-next-line max-len\n id === this.pdfViewer.element.id + '_highlightIcon' || id === this.pdfViewer.element.id + '_underlineIcon' || id === this.pdfViewer.element.id + '_strikethroughIcon' || id === this.pdfViewer.element.id + '_annotation_inkIcon' || id === this.pdfViewer.element.id + '_annotation_handwrittenSign') {\n if (id !== this.pdfViewer.element.id + '_annotation_handwrittenSign' && id !== this.pdfViewer.element.id + '_annotation_inkIcon') {\n this.colorDropDownElement = this.pdfViewerBase.getElement('_annotation_color');\n this.colorPalette = this.createColorPicker(this.colorDropDownElement.id);\n this.colorPalette.change = this.onColorPickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.colorDropDown = this.createDropDownButton(this.colorDropDownElement, 'e-pv-annotation-color-icon', this.colorPalette.element.parentElement, this.pdfViewer.localeObj.getConstant('Color edit'));\n this.colorDropDown.beforeOpen = this.colorDropDownBeforeOpen.bind(this);\n this.colorDropDown.open = this.colorDropDownOpen.bind(this);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.getElement('_annotation_color-popup').addEventListener('click', this.onColorPickerCancelClick.bind(this));\n }\n if (id === this.pdfViewer.element.id + '_annotation_freeTextEdit') {\n this.fontFamilyElement = this.pdfViewerBase.getElement('_annotation_fontname');\n this.createDropDownListForFamily(this.fontFamilyElement);\n this.fontFamilyElement.style.textAlign = 'left';\n this.fontFamilyElement.addEventListener('change', function () { _this.onFontFamilyChange.bind(_this); });\n this.fontSizeElement = this.pdfViewerBase.getElement('_annotation_fontsize');\n this.createDropDownListForSize(this.fontSizeElement);\n this.fontColorElement = this.pdfViewerBase.getElement('_annotation_textcolor');\n this.fontColorPalette = this.createColorPicker(this.fontColorElement.id);\n this.fontColorPalette.change = this.onFontColorChange.bind(this);\n // eslint-disable-next-line max-len\n this.fontColorDropDown = this.createDropDownButton(this.fontColorElement, 'e-pv-annotation-textcolor-icon', this.fontColorPalette.element.parentElement, this.pdfViewer.localeObj.getConstant('Font color'));\n this.textAlignElement = this.pdfViewerBase.getElement('_annotation_textalign');\n this.alignmentToolbar = this.createShapeOptions(this.textAlignElement.id, undefined, true);\n // eslint-disable-next-line max-len\n this.textAlignDropDown = this.createDropDownButton(this.textAlignElement, 'e-pv-annotation-textalign-icon', this.alignmentToolbar.element, this.pdfViewer.localeObj.getConstant('Text Align'));\n this.textAlignDropDown.beforeOpen = this.textAlignDropDownBeforeOpen.bind(this);\n this.textPropElement = this.pdfViewerBase.getElement('_annotation_textproperties');\n this.propertiesToolbar = this.createShapeOptions(this.textPropElement.id, undefined, false, true);\n // eslint-disable-next-line max-len\n this.textPropertiesDropDown = this.createPropDropDownButton(this.textPropElement, 'e-pv-annotation-textprop-icon', this.propertiesToolbar.element, this.pdfViewer.localeObj.getConstant('Text Properties'));\n this.textPropertiesDropDown.beforeOpen = this.textPropertiesDropDownBeforeOpen.bind(this);\n }\n // eslint-disable-next-line max-len\n if (id === this.pdfViewer.element.id + '_annotation_shapesIcon' || id === this.pdfViewer.element.id + '_annotation_calibrateIcon' || id === this.pdfViewer.element.id + '_annotation_freeTextEdit' ||\n id === this.pdfViewer.element.id + '_annotation_inkIcon' || id === this.pdfViewer.element.id + '_annotation_handwrittenSign') {\n this.thicknessElement = this.pdfViewerBase.getElement('_annotation_thickness');\n var thicknessContainer = this.createThicknessSlider(this.thicknessElement.id);\n // eslint-disable-next-line max-len\n this.thicknessDropDown = this.createDropDownButton(this.thicknessElement, 'e-pv-annotation-thickness-icon', thicknessContainer, this.pdfViewer.localeObj.getConstant('Change thickness'));\n this.thicknessDropDown.beforeOpen = this.thicknessDropDownBeforeOpen.bind(this);\n this.thicknessSlider.change = this.thicknessChange.bind(this);\n this.thicknessSlider.changed = this.thicknessChange.bind(this);\n this.thicknessDropDown.open = this.thicknessDropDownOpen.bind(this);\n this.strokeDropDownElement = this.pdfViewerBase.getElement('_annotation_stroke');\n this.strokeColorPicker = this.createColorPicker(this.strokeDropDownElement.id);\n this.strokeColorPicker.change = this.onStrokePickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.strokeDropDown = this.createDropDownButton(this.strokeDropDownElement, 'e-pv-annotation-stroke-icon', this.strokeColorPicker.element.parentElement, this.pdfViewer.localeObj.getConstant('Stroke edit'));\n this.strokeDropDown.beforeOpen = this.strokeDropDownBeforeOpen.bind(this);\n this.strokeDropDown.open = this.strokeDropDownOpen.bind(this);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.getElement('_annotation_stroke-popup').addEventListener('click', this.onStrokePickerCancelClick.bind(this));\n }\n }\n };\n AnnotationToolbar.prototype.opacityDropDownOpen = function (args) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n args.element.parentElement.style.left = '0px';\n args.element.parentElement.style.top = (this.pdfViewerBase.viewerContainer.clientHeight) + 'px';\n }\n else {\n this.calculateToolbarPosition(args);\n }\n };\n AnnotationToolbar.prototype.onColorPickerCancelClick = function (event) {\n if (event.target.classList.contains('e-cancel')) {\n this.colorDropDown.toggle();\n }\n };\n AnnotationToolbar.prototype.onStrokePickerCancelClick = function (event) {\n if (event.target.classList.contains('e-cancel')) {\n this.strokeDropDown.toggle();\n }\n };\n AnnotationToolbar.prototype.colorDropDownBeforeOpen = function (args) {\n this.colorPalette.noColor = false;\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.colorPalette.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation.color;\n }\n else {\n this.setCurrentColorInPicker();\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.colorPalette.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill;\n this.colorPalette.noColor = true;\n }\n else {\n this.setCurrentColorInPicker();\n }\n this.colorPalette.refresh();\n this.updateColorInIcon(this.colorDropDownElement, this.colorPalette.value);\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.setCurrentColorInPicker = function () {\n if (!isBlazor()) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n switch (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode) {\n case 'Highlight':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightColor);\n break;\n case 'Underline':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineColor);\n break;\n case 'Strikethrough':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughColor);\n break;\n }\n }\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotationModule.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.lineFillColor);\n break;\n case 'Arrow':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.arrowFillColor);\n break;\n case 'Rectangle':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.rectangleFillColor);\n break;\n case 'Circle':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.circleFillColor);\n break;\n case 'Polygon':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.polygonFillColor);\n break;\n }\n }\n if (this.colorDropDownElement) {\n this.updateColorInIcon(this.colorDropDownElement, this.colorPalette.value);\n }\n }\n };\n AnnotationToolbar.prototype.colorDropDownOpen = function (args) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n args.element.parentElement.style.top = (this.pdfViewerBase.viewerContainer.clientHeight / 2) + 'px';\n }\n this.colorPalette.refresh();\n };\n AnnotationToolbar.prototype.strokeDropDownBeforeOpen = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.strokeColorPicker.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor;\n }\n else {\n this.setCurrentStrokeColorInPicker();\n }\n this.strokeColorPicker.refresh();\n this.updateColorInIcon(this.strokeDropDownElement, this.strokeColorPicker.value);\n this.updateInkannotationItems();\n };\n AnnotationToolbar.prototype.setCurrentStrokeColorInPicker = function () {\n if (!isBlazor()) {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotationModule.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.lineStrokeColor);\n break;\n case 'Arrow':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.arrowStrokeColor);\n break;\n case 'Rectangle':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.rectangleStrokeColor);\n break;\n case 'Circle':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.circleStrokeColor);\n break;\n case 'Polygon':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.polygonStrokeColor);\n break;\n }\n }\n }\n };\n AnnotationToolbar.prototype.strokeDropDownOpen = function (args) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n args.element.parentElement.style.top = (this.pdfViewerBase.viewerContainer.clientHeight / 2) + 'px';\n }\n this.strokeColorPicker.refresh();\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onFontColorChange = function (args) {\n // eslint-disable-next-line\n var currentColor;\n if (!isBlazor()) {\n currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n }\n else {\n currentColor = args[0];\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.pdfViewer.annotation.modifyFontColor(currentColor);\n }\n else {\n this.pdfViewer.freeTextSettings.fontColor = currentColor;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n if (isBlazor()) {\n this.fontColorElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-textcolor-container');\n this.updateColorInIcon(this.fontColorElementInBlazor, currentColor);\n }\n else {\n this.updateColorInIcon(this.fontColorElement, currentColor);\n this.fontColorDropDown.toggle();\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onFontFamilyChange = function (args) {\n var currentValue;\n if (!isBlazor()) {\n currentValue = (args && args.fontFamily && args.fontFamily.value) ? args.fontFamily.value : '';\n }\n else {\n currentValue = args;\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1 && currentValue) {\n this.pdfViewer.annotation.modifyFontFamily(currentValue);\n }\n else {\n this.pdfViewer.freeTextSettings.fontFamily = currentValue;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onFontSizeChange = function (args) {\n var currentValue;\n if (!isBlazor()) {\n currentValue = (args && args.fontSize && args.fontSize.value) ? args.fontSize.value : '';\n }\n else {\n currentValue = args;\n }\n var fontSize = parseFloat(currentValue);\n if (this.pdfViewer.selectedItems.annotations.length === 1 && currentValue) {\n this.pdfViewer.annotation.modifyFontSize(fontSize);\n }\n else {\n this.pdfViewer.freeTextSettings.fontSize = fontSize;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n };\n AnnotationToolbar.prototype.textAlignDropDownBeforeOpen = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (args.element.getElementsByTagName('button') && args.element.getElementsByTagName('button').length > 0) {\n // eslint-disable-next-line\n var dropDownOptions = args.element.getElementsByTagName('button');\n // eslint-disable-next-line\n var selectedAnnotation = this.pdfViewer.selectedItems.annotations[0];\n for (var n = 0; n < dropDownOptions.length; n++) {\n if (dropDownOptions[n]) {\n dropDownOptions[n].classList.remove('textprop-option-active');\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_left_align') && selectedAnnotation.textAlign === 'Left') {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_right_align') && selectedAnnotation.textAlign === 'Right') {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_center_align') && selectedAnnotation.textAlign === 'Center') {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_justify_align') && selectedAnnotation.textAlign === 'Justify') {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n }\n }\n }\n }\n };\n AnnotationToolbar.prototype.textPropertiesDropDownBeforeOpen = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (args.element.getElementsByTagName('button') && args.element.getElementsByTagName('button').length > 0) {\n // eslint-disable-next-line\n var dropDownOptions = args.element.getElementsByTagName('button');\n // eslint-disable-next-line\n var selectedAnnotation = this.pdfViewer.selectedItems.annotations[0];\n for (var n = 0; n < dropDownOptions.length; n++) {\n if (dropDownOptions[n]) {\n dropDownOptions[n].classList.remove('textprop-option-active');\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_bold') && selectedAnnotation.font.isBold) {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_italic') && selectedAnnotation.font.isItalic) {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_strikeout') && selectedAnnotation.font.isStrikeout) {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_underline_textinput') && selectedAnnotation.font.isUnderline) {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onClickTextAlignment = function (args) {\n var currentValue;\n if (isBlazor()) {\n currentValue = args[0];\n }\n else {\n currentValue = (args && args.item && args.item.value) ? args.item.value : '';\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1 && currentValue) {\n this.pdfViewer.annotation.modifyTextAlignment(currentValue);\n }\n else {\n this.pdfViewer.freeTextSettings.textAlignment = args.item.value;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n this.updateTextAlignInIcon(currentValue);\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onClickTextProperties = function (args) {\n var currentValue;\n if (isBlazor()) {\n currentValue = args[0];\n }\n else {\n currentValue = (args && args.item && args.item.value) ? args.item.value : '';\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1 && currentValue) {\n var fontInfo = { isBold: undefined, isItalic: undefined, isStrikeout: undefined, isUnderline: undefined };\n if (currentValue === 'bold') {\n fontInfo.isBold = !(this.pdfViewer.selectedItems.annotations[0].font.isBold);\n }\n else if (currentValue === 'italic') {\n fontInfo.isItalic = !(this.pdfViewer.selectedItems.annotations[0].font.isItalic);\n }\n else if (currentValue === 'underline') {\n fontInfo.isUnderline = !(this.pdfViewer.selectedItems.annotations[0].font.isUnderline);\n }\n else if (currentValue === 'strikeout') {\n fontInfo.isStrikeout = !(this.pdfViewer.selectedItems.annotations[0].font.isStrikeout);\n }\n this.pdfViewer.annotation.modifyTextProperties(fontInfo, currentValue);\n }\n else {\n if (currentValue === 'bold') {\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isBold) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isBold = false;\n }\n else {\n this.pdfViewer.freeTextSettings.fontStyle = 1;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n else if (currentValue === 'italic') {\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isItalic) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isItalic = false;\n }\n else {\n this.pdfViewer.freeTextSettings.fontStyle = 2;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n else if (currentValue === 'underline') {\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isUnderline) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isUnderline = false;\n }\n else {\n this.pdfViewer.freeTextSettings.fontStyle = 4;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isStrikethrough = false;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n else if (currentValue === 'strikeout') {\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isStrikethrough) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isStrikethrough = false;\n }\n else {\n this.pdfViewer.freeTextSettings.fontStyle = 8;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isUnderline = false;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n }\n this.updateTextPropertySelection(currentValue);\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.opacityChange = function (args) {\n var opacityValue = 1;\n if (args && args.length === 1) {\n opacityValue = args[0];\n }\n else {\n opacityValue = args.value;\n }\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n if (!isBlazor()) {\n if (this.isCurrentAnnotationOpacitySet && args.name === 'changed') {\n this.isCurrentAnnotationOpacitySet = false;\n }\n else {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyOpacityProperty(args);\n }\n }\n else {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyOpacityProperty(null, opacityValue);\n }\n }\n else {\n switch (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode) {\n case 'Highlight':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightOpacity = opacityValue / 100;\n break;\n case 'Underline':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineOpacity = opacityValue / 100;\n break;\n case 'Strikethrough':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughOpacity = opacityValue / 100;\n break;\n }\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n // eslint-disable-next-line\n var currentAnnotations = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line max-len\n if (currentAnnotations != null && (currentAnnotations.shapeAnnotationType === 'Stamp' || currentAnnotations.shapeAnnotationType === 'Image')) {\n var clonedObject = cloneObject(currentAnnotations);\n var redoClonedObject = cloneObject(currentAnnotations);\n redoClonedObject.opacity = opacityValue / 100;\n this.pdfViewer.nodePropertyChange(currentAnnotations, { opacity: opacityValue / 100 });\n this.pdfViewer.annotation.triggerAnnotationPropChange(currentAnnotations, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(this.pdfViewer.selectedItems.annotations[0].pageIndex, null, this.pdfViewer.selectedItems.annotations[0], 'stampOpacity', '', clonedObject, redoClonedObject);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stampAnnotationModule.updateSessionStorage(this.pdfViewer.selectedItems.annotations[0], null, 'opacity');\n }\n else {\n if (isBlazor()) {\n this.pdfViewer.annotation.modifyOpacity(opacityValue, true);\n }\n else {\n if (args.name === 'changed') {\n if (args.value !== args.previousValue) {\n this.pdfViewer.annotation.modifyOpacity(args);\n }\n }\n }\n }\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.pdfViewer.annotation.shapeAnnotationModule.lineOpacity = opacityValue / 100;\n break;\n case 'Arrow':\n this.pdfViewer.annotation.shapeAnnotationModule.arrowOpacity = opacityValue / 100;\n break;\n case 'Rectangle':\n this.pdfViewer.annotation.shapeAnnotationModule.rectangleOpacity = opacityValue / 100;\n break;\n case 'Circle':\n this.pdfViewer.annotation.shapeAnnotationModule.circleOpacity = opacityValue / 100;\n break;\n case 'Polygon':\n this.pdfViewer.annotation.shapeAnnotationModule.polygonOpacity = opacityValue / 100;\n break;\n }\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotation;\n if (annotationModule && annotationModule.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.opacity = opacityValue / 100;\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.opacity = opacityValue / 100;\n if (this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.freeTextSettings.opacity = opacityValue / 100;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n }\n if (!isBlazor()) {\n this.updateOpacityIndicator();\n }\n };\n AnnotationToolbar.prototype.opacityDropDownBeforeOpen = function (args) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.isCurrentAnnotationOpacitySet = true;\n // eslint-disable-next-line max-len\n this.opacitySlider.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation.opacity * 100;\n }\n else {\n switch (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode) {\n case 'Highlight':\n this.opacitySlider.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightOpacity * 100;\n break;\n case 'Underline':\n this.opacitySlider.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineOpacity * 100;\n break;\n case 'Strikethrough':\n this.opacitySlider.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughOpacity * 100;\n break;\n }\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.opacitySlider.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.opacity * 100;\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.lineOpacity * 100;\n break;\n case 'Arrow':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.arrowOpacity * 100;\n break;\n case 'Rectangle':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.rectangleOpacity * 100;\n break;\n case 'Circle':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.circleOpacity * 100;\n break;\n case 'Polygon':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.polygonOpacity * 100;\n break;\n }\n }\n }\n this.updateOpacityIndicator();\n this.updateInkannotationItems();\n };\n AnnotationToolbar.prototype.thicknessDropDownBeforeOpen = function () {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.thicknessSlider.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeWidth;\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.lineThickness;\n break;\n case 'Arrow':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.arrowThickness;\n break;\n case 'Rectangle':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.rectangleThickness;\n break;\n case 'Circle':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.circleThickness;\n break;\n case 'Polygon':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.polygonThickness;\n break;\n }\n }\n }\n this.updateThicknessIndicator();\n this.updateInkannotationItems();\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.thicknessDropDownOpen = function (args) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n args.element.parentElement.style.left = '0px';\n args.element.parentElement.style.top = (this.pdfViewerBase.viewerContainer.clientHeight) + 'px';\n }\n else {\n this.calculateToolbarPosition(args);\n }\n };\n AnnotationToolbar.prototype.calculateToolbarPosition = function (args) {\n if (args.element && args.element.parentElement) {\n var leftValue = parseFloat(args.element.parentElement.style.left);\n var width = args.element.parentElement.offsetWidth;\n if ((leftValue + width) < (this.pdfViewer.element.offsetWidth + 10)) {\n args.element.parentElement.style.left = (leftValue - width) + 'px';\n }\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.thicknessChangeInBlazor = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.pdfViewer.annotation.modifyThickness(args[0]);\n }\n else {\n this.ShapeThickness(args[0]);\n }\n };\n AnnotationToolbar.prototype.thicknessChange = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (args.name === 'changed') {\n this.pdfViewer.annotation.modifyThickness(args.value);\n if (!isBlazor()) {\n this.updateThicknessIndicator();\n }\n var annotationModule = this.pdfViewer.annotation;\n if (annotationModule && annotationModule.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.thickness = args.value;\n }\n }\n }\n else {\n this.ShapeThickness(args.value);\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.ShapeThickness = function (args) {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.pdfViewer.annotation.shapeAnnotationModule.lineThickness = args;\n break;\n case 'Arrow':\n this.pdfViewer.annotation.shapeAnnotationModule.arrowThickness = args;\n break;\n case 'Rectangle':\n this.pdfViewer.annotation.shapeAnnotationModule.rectangleThickness = args;\n break;\n case 'Circle':\n this.pdfViewer.annotation.shapeAnnotationModule.circleThickness = args;\n break;\n case 'Polygon':\n this.pdfViewer.annotation.shapeAnnotationModule.polygonThickness = args;\n break;\n }\n // eslint-disable-next-line\n var annotationModule_1 = this.pdfViewer.annotation;\n if (annotationModule_1 && annotationModule_1.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.thickness = args.value;\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.thickness = args.value;\n }\n if (this.pdfViewer.drawingObject && this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.freeTextSettings.borderWidth = args.value;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotation;\n if (annotationModule && annotationModule.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.thickness = args;\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.thickness = args;\n }\n if (this.pdfViewer.drawingObject && this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.freeTextSettings.borderWidth = args;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n if (!isBlazor()) {\n this.updateThicknessIndicator();\n }\n };\n AnnotationToolbar.prototype.createDropDownButton = function (element, iconClass, target, tooltipText) {\n // eslint-disable-next-line max-len\n var dropDownButton = new DropDownButton({ iconCss: iconClass + ' e-pv-icon', target: target });\n if (this.pdfViewer.enableRtl) {\n dropDownButton.enableRtl = true;\n }\n dropDownButton.appendTo(element);\n this.primaryToolbar.createTooltip(element, tooltipText);\n return dropDownButton;\n };\n AnnotationToolbar.prototype.createShapeOptions = function (idString, isShape, isAlign, isTextProp) {\n var toolbarElement = createElement('div', { id: idString + '_target', className: 'e-pv-shapes-toolbar' });\n document.body.appendChild(toolbarElement);\n var toolbar;\n if (isAlign) {\n toolbar = new Tool({ items: this.textAlignmentToolbarItems(), overflowMode: 'MultiRow' }, toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterAlignmentToolbarCreation();\n }\n else if (isTextProp) {\n toolbar = new Tool({ items: this.textPropertiesToolbarItems(), overflowMode: 'MultiRow' }, toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterPropertiesToolbarCreation();\n }\n else {\n if (isShape) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n toolbar = new Tool({ items: this.createShapeToolbarItems(), overflowMode: 'MultiRow', clicked: this.onShapeToolbarClicked.bind(this) }, toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterShapeToolbarCreation();\n }\n else {\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: idString + '_target', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n // eslint-disable-next-line max-len\n toolbar = new Tool({ items: this.createShapeToolbarItemsForMobile(), overflowMode: 'Scrollable', clicked: this.onShapeToolbarClicked.bind(this) }, this.toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterShapeToolbarCreationForMobile();\n }\n }\n else {\n // eslint-disable-next-line max-len\n toolbar = new Tool({ items: this.createCalibrateToolbarItems(), overflowMode: 'MultiRow', clicked: this.onCalibrateToolbarClicked.bind(this) }, toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterCalibrateToolbarCreation();\n }\n }\n return toolbar;\n };\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createPropertyToolbarForMobile = function (shapeType) {\n var _this = this;\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n var fontFamilyTemplate = this.getTemplate('input', '_annotation_fontname', 'e-pv-annotation-fontname-container');\n var fontSizeTemplate = this.getTemplate('input', '_annotation_fontsize', 'e-pv-annotation-fontsize-container');\n var textColorTemplate = this.getTemplate('span', '_annotation_textcolor', 'e-pv-annotation-textcolor-container');\n var alignmentTemplate = this.getTemplate('span', '_annotation_textalign', 'e-pv-annotation-textalign-container');\n // eslint-disable-next-line max-len\n var textPropertiesTemplate = this.getTemplate('span', '_annotation_textproperties', 'e-pv-annotation-textprop-container');\n // eslint:disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n if (shapeType === 'Polygon' || shapeType === 'Rectangle' || shapeType === 'Ellipse' || shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Distance' || shapeType === 'Perimeter' || shapeType === 'Radius' || shapeType === 'FreeText') {\n if (shapeType === 'FreeText') {\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-freetext-icon e-pv-icon', className: 'e-pv-annotation-freetextedit-container' });\n items.push({ type: 'Separator', align: 'Left' });\n items.push({ template: fontFamilyTemplate });\n items.push({ template: fontSizeTemplate });\n items.push({ template: textColorTemplate });\n items.push({ template: alignmentTemplate });\n items.push({ template: textPropertiesTemplate });\n }\n if (shapeType === 'Polygon') {\n if (this.pdfViewer.selectedItems.annotations[0].measureType === 'Area') {\n items.push({ prefixIcon: 'e-pv-calibrate-area-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (this.pdfViewer.selectedItems.annotations[0].measureType === 'Volume') {\n items.push({ prefixIcon: 'e-pv-calibrate-volume-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else {\n items.push({ prefixIcon: 'e-pv-shape-pentagon-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n }\n else if (shapeType === 'Rectangle') {\n items.push({ prefixIcon: 'e-pv-shape-rectangle-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Ellipse') {\n items.push({ prefixIcon: 'e-pv-shape-circle-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Line') {\n if (this.pdfViewer.selectedItems.annotations[0].measureType === 'Perimeter') {\n items.push({ prefixIcon: 'e-pv-calibrate-perimeter-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else {\n items.push({ prefixIcon: 'e-pv-shape-line-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n }\n else if (shapeType === 'LineWidthArrowHead') {\n items.push({ prefixIcon: 'e-pv-shape-arrow-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Distance') {\n items.push({ prefixIcon: 'e-pv-calibrate-distance-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Perimeter') {\n items.push({ prefixIcon: 'e-pv-calibrate-perimeter-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Radius') {\n items.push({ prefixIcon: 'e-pv-calibrate-radius-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n items.push({ template: colorTemplate });\n items.push({ template: strokeTemplate });\n items.push({ template: thicknessTemplate });\n }\n else if (shapeType === 'Path' || shapeType === 'Ink' || shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText') {\n if (shapeType === 'Path' || shapeType === 'Ink') {\n items.push({ prefixIcon: 'e-pv-inkannotation-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText') {\n items.push({ prefixIcon: 'e-pv-handwritten-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n items.push({ template: strokeTemplate });\n items.push({ template: thicknessTemplate });\n }\n else if (shapeType === 'Underline' || shapeType === 'Highlight' || shapeType === 'Strikethrough') {\n if (shapeType === 'Highlight') {\n items.push({ prefixIcon: 'e-pv-highlight-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Underline') {\n items.push({ prefixIcon: 'e-pv-underline-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Strikethrough') {\n items.push({ prefixIcon: 'e-pv-strikethrough-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n items.push({ template: colorTemplate });\n }\n else if (shapeType === 'Stamp' || shapeType === 'Image') {\n items.push({ prefixIcon: 'e-pv-stamp-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'StickyNotes') {\n items.push({ prefixIcon: 'e-pv-comment-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n items.push({ template: opacityTemplate });\n // eslint-disable-next-line max-len\n items.push({\n prefixIcon: 'e-pv-comment-panel-icon e-pv-icon', className: 'e-pv-comment-panel-icon-container', id: this.pdfViewer.element.id + '_annotation_commentPanel', align: 'Right', click: function (args) {\n _this.pdfViewer.annotationModule.showCommentsPanel();\n }\n });\n // eslint-disable-next-line max-len\n items.push({\n prefixIcon: 'e-pv-annotation-delete-icon e-pv-icon', className: 'e-pv-annotation-delete-container', id: this.pdfViewer.element.id + '_annotation_delete', align: 'Right', click: function (args) {\n _this.pdfViewer.annotationModule.deleteAnnotation();\n _this.propertyToolbar.destroy();\n _this.toolbarCreated = false;\n _this.createAnnotationToolbarForMobile();\n _this.adjustMobileViewer();\n }\n });\n return items;\n };\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createStampToolbarItemsForMobile = function () {\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint:disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) });\n items.push({ type: 'Separator', align: 'Left' });\n items.push({ template: opacityTemplate });\n return items;\n };\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createShapeToolbarItemsForMobile = function () {\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint:disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) });\n items.push({ prefixIcon: 'e-pv-shape-line-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_line', text: this.pdfViewer.localeObj.getConstant('Line Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-arrow-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_arrow', text: this.pdfViewer.localeObj.getConstant('Arrow Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-rectangle-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_rectangle', text: this.pdfViewer.localeObj.getConstant('Rectangle Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-circle-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_circle', text: this.pdfViewer.localeObj.getConstant('Circle Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-pentagon-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_pentagon', text: this.pdfViewer.localeObj.getConstant('Pentagon Shape'), align: 'Left' });\n items.push({ type: 'Separator', align: 'Left' });\n items.push({ template: colorTemplate });\n items.push({ template: strokeTemplate });\n items.push({ template: thicknessTemplate });\n items.push({ template: opacityTemplate });\n return items;\n };\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createCalibrateToolbarItemsForMobile = function () {\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint:disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) });\n items.push({ prefixIcon: 'e-pv-calibrate-distance-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_distance', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-perimeter-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_perimeter', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-area-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_area', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-radius-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_radius', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-volume-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_volume', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n items.push({ type: 'Separator', align: 'Left' });\n items.push({ template: colorTemplate });\n items.push({ template: strokeTemplate });\n items.push({ template: thicknessTemplate });\n items.push({ template: opacityTemplate });\n return items;\n };\n AnnotationToolbar.prototype.handleShapeTool = function (type) {\n if (!isBlazor() && Browser.isDevice) {\n // eslint:disable-next-line\n var selectedItems = document.querySelectorAll('.e-pv-select');\n for (var i = 0; i < selectedItems.length; i++) {\n if (selectedItems[i].id !== type && selectedItems[i].id !== this.pdfViewer.element.id + '_annotation') {\n selectedItems[i].classList.remove('e-pv-select');\n }\n }\n }\n };\n AnnotationToolbar.prototype.createPropDropDownButton = function (element, iconClass, target, tooltipText) {\n // eslint-disable-next-line max-len\n var dropDownButton = new DropDownButton({ iconCss: iconClass + ' e-pv-icon', target: target, cssClass: 'e-caret-hide' });\n if (this.pdfViewer.enableRtl) {\n dropDownButton.enableRtl = true;\n }\n dropDownButton.appendTo(element);\n this.primaryToolbar.createTooltip(element, tooltipText);\n return dropDownButton;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.textAlignmentToolbarItems = function () {\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-left-align-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_left_align', align: 'Left', value: 'Left', click: this.onClickTextAlignment.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-center-align-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_center_align', align: 'Left', value: 'Center', click: this.onClickTextAlignment.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-right-align-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_right_align', align: 'Left', value: 'Right', click: this.onClickTextAlignment.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-justfiy-align-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_justify_align', align: 'Left', value: 'Justify', click: this.onClickTextAlignment.bind(this) });\n // eslint-disable-next-line max-len\n return items;\n };\n AnnotationToolbar.prototype.afterAlignmentToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.alignLeftElement = this.primaryToolbar.addClassToolbarItem('_left_align', 'e-pv-left-align', this.pdfViewer.localeObj.getConstant('Align left'));\n this.alignRightElement = this.primaryToolbar.addClassToolbarItem('_right_align', 'e-pv-right-align', this.pdfViewer.localeObj.getConstant('Align right'));\n // eslint-disable-next-line max-len\n this.alignCenterElement = this.primaryToolbar.addClassToolbarItem('_center_align', 'e-pv-center-align', this.pdfViewer.localeObj.getConstant('Center'));\n this.alignJustifyElement = this.primaryToolbar.addClassToolbarItem('_justify_align', 'e-pv-justfiy-align', this.pdfViewer.localeObj.getConstant('Justify'));\n };\n AnnotationToolbar.prototype.afterPropertiesToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.boldElement = this.primaryToolbar.addClassToolbarItem('_bold', 'e-pv-bold', this.pdfViewer.localeObj.getConstant('Bold'));\n this.italicElement = this.primaryToolbar.addClassToolbarItem('_italic', 'e-pv-italic', this.pdfViewer.localeObj.getConstant('Italic'));\n // eslint-disable-next-line max-len\n this.fontStyleStrikethroughItem = this.primaryToolbar.addClassToolbarItem('_strikeout', 'e-pv-strikeout', this.pdfViewer.localeObj.getConstant('Strikethroughs'));\n this.fontStyleUnderlineItem = this.primaryToolbar.addClassToolbarItem('_underline_textinput', 'e-pv-underlinetext', this.pdfViewer.localeObj.getConstant('Underlines'));\n };\n AnnotationToolbar.prototype.createDropDownListForSize = function (fontSelectElement) {\n var _this = this;\n // eslint-disable-next-line max-len\n var fontSize = ['8px', '9px', '10px', '11px', '12px', '14px', '16px', '18px', '20px', '22px', '24px', '26px', '28px', '36px', '48px', '72px', '96px'];\n if (!this.pdfViewer.enableRtl) {\n this.fontSize = new ComboBox({\n dataSource: fontSize,\n cssClass: 'e-pv-prop-dropdown',\n allowCustom: true,\n showClearButton: false,\n width: '80px',\n popupWidth: '100px'\n });\n }\n else {\n this.fontSize = new ComboBox({\n dataSource: fontSize,\n cssClass: 'e-pv-prop-dropdown-rtl',\n allowCustom: true,\n showClearButton: false,\n width: '80px',\n popupWidth: '100px',\n enableRtl: true\n });\n }\n this.fontSize.value = '16px';\n this.fontSize.appendTo(fontSelectElement);\n this.primaryToolbar.createTooltip(fontSelectElement, this.pdfViewer.localeObj.getConstant('Font size'));\n this.fontSize.addEventListener('change', function () {\n _this.onFontSizeChange(_this);\n });\n };\n AnnotationToolbar.prototype.createDropDownListForFamily = function (fontSelectElement) {\n var _this = this;\n var fontStyle = [{ FontName: 'Helvetica' },\n { FontName: 'Courier' }, { FontName: 'Symbol' }, { FontName: 'Times New Roman' }];\n if (!this.pdfViewer.enableRtl) {\n this.fontFamily = new ComboBox({\n dataSource: fontStyle,\n query: new Query().select(['FontName']),\n fields: { text: 'FontName', value: 'FontName' },\n cssClass: 'e-pv-prop-dropdown',\n itemTemplate: '${FontName}',\n allowCustom: true,\n showClearButton: false,\n width: '110px',\n popupWidth: '190px'\n });\n }\n else {\n this.fontFamily = new ComboBox({\n dataSource: fontStyle,\n query: new Query().select(['FontName']),\n fields: { text: 'FontName', value: 'FontName' },\n cssClass: 'e-pv-prop-dropdown-rtl',\n itemTemplate: '${FontName}',\n allowCustom: true,\n showClearButton: false,\n width: '110px',\n popupWidth: '190px',\n enableRtl: true\n });\n }\n this.fontFamily.isStringTemplate = true;\n this.fontFamily.value = 'Helvetica';\n this.fontFamily.appendTo(fontSelectElement);\n this.primaryToolbar.createTooltip(fontSelectElement, this.pdfViewer.localeObj.getConstant('Font family'));\n this.fontFamily.addEventListener('change', function () {\n _this.onFontFamilyChange(_this);\n });\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.textPropertiesToolbarItems = function () {\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-bold-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_bold', align: 'Left', value: 'bold', click: this.onClickTextProperties.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-italic-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_italic', align: 'Left', value: 'italic', click: this.onClickTextProperties.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-strikeout-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_strikeout', align: 'Left', value: 'strikeout', click: this.onClickTextProperties.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-underlinetext-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_underline_textinput', align: 'Left', value: 'underline', click: this.onClickTextProperties.bind(this) });\n return items;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createShapeToolbarItems = function () {\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-shape-line-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_line', text: this.pdfViewer.localeObj.getConstant('Line Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-arrow-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_arrow', text: this.pdfViewer.localeObj.getConstant('Arrow Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-rectangle-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_rectangle', text: this.pdfViewer.localeObj.getConstant('Rectangle Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-circle-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_circle', text: this.pdfViewer.localeObj.getConstant('Circle Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-pentagon-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_pentagon', text: this.pdfViewer.localeObj.getConstant('Pentagon Shape'), align: 'Left' });\n return items;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createCalibrateToolbarItems = function () {\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-calibrate-distance-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_distance', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-perimeter-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_perimeter', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-area-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_area', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-radius-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_radius', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-volume-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_volume', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n return items;\n };\n AnnotationToolbar.prototype.onCalibrateToolbarClicked = function (args) {\n var elementId = this.pdfViewer.element.id;\n var measureModule = this.pdfViewer.annotation.measureAnnotationModule;\n this.deselectAllItems();\n this.resetFreeTextAnnot();\n if (Browser.isDevice && !isBlazor()) {\n // tslint:disable-next-line\n var element = args.originalEvent.target;\n this.pdfViewer.toolbarModule.selectItem(element.parentElement);\n }\n switch (args.originalEvent.target.id) {\n case elementId + '_calibrate_distance':\n case elementId + '_calibrate_distanceIcon':\n measureModule.setAnnotationType('Distance');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.distanceFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.distanceStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_distance');\n break;\n case elementId + '_calibrate_perimeter':\n case elementId + '_calibrate_perimeterIcon':\n measureModule.setAnnotationType('Perimeter');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.perimeterFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.perimeterStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_perimeter');\n break;\n case elementId + '_calibrate_area':\n case elementId + '_calibrate_areaIcon':\n measureModule.setAnnotationType('Area');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.areaFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.areaStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_area');\n break;\n case elementId + '_calibrate_radius':\n case elementId + '_calibrate_radiusIcon':\n measureModule.setAnnotationType('Radius');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.radiusFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.radiusStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_radius');\n break;\n case elementId + '_calibrate_volume':\n case elementId + '_calibrate_volumeIcon':\n measureModule.setAnnotationType('Volume');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.volumeFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.volumeStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_volume');\n break;\n }\n };\n AnnotationToolbar.prototype.onShapeDrawSelection = function (isShape) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (!Browser.isDevice) {\n this.updateInteractionTools();\n this.enableAnnotationPropertiesTools(true);\n if (isShape) {\n this.shapeDropDown.toggle();\n }\n else {\n this.calibrateDropDown.toggle();\n }\n }\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n };\n AnnotationToolbar.prototype.afterCalibrateToolbarCreationForMobile = function () {\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_calibrate_distance', 'e-pv-calibrate-distance', this.pdfViewer.localeObj.getConstant('Calibrate Distance'));\n this.primaryToolbar.addClassToolbarItem('_calibrate_perimeter', 'e-pv-calibrate-perimeter', this.pdfViewer.localeObj.getConstant('Calibrate Perimeter'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_calibrate_area', 'e-pv-calibrate-area', this.pdfViewer.localeObj.getConstant('Calibrate Area'));\n this.primaryToolbar.addClassToolbarItem('_calibrate_radius', 'e-pv-calibrate-radius', this.pdfViewer.localeObj.getConstant('Calibrate Radius'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_calibrate_volume', 'e-pv-calibrate-volume', this.pdfViewer.localeObj.getConstant('Calibrate Volume'));\n };\n AnnotationToolbar.prototype.afterShapeToolbarCreationForMobile = function () {\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_annotation_color', 'e-pv-annotation-color-container', this.pdfViewer.localeObj.getConstant('Change Color'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_annotation_stroke', 'e-pv-annotation-stroke-container', this.pdfViewer.localeObj.getConstant('Change Stroke Color'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_annotation_thickness', 'e-pv-annotation-thickness-container', this.pdfViewer.localeObj.getConstant('Chnage Border Thickness'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_annotation_opacity', 'e-annotation-opacity-container', this.pdfViewer.localeObj.getConstant('Change Opacity'));\n this.primaryToolbar.addClassToolbarItem('_shape_line', 'e-pv-shape-line', this.pdfViewer.localeObj.getConstant('Add line'));\n this.primaryToolbar.addClassToolbarItem('_shape_arrow', 'e-pv-shape-arrow', this.pdfViewer.localeObj.getConstant('Add arrow'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_shape_rectangle', 'e-pv-shape-rectangle', this.pdfViewer.localeObj.getConstant('Add rectangle'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_shape_circle', 'e-pv-shape-circle', this.pdfViewer.localeObj.getConstant('Add circle'));\n this.primaryToolbar.addClassToolbarItem('_shape_pentagon', 'e-pv-shape-pentagon', this.pdfViewer.localeObj.getConstant('Add polygon'));\n };\n AnnotationToolbar.prototype.afterShapeToolbarCreation = function () {\n this.lineElement = this.primaryToolbar.addClassToolbarItem('_shape_line', 'e-pv-shape-line', this.pdfViewer.localeObj.getConstant('Add line'));\n this.arrowElement = this.primaryToolbar.addClassToolbarItem('_shape_arrow', 'e-pv-shape-arrow', this.pdfViewer.localeObj.getConstant('Add arrow'));\n // eslint-disable-next-line max-len\n this.rectangleElement = this.primaryToolbar.addClassToolbarItem('_shape_rectangle', 'e-pv-shape-rectangle', this.pdfViewer.localeObj.getConstant('Add rectangle'));\n // eslint-disable-next-line max-len\n this.circleElement = this.primaryToolbar.addClassToolbarItem('_shape_circle', 'e-pv-shape-circle', this.pdfViewer.localeObj.getConstant('Add circle'));\n this.polygonElement = this.primaryToolbar.addClassToolbarItem('_shape_pentagon', 'e-pv-shape-pentagon', this.pdfViewer.localeObj.getConstant('Add polygon'));\n };\n AnnotationToolbar.prototype.afterCalibrateToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.calibrateDistance = this.primaryToolbar.addClassToolbarItem('_calibrate_distance', 'e-pv-calibrate-distance', this.pdfViewer.localeObj.getConstant('Calibrate Distance'));\n this.calibratePerimeter = this.primaryToolbar.addClassToolbarItem('_calibrate_perimeter', 'e-pv-calibrate-perimeter', this.pdfViewer.localeObj.getConstant('Calibrate Perimeter'));\n // eslint-disable-next-line max-len\n this.calibrateArea = this.primaryToolbar.addClassToolbarItem('_calibrate_area', 'e-pv-calibrate-area', this.pdfViewer.localeObj.getConstant('Calibrate Area'));\n this.calibrateRadius = this.primaryToolbar.addClassToolbarItem('_calibrate_radius', 'e-pv-calibrate-radius', this.pdfViewer.localeObj.getConstant('Calibrate Radius'));\n // eslint-disable-next-line max-len\n this.calibrateVolume = this.primaryToolbar.addClassToolbarItem('_calibrate_volume', 'e-pv-calibrate-volume', this.pdfViewer.localeObj.getConstant('Calibrate Volume'));\n };\n AnnotationToolbar.prototype.afterMobileToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.highlightItem = this.primaryToolbar.addClassToolbarItem('_highlight', 'e-pv-highlight', this.pdfViewer.localeObj.getConstant('Highlight'));\n this.underlineItem = this.primaryToolbar.addClassToolbarItem('_underline', 'e-pv-underline', this.pdfViewer.localeObj.getConstant('Underline'));\n // eslint-disable-next-line max-len\n this.strikethroughItem = this.primaryToolbar.addClassToolbarItem('_strikethrough', 'e-pv-strikethrough', this.pdfViewer.localeObj.getConstant('Strikethrough'));\n // eslint-disable-next-line max-len\n this.shapesItem = this.primaryToolbar.addClassToolbarItem('_annotation_shapes', 'e-pv-annotation-shapes', this.pdfViewer.localeObj.getConstant('Add Shapes'));\n this.calibrateItem = this.primaryToolbar.addClassToolbarItem('_annotation_calibrate', 'e-pv-annotation-calibrate', this.pdfViewer.localeObj.getConstant('Calibrate'));\n // eslint-disable-next-line max-len\n this.freeTextEditItem = this.primaryToolbar.addClassToolbarItem('_annotation_freeTextEdit', 'e-pv-annotation-freeTextEdit', this.pdfViewer.localeObj.getConstant('Free Text'));\n // eslint-disable-next-line max-len\n this.commentItem = this.primaryToolbar.addClassToolbarItem('_comment', 'e-pv-comment', this.pdfViewer.localeObj.getConstant('Add Comments'));\n // eslint-disable-next-line max-len\n this.commentItem = this.primaryToolbar.addClassToolbarItem('_annotation_commentPanel', 'e-pv-annotation-comment-panel', this.pdfViewer.localeObj.getConstant('Comment Panel'));\n // eslint-disable-next-line max-len\n this.inkAnnotationItem = this.primaryToolbar.addClassToolbarItem('_annotation_ink', 'e-pv-annotation-ink', this.pdfViewer.localeObj.getConstant('Draw Ink'));\n this.selectAnnotationDeleteItem(false);\n this.enableCommentPanelTool(this.pdfViewer.enableCommentPanel);\n };\n AnnotationToolbar.prototype.createColorPicker = function (idString) {\n var inputElement;\n var existingInput = document.getElementById(idString + '_target');\n if (existingInput) {\n inputElement = existingInput;\n }\n else {\n inputElement = createElement('input', { id: idString + '_target' });\n }\n document.body.appendChild(inputElement);\n var colorPicker = new ColorPicker({\n inline: true, mode: 'Palette', cssClass: 'e-show-value', enableOpacity: false,\n value: '#000000', showButtons: false, modeSwitcher: false\n });\n if (this.pdfViewer.enableRtl) {\n colorPicker.enableRtl = true;\n }\n colorPicker.appendTo(inputElement);\n return colorPicker;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onColorPickerChange = function (args) {\n // eslint-disable-next-line\n var currentColor;\n if (!isBlazor()) {\n currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n }\n else {\n currentColor = args[0];\n }\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyColorProperty(currentColor);\n }\n else {\n switch (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode) {\n case 'Highlight':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightColor = currentColor;\n break;\n case 'Underline':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineColor = currentColor;\n break;\n case 'Strikethrough':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughColor = currentColor;\n break;\n }\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (isBlazor()) {\n if (args[0] !== args[1]) {\n this.pdfViewer.annotation.modifyFillColor(currentColor);\n }\n }\n else {\n if (args.currentValue.hex !== args.previousValue.hex) {\n this.pdfViewer.annotation.modifyFillColor(currentColor);\n }\n }\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.pdfViewer.annotation.shapeAnnotationModule.lineFillColor = currentColor;\n break;\n case 'Arrow':\n this.pdfViewer.annotation.shapeAnnotationModule.arrowFillColor = currentColor;\n break;\n case 'Rectangle':\n this.pdfViewer.annotation.shapeAnnotationModule.rectangleFillColor = currentColor;\n break;\n case 'Circle':\n this.pdfViewer.annotation.shapeAnnotationModule.circleFillColor = currentColor;\n break;\n case 'Polygon':\n this.pdfViewer.annotation.shapeAnnotationModule.polygonFillColor = currentColor;\n break;\n }\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.fillColor = currentColor;\n if (this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.freeTextSettings.fillColor = currentColor;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n }\n if (isBlazor()) {\n this.colorDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-color-container');\n this.updateColorInIcon(this.colorDropDownElementInBlazor, currentColor);\n }\n else {\n this.updateColorInIcon(this.colorDropDownElement, currentColor);\n this.colorDropDown.toggle();\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onStrokePickerChange = function (args) {\n // eslint-disable-next-line\n var currentColor;\n if (!isBlazor()) {\n currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n }\n else {\n currentColor = args[0];\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (isBlazor()) {\n if (args[0] !== args[1]) {\n this.pdfViewer.annotation.modifyStrokeColor(currentColor);\n }\n }\n else {\n if (args.currentValue.hex !== args.previousValue.hex) {\n this.pdfViewer.annotation.modifyStrokeColor(currentColor);\n }\n }\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.pdfViewer.annotation.shapeAnnotationModule.lineStrokeColor = currentColor;\n break;\n case 'Arrow':\n this.pdfViewer.annotation.shapeAnnotationModule.arrowStrokeColor = currentColor;\n break;\n case 'Rectangle':\n this.pdfViewer.annotation.shapeAnnotationModule.rectangleStrokeColor = currentColor;\n break;\n case 'Circle':\n this.pdfViewer.annotation.shapeAnnotationModule.circleStrokeColor = currentColor;\n break;\n case 'Polygon':\n this.pdfViewer.annotation.shapeAnnotationModule.polygonStrokeColor = currentColor;\n break;\n }\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotation;\n if (annotationModule && annotationModule.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.strokeColor = currentColor;\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.strokeColor = currentColor;\n }\n if (this.pdfViewer.drawingObject && this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.freeTextSettings.borderColor = currentColor;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n if (isBlazor()) {\n this.strokeDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-stroke-container');\n this.updateColorInIcon(this.strokeDropDownElementInBlazor, currentColor);\n }\n else {\n this.updateColorInIcon(this.strokeDropDownElement, currentColor);\n this.strokeDropDown.toggle();\n }\n };\n /**\n * @param element\n * @param color\n * @param element\n * @param color\n * @private\n */\n AnnotationToolbar.prototype.updateColorInIcon = function (element, color) {\n if (isBlazor()) {\n if (element) {\n element.children[0].style.borderBottomColor = color;\n }\n }\n else {\n element.childNodes[0] ? element.childNodes[0].style.borderBottomColor = color : element.childNodes[0];\n }\n };\n /**\n * @param currentOption\n * @private\n */\n AnnotationToolbar.prototype.updateTextPropertySelection = function (currentOption) {\n if (currentOption === 'bold') {\n document.getElementById(this.pdfViewer.element.id + '_bold').classList.toggle('textprop-option-active');\n }\n else if (currentOption === 'italic') {\n document.getElementById(this.pdfViewer.element.id + '_italic').classList.toggle('textprop-option-active');\n }\n else if (currentOption === 'underline') {\n document.getElementById(this.pdfViewer.element.id + '_underline_textinput').classList.toggle('textprop-option-active');\n document.getElementById(this.pdfViewer.element.id + '_strikeout').classList.remove('textprop-option-active');\n }\n else if (currentOption === 'strikeout') {\n document.getElementById(this.pdfViewer.element.id + '_strikeout').classList.toggle('textprop-option-active');\n document.getElementById(this.pdfViewer.element.id + '_underline_textinput').classList.remove('textprop-option-active');\n }\n };\n /**\n * @param family\n * @private\n */\n AnnotationToolbar.prototype.updateFontFamilyInIcon = function (family) {\n this.fontFamily.value = family;\n };\n /**\n * @param align\n * @private\n */\n AnnotationToolbar.prototype.updateTextAlignInIcon = function (align) {\n var className = 'e-btn-icon e-pv-left-align-icon e-pv-icon';\n var leftAlign = document.getElementById(this.pdfViewer.element.id + '_left_align');\n var rightAlign = document.getElementById(this.pdfViewer.element.id + '_right_align');\n var centerAlign = document.getElementById(this.pdfViewer.element.id + '_center_align');\n var justifyAlign = document.getElementById(this.pdfViewer.element.id + '_justify_align');\n if (!isBlazor()) {\n leftAlign.classList.remove('textprop-option-active');\n rightAlign.classList.remove('textprop-option-active');\n centerAlign.classList.remove('textprop-option-active');\n justifyAlign.classList.remove('textprop-option-active');\n }\n if (align === 'Left') {\n leftAlign.classList.add('textprop-option-active');\n }\n else if (align === 'Right') {\n className = 'e-btn-icon e-pv-right-align-icon e-pv-icon';\n rightAlign.classList.add('textprop-option-active');\n }\n else if (align === 'Center') {\n className = 'e-btn-icon e-pv-center-align-icon e-pv-icon';\n centerAlign.classList.add('textprop-option-active');\n }\n else if (align === 'Justify') {\n className = 'e-btn-icon e-pv-justfiy-align-icon e-pv-icon';\n justifyAlign.classList.add('textprop-option-active');\n }\n document.getElementById(this.pdfViewer.element.id + '_annotation_textalign').children[0].className = className;\n };\n /**\n * @param size\n * @private\n */\n AnnotationToolbar.prototype.updateFontSizeInIcon = function (size) {\n this.fontSize.value = size + 'px';\n };\n AnnotationToolbar.prototype.updateOpacityIndicator = function () {\n // eslint-disable-next-line\n this.opacityIndicator.textContent = parseInt(Math.round(this.opacitySlider.value).toString()) + '%';\n };\n AnnotationToolbar.prototype.updateThicknessIndicator = function () {\n this.thicknessIndicator.textContent = this.thicknessSlider.value + ' pt';\n };\n AnnotationToolbar.prototype.createSlider = function (idString) {\n var outerContainer = createElement('div', { className: 'e-pv-annotation-opacity-popup-container' });\n document.body.appendChild(outerContainer);\n var label = createElement('span', { id: idString + '_label', className: 'e-pv-annotation-opacity-label' });\n label.textContent = this.pdfViewer.localeObj.getConstant('Opacity');\n var sliderElement = createElement('div', { id: idString + '_slider' });\n this.opacitySlider = new Slider({ type: 'MinRange', cssClass: 'e-pv-annotation-opacity-slider', max: 100, min: 0 });\n // eslint-disable-next-line max-len\n this.opacityIndicator = createElement('div', { id: idString + '_opacity_indicator', className: 'e-pv-annotation-opacity-indicator' });\n this.opacityIndicator.textContent = '100%';\n if (!this.pdfViewer.enableRtl) {\n outerContainer.appendChild(label);\n outerContainer.appendChild(sliderElement);\n this.opacitySlider.appendTo(sliderElement);\n this.opacitySlider.element.parentElement.classList.add('e-pv-annotation-opacity-slider-container');\n outerContainer.appendChild(this.opacityIndicator);\n }\n else {\n outerContainer.appendChild(this.opacityIndicator);\n outerContainer.appendChild(sliderElement);\n this.opacitySlider.enableRtl = true;\n this.opacitySlider.appendTo(sliderElement);\n this.opacitySlider.element.parentElement.classList.add('e-pv-annotation-opacity-slider-container');\n outerContainer.appendChild(label);\n }\n return outerContainer;\n };\n AnnotationToolbar.prototype.createThicknessSlider = function (idString) {\n var outerContainer = createElement('div', { className: 'e-pv-annotation-thickness-popup-container' });\n document.body.appendChild(outerContainer);\n var label = createElement('span', { id: idString + '_label', className: 'e-pv-annotation-thickness-label' });\n label.textContent = this.pdfViewer.localeObj.getConstant('Line Thickness');\n var sliderElement = createElement('div', { id: idString + '_slider' });\n this.thicknessSlider = new Slider({ type: 'MinRange', cssClass: 'e-pv-annotation-thickness-slider', max: 12, min: 0 });\n // eslint-disable-next-line max-len\n this.thicknessIndicator = createElement('div', { id: idString + '_thickness_indicator', className: 'e-pv-annotation-thickness-indicator' });\n this.thicknessIndicator.textContent = '0 pt';\n if (!this.pdfViewer.enableRtl) {\n outerContainer.appendChild(label);\n outerContainer.appendChild(sliderElement);\n this.thicknessSlider.appendTo(sliderElement);\n outerContainer.appendChild(this.thicknessIndicator);\n }\n else {\n outerContainer.appendChild(this.thicknessIndicator);\n outerContainer.appendChild(sliderElement);\n this.thicknessSlider.enableRtl = true;\n this.thicknessSlider.appendTo(sliderElement);\n outerContainer.appendChild(label);\n }\n this.thicknessSlider.element.parentElement.classList.add('e-pv-annotation-thickness-slider-container');\n return outerContainer;\n };\n AnnotationToolbar.prototype.afterToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.highlightItem = this.primaryToolbar.addClassToolbarItem('_highlight', 'e-pv-highlight', this.pdfViewer.localeObj.getConstant('Highlight'));\n this.underlineItem = this.primaryToolbar.addClassToolbarItem('_underline', 'e-pv-underline', this.pdfViewer.localeObj.getConstant('Underline'));\n // eslint-disable-next-line max-len\n this.strikethroughItem = this.primaryToolbar.addClassToolbarItem('_strikethrough', 'e-pv-strikethrough', this.pdfViewer.localeObj.getConstant('Strikethrough'));\n this.deleteItem = this.primaryToolbar.addClassToolbarItem('_annotation_delete', 'e-pv-annotation-delete', this.pdfViewer.localeObj.getConstant('Delete'));\n // eslint-disable-next-line max-len\n this.freeTextEditItem = this.primaryToolbar.addClassToolbarItem('_annotation_freeTextEdit', 'e-pv-annotation-freeTextEdit', this.pdfViewer.localeObj.getConstant('Free Text'));\n // eslint-disable-next-line max-len\n this.inkAnnotationItem = this.primaryToolbar.addClassToolbarItem('_annotation_ink', 'e-pv-annotation-ink', this.pdfViewer.localeObj.getConstant('Draw Ink'));\n // eslint-disable-next-line max-len\n this.commentItem = this.primaryToolbar.addClassToolbarItem('_annotation_commentPanel', 'e-pv-annotation-comment-panel', this.pdfViewer.localeObj.getConstant('Comment Panel'));\n this.closeItem = this.primaryToolbar.addClassToolbarItem('_annotation_close', 'e-pv-annotation-tools-close', null);\n this.selectAnnotationDeleteItem(false);\n this.enableTextMarkupAnnotationPropertiesTools(false);\n this.enableCommentPanelTool(this.pdfViewer.enableCommentPanel);\n };\n AnnotationToolbar.prototype.onToolbarClicked = function (args) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (args.originalEvent.target.id) {\n this.pdfViewer.toolbarModule.updateStampItems();\n }\n this.pdfViewer.toolbarModule.deSelectCommentAnnotation();\n switch (args.originalEvent.target.id) {\n case this.pdfViewer.element.id + '_highlight':\n case this.pdfViewer.element.id + '_highlightIcon':\n this.pdfViewer.tool = '';\n if (!Browser.isDevice) {\n this.pdfViewer.tool = '';\n this.resetFreeTextAnnot();\n this.handleHighlight();\n }\n else {\n this.pdfViewer.annotationModule.setAnnotationMode('Highlight');\n this.textMarkupForMobile(args);\n }\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n break;\n case this.pdfViewer.element.id + '_underline':\n case this.pdfViewer.element.id + '_underlineIcon':\n this.pdfViewer.tool = '';\n if (!Browser.isDevice) {\n this.pdfViewer.tool = '';\n this.resetFreeTextAnnot();\n this.handleUnderline();\n }\n else {\n this.pdfViewer.annotationModule.setAnnotationMode('Underline');\n this.textMarkupForMobile(args);\n }\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n break;\n case this.pdfViewer.element.id + '_strikethrough':\n case this.pdfViewer.element.id + '_strikethroughIcon':\n this.pdfViewer.tool = '';\n if (!Browser.isDevice) {\n this.pdfViewer.tool = '';\n this.resetFreeTextAnnot();\n this.handleStrikethrough();\n }\n else {\n this.pdfViewer.annotationModule.setAnnotationMode('Strikethrough');\n this.textMarkupForMobile(args);\n }\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n break;\n case this.pdfViewer.element.id + '_annotation_delete':\n case this.pdfViewer.element.id + '_annotation_deleteIcon':\n this.pdfViewer.annotationModule.deleteAnnotation();\n this.resetFreeTextAnnot();\n break;\n case this.pdfViewer.element.id + '_annotation_commentPanel':\n case this.pdfViewer.element.id + '_annotation_commentPanelIcon':\n this.inkAnnotationSelected = false;\n var commentPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (commentPanel.style.display === 'block') {\n this.pdfViewerBase.navigationPane.closeCommentPanelContainer();\n }\n else {\n this.pdfViewer.annotationModule.showCommentsPanel();\n }\n break;\n case this.pdfViewer.element.id + '_annotation_close':\n case this.pdfViewer.element.id + '_annotation_closeIcon':\n this.inkAnnotationSelected = false;\n var commentsPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentsPanel.style.display === 'block') {\n this.pdfViewerBase.navigationPane.closeCommentPanelContainer();\n }\n this.showAnnotationToolbar(this.primaryToolbar.annotationItem);\n break;\n case this.pdfViewer.element.id + '_annotation_freeTextEdit':\n case this.pdfViewer.element.id + '_annotation_freeTextEditIcon':\n if (!Browser.isDevice) {\n this.resetFreeTextAnnot();\n this.handleFreeTextEditor();\n }\n else {\n this.pdfViewer.annotationModule.setAnnotationMode('FreeText');\n this.FreeTextForMobile();\n }\n break;\n case this.pdfViewer.element.id + '_annotation_signature':\n case this.pdfViewer.element.id + '_annotation_signatureIcon':\n this.inkAnnotationSelected = false;\n this.updateSignatureCount();\n break;\n case this.pdfViewer.element.id + '_annotation_ink':\n case this.pdfViewer.element.id + '_annotation_inkIcon':\n if (annotation) {\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n }\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n if (this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber;\n if (currentPageNumber && currentPageNumber !== '') {\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(parseInt(currentPageNumber));\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n }\n if (!this.inkAnnotationSelected) {\n this.deselectAllItems();\n this.drawInkAnnotation();\n }\n else {\n this.inkAnnotationSelected = false;\n }\n break;\n case this.pdfViewer.element.id + '_annotation_shapesIcon':\n case this.pdfViewer.element.id + '_annotation_shapes':\n if (Browser.isDevice) {\n this.shapeToolMobile(args);\n }\n break;\n case this.pdfViewer.element.id + '_annotation_calibrateIcon':\n case this.pdfViewer.element.id + '_annotation_calibrate':\n if (Browser.isDevice) {\n this.calibrateToolMobile(args);\n }\n break;\n case this.pdfViewer.element.id + '_commentIcon':\n case this.pdfViewer.element.id + '_comment':\n this.pdfViewerBase.isAddComment = true;\n this.pdfViewerBase.isCommentIconAdded = true;\n var commentsButton = document.getElementById(this.pdfViewer.element.id + '_comment');\n commentsButton.classList.add('e-pv-select');\n this.pdfViewer.toolbarModule.addComments(args);\n break;\n }\n };\n AnnotationToolbar.prototype.addInkAnnotation = function () {\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n if (this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber;\n if (currentPageNumber && currentPageNumber !== '') {\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(parseInt(currentPageNumber));\n if (!isBlazor()) {\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n else {\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n this.pdfViewerBase.focusViewerContainer();\n }\n }\n }\n if (!this.inkAnnotationSelected) {\n this.deselectAllItemsInBlazor();\n this.drawInkAnnotation();\n }\n else {\n this.inkAnnotationSelected = false;\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.deselectInkAnnotation = function () {\n if (!isBlazor()) {\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n else {\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n AnnotationToolbar.prototype.drawInkAnnotation = function () {\n this.inkAnnotationSelected = true;\n if (!isBlazor()) {\n this.primaryToolbar.selectItem(this.inkAnnotationItem);\n }\n else {\n this.primaryToolbar.selectItem(this.InkAnnotationElement);\n }\n this.enableSignaturePropertiesTools(true);\n this.pdfViewerBase.isToolbarInkClicked = true;\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInk();\n };\n AnnotationToolbar.prototype.resetFreeTextAnnot = function () {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule) {\n this.pdfViewer.annotation.freeTextAnnotationModule.isNewFreeTextAnnot = false;\n this.pdfViewer.annotation.freeTextAnnotationModule.isNewAddedAnnot = false;\n if (!Browser.isDevice) {\n if (this.freeTextEditItem && !isBlazor()) {\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n }\n else if (isBlazor()) {\n this.primaryToolbar.deSelectItem(this.FreeTextElement);\n }\n this.enableFreeTextAnnotationPropertiesTools(false);\n }\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) { // eslint-disable-next-line\n var currentPageNumber = this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber;\n if (currentPageNumber && currentPageNumber !== '') {\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(parseInt(currentPageNumber));\n if (!isBlazor()) {\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n else {\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n }\n }\n }\n this.inkAnnotationSelected = false;\n };\n AnnotationToolbar.prototype.updateInkannotationItems = function () {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule && this.inkAnnotationSelected) {\n // eslint-disable-next-line\n var currentPageNumber = this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber;\n if (currentPageNumber && currentPageNumber !== '') {\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(parseInt(currentPageNumber));\n this.pdfViewerBase.isToolbarInkClicked = true;\n this.pdfViewer.tool = 'Ink';\n this.pdfViewer.clearSelection(currentPageNumber);\n }\n }\n };\n AnnotationToolbar.prototype.showSignaturepanel = function () {\n this.pdfViewerBase.isToolbarSignClicked = true;\n this.pdfViewerBase.signatureModule.showSignatureDialog(true);\n };\n AnnotationToolbar.prototype.handleFreeTextEditor = function () {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n this.enableFreeTextAnnotationPropertiesTools(true);\n if (annotation) {\n this.pdfViewer.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n }\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n }\n this.isStrikethroughEnabled = false;\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n var freeTextAnnotationModule = this.pdfViewer.annotation.freeTextAnnotationModule;\n freeTextAnnotationModule.setAnnotationType('FreeText');\n freeTextAnnotationModule.isNewFreeTextAnnot = true;\n freeTextAnnotationModule.isNewAddedAnnot = true;\n this.updateInteractionTools();\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.primaryToolbar.selectItem(this.freeTextEditItem);\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.annotationModule.freeTextAnnotationModule.fillColor);\n this.updateColorInIcon(this.strokeDropDownElement, this.pdfViewer.annotationModule.freeTextAnnotationModule.borderColor);\n this.updateColorInIcon(this.fontColorElement, this.pdfViewer.annotationModule.freeTextAnnotationModule.fontColor);\n this.updateFontFamilyInIcon(this.pdfViewer.annotationModule.freeTextAnnotationModule.fontFamily);\n this.updateFontSizeInIcon(this.pdfViewer.annotationModule.freeTextAnnotationModule.fontSize);\n this.updateTextAlignInIcon(this.pdfViewer.annotationModule.freeTextAnnotationModule.textAlign);\n this.updateFontFamily();\n };\n AnnotationToolbar.prototype.updateFontFamily = function () {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isBold ? this.updateFontFamilyIcon('_bold', true) : this.updateFontFamilyIcon('_bold', false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isItalic ? this.updateFontFamilyIcon('_italic', true) : this.updateFontFamilyIcon('_italic', false);\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isUnderline) {\n this.updateFontFamilyIcon('_underline_textinput', true);\n this.updateFontFamilyIcon('_strikeout', false);\n }\n else {\n this.updateFontFamilyIcon('_underline_textinput', false);\n }\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isStrikethrough) {\n this.updateFontFamilyIcon('_strikeout', true);\n this.updateFontFamilyIcon('_underline_textinput', false);\n }\n else {\n this.updateFontFamilyIcon('_strikeout', false);\n }\n };\n AnnotationToolbar.prototype.updateFontFamilyIcon = function (fontFamily, isActive) {\n var fontFamilyElement = document.getElementById(this.pdfViewer.element.id + fontFamily);\n isActive ? fontFamilyElement.classList.add('textprop-option-active') : fontFamilyElement.classList.remove('textprop-option-active');\n };\n /**\n * @param element\n * @param isInitialLoading\n * @param element\n * @param isInitialLoading\n * @private\n */\n AnnotationToolbar.prototype.showAnnotationToolbar = function (element, isInitialLoading) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (!this.isToolbarHidden) {\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotationModule;\n if (element) {\n this.primaryToolbar.deSelectItem(element);\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n this.primaryToolbar.deSelectItem(this.primaryToolbar.annotationItem);\n }\n }\n this.adjustViewer(false);\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.enablePropertiesTool(annotationModule);\n }\n else {\n this.deselectAllItems();\n }\n this.toolbarElement.style.display = 'none';\n if (!isInitialLoading) {\n this.pdfViewer.isAnnotationToolbarVisible = false;\n }\n if (this.pdfViewerBase.isPanMode) {\n this.primaryToolbar.updateInteractionTools(false);\n }\n else {\n this.primaryToolbar.updateInteractionTools(true);\n }\n }\n else {\n var toolBarInitialStatus = void 0;\n if (this.toolbarElement) {\n toolBarInitialStatus = this.toolbarElement.style.display;\n this.toolbarElement.style.display = 'block';\n }\n if (!isInitialLoading) {\n this.pdfViewer.isAnnotationToolbarVisible = true;\n }\n if (element) {\n this.primaryToolbar.selectItem(element);\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n this.primaryToolbar.selectItem(this.primaryToolbar.annotationItem);\n }\n }\n if (toolBarInitialStatus === 'none') {\n this.adjustViewer(true);\n }\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.magnification && this.pdfViewer.magnification.fitType === 'fitToPage') {\n this.pdfViewer.magnification.fitToPage();\n }\n this.enableAnnotationAddTools(true);\n this.isToolbarHidden = !this.isToolbarHidden;\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.enablePropertiesTool = function (annotationModule) {\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n this.isStrikethroughEnabled = false;\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n }\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.enableTextMarkupAnnotationPropertiesTools(true);\n // eslint-disable-next-line max-len\n this.updateColorInIcon(this.colorDropDownElement, annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation.color);\n this.selectAnnotationDeleteItem(true);\n };\n AnnotationToolbar.prototype.applyAnnotationToolbarSettings = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('HighlightTool') !== -1) {\n this.showHighlightTool(true, 0, 0);\n }\n else {\n this.showHighlightTool(false, 0, 0);\n }\n if (annotationToolbarItems.indexOf('UnderlineTool') !== -1) {\n this.showUnderlineTool(true, 1, 1);\n }\n else {\n this.showUnderlineTool(false, 1, 1);\n }\n if (annotationToolbarItems.indexOf('StrikethroughTool') !== -1) {\n this.showStrikethroughTool(true, 2, 2);\n }\n else {\n this.showStrikethroughTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('ShapeTool') !== -1) {\n this.showShapeAnnotationTool(true, 4, 4);\n }\n else {\n this.showShapeAnnotationTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('CalibrateTool') !== -1) {\n this.showCalibrateAnnotationTool(true, 6, 6);\n }\n else {\n this.showCalibrateAnnotationTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 22, 22);\n }\n else {\n this.showColorEditTool(false, 22, 22);\n }\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 23, 23);\n }\n else {\n this.showStrokeColorEditTool(false, 23, 23);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 24, 24);\n }\n else {\n this.showThicknessEditTool(false, 24, 24);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 25, 25);\n }\n else {\n this.showOpacityEditTool(false, 25, 25);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 27, 27);\n }\n else {\n this.showAnnotationDeleteTool(false, 27, 27);\n }\n if (annotationToolbarItems.indexOf('StampAnnotationTool') !== -1) {\n this.showStampAnnotationTool(true, 10, 10);\n }\n else {\n this.showStampAnnotationTool(false, 10, 10);\n }\n if (annotationToolbarItems.indexOf('HandWrittenSignatureTool') !== -1) {\n this.showSignatureTool(true, 12, 12);\n }\n else {\n this.showSignatureTool(false, 12, 12);\n }\n if (annotationToolbarItems.indexOf('FreeTextAnnotationTool') !== -1) {\n this.showFreeTextAnnotationTool(true, 8, 8);\n }\n else {\n this.showFreeTextAnnotationTool(false, 8, 8);\n }\n if (annotationToolbarItems.indexOf('FontFamilyAnnotationTool') !== -1) {\n this.showFontFamilyAnnotationTool(true, 16, 16);\n }\n else {\n this.showFontFamilyAnnotationTool(false, 16, 16);\n }\n if (annotationToolbarItems.indexOf('FontSizeAnnotationTool') !== -1) {\n this.showFontSizeAnnotationTool(true, 17, 17);\n }\n else {\n this.showFontSizeAnnotationTool(false, 17, 17);\n }\n if (annotationToolbarItems.indexOf('FontStylesAnnotationTool') !== -1) {\n this.showFontStylesAnnotationTool(true, 20, 20);\n }\n else {\n this.showFontStylesAnnotationTool(false, 20, 20);\n }\n if (annotationToolbarItems.indexOf('FontAlignAnnotationTool') !== -1) {\n this.showFontAlignAnnotationTool(true, 18, 18);\n }\n else {\n this.showFontAlignAnnotationTool(false, 18, 18);\n }\n if (annotationToolbarItems.indexOf('FontColorAnnotationTool') !== -1) {\n this.showFontColorAnnotationTool(true, 19, 19);\n }\n else {\n this.showFontColorAnnotationTool(false, 19, 19);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 28, 28);\n }\n else {\n this.showCommentPanelTool(false, 28, 28);\n }\n this.showInkAnnotationTool();\n this.showSeparator();\n }\n };\n AnnotationToolbar.prototype.applyMobileAnnotationToolbarSettings = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('HighlightTool') !== -1) {\n this.showHighlightTool(true, 2, 2);\n }\n else {\n this.showHighlightTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('UnderlineTool') !== -1) {\n this.showUnderlineTool(true, 3, 3);\n }\n else {\n this.showUnderlineTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('StrikethroughTool') !== -1) {\n this.showStrikethroughTool(true, 4, 4);\n }\n else {\n this.showStrikethroughTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('ShapeTool') !== -1) {\n this.showShapeAnnotationTool(true, 6, 6);\n }\n else {\n this.showShapeAnnotationTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('CalibrateTool') !== -1) {\n this.showCalibrateAnnotationTool(true, 8, 8);\n }\n else {\n this.showCalibrateAnnotationTool(false, 8, 8);\n }\n if (this.pdfViewer.toolbarSettings.toolbarItems.indexOf('CommentTool') !== -1) {\n this.showStickyNoteToolInMobile(true);\n }\n else {\n this.showStickyNoteToolInMobile(false);\n }\n if (annotationToolbarItems.indexOf('StampAnnotationTool') !== -1) {\n this.showStampAnnotationTool(true, 12, 12);\n }\n else {\n this.showStampAnnotationTool(false, 12, 12);\n }\n if (annotationToolbarItems.indexOf('HandWrittenSignatureTool') !== -1) {\n this.showSignatureTool(true, 14, 14);\n }\n else {\n this.showSignatureTool(false, 14, 14);\n }\n if (annotationToolbarItems.indexOf('FreeTextAnnotationTool') !== -1) {\n this.showFreeTextAnnotationTool(true, 10, 10);\n }\n else {\n this.showFreeTextAnnotationTool(false, 10, 10);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 18, 18);\n }\n else {\n this.showCommentPanelTool(false, 18, 18);\n }\n if (annotationToolbarItems.indexOf('InkAnnotationTool') !== -1) {\n this.showInkTool(true, 16, 16);\n }\n else {\n this.showInkTool(false, 16, 16);\n }\n this.showSeparatorInMobile();\n }\n };\n AnnotationToolbar.prototype.showStickyNoteToolInMobile = function (isShow) {\n this.isCommentBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 0, 0);\n };\n AnnotationToolbar.prototype.showSeparatorInMobile = function () {\n if (!this.isCommentBtnVisible) {\n this.applyHideToToolbar(false, 1, 1);\n }\n if ((!this.isHighlightBtnVisible && !this.isUnderlineBtnVisible && !this.isStrikethroughBtnVisible)) {\n this.applyHideToToolbar(false, 5, 5);\n }\n if (!this.isShapeBtnVisible) {\n this.applyHideToToolbar(false, 7, 7);\n }\n if (!this.isCalibrateBtnVisible) {\n this.applyHideToToolbar(false, 9, 9);\n }\n if (!this.isFreeTextBtnVisible) {\n this.applyHideToToolbar(false, 11, 11);\n }\n if (!this.isStampBtnVisible) {\n this.applyHideToToolbar(false, 13, 13);\n }\n if (!this.isSignatureBtnVisible) {\n this.applyHideToToolbar(false, 15, 15);\n }\n if (!this.isInkBtnVisible) {\n this.applyHideToToolbar(false, 17, 17);\n }\n };\n AnnotationToolbar.prototype.showInkAnnotationTool = function () {\n if (this.pdfViewer.toolbarSettings.annotationToolbarItems.indexOf('InkAnnotationTool') !== -1) {\n this.showInkTool(true, 14, 14);\n }\n else {\n this.showInkTool(false, 14, 14);\n }\n };\n AnnotationToolbar.prototype.showSeparator = function () {\n if ((!this.isHighlightBtnVisible && !this.isUnderlineBtnVisible && !this.isStrikethroughBtnVisible)) {\n this.applyHideToToolbar(false, 3, 3);\n }\n if (!this.isShapeBtnVisible) {\n this.applyHideToToolbar(false, 5, 5);\n }\n if (!this.isCalibrateBtnVisible) {\n this.applyHideToToolbar(false, 7, 7);\n }\n if (!this.isFreeTextBtnVisible) {\n this.applyHideToToolbar(false, 9, 9);\n }\n if (!this.isStampBtnVisible) {\n this.applyHideToToolbar(false, 11, 11);\n }\n if (!this.isSignatureBtnVisible) {\n this.applyHideToToolbar(false, 13, 13);\n }\n if (!this.isInkBtnVisible) {\n this.applyHideToToolbar(false, 15, 15);\n }\n // eslint-disable-next-line max-len\n if (!this.isFontFamilyToolVisible && !this.isFontSizeToolVisible && !this.isFontColorToolVisible && !this.isFontAlignToolVisible && !this.isFontStylesToolVisible) {\n this.applyHideToToolbar(false, 21, 21);\n }\n // eslint-disable-next-line max-len\n if ((!this.isColorToolVisible && !this.isStrokeColorToolVisible && !this.isThicknessToolVisible && !this.isOpacityToolVisible) || !this.isDeleteAnnotationToolVisible) {\n this.applyHideToToolbar(false, 26, 26);\n }\n };\n AnnotationToolbar.prototype.showHighlightTool = function (isShow, startIndex, endIndex) {\n this.isHighlightBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showUnderlineTool = function (isShow, startIndex, endIndex) {\n this.isUnderlineBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showStrikethroughTool = function (isShow, startIndex, endIndex) {\n this.isStrikethroughBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showShapeAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isShapeBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showCalibrateAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isCalibrateBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFreeTextAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFreeTextBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showStampAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isStampBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showSignatureTool = function (isShow, startIndex, endIndex) {\n this.isSignatureBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showInkTool = function (isShow, startIndex, endIndex) {\n this.isInkBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontFamilyAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontFamilyToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontSizeAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontSizeToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontAlignAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontAlignToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontColorAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontColorToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontStylesAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontStylesToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showColorEditTool = function (isShow, startIndex, endIndex) {\n this.isColorToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showStrokeColorEditTool = function (isShow, startIndex, endIndex) {\n this.isStrokeColorToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showThicknessEditTool = function (isShow, startIndex, endIndex) {\n this.isThicknessToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showOpacityEditTool = function (isShow, startIndex, endIndex) {\n this.isOpacityToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showAnnotationDeleteTool = function (isShow, startIndex, endIndex) {\n this.isDeleteAnnotationToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showCommentPanelTool = function (isShow, startIndex, endIndex) {\n this.isCommentPanelBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.applyHideToToolbar = function (show, startIndex, endIndex) {\n var isHide = !show;\n for (var index = startIndex; index <= endIndex; index++) {\n var toolbar_1 = void 0;\n var propertyToolbarElement = (this.propertyToolbar && this.propertyToolbar.element) ? this.propertyToolbar.element : null;\n var toolbarElement = (this.toolbar && this.toolbar.element) ? this.toolbar.element : null;\n if (toolbarElement && toolbarElement.children && toolbarElement.children.length > 0) {\n toolbar_1 = this.toolbar;\n }\n else if (Browser.isDevice && propertyToolbarElement && propertyToolbarElement.children && propertyToolbarElement.children.length > 0) {\n toolbar_1 = this.propertyToolbar;\n }\n if (toolbar_1.items[index]) {\n var className = toolbar_1.items[index].cssClass;\n if (className && className !== '') {\n // Querying the toolbar item\n var element = toolbar_1.element.querySelector('.' + className);\n if (element) {\n this.toolbar.hideItem(element, isHide);\n }\n }\n else {\n toolbar_1.hideItem(index, isHide);\n }\n }\n }\n };\n /**\n * @param isAdjust\n * @private\n */\n AnnotationToolbar.prototype.adjustViewer = function (isAdjust) {\n var splitterElement;\n var toolbarContainer;\n var annotationToolbarHeight;\n if (isBlazor()) {\n splitterElement = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar-splitter');\n toolbarContainer = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n var annotationToolbarContainer = this.pdfViewer.element.querySelector('.e-pv-annotation-toolbar');\n annotationToolbarHeight = this.getToolbarHeight(annotationToolbarContainer);\n }\n else {\n splitterElement = this.pdfViewerBase.getElement('_sideBarToolbarSplitter');\n toolbarContainer = this.pdfViewerBase.getElement('_toolbarContainer');\n annotationToolbarHeight = this.getToolbarHeight(this.toolbarElement);\n }\n var toolbarHeight = this.getToolbarHeight(toolbarContainer);\n var sideBarToolbar = this.pdfViewerBase.navigationPane.sideBarToolbar;\n var sideBarContentContainer = this.pdfViewerBase.navigationPane.sideBarContentContainer;\n var commentsContainer = this.pdfViewerBase.navigationPane.commentPanelContainer;\n var commentPanelResizer = this.pdfViewerBase.navigationPane.commentPanelResizer;\n if (isAdjust) {\n if (this.pdfViewer.enableToolbar) {\n sideBarToolbar.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n sideBarContentContainer.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n splitterElement.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n commentsContainer.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n commentPanelResizer.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n }\n else {\n sideBarToolbar.style.top = (annotationToolbarHeight) + 'px';\n sideBarContentContainer.style.top = (annotationToolbarHeight) + 'px';\n splitterElement.style.top = (annotationToolbarHeight) + 'px';\n commentsContainer.style.top = (annotationToolbarHeight) + 'px';\n commentPanelResizer.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (annotationToolbarHeight + toolbarHeight)) + 'px';\n sideBarToolbar.style.height = this.getNavigationToolbarHeight(annotationToolbarHeight + toolbarHeight) + 'px';\n splitterElement.style.height = this.getNavigationToolbarHeight(annotationToolbarHeight + toolbarHeight) + 'px';\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n // eslint-disable-next-line max-len\n sideBarToolbar.style.top = toolbarHeight + 'px';\n sideBarContentContainer.style.top = toolbarHeight + 'px';\n splitterElement.style.top = toolbarHeight + 'px';\n commentsContainer.style.top = toolbarHeight + 'px';\n commentPanelResizer.style.top = toolbarHeight + 'px';\n }\n else {\n sideBarToolbar.style.top = 1 + 'px';\n sideBarToolbar.style.height = '100%';\n sideBarContentContainer.style.top = 1 + 'px';\n sideBarContentContainer.style.height = '100%';\n splitterElement.style.top = 1 + 'px';\n splitterElement.style.height = '100%';\n commentsContainer.style.top = 1 + 'px';\n commentsContainer.style.height = '100%';\n commentPanelResizer.style.top = 1 + 'px';\n commentPanelResizer.style.height = '100%';\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.resetViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), annotationToolbarHeight) + 'px';\n sideBarToolbar.style.height = this.getNavigationToolbarHeight(toolbarHeight);\n splitterElement.style.height = this.getNavigationToolbarHeight(toolbarHeight);\n if (this.pdfViewerBase.viewerContainer.style.height === '0px') {\n // eslint-disable-next-line\n this.pdfViewerBase.viewerContainer.style.height = (parseInt(this.pdfViewer.element.style.height) - parseInt(sideBarToolbar.style.top)) + 'px';\n }\n }\n if (isBlazor()) {\n this.updateContentContainerHeight(isAdjust, true);\n }\n else {\n this.updateContentContainerHeight(isAdjust);\n }\n };\n AnnotationToolbar.prototype.updateContentContainerHeight = function (isAdjust, isBlazor) {\n var annotationToolbarHeight;\n if (isBlazor) {\n var annotationToolbarContainer = this.pdfViewer.element.querySelector('.e-pv-annotation-toolbar');\n annotationToolbarHeight = this.getToolbarHeight(annotationToolbarContainer);\n }\n else {\n annotationToolbarHeight = this.getToolbarHeight(this.toolbarElement);\n }\n var sideBarClientRect = this.pdfViewerBase.navigationPane.sideBarContentContainer.getBoundingClientRect();\n if (sideBarClientRect.height !== 0) {\n if (isAdjust) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.height = sideBarClientRect.height - annotationToolbarHeight + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.height = sideBarClientRect.height + annotationToolbarHeight + 'px';\n }\n }\n };\n AnnotationToolbar.prototype.getToolbarHeight = function (element) {\n var toolbarHeight = element.getBoundingClientRect().height;\n if (toolbarHeight === 0 && element === this.pdfViewerBase.getElement('_toolbarContainer')) {\n // getComputedStyle gets the value from style and toolbar border height is added to it.\n // eslint-disable-next-line\n toolbarHeight = parseFloat(window.getComputedStyle(element)['height']) + this.toolbarBorderHeight;\n }\n return toolbarHeight;\n };\n AnnotationToolbar.prototype.getNavigationToolbarHeight = function (toolbarHeight) {\n var height = this.pdfViewer.element.getBoundingClientRect().height;\n return (height !== 0) ? height - toolbarHeight + 'px' : '';\n };\n AnnotationToolbar.prototype.handleHighlight = function () {\n if (!this.isHighlightEnabled) {\n this.updateInteractionTools();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations('Highlight');\n this.primaryToolbar.selectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n this.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightColor = null;\n this.setCurrentColorInPicker();\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightColor);\n this.isHighlightEnabled = true;\n this.isUnderlineEnabled = false;\n this.isStrikethroughEnabled = false;\n }\n else {\n this.deselectAllItems();\n }\n };\n AnnotationToolbar.prototype.handleUnderline = function () {\n if (!this.isUnderlineEnabled) {\n this.updateInteractionTools();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations('Underline');\n this.primaryToolbar.selectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n this.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineColor = null;\n this.setCurrentColorInPicker();\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineColor);\n this.isUnderlineEnabled = true;\n this.isHighlightEnabled = false;\n this.isStrikethroughEnabled = false;\n }\n else {\n this.deselectAllItems();\n }\n };\n AnnotationToolbar.prototype.handleStrikethrough = function () {\n if (!this.isStrikethroughEnabled) {\n this.updateInteractionTools();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations('Strikethrough');\n this.primaryToolbar.selectItem(this.strikethroughItem);\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n this.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughColor = null;\n this.setCurrentColorInPicker();\n // eslint-disable-next-line max-len\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughColor);\n this.isStrikethroughEnabled = true;\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n }\n else {\n this.deselectAllItems();\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.deselectAllItemsInBlazor = function () {\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n this.primaryToolbar.deSelectItem(this.FreeTextElement);\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateTextMarkupButtons', false, false, false);\n }\n this.resetFreeTextAnnot();\n this.clearTextMarkupMode();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.tool = '';\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.enableTextMarkupAnnotationPropertiesTools(false);\n this.enableFreeTextAnnotationPropertiesTools(false);\n this.updateColorInIcon(this.colorDropDownElement, '#000000');\n this.updateColorInIcon(this.strokeDropDownElement, '#000000');\n this.updateColorInIcon(this.fontColorElement, '#000000');\n this.selectAnnotationDeleteItem(false);\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isNewFreeTextAnnot = false;\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.deselectAllItems = function () {\n var isBlazorPlatform = isBlazor();\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n this.isStrikethroughEnabled = false;\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (isBlazorPlatform) {\n this.primaryToolbar.deSelectItem(this.pdfViewer.toolbar.SelectToolElement);\n this.primaryToolbar.selectItem(this.pdfViewer.toolbar.PanElement);\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n this.primaryToolbar.deSelectItem(this.FreeTextElement);\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n }\n else {\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n }\n this.resetFreeTextAnnot();\n this.clearTextMarkupMode();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.tool = '';\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.enableTextMarkupAnnotationPropertiesTools(false);\n this.enableFreeTextAnnotationPropertiesTools(false);\n this.updateColorInIcon(this.colorDropDownElement, '#000000');\n this.updateColorInIcon(this.strokeDropDownElement, '#000000');\n this.updateColorInIcon(this.fontColorElement, '#000000');\n this.selectAnnotationDeleteItem(false);\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isNewFreeTextAnnot = false;\n }\n };\n AnnotationToolbar.prototype.updateInteractionTools = function () {\n if (this.pdfViewer.enableTextSelection) {\n this.pdfViewerBase.initiateTextSelectMode();\n if (!Browser.isDevice) {\n this.pdfViewer.toolbar.updateInteractionTools(true);\n }\n }\n else if (!Browser.isDevice) {\n this.pdfViewer.toolbar.updateInteractionTools(false);\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.selectAnnotationDeleteItem = function (isEnable, deleteIconCicked) {\n if (!isBlazor() && !Browser.isDevice) {\n if (this.toolbar) {\n if (isEnable) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.annotationModule.findCurrentAnnotation();\n if (annotation) {\n // eslint-disable-next-line\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', annotation)) {\n this.toolbar.enableItems(this.deleteItem.parentElement, isEnable);\n }\n else {\n this.toolbar.enableItems(this.deleteItem.parentElement, false);\n }\n }\n else {\n this.toolbar.enableItems(this.deleteItem.parentElement, isEnable);\n }\n }\n }\n else {\n this.toolbar.enableItems(this.deleteItem.parentElement, isEnable);\n }\n }\n }\n else {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (isEnable) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.annotationModule.findCurrentAnnotation();\n if (annotation) {\n // eslint-disable-next-line\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', annotation)) {\n this.pdfViewerBase.blazorUIAdaptor.EnableDeleteOption(isEnable);\n }\n else {\n this.pdfViewerBase.blazorUIAdaptor.EnableDeleteOption(false);\n }\n }\n else if (this.pdfViewerBase.blazorUIAdaptor) {\n this.pdfViewerBase.blazorUIAdaptor.EnableDeleteOption(isEnable);\n }\n }\n }\n else if (this.pdfViewerBase.blazorUIAdaptor) {\n this.pdfViewerBase.blazorUIAdaptor.EnableDeleteOption(isEnable);\n }\n if (deleteIconCicked) {\n this.pdfViewerBase.focusViewerContainer();\n }\n }\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableTextMarkupAnnotationPropertiesTools = function (isEnable) {\n if (!Browser.isDevice) {\n if (!isBlazor()) {\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.toolbar.enableItems(this.strokeDropDownElement.parentElement, false);\n this.toolbar.enableItems(this.thicknessElement.parentElement, false);\n this.toolbar.enableItems(this.fontFamilyElement.parentElement, false);\n this.toolbar.enableItems(this.fontSizeElement.parentElement, false);\n this.toolbar.enableItems(this.fontColorElement.parentElement, false);\n this.toolbar.enableItems(this.textAlignElement.parentElement, false);\n this.toolbar.enableItems(this.textPropElement.parentElement, false);\n }\n }\n else {\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('AnnotationSelect', 'TextMarkup');\n this.pdfViewerBase.blazorUIAdaptor.enableTextMarkupAnnotationPropertiesTools(isEnable);\n }\n }\n };\n AnnotationToolbar.prototype.checkAnnotationPropertiesChange = function () {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (annotation && annotation.annotationSettings) {\n // eslint-disable-next-line\n var isLock = annotation.annotationSettings.isLock;\n if (isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('PropertyChange', annotation)) {\n return true;\n }\n else {\n return false;\n }\n }\n }\n return true;\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableAnnotationPropertiesTools = function (isEnable) {\n if (!Browser.isDevice) {\n var isPropertiesChanges = this.checkAnnotationPropertiesChange();\n if (!isEnable) {\n isPropertiesChanges = true;\n }\n if (!isBlazor()) {\n if (isPropertiesChanges) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line')) {\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, false);\n }\n else {\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, isEnable);\n }\n this.toolbar.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.strokeDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.thicknessElement.parentElement, isEnable);\n if (this.pdfViewer.enableShapeLabel) {\n this.toolbar.enableItems(this.fontFamilyElement.parentElement, isEnable);\n this.toolbar.enableItems(this.fontSizeElement.parentElement, isEnable);\n this.toolbar.enableItems(this.fontColorElement.parentElement, isEnable);\n }\n this.toolbar.enableItems(this.textAlignElement.parentElement, false);\n this.toolbar.enableItems(this.textPropElement.parentElement, false);\n }\n }\n else {\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableAnnotationPropertiesTools', isEnable, isPropertiesChanges);\n this.pdfViewerBase.blazorUIAdaptor.enableAnnotationPropertiesTool(isEnable, isPropertiesChanges);\n }\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableSignaturePropertiesTools = function (isEnable) {\n if (!Browser.isDevice) {\n var isPropertiesChanges = this.checkAnnotationPropertiesChange();\n if (!isEnable) {\n isPropertiesChanges = true;\n }\n if (!isBlazor()) {\n if (isPropertiesChanges) {\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, false);\n this.toolbar.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.strokeDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.thicknessElement.parentElement, isEnable);\n this.toolbar.enableItems(this.textAlignElement.parentElement, false);\n this.toolbar.enableItems(this.textPropElement.parentElement, false);\n this.toolbar.enableItems(this.fontFamilyElement.parentElement, false);\n this.toolbar.enableItems(this.fontSizeElement.parentElement, false);\n this.toolbar.enableItems(this.fontColorElement.parentElement, false);\n this.toolbar.enableItems(this.textAlignElement.parentElement, false);\n }\n }\n else {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableSignaturePropertiesTools', isEnable, isPropertiesChanges);\n this.pdfViewerBase.blazorUIAdaptor.enableSignaturePropertiesTools(isEnable, isPropertiesChanges);\n }\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableStampAnnotationPropertiesTools = function (isEnable) {\n var isPropertiesChanges = this.checkAnnotationPropertiesChange();\n if (!isEnable) {\n isPropertiesChanges = true;\n }\n if (!isBlazor()) {\n if (isPropertiesChanges) {\n this.toolbar.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, false);\n this.toolbar.enableItems(this.strokeDropDownElement.parentElement, false);\n this.toolbar.enableItems(this.thicknessElement.parentElement, false);\n this.toolbar.enableItems(this.fontFamilyElement.parentElement, false);\n this.toolbar.enableItems(this.fontSizeElement.parentElement, false);\n this.toolbar.enableItems(this.fontColorElement.parentElement, false);\n this.toolbar.enableItems(this.textAlignElement.parentElement, false);\n this.toolbar.enableItems(this.textPropElement.parentElement, false);\n }\n }\n else {\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableStampAnnotationPropertiesTools', isEnable, isPropertiesChanges);\n this.pdfViewerBase.blazorUIAdaptor.enableStampAnnotationPropertiesTools(isEnable, isPropertiesChanges);\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableFreeTextAnnotationPropertiesTools = function (isEnable) {\n var isPropertiesChanges = this.checkAnnotationPropertiesChange();\n if (!isEnable) {\n isPropertiesChanges = true;\n }\n if (!isBlazor()) {\n if (isPropertiesChanges) {\n this.toolbar.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.strokeDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.thicknessElement.parentElement, isEnable);\n this.toolbar.enableItems(this.fontFamilyElement.parentElement, isEnable);\n this.toolbar.enableItems(this.fontSizeElement.parentElement, isEnable);\n this.toolbar.enableItems(this.fontColorElement.parentElement, isEnable);\n this.toolbar.enableItems(this.textAlignElement.parentElement, isEnable);\n this.toolbar.enableItems(this.textPropElement.parentElement, isEnable);\n }\n }\n else {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableFreeTextAnnotationPropertiesTools', isEnable, isPropertiesChanges);\n this.pdfViewerBase.blazorUIAdaptor.enableFreeTextAnnotationPropertiesTools(isEnable, isPropertiesChanges);\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableAnnotationAddTools = function (isEnable) {\n if (this.toolbar && !Browser.isDevice) {\n if (this.pdfViewer.enableTextMarkupAnnotation) {\n this.toolbar.enableItems(this.highlightItem.parentElement, isEnable);\n this.toolbar.enableItems(this.underlineItem.parentElement, isEnable);\n this.toolbar.enableItems(this.strikethroughItem.parentElement, isEnable);\n }\n if (this.pdfViewer.enableShapeAnnotation) {\n this.toolbar.enableItems(this.shapeElement.parentElement, isEnable);\n }\n if (this.pdfViewer.enableStampAnnotations) {\n this.toolbar.enableItems(this.stampElement.parentElement, isEnable);\n }\n if (this.pdfViewer.enableMeasureAnnotation && this.pdfViewerBase.isCalibrateAnnotationModule()) {\n this.toolbar.enableItems(this.calibrateElement.parentElement, isEnable);\n }\n if (this.pdfViewer.enableFreeText) {\n this.toolbar.enableItems(this.freeTextEditItem.parentElement, isEnable);\n }\n if (this.pdfViewer.enableHandwrittenSignature) {\n this.toolbar.enableItems(this.handWrittenSignatureItem.parentElement, isEnable);\n }\n if (this.pdfViewer.enableInkAnnotation) {\n this.toolbar.enableItems(this.inkAnnotationItem.parentElement, isEnable);\n }\n if (this.pdfViewer.enableCommentPanel) {\n this.enableCommentPanelTool(isEnable);\n }\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.isAnnotationButtonsEnabled = function () {\n var isButtonsEnabled = false;\n if (this.isHighlightEnabled || this.isUnderlineEnabled || this.isStrikethroughEnabled) {\n isButtonsEnabled = true;\n }\n return isButtonsEnabled;\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableCommentPanelTool = function (isEnable) {\n if (this.toolbar) {\n this.toolbar.enableItems(this.commentItem.parentElement, isEnable);\n }\n };\n AnnotationToolbar.prototype.updateToolbarItems = function () {\n if (this.pdfViewer.enableTextMarkupAnnotation) {\n this.enableTextMarkupAddTools(true);\n }\n else {\n this.enableTextMarkupAddTools(false);\n }\n this.toolbar.enableItems(this.shapeElement.parentElement, this.pdfViewer.enableShapeAnnotation);\n this.toolbar.enableItems(this.stampElement.parentElement, this.pdfViewer.enableStampAnnotations);\n this.toolbar.enableItems(this.calibrateElement.parentElement, this.pdfViewer.enableMeasureAnnotation);\n this.toolbar.enableItems(this.freeTextEditItem.parentElement, this.pdfViewer.enableFreeText);\n this.toolbar.enableItems(this.handWrittenSignatureItem.parentElement, this.pdfViewer.enableHandwrittenSignature);\n this.toolbar.enableItems(this.inkAnnotationItem.parentElement, this.pdfViewer.enableInkAnnotation);\n };\n AnnotationToolbar.prototype.enableTextMarkupAddTools = function (isEnable) {\n this.toolbar.enableItems(this.highlightItem.parentElement, isEnable);\n this.toolbar.enableItems(this.underlineItem.parentElement, isEnable);\n this.toolbar.enableItems(this.strikethroughItem.parentElement, isEnable);\n };\n /**\n * @private\n */\n // for shapes added by drawing package\n AnnotationToolbar.prototype.updateAnnnotationPropertyItems = function () {\n if (!isBlazor()) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.colorDropDownElement, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill, 'fillColor'));\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.strokeDropDownElement, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor, 'strokeColor'));\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n // eslint-disable-next-line\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.fontColorElement, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].fontColor, 'fontColor'));\n this.pdfViewer.toolbar.annotationToolbarModule.updateFontFamilyInIcon(this.pdfViewer.selectedItems.annotations[0].fontFamily);\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbar.annotationToolbarModule.updateFontSizeInIcon(this.pdfViewer.selectedItems.annotations[0].fontSize);\n this.pdfViewer.toolbar.annotationToolbarModule.updateTextAlignInIcon(this.pdfViewer.selectedItems.annotations[0].textAlign);\n }\n }\n else {\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.colorDropDownElement, '#000000');\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.strokeDropDownElement, '#000000');\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.fontColorElement, '#000000');\n }\n }\n else {\n this.colorDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-color-container');\n this.strokeDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-stroke-container');\n this.fontColorElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-textcolor-container');\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.colorDropDownElementInBlazor, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill, 'fillColor'));\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.strokeDropDownElementInBlazor, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor, 'strokeColor'));\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n // eslint-disable-next-line\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.fontColorElementInBlazor, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].fontColor, 'fontColor'));\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateFontFamilyInIcon', this.pdfViewer.selectedItems.annotations[0].fontFamily);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.blazorUIAdaptor.updateFontFamilyInIcon(this.pdfViewer.selectedItems.annotations[0].fontFamily);\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateFontSizeInIcon', this.pdfViewer.selectedItems.annotations[0].fontSize);\n this.pdfViewerBase.blazorUIAdaptor.updateFontSizeInIcon(this.pdfViewer.selectedItems.annotations[0].fontSize);\n //this.pdfViewer.toolbar.annotationtoolbar.updateTextAlignInIcon(this.pdfViewer.selectedItems.annotations[0].textAlign);\n }\n }\n else {\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.colorDropDownElementInBlazor, '#000000');\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.strokeDropDownElementInBlazor, '#000000');\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.fontColorElementInBlazor, '#000000');\n }\n }\n };\n AnnotationToolbar.prototype.getColorHexValue = function (colorString, type) {\n if (colorString === '#ffffff00') {\n colorString = '#ffffff';\n }\n if (colorString.toLowerCase() === 'red') {\n colorString = '#FF0000';\n }\n if (colorString !== 'transparent') {\n if (!isBlazor()) {\n return this.colorPalette.getValue(colorString, 'hex');\n }\n else {\n return colorString;\n }\n }\n else {\n if (type === 'fontColor' || type === 'strokeColor') {\n return '#000000';\n }\n else {\n return '#ffffff';\n }\n }\n };\n AnnotationToolbar.prototype.setColorInPicker = function (colorpick, colorString) {\n if (colorpick) {\n colorpick.setProperties({ 'value': colorString }, true);\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.resetToolbar = function () {\n this.adjustViewer(false);\n this.updateToolbarItems();\n // eslint-disable-next-line max-len\n if ((this.pdfViewer.isAnnotationToolbarOpen || this.pdfViewer.isAnnotationToolbarVisible) && this.pdfViewer.enableAnnotationToolbar) {\n this.toolbarElement.style.display = '';\n this.isToolbarHidden = false;\n this.adjustViewer(true);\n this.enableAnnotationAddTools(false);\n this.pdfViewer.isAnnotationToolbarVisible = true;\n }\n else {\n this.toolbarElement.style.display = 'none';\n this.isToolbarHidden = true;\n this.pdfViewer.isAnnotationToolbarVisible = false;\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.clearTextMarkupMode = function () {\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n if (isBlazor()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n }\n this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAddMode = '';\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.clearShapeMode = function () {\n if (this.pdfViewerBase.isShapeAnnotationModule()) {\n this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode = '';\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.clearMeasureMode = function () {\n if (this.pdfViewerBase.isCalibrateAnnotationModule()) {\n this.pdfViewer.annotation.measureAnnotationModule.currentAnnotationMode = '';\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.clear = function () {\n this.deselectAllItems();\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.destroy = function () {\n this.destroyComponent();\n this.shapeDropDown ? this.shapeDropDown.destroy() : null;\n this.calibrateDropDown ? this.calibrateDropDown.destroy() : null;\n this.fontColorDropDown ? this.fontColorDropDown.destroy() : null;\n this.textAlignDropDown ? this.textAlignDropDown.destroy() : null;\n this.colorDropDown ? this.colorDropDown.destroy() : null;\n this.strokeDropDown ? this.strokeDropDown.destroy() : null;\n this.thicknessDropDown ? this.thicknessDropDown.destroy() : null;\n this.opacityDropDown ? this.opacityDropDown.destroy() : null;\n this.textPropertiesDropDown ? this.textPropertiesDropDown.destroy() : null;\n this.toolbar ? this.toolbar.destroy() : null;\n // eslint-disable-next-line\n var stampImage = document.getElementById(this.pdfViewer.element.id + '_stampElement');\n if (stampImage) {\n stampImage.parentElement.removeChild(stampImage);\n }\n };\n AnnotationToolbar.prototype.destroyComponent = function () {\n // eslint-disable-next-line\n var componentElement = [this.highlightItem, this.underlineItem, this.strikethroughItem, this.lineElement, this.arrowElement,\n this.rectangleElement, this.circleElement, this.polygonElement, this.calibrateDistance, this.calibrateArea, this.calibrateRadius,\n this.calibrateVolume, this.calibratePerimeter, this.freeTextEditItem, this.stampElement, this.handWrittenSignatureItem, this.inkAnnotationItem,\n this.fontFamilyElement, this.fontSizeElement, this.alignLeftElement, this.alignRightElement, this.alignCenterElement, this.alignJustifyElement,\n this.boldElement, this.italicElement, this.fontStyleStrikethroughItem, this.fontStyleUnderlineItem, this.deleteItem, this.commentItem,\n this.shapeDropDown ? this.shapeDropDown.activeElem[0] : null, this.calibrateDropDown ? this.calibrateDropDown.activeElem[0] : null, this.fontColorDropDown ? this.fontColorDropDown.activeElem[0] : null, this.textAlignDropDown ? this.textAlignDropDown.activeElem[0] : null,\n this.colorDropDown ? this.colorDropDown.activeElem[0] : null, this.strokeDropDown ? this.strokeDropDown.activeElem[0] : null, this.thicknessDropDown ? this.thicknessDropDown.activeElem[0] : null, this.opacityDropDown ? this.opacityDropDown.activeElem[0] : null, this.textPropertiesDropDown ? this.textPropertiesDropDown.activeElem[0] : null\n ];\n for (var i = 0; i < componentElement.length; i++) {\n if (componentElement[i]) {\n this.destroyDependentComponent(componentElement[i]);\n }\n }\n };\n AnnotationToolbar.prototype.destroyDependentComponent = function (component) {\n if (component.ej2_instances) {\n for (var i = component.ej2_instances.length - 1; i >= 0; i--) {\n component.ej2_instances[i].destroy();\n }\n }\n };\n AnnotationToolbar.prototype.getElementHeight = function (element) {\n try {\n return element.getBoundingClientRect().height;\n }\n catch (error) {\n return 0;\n }\n };\n AnnotationToolbar.prototype.updateViewerHeight = function (viewerHeight, toolbarHeight) {\n return this.getElementHeight(this.pdfViewer.element) - toolbarHeight;\n };\n AnnotationToolbar.prototype.resetViewerHeight = function (viewerHeight, toolbarHeight) {\n return viewerHeight + toolbarHeight;\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.afterAnnotationToolbarCreationInBlazor = function () {\n this.HighlightElement = document.getElementById(this.pdfViewer.element.id + '_highLight').children[0];\n this.UnderlineElement = document.getElementById(this.pdfViewer.element.id + '_underline').children[0];\n this.StrikethroughElement = document.getElementById(this.pdfViewer.element.id + '_strikethrough').children[0];\n this.InkAnnotationElement = document.getElementById(this.pdfViewer.element.id + '_annotation_ink').children[0];\n this.InkAnnotationElement.classList.add('e-pv-tbar-btn');\n this.FreeTextElement = document.getElementById(this.pdfViewer.element.id + '_annotation_freeTextEdit').children[0];\n this.HighlightElement = this.addClassToToolbarInBlazor(this.HighlightElement, 'e-pv-highlight', '_highLight');\n this.UnderlineElement = this.addClassToToolbarInBlazor(this.UnderlineElement, 'e-pv-underline', '_underline');\n this.StrikethroughElement = this.addClassToToolbarInBlazor(this.StrikethroughElement, 'e-pv-strikethrough', '_strikethrough');\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.addClassToToolbarInBlazor = function (element, className, idString) {\n element.classList.add(className);\n element.classList.add('e-pv-tbar-btn');\n if (element.childNodes.length > 0) {\n var spanElement = element.childNodes[0];\n if (spanElement && spanElement.classList) {\n spanElement.id = this.pdfViewer.element.id + idString + 'Icon';\n spanElement.classList.remove('e-icons');\n spanElement.classList.remove('e-btn-icon');\n if (this.pdfViewer.enableRtl) {\n spanElement.classList.add('e-right');\n }\n }\n }\n return element;\n };\n AnnotationToolbar.prototype.handleHighlightInBlazor = function () {\n if (this.HighlightElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n }\n else if (!this.HighlightElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.selectItem(this.HighlightElement);\n }\n if (this.StrikethroughElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n }\n if (this.UnderlineElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n }\n };\n AnnotationToolbar.prototype.handleUnderlineInBlazor = function () {\n if (this.UnderlineElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n }\n else if (!this.UnderlineElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.selectItem(this.UnderlineElement);\n }\n if (this.StrikethroughElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n }\n if (this.HighlightElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n }\n };\n AnnotationToolbar.prototype.handleStrikethroughInBlazor = function () {\n if (this.StrikethroughElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n }\n else if (!this.StrikethroughElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.selectItem(this.StrikethroughElement);\n }\n if (this.HighlightElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n }\n if (this.UnderlineElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n }\n };\n AnnotationToolbar.prototype.AnnotationSliderOpened = function () {\n if (this.pdfViewer.selectedItems.annotations && this.pdfViewer.selectedItems.annotations.length > 0 && this.pdfViewer.selectedItems.annotations[0]) {\n if (this.pdfViewer.selectedItems.annotations[0].wrapper && this.pdfViewer.selectedItems.annotations[0].wrapper.children[0]) {\n var opacity = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.opacity * 100;\n var thickness = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeWidth;\n this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateAnnotationSlider', opacity, thickness);\n }\n }\n };\n AnnotationToolbar.prototype.DropDownOpened = function (colorElement) {\n if (colorElement && colorElement[0].element) {\n var colorElementBounds = colorElement[0].element.getBoundingClientRect();\n var sidebarElement = this.pdfViewerBase.navigationPane.sideBarToolbar;\n var sideBarElementWidth = (sidebarElement) ? sidebarElement.getBoundingClientRect().width : 0;\n if (colorElementBounds.left > this.pdfViewerBase.viewerContainer.clientWidth + colorElementBounds.width + sideBarElementWidth) {\n colorElement[0].element.style.left = (colorElementBounds.left - (this.pdfViewerBase.viewerContainer.clientHeight / 2)) + 'px';\n }\n }\n };\n return AnnotationToolbar;\n}());\nexport { AnnotationToolbar };\n","/* eslint-disable */\nimport { createElement, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Toolbar as Tool } from '@syncfusion/ej2-navigations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/* eslint-disable */\n/**\n * @hidden\n */\nvar FormDesignerToolbar = /** @class */ (function () {\n function FormDesignerToolbar(viewer, viewerBase, toolbar) {\n /**\n * @private\n */\n this.isToolbarHidden = false;\n this.isTextboxBtnVisible = true;\n this.isPasswordBtnVisible = true;\n this.isCheckboxBtnVisible = true;\n this.isRadiobuttonBtnVisible = true;\n this.isDropdownBtnVisible = true;\n this.isListboxBtnVisible = true;\n this.isSignatureBtnVisible = true;\n this.isDeleteBtnVisible = true;\n this.toolbarBorderHeight = 1;\n this.pdfViewer = viewer;\n this.pdfViewerBase = viewerBase;\n this.primaryToolbar = toolbar;\n }\n FormDesignerToolbar.prototype.initializeFormDesignerToolbar = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_formdesigner_toolbar', className: 'e-pv-formdesigner-toolbar' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n this.toolbar = new Tool({\n width: '', height: '', overflowMode: 'Popup',\n items: this.createToolbarItems(), clicked: this.onToolbarClicked.bind(this),\n created: function () {\n _this.createDropDowns();\n }\n });\n //this.toolbar.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.appendTo(this.toolbarElement);\n this.afterToolbarCreation();\n this.createSignContainer();\n this.applyFormDesignerToolbarSettings();\n //this.updateToolbarItems();\n this.showFormDesignerToolbar(null, true);\n };\n /**\n * @param element\n * @param isInitialLoading\n * @param element\n * @param isInitialLoading\n * @private\n */\n FormDesignerToolbar.prototype.showFormDesignerToolbar = function (element, isInitialLoading) {\n if (!this.isToolbarHidden) {\n // eslint-disable-next-line\n var formDesignerModule = this.pdfViewer.formDesignerModule;\n if (element) {\n this.primaryToolbar.deSelectItem(element);\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n this.primaryToolbar.deSelectItem(this.primaryToolbar.formDesignerItem);\n }\n }\n this.adjustViewer(false);\n // eslint-disable-next-line max-len\n //this.deselectAllItems();\n this.toolbarElement.style.display = 'none';\n this.pdfViewer.formDesignerModule.setMode(\"edit\");\n this.pdfViewer.designerMode = false;\n if (!isInitialLoading) {\n this.pdfViewer.isFormDesignerToolbarVisible = false;\n }\n }\n else {\n var toolBarInitialStatus = this.toolbarElement.style.display;\n this.toolbarElement.style.display = 'block';\n this.pdfViewer.designerMode = true;\n this.pdfViewer.formDesignerModule.setMode(\"designer\");\n if (!isInitialLoading) {\n this.pdfViewer.isFormDesignerToolbarVisible = true;\n }\n if (element) {\n this.primaryToolbar.selectItem(element);\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n this.primaryToolbar.selectItem(this.primaryToolbar.formDesignerItem);\n }\n }\n if (toolBarInitialStatus === 'none') {\n this.adjustViewer(true);\n }\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.magnification && this.pdfViewer.magnification.fitType === 'fitToPage') {\n this.pdfViewer.magnification.fitToPage();\n }\n //this.enableAnnotationAddTools(true);\n this.isToolbarHidden = !this.isToolbarHidden;\n };\n /**\n * @param isAdjust\n * @private\n */\n FormDesignerToolbar.prototype.adjustViewer = function (isAdjust) {\n var splitterElement;\n var toolbarContainer;\n var formDesignerToolbarHeight;\n if (isBlazor()) {\n splitterElement = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar-splitter');\n toolbarContainer = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n var formDesignerToolbarContainer = this.pdfViewer.element.querySelector('.e-pv-formDesigner-toolbar');\n formDesignerToolbarHeight = this.getToolbarHeight(formDesignerToolbarContainer);\n }\n else {\n splitterElement = this.pdfViewerBase.getElement('_sideBarToolbarSplitter');\n toolbarContainer = this.pdfViewerBase.getElement('_toolbarContainer');\n formDesignerToolbarHeight = this.getToolbarHeight(this.toolbarElement);\n }\n var toolbarHeight = this.getToolbarHeight(toolbarContainer);\n var sideBarToolbar = this.pdfViewerBase.navigationPane.sideBarToolbar;\n var sideBarContentContainer = this.pdfViewerBase.navigationPane.sideBarContentContainer;\n var commentsContainer = this.pdfViewerBase.navigationPane.commentPanelContainer;\n var commentPanelResizer = this.pdfViewerBase.navigationPane.commentPanelResizer;\n if (isAdjust) {\n if (this.pdfViewer.enableToolbar) {\n sideBarToolbar.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n sideBarContentContainer.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n splitterElement.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n commentsContainer.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n commentPanelResizer.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n }\n else {\n sideBarToolbar.style.top = (formDesignerToolbarHeight) + 'px';\n sideBarContentContainer.style.top = (formDesignerToolbarHeight) + 'px';\n splitterElement.style.top = (formDesignerToolbarHeight) + 'px';\n commentsContainer.style.top = (formDesignerToolbarHeight) + 'px';\n commentPanelResizer.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (formDesignerToolbarHeight + toolbarHeight)) + 'px';\n sideBarToolbar.style.height = this.getNavigationToolbarHeight(formDesignerToolbarHeight + toolbarHeight) + 'px';\n splitterElement.style.height = this.getNavigationToolbarHeight(formDesignerToolbarHeight + toolbarHeight) + 'px';\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n // eslint-disable-next-line max-len\n sideBarToolbar.style.top = toolbarHeight + 'px';\n sideBarContentContainer.style.top = toolbarHeight + 'px';\n splitterElement.style.top = toolbarHeight + 'px';\n commentsContainer.style.top = toolbarHeight + 'px';\n commentPanelResizer.style.top = toolbarHeight + 'px';\n }\n else {\n sideBarToolbar.style.top = 1 + 'px';\n sideBarToolbar.style.height = '100%';\n sideBarContentContainer.style.top = 1 + 'px';\n sideBarContentContainer.style.height = '100%';\n splitterElement.style.top = 1 + 'px';\n splitterElement.style.height = '100%';\n commentsContainer.style.top = 1 + 'px';\n commentsContainer.style.height = '100%';\n commentPanelResizer.style.top = 1 + 'px';\n commentPanelResizer.style.height = '100%';\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.resetViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), formDesignerToolbarHeight) + 'px';\n sideBarToolbar.style.height = this.getNavigationToolbarHeight(toolbarHeight);\n splitterElement.style.height = this.getNavigationToolbarHeight(toolbarHeight);\n if (this.pdfViewerBase.viewerContainer.style.height === '0px') {\n // eslint-disable-next-line\n this.pdfViewerBase.viewerContainer.style.height = (parseInt(this.pdfViewer.element.style.height) - parseInt(sideBarToolbar.style.top)) + 'px';\n }\n }\n if (isBlazor()) {\n this.updateContentContainerHeight(isAdjust, true);\n }\n else {\n this.updateContentContainerHeight(isAdjust);\n }\n };\n FormDesignerToolbar.prototype.getElementHeight = function (element) {\n try {\n return element.getBoundingClientRect().height;\n }\n catch (error) {\n return 0;\n }\n };\n FormDesignerToolbar.prototype.updateViewerHeight = function (viewerHeight, toolbarHeight) {\n return this.getElementHeight(this.pdfViewer.element) - toolbarHeight;\n };\n FormDesignerToolbar.prototype.resetViewerHeight = function (viewerHeight, toolbarHeight) {\n return viewerHeight + toolbarHeight;\n };\n FormDesignerToolbar.prototype.getNavigationToolbarHeight = function (toolbarHeight) {\n var height = this.pdfViewer.element.getBoundingClientRect().height;\n return (height !== 0) ? height - toolbarHeight + 'px' : '';\n };\n FormDesignerToolbar.prototype.updateContentContainerHeight = function (isAdjust, isBlazor) {\n var formDesignerToolbarHeight;\n if (isBlazor) {\n var formDesignerToolbarContainer = this.pdfViewer.element.querySelector('.e-pv-formDesigner-toolbar');\n formDesignerToolbarHeight = this.getToolbarHeight(formDesignerToolbarContainer);\n }\n else {\n formDesignerToolbarHeight = this.getToolbarHeight(this.toolbarElement);\n }\n var sideBarClientRect = this.pdfViewerBase.navigationPane.sideBarContentContainer.getBoundingClientRect();\n if (sideBarClientRect.height !== 0) {\n if (isAdjust) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.height = sideBarClientRect.height - formDesignerToolbarHeight + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.height = sideBarClientRect.height + formDesignerToolbarHeight + 'px';\n }\n }\n };\n FormDesignerToolbar.prototype.getToolbarHeight = function (element) {\n var toolbarHeight = element.getBoundingClientRect().height;\n if (toolbarHeight === 0 && element === this.pdfViewerBase.getElement('_toolbarContainer')) {\n // getComputedStyle gets the value from style and toolbar border height is added to it.\n // eslint-disable-next-line\n toolbarHeight = parseFloat(window.getComputedStyle(element)['height']) + this.toolbarBorderHeight;\n }\n return toolbarHeight;\n };\n // eslint-disable-next-line\n FormDesignerToolbar.prototype.createToolbarItems = function () {\n var signTemplate = this.getTemplate('span', '_formfield_signature', 'e-pv-annotation-handwritten-container');\n // eslint-disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-textbox-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_textbox', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-password-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_passwordfield', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-checkbox-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_checkbox', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-radiobutton-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_radiobutton', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-dropdown-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_dropdown', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-listbox-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_listbox', align: 'Left' });\n items.push({ template: signTemplate, align: 'Left' });\n items.push({ type: 'Separator', align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-annotation-delete-icon e-pv-icon', className: 'e-pv-annotation-delete-container', id: this.pdfViewer.element.id + '_formdesigner_delete', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-annotation-tools-close-icon e-pv-icon', className: 'e-pv-annotation-tools-close-container', id: this.pdfViewer.element.id + '_formdesigner_close', align: 'Right' });\n return items;\n };\n FormDesignerToolbar.prototype.createSignContainer = function () {\n var _this = this;\n this.handWrittenSignatureItem = this.pdfViewerBase.getElement('_formfield_signature');\n // eslint-disable-next-line max-len\n this.primaryToolbar.createTooltip(this.pdfViewerBase.getElement('_formfield_signature'), this.pdfViewer.localeObj.getConstant('HandwrittenSignatureDialogHeaderText'));\n // eslint-disable-next-line\n var proxy = this;\n var items = [];\n items = [\n {\n text: 'ADD SIGNATURE'\n },\n {\n separator: true\n },\n {\n text: 'ADD INITIAL'\n }\n ];\n var saveOptions = {\n items: items,\n iconCss: 'e-pv-handwritten-icon e-pv-icon',\n cssClass: 'e-pv-handwritten-popup',\n beforeItemRender: function (args) {\n _this.pdfViewer.clearSelection(_this.pdfViewerBase.currentPageNumber - 1);\n if (args.element && args.element.className.indexOf(\"e-separator\") !== -1) {\n args.element.style.margin = \"8px 0\";\n }\n if (args.item.text === 'ADD SIGNATURE') {\n args.element.innerHTML = '';\n var addInitialSpan = createElement('button');\n addInitialSpan.classList.add(\"e-control\", \"e-btn\", \"e-lib\", \"e-outline\", \"e-primary\");\n addInitialSpan.textContent = _this.pdfViewer.localeObj.getConstant('SignatureFieldDialogHeaderText');\n addInitialSpan.style.width = \"130px\";\n addInitialSpan.style.height = \"36px\";\n addInitialSpan.addEventListener('click', _this.clickSignature.bind(_this));\n args.element.appendChild(addInitialSpan);\n args.element.addEventListener('mouseover', _this.hoverInitialBtn.bind(_this));\n args.element.style.width = '206px';\n args.element.style.display = 'flex';\n args.element.style.flexDirection = 'column';\n args.element.style.height = 'auto';\n args.element.style.alignItems = 'center';\n }\n if (args.item.text === 'ADD INITIAL') {\n args.element.innerHTML = '';\n var addInitialSpan = createElement('button');\n addInitialSpan.classList.add(\"e-control\", \"e-btn\", \"e-lib\", \"e-outline\", \"e-primary\");\n addInitialSpan.textContent = _this.pdfViewer.localeObj.getConstant('InitialFieldDialogHeaderText');\n addInitialSpan.style.width = \"130px\";\n addInitialSpan.style.height = \"36px\";\n addInitialSpan.addEventListener('click', _this.clickInitial.bind(_this));\n args.element.appendChild(addInitialSpan);\n args.element.addEventListener('mouseover', _this.hoverInitialBtn.bind(_this));\n args.element.style.width = '206px';\n args.element.style.display = 'flex';\n args.element.style.flexDirection = 'column';\n args.element.style.height = 'auto';\n args.element.style.alignItems = 'center';\n }\n },\n };\n var drpDownBtn = new DropDownButton(saveOptions);\n if (this.pdfViewer.enableRtl) {\n drpDownBtn.enableRtl = this.pdfViewer.enableRtl;\n }\n drpDownBtn.appendTo(this.handWrittenSignatureItem);\n };\n FormDesignerToolbar.prototype.hoverInitialBtn = function (event) {\n var eventTarget = event.target;\n var currentFieldID = isNullOrUndefined(event.path) ? event.composedPath()[0].id : event.path[0].id;\n if (currentFieldID !== 'sign_' + currentFieldID.split(\"_\")[1] && currentFieldID !== 'delete_' + currentFieldID.split(\"_\")[1]) {\n var liElement = document.getElementById(eventTarget.id);\n if (isNullOrUndefined(liElement)) {\n liElement = document.getElementById(eventTarget.parentElement.id);\n }\n if (liElement != null && (eventTarget.id !== 'sign_' + eventTarget.id.split('_')[1] || eventTarget.id !== 'sign_border_' + eventTarget.id.split('_')[2])) {\n liElement.style.background = 'transparent';\n liElement.style.cursor = 'default';\n }\n else if (liElement.parentElement != null && (eventTarget.id !== 'sign_' + eventTarget.id.split('_')[1] || eventTarget.id !== 'sign_border_' + eventTarget.id.split('_')[2])) {\n liElement.parentElement.style.background = 'transparent';\n liElement.parentElement.style.cursor = 'default';\n }\n }\n };\n FormDesignerToolbar.prototype.getTemplate = function (elementName, id, className) {\n var element = createElement(elementName, { id: this.pdfViewer.element.id + id });\n if (className) {\n element.className = className;\n }\n return element.outerHTML;\n };\n FormDesignerToolbar.prototype.onToolbarClicked = function (args) {\n // eslint-disable-next-line\n if (args && args.item) {\n if (args.item.id.indexOf(\"textbox\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('Textbox');\n }\n else if (args.item.id.indexOf(\"passwordfield\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('Password');\n }\n else if (args.item.id.indexOf(\"checkbox\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('CheckBox');\n }\n else if (args.item.id.indexOf(\"radiobutton\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('RadioButton');\n }\n else if (args.item.id.indexOf(\"dropdown\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('DropDown');\n }\n else if (args.item.id.indexOf(\"listbox\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('ListBox');\n }\n else if (args.item.id.indexOf(\"signature\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('SignatureField');\n }\n else if (args.item.id.indexOf(\"close\") !== -1) {\n this.pdfViewer.toolbarModule.formDesignerToolbarModule.showFormDesignerToolbar(this.pdfViewer.toolbarModule.formDesignerItem);\n }\n else if (args.item.id.indexOf(\"delete\") !== -1) {\n this.pdfViewer.formDesignerModule.deleteFormField(this.pdfViewer.selectedItems.formFields[0]);\n this.showHideDeleteIcon(false);\n }\n if (this.pdfViewer.selectedItems.formFields.length > 0) {\n this.pdfViewer.clearSelection(this.pdfViewer.selectedItems.formFields[0].pageIndex);\n }\n }\n };\n FormDesignerToolbar.prototype.clickSignature = function (args) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('SignatureField');\n };\n FormDesignerToolbar.prototype.clickInitial = function (args) {\n this.pdfViewer.isInitialFieldToolbarSelection = true;\n this.pdfViewer.formDesignerModule.setFormFieldMode('InitialField');\n this.pdfViewer.isInitialFieldToolbarSelection = false;\n };\n FormDesignerToolbar.prototype.afterToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.textboxItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_textbox', 'e-pv-formdesigner-textbox', this.pdfViewer.localeObj.getConstant('Textbox'));\n this.passwordItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_passwordfield', 'e-pv-formdesigner-passwordfield', this.pdfViewer.localeObj.getConstant('Password'));\n this.checkboxItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_checkbox', 'e-pv-formdesigner-checkbox', this.pdfViewer.localeObj.getConstant('Check Box'));\n this.radioButtonItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_radiobutton', 'e-pv-formdesigner-radiobutton', this.pdfViewer.localeObj.getConstant('Radio Button'));\n this.dropdownItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_dropdown', 'e-pv-formdesigner-dropdown', this.pdfViewer.localeObj.getConstant('Dropdown'));\n this.listboxItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_listbox', 'e-pv-formdesigner-listbox', this.pdfViewer.localeObj.getConstant('List Box'));\n //this.signatureItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_signature', 'e-pv-formdesigner-signature', this.pdfViewer.localeObj.getConstant('Signature'));\n this.deleteItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_delete', 'e-pv-formdesigner-delete', this.pdfViewer.localeObj.getConstant('Delete FormField'));\n this.closeItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_close', 'e-pv-annotation-tools-close', null);\n this.showHideDeleteIcon(false);\n //this.enableTextMarkupAnnotationPropertiesTools(false); \n };\n FormDesignerToolbar.prototype.showHideDeleteIcon = function (isEnable) {\n if (this.toolbar)\n this.toolbar.enableItems(this.deleteItem.parentElement, isEnable);\n };\n FormDesignerToolbar.prototype.applyFormDesignerToolbarSettings = function () {\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems) {\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('TextboxTool') !== -1) {\n this.showTextboxTool(true);\n }\n else {\n this.showTextboxTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('PasswordTool') !== -1) {\n this.showPasswordTool(true);\n }\n else {\n this.showPasswordTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('CheckBoxTool') !== -1) {\n this.showCheckboxTool(true);\n }\n else {\n this.showCheckboxTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('RadioButtonTool') !== -1) {\n this.showRadioButtonTool(true);\n }\n else {\n this.showRadioButtonTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('DropdownTool') !== -1) {\n this.showDropdownTool(true);\n }\n else {\n this.showDropdownTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('ListboxTool') !== -1) {\n this.showListboxTool(true);\n }\n else {\n this.showListboxTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('DrawSignatureTool') !== -1) {\n this.showDrawSignatureTool(true);\n }\n else {\n this.showDrawSignatureTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('DeleteTool') !== -1) {\n this.showDeleteTool(true);\n }\n else {\n this.showDeleteTool(false);\n }\n this.showSeparator();\n }\n };\n FormDesignerToolbar.prototype.showTextboxTool = function (isShow) {\n this.isTextboxBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 0, 0);\n };\n FormDesignerToolbar.prototype.showPasswordTool = function (isShow) {\n this.isPasswordBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 1, 1);\n };\n FormDesignerToolbar.prototype.showCheckboxTool = function (isShow) {\n this.isCheckboxBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 2, 2);\n };\n FormDesignerToolbar.prototype.showRadioButtonTool = function (isShow) {\n this.isRadiobuttonBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 3, 3);\n };\n FormDesignerToolbar.prototype.showDropdownTool = function (isShow) {\n this.isDropdownBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 4, 4);\n };\n FormDesignerToolbar.prototype.showListboxTool = function (isShow) {\n this.isListboxBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 5, 5);\n };\n FormDesignerToolbar.prototype.showDrawSignatureTool = function (isShow) {\n this.isSignatureBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 6, 6);\n };\n FormDesignerToolbar.prototype.showDeleteTool = function (isShow) {\n this.isDeleteBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 8, 8);\n };\n FormDesignerToolbar.prototype.showSeparator = function () {\n if (!this.isSignatureBtnVisible && !this.isDeleteBtnVisible)\n this.applyHideToToolbar(false, 7, 7);\n };\n FormDesignerToolbar.prototype.applyHideToToolbar = function (show, startIndex, endIndex) {\n var isHide = !show;\n for (var index = startIndex; index <= endIndex; index++) {\n this.toolbar.hideItem(index, isHide);\n }\n };\n FormDesignerToolbar.prototype.createDropDowns = function () {\n };\n /**\n * @private\n */\n FormDesignerToolbar.prototype.destroy = function () {\n var componentElement = [this.textboxItem, this.passwordItem, this.checkboxItem, this.radioButtonItem,\n this.listboxItem, this.dropdownItem, this.handWrittenSignatureItem, this.deleteItem];\n for (var i = 0; i < componentElement.length; i++) {\n if (componentElement[i]) {\n this.destroyDependentComponent(componentElement[i]);\n }\n }\n };\n FormDesignerToolbar.prototype.destroyDependentComponent = function (component) {\n if (component.ej2_instances) {\n for (var i = component.ej2_instances.length - 1; i >= 0; i--) {\n component.ej2_instances[i].destroy();\n }\n }\n };\n return FormDesignerToolbar;\n}());\nexport { FormDesignerToolbar };\n","/* eslint-disable */\nimport { createElement, Browser, isBlazor } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { AnnotationToolbar } from '../index';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { FormDesignerToolbar } from './formdesigner-toolbar';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * @param viewer\n * @param viewerBase\n * @param viewer\n * @param viewerBase\n * @private\n */\n function Toolbar(viewer, viewerBase) {\n var _this = this;\n this.isPageNavigationToolDisabled = false;\n this.isMagnificationToolDisabled = false;\n /**\n * @private\n */\n this.isSelectionToolDisabled = false;\n this.isScrollingToolDisabled = false;\n this.isOpenBtnVisible = true;\n this.isNavigationToolVisible = true;\n this.isMagnificationToolVisible = true;\n this.isSelectionBtnVisible = true;\n this.isScrollingBtnVisible = true;\n this.isDownloadBtnVisible = true;\n this.isPrintBtnVisible = true;\n this.isSearchBtnVisible = true;\n this.isTextSearchBoxDisplayed = false;\n this.isUndoRedoBtnsVisible = true;\n this.isAnnotationEditBtnVisible = true;\n this.isFormDesignerEditBtnVisible = true;\n this.isCommentBtnVisible = true;\n this.isSubmitbtnvisible = true;\n this.onToolbarKeydown = function (event) {\n var targetId = event.target.id;\n if (!(targetId === _this.pdfViewer.element.id + '_currentPageInput' || targetId === _this.pdfViewer.element.id + '_zoomDropDown')) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n this.toolbarClickHandler = function (args) {\n // eslint-disable-next-line max-len\n if (!Browser.isDevice || _this.pdfViewer.enableDesktopMode) {\n if (args.originalEvent.target === _this.zoomDropdownItem.parentElement.childNodes[1] || args.originalEvent.target === _this.zoomDropdownItem.parentElement.childNodes[2]) {\n args.cancel = true;\n }\n else if (args.originalEvent.target.id === _this.pdfViewer.element.id + '_openIcon') {\n var tooltipData = args.originalEvent.target.parentElement.dataset;\n if (tooltipData && tooltipData.tooltipId) {\n var tooltipElement = document.getElementById(tooltipData.tooltipId);\n if (tooltipElement) {\n tooltipElement.style.display = 'none';\n }\n }\n }\n }\n _this.handleToolbarBtnClick(args);\n // eslint-disable-next-line\n var targetElement = args.originalEvent.target;\n if (!Browser.isDevice || _this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n if (!(args.originalEvent.target === _this.zoomDropdownItem.parentElement.childNodes[1] || args.originalEvent.target === _this.zoomDropdownItem.parentElement.childNodes[2] || args.originalEvent.target === _this.currentPageBoxElement || args.originalEvent.target === _this.textSearchItem.childNodes[0])) {\n if (targetElement.parentElement.id !== _this.pdfViewer.element.id + '_toolbarContainer_nav' && targetElement.id !== _this.pdfViewer.element.id + '_toolbarContainer_nav') {\n args.originalEvent.target.blur();\n _this.pdfViewerBase.focusViewerContainer();\n }\n }\n }\n else {\n args.originalEvent.target.blur();\n _this.pdfViewerBase.focusViewerContainer();\n }\n };\n // eslint-disable-next-line\n this.loadDocument = function (args) {\n // eslint-disable-next-line\n var upoadedFiles = args.target.files;\n if (args.target.files[0] !== null) {\n var uploadedFile = upoadedFiles[0];\n if (uploadedFile) {\n _this.uploadedDocumentName = uploadedFile.name;\n var reader = new FileReader();\n reader.readAsDataURL(uploadedFile);\n // eslint-disable-next-line\n reader.onload = function (e) {\n var uploadedFileUrl = e.currentTarget.result;\n if (isBlazor()) {\n _this.pdfViewer._dotnetInstance.invokeMethodAsync(\"LoadDocumentFromClient\", uploadedFileUrl);\n }\n else {\n _this.pdfViewer.load(uploadedFileUrl, null);\n }\n };\n }\n }\n };\n this.navigateToPage = function (args) {\n if (args.which === 13) {\n // eslint-disable-next-line\n var enteredValue = parseInt(_this.currentPageBoxElement.value);\n if (enteredValue !== null) {\n if (enteredValue > 0 && enteredValue <= _this.pdfViewerBase.pageCount) {\n if (_this.pdfViewer.navigationModule) {\n _this.pdfViewer.navigationModule.goToPage(enteredValue);\n }\n }\n else {\n _this.updateCurrentPage(_this.pdfViewerBase.currentPageNumber);\n }\n }\n else {\n _this.updateCurrentPage(_this.pdfViewerBase.currentPageNumber);\n }\n _this.currentPageBoxElement.blur();\n _this.pdfViewerBase.focusViewerContainer();\n }\n };\n this.textBoxFocusOut = function () {\n // eslint-disable-next-line\n if (_this.currentPageBox.value === null || _this.currentPageBox.value >= _this.pdfViewerBase.pageCount || _this.currentPageBox.value !== _this.pdfViewerBase.currentPageNumber) {\n _this.updateCurrentPage(_this.pdfViewerBase.currentPageNumber);\n }\n };\n this.pdfViewer = viewer;\n this.pdfViewerBase = viewerBase;\n }\n /**\n * @param width\n * @private\n */\n Toolbar.prototype.intializeToolbar = function (width) {\n var toolbarDiv;\n if (!isBlazor()) {\n toolbarDiv = this.createToolbar(width);\n }\n else {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n toolbarDiv = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n this.toolbarElement = toolbarDiv;\n }\n }\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (isIE) {\n if (isBlazor()) {\n this.pdfViewerBase.blazorUIAdaptor.totalPageElement.classList.add('e-pv-total-page-ms');\n }\n else {\n if (!Browser.isDevice) {\n this.totalPageItem.classList.add('e-pv-total-page-ms');\n }\n }\n }\n this.createFileElement(toolbarDiv);\n this.wireEvent();\n if (!isBlazor()) {\n this.updateToolbarItems();\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.applyToolbarSettings();\n this.initialEnableItems();\n this.pdfViewerBase.navigationPane.adjustPane();\n }\n else {\n this.initialEnableItems();\n }\n if (this.pdfViewer.annotationModule) {\n this.annotationToolbarModule = new AnnotationToolbar(this.pdfViewer, this.pdfViewerBase, this);\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.annotationToolbarModule.initializeAnnotationToolbar();\n }\n }\n if (this.pdfViewer.formDesignerModule) {\n this.formDesignerToolbarModule = new FormDesignerToolbar(this.pdfViewer, this.pdfViewerBase, this);\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.formDesignerToolbarModule.initializeFormDesignerToolbar();\n }\n }\n }\n else {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.initialEnableItems();\n this.pdfViewerBase.navigationPane.adjustPane();\n if (this.pdfViewer.enableToolbar) {\n this.bindOpenIconEvent();\n }\n }\n this.PanElement = document.getElementById(this.pdfViewer.element.id + '_handTool').children[0];\n this.PanElement.classList.add('e-pv-tbar-btn');\n this.SelectToolElement = document.getElementById(this.pdfViewer.element.id + '_selectTool').children[0];\n this.SelectToolElement.classList.add('e-pv-tbar-btn');\n this.CommentElement = document.getElementById(this.pdfViewer.element.id + '_comment').children[0];\n this.CommentElement.classList.add('e-pv-tbar-btn');\n this.annotationToolbarModule = new AnnotationToolbar(this.pdfViewer, this.pdfViewerBase, this);\n if (this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar || (this.pdfViewer.enableDesktopMode && Browser.isDevice)) {\n this.annotationToolbarModule.afterAnnotationToolbarCreationInBlazor();\n }\n }\n return toolbarDiv;\n };\n Toolbar.prototype.bindOpenIconEvent = function () {\n var openElement = document.getElementById(this.pdfViewer.element.id + '_open');\n if (openElement) {\n openElement.addEventListener('click', this.openFileDialogBox.bind(this));\n }\n };\n Toolbar.prototype.InitializeMobileToolbarInBlazor = function () {\n var toolbarDiv;\n toolbarDiv = this.pdfViewer.element.querySelector('.e-pv-mobile-toolbar');\n this.createFileElement(toolbarDiv);\n this.wireEvent();\n };\n /**\n * Shows /hides the toolbar in the PdfViewer\n *\n * @param {boolean} enableToolbar - If set true , its show the Toolbar\n * @returns void\n */\n Toolbar.prototype.showToolbar = function (enableToolbar) {\n var toolbar = this.toolbarElement;\n if (enableToolbar) {\n toolbar.style.display = 'block';\n // eslint-disable-next-line max-len\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.hideMobileAnnotationToolbar();\n }\n }\n else {\n this.pdfViewerBase.toolbarHeight = 0;\n if (enableToolbar) {\n if (Browser.isDevice && this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar) {\n this.annotationToolbarModule.toolbarCreated = false;\n this.annotationToolbarModule.adjustMobileViewer();\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.element.style.display = 'none';\n }\n if (Browser.isDevice && this.annotationToolbarModule.propertyToolbar) {\n this.annotationToolbarModule.propertyToolbar.element.style.display = 'none';\n }\n }\n toolbar.style.display = 'none';\n }\n };\n /**\n * Shows/hides the Navigation toolbar in the PdfViewer\n *\n * @param {boolean} enableNavigationToolbar - If set true , its show the Navigation Toolbar\n * @returns void\n */\n Toolbar.prototype.showNavigationToolbar = function (enableNavigationToolbar) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n var navigationToolbar = this.pdfViewerBase.navigationPane.sideBarToolbar;\n var navigationToolbarSplitter = this.pdfViewerBase.navigationPane.sideBarToolbarSplitter;\n if (enableNavigationToolbar) {\n navigationToolbar.style.display = 'block';\n navigationToolbarSplitter.style.display = 'block';\n if (this.pdfViewerBase.navigationPane.isBookmarkOpen || this.pdfViewerBase.navigationPane.isThumbnailOpen) {\n this.pdfViewerBase.navigationPane.clear();\n }\n }\n else {\n navigationToolbar.style.display = 'none';\n navigationToolbarSplitter.style.display = 'none';\n if (this.pdfViewerBase.navigationPane.isBookmarkOpen || this.pdfViewerBase.navigationPane.isThumbnailOpen) {\n this.pdfViewerBase.navigationPane.updateViewerContainerOnClose();\n }\n }\n }\n };\n /**\n * Shows /hides the annotation toolbar in the PdfViewer\n *\n * @param {boolean} enableAnnotationToolbar - If set true , its show the annotation Toolbar\n * @returns void\n */\n Toolbar.prototype.showAnnotationToolbar = function (enableAnnotationToolbar) {\n if (enableAnnotationToolbar) {\n this.annotationToolbarModule.isToolbarHidden = true;\n this.annotationToolbarModule.showAnnotationToolbar();\n }\n else {\n this.annotationToolbarModule.isToolbarHidden = false;\n this.annotationToolbarModule.showAnnotationToolbar();\n }\n };\n /**\n * Shows /hides the the toolbar items in the PdfViewer\n *\n * @param {string[]} items - Defines the toolbar items in the toolbar\n * @param {boolean} isVisible - If set true, then its show the toolbar Items\n * @returns void\n */\n Toolbar.prototype.showToolbarItem = function (items, isVisible) {\n for (var i = 0; i < items.length; i++) {\n switch (items[i]) {\n case 'OpenOption':\n this.showOpenOption(isVisible);\n break;\n case 'PageNavigationTool':\n this.showPageNavigationTool(isVisible);\n break;\n case 'MagnificationTool':\n this.showMagnificationTool(isVisible);\n break;\n case 'SelectionTool':\n this.showSelectionTool(isVisible);\n break;\n case 'PanTool':\n this.showScrollingTool(isVisible);\n break;\n case 'DownloadOption':\n this.showDownloadOption(isVisible);\n break;\n case 'PrintOption':\n this.showPrintOption(isVisible);\n break;\n case 'SearchOption':\n this.showSearchOption(isVisible);\n break;\n case 'UndoRedoTool':\n this.showUndoRedoTool(isVisible);\n break;\n case 'AnnotationEditTool':\n this.showAnnotationEditTool(isVisible);\n break;\n case 'FormDesignerEditTool':\n this.showFormDesignerEditTool(isVisible);\n break;\n case 'CommentTool':\n this.showCommentOption(isVisible);\n break;\n case 'SubmitForm':\n this.showSubmitForm(isVisible);\n break;\n }\n }\n this.applyHideToToolbar(true, 1, 1);\n this.applyHideToToolbar(true, 8, 8);\n this.applyHideToToolbar(true, 12, 12);\n this.applyHideToToolbar(true, 15, 15);\n this.showSeparator(items);\n };\n /**\n * Enables /disables the the toolbar items in the PdfViewer\n *\n * @param {string[]} items - Defines the toolbar items in the toolbar\n * @param {boolean} isEnable - If set true, then its Enable the toolbar Items\n * @returns void\n */\n Toolbar.prototype.enableToolbarItem = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n switch (items[i]) {\n case 'OpenOption':\n this.enableOpenOption(isEnable);\n break;\n case 'PageNavigationTool':\n this.isPageNavigationToolDisabled = isEnable;\n this.enablePageNavigationTool(isEnable);\n break;\n case 'MagnificationTool':\n this.isMagnificationToolDisabled = isEnable;\n this.enableMagnificationTool(isEnable);\n break;\n case 'SelectionTool':\n this.isSelectionToolDisabled = isEnable;\n this.enableSelectionTool(isEnable);\n break;\n case 'PanTool':\n this.isScrollingToolDisabled = isEnable;\n this.enableScrollingTool(isEnable);\n break;\n case 'DownloadOption':\n this.enableDownloadOption(isEnable);\n break;\n case 'PrintOption':\n this.enablePrintOption(isEnable);\n break;\n case 'SearchOption':\n this.enableSearchOption(isEnable);\n break;\n case 'UndoRedoTool':\n this.enableUndoRedoTool(isEnable);\n break;\n case 'AnnotationEditTool':\n this.enableAnnotationEditTool(isEnable);\n break;\n case 'FormDesignerEditTool':\n this.enableFormDesignerEditTool(isEnable);\n break;\n case 'CommentTool':\n this.enableCommentsTool(isEnable);\n break;\n }\n }\n };\n /**\n * @param restrictionSummary\n * @param isEnable\n * @param restrictionSummary\n * @param isEnable\n * @private\n */\n // eslint-disable-next-line\n Toolbar.prototype.DisableToolbarItems = function (restrictionSummary, isEnable) {\n switch (restrictionSummary) {\n case 'Print':\n this.enablePrintOption(isEnable);\n break;\n case 'CopyContent':\n this.isSelectionToolDisabled = isEnable;\n this.enableSelectionTool(isEnable);\n if (isEnable) {\n this.pdfViewerBase.initiateTextSelectMode();\n this.updateInteractionTools(isEnable);\n }\n else {\n this.pdfViewerBase.initiatePanning();\n this.updateInteractionTools(isEnable);\n }\n break;\n case 'EditAnnotations':\n this.enableAnnotationEditTool(isEnable);\n break;\n }\n };\n Toolbar.prototype.showOpenOption = function (enableOpenOption) {\n this.isOpenBtnVisible = enableOpenOption;\n this.applyHideToToolbar(enableOpenOption, 0, 0);\n };\n Toolbar.prototype.showPageNavigationTool = function (enablePageNavigationTool) {\n this.isNavigationToolVisible = enablePageNavigationTool;\n this.applyHideToToolbar(enablePageNavigationTool, 2, 7);\n };\n Toolbar.prototype.showMagnificationTool = function (enableMagnificationTool) {\n this.isMagnificationToolVisible = enableMagnificationTool;\n this.applyHideToToolbar(enableMagnificationTool, 9, 11);\n };\n Toolbar.prototype.showSelectionTool = function (enableSelectionTool) {\n this.isSelectionBtnVisible = enableSelectionTool;\n this.applyHideToToolbar(enableSelectionTool, 13, 13);\n };\n Toolbar.prototype.showScrollingTool = function (enableScrollingTool) {\n this.isScrollingBtnVisible = enableScrollingTool;\n this.applyHideToToolbar(enableScrollingTool, 14, 14);\n };\n Toolbar.prototype.showDownloadOption = function (enableDownloadOption) {\n this.isDownloadBtnVisible = enableDownloadOption;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.applyHideToToolbar(enableDownloadOption, 26, 26);\n }\n else {\n this.applyHideToToolbar(enableDownloadOption, 5, 5);\n }\n };\n Toolbar.prototype.showPrintOption = function (enablePrintOption) {\n this.isPrintBtnVisible = enablePrintOption;\n this.applyHideToToolbar(enablePrintOption, 25, 25);\n };\n Toolbar.prototype.showSearchOption = function (enableSearchOption) {\n this.isSearchBtnVisible = enableSearchOption;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.applyHideToToolbar(enableSearchOption, 22, 22);\n }\n else {\n this.applyHideToToolbar(enableSearchOption, 5, 5);\n }\n };\n Toolbar.prototype.showUndoRedoTool = function (isEnable) {\n this.isUndoRedoBtnsVisible = isEnable;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.applyHideToToolbar(isEnable, 16, 17);\n }\n else {\n this.applyHideToToolbar(isEnable, 2, 3);\n }\n };\n Toolbar.prototype.showCommentOption = function (isEnable) {\n if (!this.pdfViewer.enableStickyNotesAnnotation) {\n this.isCommentBtnVisible = isEnable;\n this.applyHideToToolbar(this.pdfViewer.enableStickyNotesAnnotation, 18, 19);\n }\n else {\n this.isCommentBtnVisible = isEnable;\n this.applyHideToToolbar(isEnable, 18, 19);\n }\n };\n Toolbar.prototype.showAnnotationEditTool = function (isEnable) {\n this.isAnnotationEditBtnVisible = isEnable;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.applyHideToToolbar(isEnable, 23, 23);\n }\n else {\n this.applyHideToToolbar(isEnable, 4, 4);\n }\n };\n Toolbar.prototype.showFormDesignerEditTool = function (isEnable) {\n this.isFormDesignerEditBtnVisible = isEnable;\n this.applyHideToToolbar(isEnable, 24, 24);\n };\n Toolbar.prototype.showSubmitForm = function (isEnable) {\n this.isSubmitbtnvisible = isEnable;\n this.applyHideToToolbar(isEnable, 20, 21);\n };\n Toolbar.prototype.enableOpenOption = function (enableOpenOption) {\n this.toolbar.enableItems(this.openDocumentItem.parentElement, enableOpenOption);\n };\n Toolbar.prototype.enablePageNavigationTool = function (enablePageNavigationTool) {\n this.toolbar.enableItems(this.firstPageItem.parentElement, enablePageNavigationTool);\n this.toolbar.enableItems(this.previousPageItem.parentElement, enablePageNavigationTool);\n this.toolbar.enableItems(this.nextPageItem.parentElement, enablePageNavigationTool);\n this.toolbar.enableItems(this.lastPageItem.parentElement, enablePageNavigationTool);\n this.currentPageBox.readonly = !enablePageNavigationTool;\n };\n Toolbar.prototype.enableMagnificationTool = function (enableMagnificationTool) {\n this.toolbar.enableItems(this.zoomInItem.parentElement, enableMagnificationTool);\n this.toolbar.enableItems(this.zoomOutItem.parentElement, enableMagnificationTool);\n this.zoomDropDown.readonly = !enableMagnificationTool;\n };\n Toolbar.prototype.enableSelectionTool = function (enableSelectionTool) {\n this.toolbar.enableItems(this.textSelectItem.parentElement, enableSelectionTool);\n };\n Toolbar.prototype.enableScrollingTool = function (enableScrollingTool) {\n this.toolbar.enableItems(this.panItem.parentElement, enableScrollingTool);\n };\n Toolbar.prototype.enableDownloadOption = function (enableDownloadOption) {\n this.toolbar.enableItems(this.downloadItem.parentElement, enableDownloadOption);\n };\n Toolbar.prototype.enablePrintOption = function (enablePrintOption) {\n this.toolbar.enableItems(this.printItem.parentElement, enablePrintOption);\n };\n Toolbar.prototype.enableSearchOption = function (enableSearchOption) {\n this.toolbar.enableItems(this.textSearchItem.parentElement, enableSearchOption);\n };\n Toolbar.prototype.enableUndoRedoTool = function (isEnable) {\n this.toolbar.enableItems(this.undoItem.parentElement, isEnable);\n this.toolbar.enableItems(this.redoItem.parentElement, isEnable);\n };\n Toolbar.prototype.enableAnnotationEditTool = function (isEnable) {\n this.toolbar.enableItems(this.annotationItem.parentElement, isEnable);\n };\n Toolbar.prototype.enableFormDesignerEditTool = function (isEnable) {\n this.toolbar.enableItems(this.formDesignerItem.parentElement, isEnable);\n };\n Toolbar.prototype.enableCommentsTool = function (isEnable) {\n if (this.pdfViewer.enableStickyNotesAnnotation) {\n this.toolbar.enableItems(this.annotationItem.parentElement, isEnable);\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.resetToolbar = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.currentPageBox.min = 0;\n this.currentPageBox.value = 0;\n this.updateTotalPage();\n this.updateToolbarItems();\n if (this.annotationToolbarModule) {\n this.annotationToolbarModule.clear();\n }\n else {\n if (this.annotationToolbarModule) {\n if (this.annotationToolbarModule.propertyToolbar) {\n this.annotationToolbarModule.propertyToolbar.destroy();\n }\n // eslint:disable-next-line\n var commentsContainer = document.getElementById(this.pdfViewer.element.id + '_commentscontentcontainer');\n if (commentsContainer) {\n commentsContainer.innerHTML = '';\n }\n }\n }\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.updateToolbarItems = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (this.toolbar) {\n if (this.pdfViewerBase.pageCount === 0) {\n this.toolbar.enableItems(this.downloadItem.parentElement, false);\n this.toolbar.enableItems(this.printItem.parentElement, false);\n this.toolbar.enableItems(this.commentItem.parentElement, false);\n this.updateUndoRedoButtons();\n this.updateNavigationButtons();\n this.toolbar.enableItems(this.zoomInItem.parentElement, false);\n this.toolbar.enableItems(this.zoomOutItem.parentElement, false);\n if (this.pdfViewer.magnificationModule) {\n this.zoomDropDown.readonly = true;\n }\n this.toolbar.enableItems(this.submitItem.parentElement, false);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_currentPageInputContainer'), false);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_zoomDropDownContainer'), false);\n this.toolbar.enableItems(this.textSelectItem.parentElement, false);\n this.toolbar.enableItems(this.annotationItem.parentElement, false);\n this.toolbar.enableItems(this.formDesignerItem.parentElement, false);\n this.toolbar.enableItems(this.panItem.parentElement, false);\n this.toolbar.enableItems(this.textSearchItem.parentElement, false);\n this.deSelectItem(this.annotationItem);\n if (this.annotationToolbarModule) {\n this.annotationToolbarModule.resetToolbar();\n }\n this.deSelectItem(this.formDesignerItem);\n }\n else if (this.pdfViewerBase.pageCount > 0) {\n this.toolbar.enableItems(this.downloadItem.parentElement, true);\n this.toolbar.enableItems(this.printItem.parentElement, true);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_currentPageInputContainer'), true);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_zoomDropDownContainer'), true);\n this.updateUndoRedoButtons();\n this.updateNavigationButtons();\n this.updateZoomButtons();\n if (this.pdfViewer.magnificationModule) {\n this.zoomDropDown.readonly = false;\n }\n this.updateInteractionItems();\n // modify this condition if new annotation types are added.\n if (this.pdfViewer.annotationModule && this.pdfViewer.enableAnnotation) {\n this.toolbar.enableItems(this.annotationItem.parentElement, true);\n }\n if (this.pdfViewer.formDesignerModule && this.pdfViewer.enableFormDesigner) {\n this.toolbar.enableItems(this.formDesignerItem.parentElement, true);\n }\n if (this.pdfViewer.textSearchModule && this.pdfViewer.enableTextSearch) {\n this.toolbar.enableItems(this.textSearchItem.parentElement, true);\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.enableStickyNotesAnnotation) {\n this.toolbar.enableItems(this.commentItem.parentElement, true);\n }\n }\n if (this.pdfViewer.toolbarSettings.annotationToolbarItems) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.toolbarSettings.annotationToolbarItems.length === 0 || !this.pdfViewer.annotationModule || !this.pdfViewer.enableAnnotationToolbar) {\n this.enableToolbarItem(['AnnotationEditTool'], false);\n }\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.length === 0 || !this.pdfViewer.formDesignerModule || !this.pdfViewer.enableFormDesignerToolbar) {\n this.enableToolbarItem(['FormDesignerEditTool'], false);\n }\n }\n if (!this.pdfViewer.enableDownload) {\n this.enableDownloadOption(false);\n }\n if (!this.pdfViewer.enablePrint) {\n this.enablePrintOption(false);\n }\n }\n }\n else {\n if (this.pdfViewerBase.pageCount === 0) {\n this.toolbar.enableItems(this.textSearchItem.parentElement, false);\n this.toolbar.enableItems(this.moreOptionItem.parentElement, false);\n this.toolbar.enableItems(this.annotationItem.parentElement, false);\n }\n else if (this.pdfViewerBase.pageCount > 0) {\n this.toolbar.enableItems(this.textSearchItem.parentElement, true);\n this.toolbar.enableItems(this.moreOptionItem.parentElement, true);\n if (this.pdfViewer.annotationModule && this.pdfViewer.enableAnnotation) {\n this.toolbar.enableItems(this.annotationItem.parentElement, true);\n }\n if (!this.pdfViewer.annotationModule || !this.pdfViewer.enableAnnotationToolbar) {\n this.enableToolbarItem(['AnnotationEditTool'], false);\n }\n this.updateUndoRedoButtons();\n }\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.updateNavigationButtons = function () {\n if (this.pdfViewer.navigationModule && !this.isPageNavigationToolDisabled) {\n if (this.pdfViewerBase.pageCount === 0 || (this.pdfViewerBase.currentPageNumber === 1 && this.pdfViewerBase.pageCount === 1)) {\n this.toolbar.enableItems(this.firstPageItem.parentElement, false);\n this.toolbar.enableItems(this.previousPageItem.parentElement, false);\n this.toolbar.enableItems(this.nextPageItem.parentElement, false);\n this.toolbar.enableItems(this.lastPageItem.parentElement, false);\n }\n else if (this.pdfViewerBase.currentPageNumber === 1 && this.pdfViewerBase.pageCount > 0) {\n this.toolbar.enableItems(this.firstPageItem.parentElement, false);\n this.toolbar.enableItems(this.previousPageItem.parentElement, false);\n this.toolbar.enableItems(this.nextPageItem.parentElement, true);\n this.toolbar.enableItems(this.lastPageItem.parentElement, true);\n }\n else if (this.pdfViewerBase.currentPageNumber === this.pdfViewerBase.pageCount && this.pdfViewerBase.pageCount > 0) {\n this.toolbar.enableItems(this.firstPageItem.parentElement, true);\n this.toolbar.enableItems(this.previousPageItem.parentElement, true);\n this.toolbar.enableItems(this.nextPageItem.parentElement, false);\n this.toolbar.enableItems(this.lastPageItem.parentElement, false);\n }\n else if (this.pdfViewerBase.currentPageNumber > 1 && this.pdfViewerBase.currentPageNumber < this.pdfViewerBase.pageCount) {\n this.toolbar.enableItems(this.firstPageItem.parentElement, true);\n this.toolbar.enableItems(this.previousPageItem.parentElement, true);\n this.toolbar.enableItems(this.nextPageItem.parentElement, true);\n this.toolbar.enableItems(this.lastPageItem.parentElement, true);\n }\n }\n else {\n this.toolbar.enableItems(this.firstPageItem.parentElement, false);\n this.toolbar.enableItems(this.previousPageItem.parentElement, false);\n this.toolbar.enableItems(this.nextPageItem.parentElement, false);\n this.toolbar.enableItems(this.lastPageItem.parentElement, false);\n this.currentPageBox.readonly = true;\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.updateZoomButtons = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.magnificationModule && !this.isMagnificationToolDisabled && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n if (this.pdfViewer.magnificationModule.zoomFactor <= 0.1) {\n this.toolbar.enableItems(this.zoomInItem.parentElement, true);\n this.toolbar.enableItems(this.zoomOutItem.parentElement, false);\n }\n else if (this.pdfViewer.magnificationModule.zoomFactor >= 4) {\n this.toolbar.enableItems(this.zoomInItem.parentElement, false);\n this.toolbar.enableItems(this.zoomOutItem.parentElement, true);\n }\n else {\n this.toolbar.enableItems(this.zoomInItem.parentElement, true);\n this.toolbar.enableItems(this.zoomOutItem.parentElement, true);\n }\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.updateUndoRedoButtons = function () {\n if (this.pdfViewer.annotationModule) {\n if (this.pdfViewerBase.pageCount > 0) {\n if (isBlazor()) {\n this.enableCollectionAvailableInBlazor(this.pdfViewer.annotationModule.actionCollection, 'undo');\n this.enableCollectionAvailableInBlazor(this.pdfViewer.annotationModule.redoCollection, 'redo');\n }\n else {\n this.enableCollectionAvailable(this.pdfViewer.annotationModule.actionCollection, this.undoItem.parentElement);\n this.enableCollectionAvailable(this.pdfViewer.annotationModule.redoCollection, this.redoItem.parentElement);\n }\n }\n else {\n if (isBlazor()) {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('DisableUndoRedoButton', null);\n this.pdfViewerBase.blazorUIAdaptor.disableUndoRedoButton();\n }\n else {\n this.disableUndoRedoButtons();\n }\n }\n }\n else {\n if (isBlazor()) {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('DisableUndoRedoButton', null);\n this.pdfViewerBase.blazorUIAdaptor.disableUndoRedoButton();\n }\n else {\n this.disableUndoRedoButtons();\n }\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.enableCollectionAvailable = function (collection, item) {\n if (collection.length > 0) {\n this.toolbar.enableItems(item, true);\n }\n else {\n this.toolbar.enableItems(item, false);\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.enableCollectionAvailableInBlazor = function (collection, item) {\n if (collection.length > 0) {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateUndoRedoButton', item, true);\n this.pdfViewerBase.blazorUIAdaptor.updateUndoRedoButton(item, true);\n }\n else {\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateUndoRedoButton', item, false);\n this.pdfViewerBase.blazorUIAdaptor.updateUndoRedoButton(item, false);\n }\n };\n Toolbar.prototype.disableUndoRedoButtons = function () {\n this.toolbar.enableItems(this.undoItem.parentElement, false);\n this.toolbar.enableItems(this.redoItem.parentElement, false);\n };\n /**\n * @private\n */\n Toolbar.prototype.destroy = function () {\n if (!isBlazor()) {\n this.unWireEvent();\n this.destroyComponent();\n if (this.moreDropDown) {\n this.moreDropDown.destroy();\n }\n if (this.annotationToolbarModule) {\n this.annotationToolbarModule.destroy();\n }\n if (this.formDesignerToolbarModule) {\n this.formDesignerToolbarModule.destroy();\n }\n this.toolbar.destroy();\n this.toolbarElement.parentElement.removeChild(this.toolbarElement);\n }\n };\n Toolbar.prototype.destroyComponent = function () {\n // eslint-disable-next-line\n var componentElement = [this.openDocumentItem, this.firstPageItem, this.previousPageItem, this.nextPageItem,\n this.lastPageItem, this.currentPageBoxElement, this.zoomOutItem, this.zoomInItem, this.zoomDropdownItem, this.textSelectItem,\n this.panItem, this.submitItem, this.undoItem, this.redoItem, this.commentItem, this.textSearchItem, this.annotationItem,\n this.formDesignerItem, this.printItem, this.downloadItem];\n for (var i = 0; i < componentElement.length; i++) {\n if (componentElement[i]) {\n this.destroyDependentComponent(componentElement[i]);\n }\n }\n };\n Toolbar.prototype.destroyDependentComponent = function (component) {\n if (component.ej2_instances) {\n for (var i = component.ej2_instances.length - 1; i >= 0; i--) {\n component.ej2_instances[i].destroy();\n }\n }\n };\n /**\n * @param pageIndex\n * @private\n */\n Toolbar.prototype.updateCurrentPage = function (pageIndex) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (!isBlazor()) {\n if (this.currentPageBox.value === pageIndex) {\n this.currentPageBoxElement.value = pageIndex.toString();\n }\n this.currentPageBox.value = pageIndex;\n }\n else {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('OnPageChanged', pageIndex);\n this.pdfViewerBase.blazorUIAdaptor.pageChanged(pageIndex);\n }\n this.pdfViewerBase.currentPageNumber = pageIndex;\n this.pdfViewer.currentPageNumber = pageIndex;\n }\n else {\n this.pdfViewerBase.mobileSpanContainer.innerHTML = pageIndex.toString();\n this.pdfViewerBase.mobilecurrentPageContainer.innerHTML = pageIndex.toString();\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.updateTotalPage = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (this.pdfViewerBase.pageCount > 0) {\n this.currentPageBox.min = 1;\n }\n this.totalPageItem.textContent = this.pdfViewer.localeObj.getConstant('of') + this.pdfViewerBase.pageCount.toString();\n }\n };\n /**\n * @param event\n * @private\n */\n Toolbar.prototype.openFileDialogBox = function (event) {\n event.preventDefault();\n this.fileInputElement.click();\n };\n Toolbar.prototype.createToolbar = function (controlWidth) {\n var _this = this;\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_toolbarContainer', className: 'e-pv-toolbar' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.toolbar = new tool({\n clicked: this.toolbarClickHandler, width: '', height: '', overflowMode: 'Popup', cssClass: 'e-pv-toolbar-scroll',\n items: this.createToolbarItems(), created: function () {\n _this.createZoomDropdown();\n _this.createNumericTextBox();\n _this.toolbar.refreshOverflow();\n }\n });\n this.toolbar.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.appendTo(this.toolbarElement);\n this.applyToolbarSettings();\n this.afterToolbarCreation();\n this.updateTotalPage();\n this.toolbarElement.addEventListener('keydown', this.onToolbarKeydown);\n }\n else {\n this.createToolbarItemsForMobile();\n this.afterToolbarCreationInMobile();\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.applyToolbarSettingsForMobile();\n this.disableUndoRedoButtons();\n }\n return this.toolbarElement;\n };\n // eslint-disable-next-line\n Toolbar.prototype.createToolbarItems = function () {\n var currentPageInputTemplate = this.createCurrentPageInputTemplate();\n var totalPageTemplate = this.createTotalPageTemplate();\n var zoomDropDownTemplateString = this.createZoomDropdownElement();\n // eslint-disable-next-line\n var items = [];\n var submitButton = '';\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-open-document-icon e-pv-icon', cssClass: 'e-pv-open-document-container', id: this.pdfViewer.element.id + '_open', text: this.pdfViewer.localeObj.getConstant('Open text'), align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-open-separator-container' });\n if (!this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-first-page-navigation-icon e-pv-icon', cssClass: 'e-pv-first-page-navigation-container', id: this.pdfViewer.element.id + '_firstPage', text: this.pdfViewer.localeObj.getConstant('First text'), align: 'Left' });\n items.push({ prefixIcon: 'e-pv-previous-page-navigation-icon e-pv-icon', cssClass: 'e-pv-previous-page-navigation-container', id: this.pdfViewer.element.id + '_previousPage', text: this.pdfViewer.localeObj.getConstant('Previous text'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-next-page-navigation-icon e-pv-icon', cssClass: 'e-pv-next-page-navigation-container', id: this.pdfViewer.element.id + '_nextPage', text: this.pdfViewer.localeObj.getConstant('Next text'), align: 'Left' });\n items.push({ prefixIcon: 'e-pv-last-page-navigation-icon e-pv-icon', cssClass: 'e-pv-last-page-navigation-container', id: this.pdfViewer.element.id + '_lastPage', text: this.pdfViewer.localeObj.getConstant('Last text'), align: 'Left' });\n items.push({ template: currentPageInputTemplate, align: 'Left', cssClass: 'e-pv-current-page-container' });\n items.push({ template: totalPageTemplate, align: 'Left', cssClass: 'e-pv-total-page-container' });\n }\n else {\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-last-page-navigation-icon e-pv-icon', cssClass: 'e-pv-last-page-navigation-container', id: this.pdfViewer.element.id + '_firstPage', text: this.pdfViewer.localeObj.getConstant('First text'), align: 'Left' });\n items.push({ prefixIcon: 'e-pv-next-page-navigation-icon e-pv-icon', cssClass: 'e-pv-next-page-navigation-container', id: this.pdfViewer.element.id + '_previousPage', text: this.pdfViewer.localeObj.getConstant('Previous text'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-previous-page-navigation-icon e-pv-icon', cssClass: 'e-pv-previous-page-navigation-container', id: this.pdfViewer.element.id + '_nextPage', text: this.pdfViewer.localeObj.getConstant('Next text'), align: 'Left' });\n items.push({ prefixIcon: 'e-pv-first-page-navigation-icon e-pv-icon', cssClass: 'e-pv-first-page-navigation-container', id: this.pdfViewer.element.id + '_lastPage', text: this.pdfViewer.localeObj.getConstant('Last text'), align: 'Left' });\n items.push({ template: totalPageTemplate, align: 'Left', cssClass: 'e-pv-total-page-container' });\n items.push({ template: currentPageInputTemplate, align: 'Left', cssClass: 'e-pv-current-page-container' });\n }\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-navigation-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-zoom-out-icon e-pv-icon', cssClass: 'e-pv-zoom-out-container', id: this.pdfViewer.element.id + '_zoomOut', text: this.pdfViewer.localeObj.getConstant('Zoom out text'), align: 'Left' });\n items.push({ prefixIcon: 'e-pv-zoom-in-icon e-pv-icon', cssClass: 'e-pv-zoom-in-container', id: this.pdfViewer.element.id + '_zoomIn', text: this.pdfViewer.localeObj.getConstant('Zoom in text'), align: 'Left' });\n items.push({ template: zoomDropDownTemplateString, cssClass: 'e-pv-zoom-drop-down-container', align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-magnification-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-text-select-tool-icon e-pv-icon', cssClass: 'e-pv-text-select-tool-container', id: this.pdfViewer.element.id + '_selectTool', text: this.pdfViewer.localeObj.getConstant('Selection text') });\n items.push({ prefixIcon: 'e-pv-pan-tool-icon e-pv-icon', cssClass: 'e-pv-pan-tool-container', id: this.pdfViewer.element.id + '_handTool', text: this.pdfViewer.localeObj.getConstant('Pan text') });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-pan-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-undo-icon e-pv-icon', cssClass: 'e-pv-undo-container', id: this.pdfViewer.element.id + '_undo', text: this.pdfViewer.localeObj.getConstant('Undo'), align: 'Left' });\n items.push({ prefixIcon: 'e-pv-redo-icon e-pv-icon', cssClass: 'e-pv-redo-container', id: this.pdfViewer.element.id + '_redo', text: this.pdfViewer.localeObj.getConstant('Redo'), align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-undo-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-comment-icon e-pv-icon', cssClass: 'e-pv-comment-container', id: this.pdfViewer.element.id + '_comment', text: this.pdfViewer.localeObj.getConstant('Add Comments'), align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-comment-separator-container' });\n items.push({ template: submitButton, cssClass: 'e-pv-submit', align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-text-search-icon e-pv-icon', cssClass: 'e-pv-text-search-container', id: this.pdfViewer.element.id + '_search', text: this.pdfViewer.localeObj.getConstant('Search text'), align: 'Right' });\n items.push({ prefixIcon: 'e-pv-annotation-icon e-pv-icon', cssClass: 'e-pv-annotation-container', id: this.pdfViewer.element.id + '_annotation', text: this.pdfViewer.localeObj.getConstant('Annotation Edit text'), align: 'Right' });\n items.push({ prefixIcon: 'e-pv-formdesigner-icon e-pv-icon', cssClass: 'e-pv-formdesigner-container', id: this.pdfViewer.element.id + '_formdesigner', text: this.pdfViewer.localeObj.getConstant('FormDesigner Edit text'), align: 'Right' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-print-document-icon e-pv-icon', cssClass: 'e-pv-print-document-container', id: this.pdfViewer.element.id + '_print', text: this.pdfViewer.localeObj.getConstant('Print text'), align: 'Right' });\n items.push({ prefixIcon: 'e-pv-download-document-icon e-pv-icon', cssClass: 'e-pv-download-document-container', id: this.pdfViewer.element.id + '_download', text: this.pdfViewer.localeObj.getConstant('Download'), align: 'Right' });\n return items;\n };\n Toolbar.prototype.afterToolbarCreationInMobile = function () {\n this.itemsContainer = this.toolbar.element.childNodes[0];\n this.itemsContainer.id = this.pdfViewer.element.id + '_toolbarItemsContainer';\n this.openDocumentItem = this.addClassToolbarItem('_open', 'e-pv-open-document', this.pdfViewer.localeObj.getConstant('Open'));\n this.undoItem = this.addClassToolbarItem('_undo', 'e-pv-undo', this.pdfViewer.localeObj.getConstant('Undo'));\n this.redoItem = this.addClassToolbarItem('_redo', 'e-pv-redo', this.pdfViewer.localeObj.getConstant('Redo'));\n this.annotationItem = this.addClassToolbarItem('_annotation', 'e-pv-annotation', this.pdfViewer.localeObj.getConstant('Annotation'));\n this.textSearchItem = this.addClassToolbarItem('_search', 'e-pv-text-search', this.pdfViewer.localeObj.getConstant('Text Search'));\n };\n Toolbar.prototype.afterToolbarCreation = function () {\n this.itemsContainer = this.toolbar.element.childNodes[0];\n this.itemsContainer.id = this.pdfViewer.element.id + '_toolbarItemsContainer';\n this.openDocumentItem = this.addClassToolbarItem('_open', 'e-pv-open-document', this.pdfViewer.localeObj.getConstant('Open'));\n this.undoItem = this.addClassToolbarItem('_undo', 'e-pv-undo', this.pdfViewer.localeObj.getConstant('Undo'));\n this.redoItem = this.addClassToolbarItem('_redo', 'e-pv-redo', this.pdfViewer.localeObj.getConstant('Redo'));\n if (!this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n this.firstPageItem = this.addClassToolbarItem('_firstPage', 'e-pv-first-page-navigation', this.pdfViewer.localeObj.getConstant('Go To First Page'));\n this.previousPageItem = this.addClassToolbarItem('_previousPage', 'e-pv-previous-page-navigation', this.pdfViewer.localeObj.getConstant('Previous Page'));\n // eslint-disable-next-line max-len\n this.nextPageItem = this.addClassToolbarItem('_nextPage', 'e-pv-next-page-navigation', this.pdfViewer.localeObj.getConstant('Next Page'));\n this.lastPageItem = this.addClassToolbarItem('_lastPage', 'e-pv-last-page-navigation', this.pdfViewer.localeObj.getConstant('Go To Last Page'));\n }\n else {\n // eslint-disable-next-line max-len\n this.firstPageItem = this.addClassToolbarItem('_firstPage', 'e-pv-last-page-navigation', this.pdfViewer.localeObj.getConstant('Go To First Page'));\n this.previousPageItem = this.addClassToolbarItem('_previousPage', 'e-pv-next-page-navigation', this.pdfViewer.localeObj.getConstant('Previous Page'));\n // eslint-disable-next-line max-len\n this.nextPageItem = this.addClassToolbarItem('_nextPage', 'e-pv-previous-page-navigation', this.pdfViewer.localeObj.getConstant('Next Page'));\n this.lastPageItem = this.addClassToolbarItem('_lastPage', 'e-pv-first-page-navigation', this.pdfViewer.localeObj.getConstant('Go To Last Page'));\n }\n this.zoomOutItem = this.addClassToolbarItem('_zoomOut', 'e-pv-zoom-out', this.pdfViewer.localeObj.getConstant('Zoom Out'));\n this.zoomInItem = this.addClassToolbarItem('_zoomIn', 'e-pv-zoom-in', this.pdfViewer.localeObj.getConstant('Zoom In'));\n // eslint-disable-next-line max-len\n this.textSelectItem = this.addClassToolbarItem('_selectTool', 'e-pv-text-select-tool', this.pdfViewer.localeObj.getConstant('Text Selection'));\n this.panItem = this.addClassToolbarItem('_handTool', 'e-pv-pan-tool', this.pdfViewer.localeObj.getConstant('Panning'));\n this.commentItem = this.addClassToolbarItem('_comment', 'e-pv-comment', this.pdfViewer.localeObj.getConstant('Add Comments'));\n // eslint-disable-next-line max-len\n this.textSearchItem = this.addClassToolbarItem('_search', 'e-pv-text-search', this.pdfViewer.localeObj.getConstant('Text Search'));\n this.annotationItem = this.addClassToolbarItem('_annotation', 'e-pv-annotation', this.pdfViewer.localeObj.getConstant('Annotation'));\n this.formDesignerItem = this.addClassToolbarItem('_formdesigner', 'e-pv-formdesigner', this.pdfViewer.localeObj.getConstant('FormDesigner'));\n // eslint-disable-next-line max-len\n this.printItem = this.addClassToolbarItem('_print', 'e-pv-print-document', this.pdfViewer.localeObj.getConstant('Print'));\n this.downloadItem = this.addClassToolbarItem('_download', 'e-pv-download-document', this.pdfViewer.localeObj.getConstant('Download file'));\n this.zoomDropdownItem = this.pdfViewerBase.getElement('_zoomDropDown');\n this.createTooltip(this.zoomDropdownItem, this.pdfViewer.localeObj.getConstant('Zoom'));\n this.zoomDropdownItem.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Zoom'));\n // eslint-disable-next-line max-len\n this.addPropertiesToolItemContainer(this.zoomDropdownItem.parentElement.parentElement, null, '_zoomDropDownContainer');\n this.pdfViewerBase.getElement('_zoomDropDownContainer').style.minWidth = '';\n this.createTooltip(this.currentPageBoxElement, this.pdfViewer.localeObj.getConstant('Page Number'));\n this.currentPageBoxElement.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Page Number'));\n this.submitItem = this.pdfViewerBase.getElement('_submitForm');\n this.addPropertiesToolItemContainer(this.submitItem.parentElement, 'e-pv-submit', '_submitForm');\n this.createTooltip(this.submitItem, this.pdfViewer.localeObj.getConstant('SubmitForm'));\n // eslint-disable-next-line max-len\n this.addPropertiesToolItemContainer(this.currentPageBoxElement.parentElement.parentElement, 'e-pv-current-page-container', '_currentPageInputContainer');\n this.pdfViewerBase.getElement('_currentPageInputContainer').style.minWidth = '20px';\n this.totalPageItem = this.pdfViewerBase.getElement('_totalPage');\n this.addPropertiesToolItemContainer(this.totalPageItem.parentElement, 'e-pv-total-page-container', '_totalPageContainer');\n };\n /**\n * @param idString\n * @param className\n * @param tooltipText\n * @param idString\n * @param className\n * @param tooltipText\n * @private\n */\n Toolbar.prototype.addClassToolbarItem = function (idString, className, tooltipText) {\n var element = this.pdfViewerBase.getElement(idString);\n element.classList.add(className);\n element.classList.add('e-pv-tbar-btn');\n element.setAttribute('aria-label', tooltipText);\n element.parentElement.classList.add(className + '-container');\n element.parentElement.classList.add('e-popup-text');\n element.parentElement.id = this.pdfViewer.element.id + idString + 'Container';\n if (element.childNodes.length > 0) {\n var spanElement = element.childNodes[0];\n spanElement.id = this.pdfViewer.element.id + idString + 'Icon';\n spanElement.classList.remove('e-icons');\n spanElement.classList.remove('e-btn-icon');\n if (this.pdfViewer.enableRtl) {\n spanElement.classList.add('e-right');\n }\n var textElement = element.childNodes[1];\n if (textElement) {\n if (textElement.classList.contains('e-tbar-btn-text')) {\n textElement.id = this.pdfViewer.element.id + idString + 'Text';\n }\n }\n }\n element.style.width = '';\n this.createTooltip(element, tooltipText);\n return element;\n };\n Toolbar.prototype.addPropertiesToolItemContainer = function (element, className, idString) {\n if (className !== null) {\n element.classList.add(className);\n }\n element.classList.add('e-popup-text');\n element.id = this.pdfViewer.element.id + idString;\n };\n Toolbar.prototype.createZoomDropdownElement = function () {\n // eslint-disable-next-line max-len\n var zoomDropdownElement = this.createToolbarItem('input', this.pdfViewer.element.id + '_zoomDropDown', null);\n return zoomDropdownElement.outerHTML;\n };\n Toolbar.prototype.createZoomDropdown = function () {\n // eslint-disable-next-line max-len\n var items = [{ percent: '10%', id: '0' }, { percent: '25%', id: '1' }, { percent: '50%', id: '2' }, { percent: '75%', id: '3' }, { percent: '100%', id: '4' }, { percent: '125%', id: '5' },\n // eslint-disable-next-line max-len\n { percent: '150%', id: '6' }, { percent: '200%', id: '7' }, { percent: '400%', id: '8' }, { percent: this.pdfViewer.localeObj.getConstant('Fit Page'), id: '9' }, { percent: this.pdfViewer.localeObj.getConstant('Fit Width'), id: '10' }, { percent: this.pdfViewer.localeObj.getConstant('Automatic'), id: '11' }\n ];\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.enableRtl) {\n this.zoomDropDown = new ComboBox({ dataSource: items, text: '100%', fields: { text: 'percent', value: 'id' }, readonly: true, cssClass: 'e-pv-zoom-drop-down', popupHeight: '450px', showClearButton: false, open: this.openZoomDropdown.bind(this), select: function (args) {\n if (args.e.type == 'keydown' && args.itemData.text !== this.zoomDropDown.element.value) {\n args.cancel = true;\n }\n }\n });\n }\n else {\n this.zoomDropDown = new ComboBox({ dataSource: items, text: '100%', enableRtl: true, fields: { text: 'percent', value: 'id' }, readonly: true, cssClass: 'e-pv-zoom-drop-down-rtl', popupHeight: '450px', showClearButton: false, open: this.openZoomDropdown.bind(this), select: function (args) {\n if (args.e.type == 'keydown' && args.itemData.text !== this.zoomDropDown.element.value) {\n args.cancel = true;\n }\n }\n });\n }\n this.zoomDropDown.appendTo(this.pdfViewerBase.getElement('_zoomDropDown'));\n };\n Toolbar.prototype.createCurrentPageInputTemplate = function () {\n // eslint-disable-next-line max-len\n var goToPageElement = this.createToolbarItem('input', this.pdfViewer.element.id + '_currentPageInput', null);\n return goToPageElement.outerHTML;\n };\n Toolbar.prototype.createTotalPageTemplate = function () {\n // eslint-disable-next-line max-len\n var totalPageElement = this.createToolbarItem('span', this.pdfViewer.element.id + '_totalPage', 'e-pv-total-page');\n return totalPageElement.outerHTML;\n };\n Toolbar.prototype.createNumericTextBox = function () {\n this.currentPageBox = new NumericTextBox({ value: 0, format: '##', cssClass: 'e-pv-current-page-box', showSpinButton: false });\n this.currentPageBoxElement = this.pdfViewerBase.getElement('_currentPageInput');\n this.currentPageBox.appendTo(this.currentPageBoxElement);\n };\n Toolbar.prototype.createToolbarItemsForMobile = function () {\n this.toolbarElement.classList.add('e-pv-mobile-toolbar');\n var template = '';\n this.toolbar = new tool({\n // eslint-disable-next-line max-len\n items: [{ prefixIcon: 'e-pv-open-document-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Open'), id: this.pdfViewer.element.id + '_open' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-undo-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Undo'), id: this.pdfViewer.element.id + '_undo' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-redo-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Redo'), id: this.pdfViewer.element.id + '_redo' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-annotation-icon e-pv-icon', cssClass: 'e-pv-annotation-container', tooltipText: this.pdfViewer.localeObj.getConstant('Annotation'), id: this.pdfViewer.element.id + '_annotation', align: 'Right' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-text-search-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Text Search'), id: this.pdfViewer.element.id + '_search', align: 'Right' },\n { template: template, align: 'Right' }\n ], clicked: this.toolbarClickHandler, width: '', height: '', overflowMode: 'Popup'\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.toolbarElement);\n this.openDocumentItem = this.pdfViewerBase.getElement('_open');\n this.openDocumentItem.classList.add('e-pv-open-document');\n this.openDocumentItem.firstElementChild.id = this.pdfViewer.element.id + '_openIcon';\n this.annotationItem = this.pdfViewerBase.getElement('_annotation');\n this.annotationItem.classList.add('e-pv-annotation');\n this.annotationItem.firstElementChild.id = this.pdfViewer.element.id + '_annotationIcon';\n this.textSearchItem = this.pdfViewerBase.getElement('_search');\n this.textSearchItem.classList.add('e-pv-text-search');\n this.textSearchItem.firstElementChild.id = this.pdfViewer.element.id + '_searchIcon';\n this.undoItem = this.pdfViewerBase.getElement('_undo');\n this.undoItem.classList.add('e-pv-undo');\n this.redoItem = this.pdfViewerBase.getElement('_redo');\n this.redoItem.classList.add('e-pv-redo');\n this.redoItem.firstElementChild.id = this.pdfViewer.element.id + '_redoIcon';\n this.undoItem.firstElementChild.id = this.pdfViewer.element.id + '_undoIcon';\n this.createMoreOption(this.pdfViewer.element.id + '_more_option');\n };\n Toolbar.prototype.createMoreOption = function (idString) {\n var _this = this;\n this.moreOptionItem = document.getElementById(idString);\n var items = [\n {\n text: this.pdfViewer.localeObj.getConstant('Download'), id: this.pdfViewer.element.id + '_menu_download',\n iconCss: 'e-icons e-pv-download-document-icon e-pv-icon'\n },\n {\n text: this.pdfViewer.localeObj.getConstant('Bookmarks'), id: this.pdfViewer.element.id + '_menu_bookmarks',\n iconCss: 'e-icons e-pv-bookmark-icon e-pv-icon'\n }\n ];\n this.moreDropDown = new DropDownButton({\n items: items, iconCss: 'e-pv-more-icon e-pv-icon', cssClass: 'e-caret-hide',\n open: function (args) {\n var dropdownButtonPosition = _this.moreDropDown.element.getBoundingClientRect();\n // eslint-disable-next-line max-len\n if (!_this.pdfViewer.enableRtl) {\n args.element.parentElement.style.left = dropdownButtonPosition.left + dropdownButtonPosition.width - args.element.parentElement.offsetWidth + 'px';\n }\n }, select: function (args) {\n switch (args.item.id) {\n case _this.pdfViewer.element.id + '_menu_download':\n _this.pdfViewerBase.download();\n break;\n case _this.pdfViewer.element.id + '_menu_bookmarks':\n _this.showToolbar(false);\n _this.pdfViewerBase.navigationPane.createNavigationPaneMobile('bookmarks');\n break;\n default:\n break;\n }\n }, beforeItemRender: function (args) {\n if (args.item.id === _this.pdfViewer.element.id + '_menu_bookmarks') {\n if (!_this.pdfViewer.bookmarkViewModule || !_this.pdfViewer.bookmarkViewModule.bookmarks) {\n args.element.classList.add('e-disabled');\n }\n else {\n args.element.classList.remove('e-disabled');\n }\n }\n }, close: function (args) {\n _this.moreOptionItem.blur();\n _this.pdfViewerBase.focusViewerContainer();\n }\n });\n this.moreDropDown.appendTo('#' + idString);\n };\n Toolbar.prototype.createToolbarItem = function (elementName, id, className) {\n var toolbarItem = createElement(elementName, { id: id });\n if (className !== null) {\n toolbarItem.className = className;\n }\n if (elementName === 'input' && id !== this.pdfViewer.element.id + '_zoomDropDown') {\n toolbarItem.type = 'text';\n }\n return toolbarItem;\n };\n /**\n * @param toolbarItem\n * @param tooltipText\n * @param toolbarItem\n * @param tooltipText\n * @private\n */\n Toolbar.prototype.createTooltip = function (toolbarItem, tooltipText) {\n if (tooltipText !== null) {\n // eslint-disable-next-line\n var tooltip = new Tooltip({ content: tooltipText, opensOn: 'Hover', beforeOpen: this.onTooltipBeforeOpen.bind(this) });\n tooltip.appendTo(toolbarItem);\n }\n };\n Toolbar.prototype.onTooltipBeforeOpen = function (args) {\n if (!this.pdfViewer.toolbarSettings.showTooltip && this.toolbarElement.contains(args.target)) {\n args.cancel = true;\n }\n if (this.annotationToolbarModule) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.toolbarSettings.showTooltip && ((this.annotationToolbarModule.toolbarElement && this.annotationToolbarModule.toolbarElement.contains(args.target)) || (this.annotationToolbarModule.shapeToolbarElement && this.annotationToolbarModule.shapeToolbarElement.contains(args.target)))) {\n args.cancel = true;\n }\n }\n if (this.formDesignerToolbarModule) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.toolbarSettings.showTooltip && (this.formDesignerToolbarModule.toolbarElement && this.formDesignerToolbarModule.toolbarElement.contains(args.target))) {\n args.cancel = true;\n }\n }\n };\n Toolbar.prototype.createFileElement = function (toolbarElement) {\n if (toolbarElement) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n this.fileInputElement = createElement('input', { id: this.pdfViewer.element.id + '_fileUploadElement', styles: 'position:fixed; left:-100em', attrs: { 'type': 'file' } });\n this.fileInputElement.setAttribute('accept', '.pdf');\n this.fileInputElement.setAttribute('aria-label', 'file upload element');\n }\n else {\n this.fileInputElement = this.pdfViewer.element.querySelector('.e-pv-fileupload-element');\n }\n if (toolbarElement) {\n toolbarElement.appendChild(this.fileInputElement);\n }\n }\n };\n Toolbar.prototype.wireEvent = function () {\n if (this.fileInputElement) {\n this.fileInputElement.addEventListener('change', this.loadDocument);\n }\n if (!isBlazor()) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.toolbarElement.addEventListener('mouseup', this.toolbarOnMouseup.bind(this));\n this.currentPageBoxElement.addEventListener('focusout', this.textBoxFocusOut);\n this.currentPageBoxElement.addEventListener('keypress', this.navigateToPage);\n this.zoomDropDown.change = this.zoomPercentSelect.bind(this);\n this.zoomDropDown.element.addEventListener('keypress', this.onZoomDropDownInput.bind(this));\n this.zoomDropDown.element.addEventListener('click', this.onZoomDropDownInputClick.bind(this));\n }\n }\n };\n Toolbar.prototype.unWireEvent = function () {\n if (this.fileInputElement) {\n this.fileInputElement.removeEventListener('change', this.loadDocument);\n }\n if ((!Browser.isDevice || this.pdfViewer.enableDesktopMode) && !isBlazor()) {\n this.toolbarElement.removeEventListener('mouseup', this.toolbarOnMouseup.bind(this));\n this.currentPageBoxElement.removeEventListener('focusout', this.textBoxFocusOut);\n this.currentPageBoxElement.removeEventListener('keypress', this.navigateToPage);\n this.zoomDropDown.removeEventListener('change', this.zoomPercentSelect);\n this.zoomDropDown.element.removeEventListener('keypress', this.onZoomDropDownInput);\n this.zoomDropDown.element.removeEventListener('click', this.onZoomDropDownInputClick);\n }\n };\n /**\n * @param viewerWidth\n * @private\n */\n Toolbar.prototype.onToolbarResize = function (viewerWidth) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewerBase.navigationPane.toolbarResize();\n }\n else {\n this.toolbar.refreshOverflow();\n }\n };\n Toolbar.prototype.toolbarOnMouseup = function (event) {\n if (event.target === this.itemsContainer || event.target === this.toolbarElement) {\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n Toolbar.prototype.applyHideToToolbar = function (show, startIndex, endIndex) {\n var isHide = !show;\n for (var index = startIndex; index <= endIndex; index++) {\n if (this.toolbar.items[index]) {\n var className = this.toolbar.items[index].cssClass;\n if (className && className !== '') {\n // Querying the toolbar item\n var element = this.toolbar.element.querySelector('.' + className);\n if (element) {\n this.toolbar.hideItem(element, isHide);\n }\n }\n else {\n this.toolbar.hideItem(index, isHide);\n }\n }\n }\n };\n Toolbar.prototype.handleOpenIconClick = function (args) {\n this.fileInputElement.click();\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n if (!isBlazor()) {\n args.originalEvent.target.blur();\n }\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.handleToolbarBtnClick = function (args) {\n this.addInkAnnotation();\n this.deSelectCommentAnnotation();\n switch (args.originalEvent.target.id) {\n case this.pdfViewer.element.id + '_open':\n case this.pdfViewer.element.id + '_openIcon':\n case this.pdfViewer.element.id + '_openText':\n this.handleOpenIconClick(args);\n break;\n case this.pdfViewer.element.id + '_download':\n case this.pdfViewer.element.id + '_downloadIcon':\n case this.pdfViewer.element.id + '_downloadText':\n this.pdfViewerBase.download();\n break;\n case this.pdfViewer.element.id + '_print':\n case this.pdfViewer.element.id + '_printIcon':\n case this.pdfViewer.element.id + '_printText':\n if (this.pdfViewer.printModule) {\n this.pdfViewer.firePrintStart();\n }\n break;\n case this.pdfViewer.element.id + '_undo':\n case this.pdfViewer.element.id + '_undoIcon':\n case this.pdfViewer.element.id + '_undoText':\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.undo();\n }\n break;\n case this.pdfViewer.element.id + '_redo':\n case this.pdfViewer.element.id + '_redoIcon':\n case this.pdfViewer.element.id + '_redoText':\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.redo();\n }\n break;\n case this.pdfViewer.element.id + '_firstPage':\n case this.pdfViewer.element.id + '_firstPageIcon':\n case this.pdfViewer.element.id + '_firstPageText':\n if (this.pdfViewer.navigationModule) {\n this.pdfViewer.navigationModule.goToFirstPage();\n }\n break;\n case this.pdfViewer.element.id + '_previousPage':\n case this.pdfViewer.element.id + '_previousPageIcon':\n case this.pdfViewer.element.id + '_previousPageText':\n if (this.pdfViewer.navigationModule) {\n this.pdfViewer.navigationModule.goToPreviousPage();\n }\n break;\n case this.pdfViewer.element.id + '_nextPage':\n case this.pdfViewer.element.id + '_nextPageIcon':\n case this.pdfViewer.element.id + '_nextPageText':\n if (this.pdfViewer.navigationModule) {\n this.pdfViewer.navigationModule.goToNextPage();\n }\n break;\n case this.pdfViewer.element.id + '_lastPage':\n case this.pdfViewer.element.id + '_lastPageIcon':\n case this.pdfViewer.element.id + '_lastPageText':\n if (this.pdfViewer.navigationModule) {\n this.pdfViewer.navigationModule.goToLastPage();\n }\n break;\n case this.pdfViewer.element.id + '_zoomIn':\n case this.pdfViewer.element.id + '_zoomInIcon':\n case this.pdfViewer.element.id + '_zoomInText':\n this.pdfViewer.magnificationModule.zoomIn();\n break;\n case this.pdfViewer.element.id + '_zoomOut':\n case this.pdfViewer.element.id + '_zoomOutIcon':\n case this.pdfViewer.element.id + '_zoomOutText':\n this.pdfViewer.magnificationModule.zoomOut();\n break;\n case this.pdfViewer.element.id + '_selectTool':\n case this.pdfViewer.element.id + '_selectToolIcon':\n case this.pdfViewer.element.id + '_selectToolText':\n if (!this.isSelectionToolDisabled) {\n this.pdfViewerBase.initiateTextSelectMode();\n this.updateInteractionTools(true);\n }\n break;\n case this.pdfViewer.element.id + '_handTool':\n case this.pdfViewer.element.id + '_handToolIcon':\n case this.pdfViewer.element.id + '_handToolText':\n if (!(this.isScrollingToolDisabled || this.getStampMode())) {\n this.pdfViewerBase.initiatePanning();\n this.updateInteractionTools(false);\n }\n break;\n case this.pdfViewer.element.id + '_search':\n case this.pdfViewer.element.id + '_searchIcon':\n case this.pdfViewer.element.id + '_searchText':\n this.textSearchButtonHandler();\n break;\n case this.pdfViewer.element.id + '_annotation':\n case this.pdfViewer.element.id + '_annotationIcon':\n case this.pdfViewer.element.id + '_annotationText':\n this.initiateAnnotationMode(args.originalEvent.target.id);\n break;\n case this.pdfViewer.element.id + '_formdesigner':\n case this.pdfViewer.element.id + '_formdesignerIcon':\n case this.pdfViewer.element.id + '_formdesignerText':\n this.initiateFormDesignerMode();\n this.formDesignerToolbarModule.showHideDeleteIcon(false);\n break;\n case this.pdfViewer.element.id + '_comment':\n case this.pdfViewer.element.id + '_commentIcon':\n this.pdfViewerBase.isAddComment = true;\n this.pdfViewerBase.isCommentIconAdded = true;\n this.annotationToolbarModule.deselectAllItems();\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n this.addComments(args.originalEvent.target);\n break;\n case this.pdfViewer.element.id + '_submitForm':\n case this.pdfViewer.element.id + '_submitFormSpan':\n this.pdfViewerBase.exportFormFields();\n break;\n }\n };\n Toolbar.prototype.addInkAnnotation = function () {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n if (this.annotationToolbarModule) {\n this.pdfViewer.toolbar.annotationToolbarModule.deselectInkAnnotation();\n this.annotationToolbarModule.inkAnnotationSelected = false;\n }\n };\n Toolbar.prototype.deSelectCommentAnnotation = function () {\n if (!isBlazor()) {\n this.pdfViewer.toolbar.deSelectItem(this.commentItem);\n }\n else {\n this.pdfViewer.toolbar.deSelectItem(this.CommentElement);\n }\n this.pdfViewerBase.isCommentIconAdded = false;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Toolbar.prototype.addComments = function (targetElement) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n if (targetElement.id === this.pdfViewer.element.id + '_comment' || targetElement.id === this.pdfViewer.element.id + '_commentIcon') {\n if (targetElement.id === this.pdfViewer.element.id + '_commentIcon' && targetElement.parentElement) {\n targetElement.parentElement.classList.add('e-pv-select');\n }\n else {\n targetElement.classList.add('e-pv-select');\n }\n }\n else {\n if (this.pdfViewer.enableRtl) {\n targetElement.className = 'e-pv-comment-selection-icon e-pv-icon e-icon-left e-right';\n }\n else {\n targetElement.className = 'e-pv-comment-selection-icon e-pv-icon e-icon-left';\n }\n }\n }\n else {\n this.pdfViewerBase.isCommentIconAdded = true;\n this.pdfViewerBase.isAddComment = true;\n this.annotationToolbarModule.deselectAllItemsInBlazor();\n var commentsButton = this.CommentElement;\n commentsButton.classList.add('e-pv-select');\n }\n this.updateStampItems();\n document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + (this.pdfViewerBase.currentPageNumber - 1)).addEventListener('mousedown', this.pdfViewer.annotationModule.stickyNotesAnnotationModule.drawIcons.bind(this));\n };\n Toolbar.prototype.openZoomDropdown = function () {\n var toolbarData = this;\n if (document.fullscreen) {\n if (isBlazor()) {\n // eslint-disable-next-line\n var fullscreenElement = document.fullscreenElement;\n if (fullscreenElement && fullscreenElement.tagName !== 'BODY' && fullscreenElement.tagName !== 'HTML') {\n setTimeout(function () {\n // eslint-disable-next-line\n var popupElement = document.getElementById(toolbarData.pdfViewer.element.id + \"_zoomCombo_popup\");\n var targetElement = document.getElementById(toolbarData.toolbarElement.id);\n // eslint-disable-next-line\n if (popupElement && targetElement && popupElement.ej2_instances) {\n targetElement.appendChild(popupElement);\n popupElement.ej2_instances[0].refreshPosition();\n }\n }, 100);\n }\n }\n else {\n var popupElement = document.getElementById(this.pdfViewer.element.id + \"_zoomDropDown_popup\");\n var targetElement = document.getElementById(this.toolbarElement.id);\n if (popupElement) {\n targetElement.appendChild(popupElement);\n }\n }\n }\n };\n Toolbar.prototype.onZoomDropDownInput = function (event) {\n if ((event.which < 48 || event.which > 57) && event.which !== 8 && event.which !== 13) {\n event.preventDefault();\n return false;\n }\n else {\n if (event.which === 13) {\n event.preventDefault();\n var value = this.zoomDropDown.element.value;\n this.zoomDropDownChange(value);\n }\n return true;\n }\n };\n Toolbar.prototype.onZoomDropDownInputClick = function () {\n this.zoomDropDown.element.select();\n };\n Toolbar.prototype.zoomPercentSelect = function (args) {\n if (this.pdfViewerBase.pageCount > 0) {\n if (args.isInteracted) {\n if (args.itemData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var zoomText = args.itemData.percent;\n this.zoomDropDownChange(zoomText);\n }\n }\n else {\n this.updateZoomPercentage(this.pdfViewer.magnificationModule.zoomFactor);\n }\n }\n };\n Toolbar.prototype.zoomDropDownChange = function (zoomText) {\n // eslint-disable-next-line max-len\n if (zoomText !== this.pdfViewer.localeObj.getConstant('Fit Width') && zoomText !== this.pdfViewer.localeObj.getConstant('Fit Page') && zoomText !== this.pdfViewer.localeObj.getConstant('Automatic')) {\n this.pdfViewer.magnificationModule.isAutoZoom = false;\n this.pdfViewer.magnificationModule.zoomTo(parseFloat(zoomText));\n this.updateZoomPercentage(this.pdfViewer.magnificationModule.zoomFactor);\n this.zoomDropDown.focusOut();\n }\n else if (zoomText === this.pdfViewer.localeObj.getConstant('Fit Width')) {\n this.pdfViewer.magnificationModule.isAutoZoom = false;\n this.pdfViewer.magnificationModule.fitToWidth();\n this.zoomDropDown.focusOut();\n }\n else if (zoomText === this.pdfViewer.localeObj.getConstant('Fit Page')) {\n this.pdfViewer.magnificationModule.fitToPage();\n this.zoomDropDown.focusOut();\n }\n else if (zoomText === this.pdfViewer.localeObj.getConstant('Automatic')) {\n this.pdfViewer.magnificationModule.isAutoZoom = true;\n this.pdfViewer.magnificationModule.fitToAuto();\n this.zoomDropDown.focusOut();\n }\n };\n /**\n * @param zoomFactor\n * @private\n */\n Toolbar.prototype.updateZoomPercentage = function (zoomFactor) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line radix\n var currentPercent = parseInt((zoomFactor * 100).toString()) + '%';\n if (isBlazor()) {\n // eslint-disable-next-line\n var blazorZoomDropDown = this.pdfViewerBase.getElement('_zoomDropDown');\n if (blazorZoomDropDown && blazorZoomDropDown.children.length > 0) {\n blazorZoomDropDown.children[0].children[0].value = currentPercent;\n }\n }\n else {\n if (this.zoomDropDown.text === currentPercent) {\n this.zoomDropDown.element.value = currentPercent;\n }\n if (this.zoomDropDown.index === 11) {\n this.zoomDropDown.value = 4;\n }\n if (zoomFactor <= 0.25) {\n this.pdfViewerBase.isMinimumZoom = true;\n }\n else {\n this.pdfViewerBase.isMinimumZoom = false;\n }\n // eslint-disable-next-line\n this.zoomDropDown.text = currentPercent;\n }\n }\n };\n Toolbar.prototype.updateInteractionItems = function () {\n if (this.pdfViewer.textSelectionModule) {\n if (this.pdfViewer.enableTextSelection) {\n this.toolbar.enableItems(this.textSelectItem.parentElement, true);\n }\n else {\n this.toolbar.enableItems(this.textSelectItem.parentElement, false);\n }\n }\n else {\n this.toolbar.enableItems(this.textSelectItem.parentElement, false);\n }\n this.toolbar.enableItems(this.panItem.parentElement, true);\n if (this.pdfViewer.interactionMode === 'TextSelection' && this.pdfViewer.enableTextSelection) {\n this.selectItem(this.textSelectItem);\n this.deSelectItem(this.panItem);\n }\n else {\n this.selectItem(this.panItem);\n this.deSelectItem(this.textSelectItem);\n this.pdfViewerBase.initiatePanning();\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.textSearchButtonHandler = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (this.pdfViewer.textSearchModule && this.pdfViewerBase.pageCount > 0) {\n this.isTextSearchBoxDisplayed = !this.isTextSearchBoxDisplayed;\n this.pdfViewer.textSearchModule.showSearchBox(this.isTextSearchBoxDisplayed);\n if (this.isTextSearchBoxDisplayed) {\n if (!isBlazor()) {\n this.selectItem(this.textSearchItem);\n }\n // eslint-disable-next-line max-len\n var searchInputElement = document.getElementById(this.pdfViewer.element.id + '_search_input');\n searchInputElement.select();\n searchInputElement.focus();\n }\n else {\n if (!isBlazor()) {\n this.deSelectItem(this.textSearchItem);\n this.textSearchItem.blur();\n }\n else {\n var searchItem = this.pdfViewerBase.getElement('_search');\n searchItem.firstElementChild.blur();\n }\n }\n }\n }\n else {\n this.showToolbar(false);\n this.pdfViewerBase.navigationPane.createNavigationPaneMobile('search');\n }\n };\n Toolbar.prototype.initiateAnnotationMode = function (id) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (this.annotationToolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.annotationToolbarModule.showAnnotationToolbar(this.annotationItem);\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.refreshOverflow();\n if (this.pdfViewer.isAnnotationToolbarVisible && this.pdfViewer.isFormDesignerToolbarVisible) {\n var formDesignerMainDiv = document.getElementById(this.pdfViewer.element.id + \"_formdesigner_toolbar\");\n formDesignerMainDiv.style.display = \"none\";\n this.formDesignerToolbarModule.isToolbarHidden = false;\n this.formDesignerToolbarModule.showFormDesignerToolbar(this.formDesignerItem);\n this.annotationToolbarModule.adjustViewer(true);\n }\n }\n }\n else {\n if (!isBlazor()) {\n if (id === this.pdfViewer.element.id + '_annotation') {\n id = this.pdfViewer.element.id + '_annotationIcon';\n }\n this.annotationToolbarModule.createAnnotationToolbarForMobile(id);\n }\n }\n };\n Toolbar.prototype.initiateFormDesignerMode = function () {\n if (this.formDesignerToolbarModule && this.pdfViewer.enableFormDesignerToolbar) {\n this.formDesignerToolbarModule.showFormDesignerToolbar(this.formDesignerItem);\n if (this.pdfViewer.isAnnotationToolbarVisible && this.pdfViewer.isFormDesignerToolbarVisible) {\n var annotationMainDiv = document.getElementById(this.pdfViewer.element.id + \"_annotation_toolbar\");\n annotationMainDiv.style.display = \"none\";\n this.annotationToolbarModule.isToolbarHidden = false;\n this.annotationToolbarModule.showAnnotationToolbar(this.annotationItem);\n this.formDesignerToolbarModule.adjustViewer(true);\n }\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.DisableInteractionTools = function () {\n this.deSelectItem(this.textSelectItem);\n this.deSelectItem(this.panItem);\n };\n /**\n * @param element\n * @private\n */\n Toolbar.prototype.selectItem = function (element) {\n if (element) {\n element.classList.add('e-pv-select');\n }\n };\n /**\n * @param element\n * @private\n */\n Toolbar.prototype.deSelectItem = function (element) {\n if (element) {\n element.classList.remove('e-pv-select');\n }\n };\n /**\n * @param isTextSelect\n * @private\n */\n Toolbar.prototype.updateInteractionTools = function (isTextSelect) {\n var isBlazorPlatform = isBlazor();\n if (isTextSelect) {\n if (isBlazorPlatform) {\n this.selectItem(this.SelectToolElement);\n this.deSelectItem(this.PanElement);\n }\n else {\n this.selectItem(this.textSelectItem);\n this.deSelectItem(this.panItem);\n }\n }\n else {\n if (isBlazorPlatform) {\n this.selectItem(this.PanElement);\n this.deSelectItem(this.SelectToolElement);\n }\n else {\n this.selectItem(this.panItem);\n this.deSelectItem(this.textSelectItem);\n }\n }\n };\n Toolbar.prototype.initialEnableItems = function () {\n if (this.pdfViewer.enableToolbar) {\n this.showToolbar(true);\n }\n else {\n this.showToolbar(false);\n }\n if (this.pdfViewer.enableNavigationToolbar) {\n this.showNavigationToolbar(true);\n }\n else {\n this.showNavigationToolbar(false);\n }\n if (!isBlazor()) {\n if (this.isPrintBtnVisible) {\n this.showPrintOption(true);\n }\n else {\n this.showPrintOption(false);\n }\n if (this.isDownloadBtnVisible) {\n this.showDownloadOption(true);\n }\n else {\n this.showDownloadOption(false);\n }\n if (this.isSearchBtnVisible) {\n this.showSearchOption(true);\n }\n else {\n this.showSearchOption(false);\n }\n if (this.isCommentBtnVisible) {\n this.showCommentOption(true);\n }\n else {\n this.showCommentOption(false);\n }\n }\n };\n Toolbar.prototype.showSeparator = function (toolbarItems) {\n // eslint-disable-next-line max-len\n if (!this.isOpenBtnVisible || (!this.isNavigationToolVisible && !this.isMagnificationToolVisible && !this.isSelectionBtnVisible && !this.isScrollingBtnVisible && !this.isUndoRedoBtnsVisible)) {\n this.applyHideToToolbar(false, 1, 1);\n }\n if (((!this.isNavigationToolVisible && !this.isMagnificationToolVisible) && !this.isOpenBtnVisible) ||\n (this.isOpenBtnVisible && !this.isNavigationToolVisible) ||\n // eslint-disable-next-line max-len\n ((!this.isOpenBtnVisible && !this.isNavigationToolVisible) || (!this.isMagnificationToolVisible && !this.isScrollingBtnVisible && !this.isSelectionBtnVisible))) {\n this.applyHideToToolbar(false, 8, 8);\n }\n if ((!this.isMagnificationToolVisible && !this.isSelectionBtnVisible && !this.isScrollingBtnVisible) ||\n (this.isMagnificationToolVisible && (!this.isSelectionBtnVisible && !this.isScrollingBtnVisible)) ||\n (!this.isMagnificationToolVisible && (this.isSelectionBtnVisible || this.isScrollingBtnVisible))) {\n this.applyHideToToolbar(false, 12, 12);\n }\n if (((!this.isMagnificationToolVisible && !this.isNavigationToolVisible && !this.isScrollingBtnVisible\n && !this.isSelectionBtnVisible) && this.isUndoRedoBtnsVisible || !this.isUndoRedoBtnsVisible)) {\n this.applyHideToToolbar(false, 15, 15);\n }\n };\n Toolbar.prototype.applyToolbarSettings = function () {\n var toolbarSettingsItems = this.pdfViewer.toolbarSettings.toolbarItems;\n if (toolbarSettingsItems) {\n if (toolbarSettingsItems.indexOf('OpenOption') !== -1) {\n this.showOpenOption(true);\n }\n else {\n this.showOpenOption(false);\n }\n if (toolbarSettingsItems.indexOf('PageNavigationTool') !== -1) {\n this.showPageNavigationTool(true);\n }\n else {\n this.showPageNavigationTool(false);\n }\n if (toolbarSettingsItems.indexOf('MagnificationTool') !== -1) {\n this.showMagnificationTool(true);\n }\n else {\n this.showMagnificationTool(false);\n }\n if (toolbarSettingsItems.indexOf('SelectionTool') !== -1) {\n this.showSelectionTool(true);\n }\n else {\n this.showSelectionTool(false);\n }\n if (toolbarSettingsItems.indexOf('PanTool') !== -1) {\n this.showScrollingTool(true);\n }\n else {\n this.showScrollingTool(false);\n }\n if (toolbarSettingsItems.indexOf('PrintOption') !== -1) {\n this.showPrintOption(true);\n }\n else {\n this.showPrintOption(false);\n }\n if (toolbarSettingsItems.indexOf('DownloadOption') !== -1) {\n this.showDownloadOption(true);\n }\n else {\n this.showDownloadOption(false);\n }\n if (toolbarSettingsItems.indexOf('SearchOption') !== -1) {\n this.showSearchOption(true);\n }\n else {\n this.showSearchOption(false);\n }\n if (toolbarSettingsItems.indexOf('UndoRedoTool') !== -1) {\n this.showUndoRedoTool(true);\n }\n else {\n this.showUndoRedoTool(false);\n }\n if (toolbarSettingsItems.indexOf('AnnotationEditTool') !== -1) {\n this.showAnnotationEditTool(true);\n }\n else {\n this.showAnnotationEditTool(false);\n }\n if (toolbarSettingsItems.indexOf('FormDesignerEditTool') !== -1) {\n this.showFormDesignerEditTool(true);\n }\n else {\n this.showFormDesignerEditTool(false);\n }\n if (toolbarSettingsItems.indexOf('CommentTool') !== -1) {\n this.showCommentOption(true);\n }\n else {\n this.showCommentOption(false);\n }\n if (toolbarSettingsItems.indexOf('SubmitForm') !== -1) {\n this.showSubmitForm(true);\n }\n else {\n this.showSubmitForm(false);\n }\n this.showSeparator(toolbarSettingsItems);\n }\n };\n Toolbar.prototype.applyToolbarSettingsForMobile = function () {\n var toolbarSettingsItems = this.pdfViewer.toolbarSettings.toolbarItems;\n if (toolbarSettingsItems) {\n if (toolbarSettingsItems.indexOf('OpenOption') !== -1) {\n this.showOpenOption(true);\n }\n else {\n this.showOpenOption(false);\n }\n if (toolbarSettingsItems.indexOf('UndoRedoTool') !== -1) {\n this.showUndoRedoTool(true);\n }\n else {\n this.showUndoRedoTool(false);\n }\n if (toolbarSettingsItems.indexOf('AnnotationEditTool') !== -1) {\n this.showAnnotationEditTool(true);\n }\n else {\n this.showAnnotationEditTool(false);\n }\n if (toolbarSettingsItems.indexOf('SearchOption') !== -1) {\n this.showSearchOption(true);\n }\n else {\n this.showSearchOption(false);\n }\n }\n };\n Toolbar.prototype.getStampMode = function () {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stampAnnotationModule) {\n return this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode;\n }\n else {\n return false;\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.stampBeforeOpen = function (args) {\n this.annotationToolbarModule.resetFreeTextAnnot();\n if (args.ParentItem.Text === '' && this.pdfViewer.customStampSettings.isAddToMenu && args.Items.length > 0) {\n // eslint-disable-next-line\n var currentElements = null;\n for (var i = 0; i < args.Items.length; i++) {\n if (args.Items[i].Text === 'Custom Stamp') {\n args.Items[i].Items = [];\n currentElements = args.Items[i];\n break;\n }\n }\n // eslint-disable-next-line\n var elements = this.pdfViewerBase.customStampCollection;\n // eslint-disable-next-line\n var stampElements = this.pdfViewer.customStampSettings.customStamps;\n if (elements.length === 0 && stampElements && stampElements.length > 0) {\n for (var n = 0; n < stampElements.length; n++) {\n // eslint-disable-next-line max-len\n elements.push({ customStampName: stampElements[n].customStampName, customStampImageSource: stampElements[n].customStampImageSource });\n }\n }\n for (var m = 0; m < elements.length; m++) {\n if (currentElements != null) {\n currentElements.Items.push({ text: elements[m].customStampName });\n }\n }\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.stampBeforeClose = function (args, showItemOnClick) {\n // eslint-disable-next-line max-len\n if ((args.ParentItem && args.ParentItem.Text !== 'Custom Stamp' && args.ParentItem.Text !== 'Standard Business' && args.ParentItem.Text !== 'Dynamic' && args.ParentItem.Text !== 'Sign Here') || !args.ParentItem) {\n showItemOnClick = true;\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Toolbar.prototype.updateStampItems = function () {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.stampAnnotationModule && this.pdfViewer.annotationModule.stampAnnotationModule.isNewStampAnnot) {\n if (this.pdfViewer.selectedItems.annotations[0]) {\n this.pdfViewer.remove(this.pdfViewer.selectedItems.annotations[0]);\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n this.pdfViewer.renderDrawing();\n this.pdfViewerBase.tool = null;\n }\n this.pdfViewerBase.isAlreadyAdded = false;\n this.pdfViewer.annotationModule.stampAnnotationModule.isNewStampAnnot = false;\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.stampSelect = function (args, stampParentID) {\n this.pdfViewerBase.isAlreadyAdded = false;\n this.updateStampItems();\n if (args.Item.Text === 'Custom Stamp') {\n this.annotationToolbarModule.checkStampAnnotations();\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n // eslint-disable-next-line\n var stampImage = createElement('input', { id: this.pdfViewer.element.id + '_stampElement', attrs: { 'type': 'file' } });\n stampImage.setAttribute('accept', '.jpg,.jpeg,.png');\n stampImage.style.position = 'absolute';\n stampImage.style.left = '0px';\n stampImage.style.top = '0px';\n stampImage.style.visibility = 'hidden';\n document.body.appendChild(stampImage);\n stampImage.click();\n stampImage.addEventListener('change', this.annotationToolbarModule.addStampImage);\n document.body.removeChild(stampImage);\n // eslint-disable-next-line max-len\n }\n else if (stampParentID === 'Custom Stamp' && args.Item.Text !== '') {\n // eslint-disable-next-line\n var elements = this.pdfViewerBase.customStampCollection;\n for (var n = 0; n < elements.length; n++) {\n if (elements[n].customStampName === args.Item.Text) {\n this.pdfViewer.annotationModule.stampAnnotationModule.customStampName = args.Item.Text;\n this.annotationToolbarModule.checkStampAnnotations();\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n this.pdfViewerBase.stampAdded = true;\n this.pdfViewerBase.isAlreadyAdded = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.createCustomStampAnnotation(elements[n].customStampImageSource);\n this.pdfViewerBase.stampAdded = false;\n }\n }\n // eslint-disable-next-line max-len\n }\n else if (args.Item.Text !== 'Dynamic' && args.Item.Text !== '' && args.Item.Text !== 'Standard Business' && (stampParentID === 'Sign Here' || args.Item.Text !== 'Sign Here')) {\n this.annotationToolbarModule.checkStampAnnotations();\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n this.pdfViewerBase.stampAdded = true;\n if (stampParentID === 'Dynamic') {\n this.pdfViewerBase.isDynamicStamp = true;\n this.pdfViewer.annotationModule.stampAnnotationModule.retrieveDynamicStampAnnotation(args.Item.Text);\n }\n else {\n this.pdfViewerBase.isDynamicStamp = false;\n this.pdfViewer.annotationModule.stampAnnotationModule.retrievestampAnnotation(args.Item.Text);\n }\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'Toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from './styleFunctionSx';\nimport useTheme from './useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n const {\n defaultTheme,\n defaultClassName = 'MuiBox-root',\n generateClassName\n } = options;\n const BoxRoot = styled('div')(styleFunctionSx);\n const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n const theme = useTheme(defaultTheme);\n\n const _extendSxProp = extendSxProp(inProps),\n {\n className,\n component = 'div'\n } = _extendSxProp,\n other = _objectWithoutPropertiesLoose(_extendSxProp, _excluded);\n\n return /*#__PURE__*/_jsx(BoxRoot, _extends({\n as: component,\n ref: ref,\n className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n theme: theme\n }, other));\n });\n process.env.NODE_ENV !== \"production\" ? Box.propTypes\n /* remove-proptypes */\n = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * @ignore\n */\n children: PropTypes.node,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * @ignore\n */\n sx: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.func])\n } : void 0;\n return Box;\n}","import { createBox } from '@mui/system';\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '../utils';\nimport { createTheme } from '../styles';\nconst defaultTheme = createTheme();\n/**\n * @ignore - do not document.\n */\n\nconst Box = createBox({\n defaultTheme,\n defaultClassName: 'MuiBox-root',\n generateClassName: ClassNameGenerator.generate\n});\nexport default Box;","import _formatMuiErrorMessage from \"./formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe iff we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"variant\"];\nimport { unstable_capitalize as capitalize } from '@mui/utils';\n\nfunction isEmpty(string) {\n return string.length === 0;\n}\n/**\n * Generates string classKey based on the properties provided. It starts with the\n * variant if defined, and then it appends all other properties in alphabetical order.\n * @param {object} props - the properties for which the classKey should be created\n */\n\n\nexport default function propsToClassKey(props) {\n const {\n variant\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n let classKey = variant || '';\n Object.keys(other).sort().forEach(key => {\n if (key === 'color') {\n classKey += isEmpty(classKey) ? props[key] : capitalize(props[key]);\n } else {\n classKey += `${isEmpty(classKey) ? key : capitalize(key)}${capitalize(props[key].toString())}`;\n }\n });\n return classKey;\n}","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\n}), 'Person');","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getAvatarUtilityClass(slot) {\n return generateUtilityClass('MuiAvatar', slot);\n}\nconst avatarClasses = generateUtilityClasses('MuiAvatar', ['root', 'colorDefault', 'circular', 'rounded', 'square', 'img', 'fallback']);\nexport default avatarClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"alt\", \"children\", \"className\", \"component\", \"imgProps\", \"sizes\", \"src\", \"srcSet\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Person from '../internal/svg-icons/Person';\nimport { getAvatarUtilityClass } from './avatarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n colorDefault\n } = ownerState;\n const slots = {\n root: ['root', variant, colorDefault && 'colorDefault'],\n img: ['img'],\n fallback: ['fallback']\n };\n return composeClasses(slots, getAvatarUtilityClass, classes);\n};\n\nconst AvatarRoot = styled('div', {\n name: 'MuiAvatar',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], ownerState.colorDefault && styles.colorDefault];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n width: 40,\n height: 40,\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(20),\n lineHeight: 1,\n borderRadius: '50%',\n overflow: 'hidden',\n userSelect: 'none'\n}, ownerState.variant === 'rounded' && {\n borderRadius: theme.shape.borderRadius\n}, ownerState.variant === 'square' && {\n borderRadius: 0\n}, ownerState.colorDefault && {\n color: theme.palette.background.default,\n backgroundColor: theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[600]\n}));\nconst AvatarImg = styled('img', {\n name: 'MuiAvatar',\n slot: 'Img',\n overridesResolver: (props, styles) => styles.img\n})({\n width: '100%',\n height: '100%',\n textAlign: 'center',\n // Handle non-square image. The property isn't supported by IE11.\n objectFit: 'cover',\n // Hide alt text.\n color: 'transparent',\n // Hide the image broken icon, only works on Chrome.\n textIndent: 10000\n});\nconst AvatarFallback = styled(Person, {\n name: 'MuiAvatar',\n slot: 'Fallback',\n overridesResolver: (props, styles) => styles.fallback\n})({\n width: '75%',\n height: '75%'\n});\n\nfunction useLoaded({\n crossOrigin,\n referrerPolicy,\n src,\n srcSet\n}) {\n const [loaded, setLoaded] = React.useState(false);\n React.useEffect(() => {\n if (!src && !srcSet) {\n return undefined;\n }\n\n setLoaded(false);\n let active = true;\n const image = new Image();\n\n image.onload = () => {\n if (!active) {\n return;\n }\n\n setLoaded('loaded');\n };\n\n image.onerror = () => {\n if (!active) {\n return;\n }\n\n setLoaded('error');\n };\n\n image.crossOrigin = crossOrigin;\n image.referrerPolicy = referrerPolicy;\n image.src = src;\n\n if (srcSet) {\n image.srcset = srcSet;\n }\n\n return () => {\n active = false;\n };\n }, [crossOrigin, referrerPolicy, src, srcSet]);\n return loaded;\n}\n\nconst Avatar = /*#__PURE__*/React.forwardRef(function Avatar(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAvatar'\n });\n\n const {\n alt,\n children: childrenProp,\n className,\n component = 'div',\n imgProps,\n sizes,\n src,\n srcSet,\n variant = 'circular'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n let children = null; // Use a hook instead of onError on the img element to support server-side rendering.\n\n const loaded = useLoaded(_extends({}, imgProps, {\n src,\n srcSet\n }));\n const hasImg = src || srcSet;\n const hasImgNotFailing = hasImg && loaded !== 'error';\n\n const ownerState = _extends({}, props, {\n colorDefault: !hasImgNotFailing,\n component,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n\n if (hasImgNotFailing) {\n children = /*#__PURE__*/_jsx(AvatarImg, _extends({\n alt: alt,\n src: src,\n srcSet: srcSet,\n sizes: sizes,\n ownerState: ownerState,\n className: classes.img\n }, imgProps));\n } else if (childrenProp != null) {\n children = childrenProp;\n } else if (hasImg && alt) {\n children = alt[0];\n } else {\n children = /*#__PURE__*/_jsx(AvatarFallback, {\n className: classes.fallback\n });\n }\n\n return /*#__PURE__*/_jsx(AvatarRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Avatar.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Used in combination with `src` or `srcSet` to\n * provide an alt attribute for the rendered `img` element.\n */\n alt: PropTypes.string,\n\n /**\n * Used to render icon or text elements inside the Avatar if `src` is not set.\n * This can be an element, or just a string.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attributes) applied to the `img` element if the component is used to display an image.\n * It can be used to listen for the loading error event.\n */\n imgProps: PropTypes.object,\n\n /**\n * The `sizes` attribute for the `img` element.\n */\n sizes: PropTypes.string,\n\n /**\n * The `src` attribute for the `img` element.\n */\n src: PropTypes.string,\n\n /**\n * The `srcSet` attribute for the `img` element.\n * Use this attribute for responsive image display.\n */\n srcSet: PropTypes.string,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The shape of the avatar.\n * @default 'circular'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['circular', 'rounded', 'square']), PropTypes.string])\n} : void 0;\nexport default Avatar;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getAccordionUtilityClass(slot) {\n return generateUtilityClass('MuiAccordion', slot);\n}\nconst accordionClasses = generateUtilityClasses('MuiAccordion', ['root', 'rounded', 'expanded', 'disabled', 'gutters', 'region']);\nexport default accordionClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"defaultExpanded\", \"disabled\", \"disableGutters\", \"expanded\", \"onChange\", \"square\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Collapse from '../Collapse';\nimport Paper from '../Paper';\nimport AccordionContext from './AccordionContext';\nimport useControlled from '../utils/useControlled';\nimport accordionClasses, { getAccordionUtilityClass } from './accordionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n square,\n expanded,\n disabled,\n disableGutters\n } = ownerState;\n const slots = {\n root: ['root', !square && 'rounded', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n region: ['region']\n };\n return composeClasses(slots, getAccordionUtilityClass, classes);\n};\n\nconst AccordionRoot = styled(Paper, {\n name: 'MuiAccordion',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${accordionClasses.region}`]: styles.region\n }, styles.root, !ownerState.square && styles.rounded, !ownerState.disableGutters && styles.gutters];\n }\n})(({\n theme\n}) => {\n const transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n position: 'relative',\n transition: theme.transitions.create(['margin'], transition),\n overflowAnchor: 'none',\n // Keep the same scrolling position\n '&:before': {\n position: 'absolute',\n left: 0,\n top: -1,\n right: 0,\n height: 1,\n content: '\"\"',\n opacity: 1,\n backgroundColor: theme.palette.divider,\n transition: theme.transitions.create(['opacity', 'background-color'], transition)\n },\n '&:first-of-type': {\n '&:before': {\n display: 'none'\n }\n },\n [`&.${accordionClasses.expanded}`]: {\n '&:before': {\n opacity: 0\n },\n '&:first-of-type': {\n marginTop: 0\n },\n '&:last-of-type': {\n marginBottom: 0\n },\n '& + &': {\n '&:before': {\n display: 'none'\n }\n }\n },\n [`&.${accordionClasses.disabled}`]: {\n backgroundColor: theme.palette.action.disabledBackground\n }\n };\n}, ({\n theme,\n ownerState\n}) => _extends({}, !ownerState.square && {\n borderRadius: 0,\n '&:first-of-type': {\n borderTopLeftRadius: theme.shape.borderRadius,\n borderTopRightRadius: theme.shape.borderRadius\n },\n '&:last-of-type': {\n borderBottomLeftRadius: theme.shape.borderRadius,\n borderBottomRightRadius: theme.shape.borderRadius,\n // Fix a rendering issue on Edge\n '@supports (-ms-ime-align: auto)': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }\n }\n}, !ownerState.disableGutters && {\n [`&.${accordionClasses.expanded}`]: {\n margin: '16px 0'\n }\n}));\nconst Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAccordion'\n });\n\n const {\n children: childrenProp,\n className,\n defaultExpanded = false,\n disabled = false,\n disableGutters = false,\n expanded: expandedProp,\n onChange,\n square = false,\n TransitionComponent = Collapse,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const [expanded, setExpandedState] = useControlled({\n controlled: expandedProp,\n default: defaultExpanded,\n name: 'Accordion',\n state: 'expanded'\n });\n const handleChange = React.useCallback(event => {\n setExpandedState(!expanded);\n\n if (onChange) {\n onChange(event, !expanded);\n }\n }, [expanded, onChange, setExpandedState]);\n const [summary, ...children] = React.Children.toArray(childrenProp);\n const contextValue = React.useMemo(() => ({\n expanded,\n disabled,\n disableGutters,\n toggle: handleChange\n }), [expanded, disabled, disableGutters, handleChange]);\n\n const ownerState = _extends({}, props, {\n square,\n disabled,\n disableGutters,\n expanded\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(AccordionRoot, _extends({\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState,\n square: square\n }, other, {\n children: [/*#__PURE__*/_jsx(AccordionContext.Provider, {\n value: contextValue,\n children: summary\n }), /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: expanded,\n timeout: \"auto\"\n }, TransitionProps, {\n children: /*#__PURE__*/_jsx(\"div\", {\n \"aria-labelledby\": summary.props.id,\n id: summary.props['aria-controls'],\n role: \"region\",\n className: classes.region,\n children: children\n })\n }))]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Accordion.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: chainPropTypes(PropTypes.node.isRequired, props => {\n const summary = React.Children.toArray(props.children)[0];\n\n if (isFragment(summary)) {\n return new Error(\"MUI: The Accordion doesn't accept a Fragment as a child. \" + 'Consider providing an array instead.');\n }\n\n if (! /*#__PURE__*/React.isValidElement(summary)) {\n return new Error('MUI: Expected the first child of Accordion to be a valid element.');\n }\n\n return null;\n }),\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, expands the accordion by default.\n * @default false\n */\n defaultExpanded: PropTypes.bool,\n\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, it removes the margin between two expanded accordion items and the increase of height.\n * @default false\n */\n disableGutters: PropTypes.bool,\n\n /**\n * If `true`, expands the accordion, otherwise collapse it.\n * Setting this prop enables control over the accordion.\n */\n expanded: PropTypes.bool,\n\n /**\n * Callback fired when the expand/collapse state is changed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n * @param {boolean} expanded The `expanded` state of the accordion.\n */\n onChange: PropTypes.func,\n\n /**\n * If `true`, rounded corners are disabled.\n * @default false\n */\n square: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The component used for the transition.\n * [Follow this guide](/components/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Collapse\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Accordion;","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"container\", \"direction\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { elementAcceptingRef, HTMLElementType, chainPropTypes } from '@mui/utils';\nimport debounce from '../utils/debounce';\nimport useForkRef from '../utils/useForkRef';\nimport useTheme from '../styles/useTheme';\nimport { duration, easing } from '../styles/createTransitions';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport { ownerWindow } from '../utils'; // Translate the node so it can't be seen on the screen.\n// Later, we're going to translate the node back to its original location with `none`.\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction getTranslateValue(direction, node, resolvedContainer) {\n const rect = node.getBoundingClientRect();\n const containerRect = resolvedContainer && resolvedContainer.getBoundingClientRect();\n const containerWindow = ownerWindow(node);\n let transform;\n\n if (node.fakeTransform) {\n transform = node.fakeTransform;\n } else {\n const computedStyle = containerWindow.getComputedStyle(node);\n transform = computedStyle.getPropertyValue('-webkit-transform') || computedStyle.getPropertyValue('transform');\n }\n\n let offsetX = 0;\n let offsetY = 0;\n\n if (transform && transform !== 'none' && typeof transform === 'string') {\n const transformValues = transform.split('(')[1].split(')')[0].split(',');\n offsetX = parseInt(transformValues[4], 10);\n offsetY = parseInt(transformValues[5], 10);\n }\n\n if (direction === 'left') {\n if (containerRect) {\n return `translateX(${containerRect.right + offsetX - rect.left}px)`;\n }\n\n return `translateX(${containerWindow.innerWidth + offsetX - rect.left}px)`;\n }\n\n if (direction === 'right') {\n if (containerRect) {\n return `translateX(-${rect.right - containerRect.left - offsetX}px)`;\n }\n\n return `translateX(-${rect.left + rect.width - offsetX}px)`;\n }\n\n if (direction === 'up') {\n if (containerRect) {\n return `translateY(${containerRect.bottom + offsetY - rect.top}px)`;\n }\n\n return `translateY(${containerWindow.innerHeight + offsetY - rect.top}px)`;\n } // direction === 'down'\n\n\n if (containerRect) {\n return `translateY(-${rect.top - containerRect.top + rect.height - offsetY}px)`;\n }\n\n return `translateY(-${rect.top + rect.height - offsetY}px)`;\n}\n\nfunction resolveContainer(containerPropProp) {\n return typeof containerPropProp === 'function' ? containerPropProp() : containerPropProp;\n}\n\nexport function setTranslateValue(direction, node, containerProp) {\n const resolvedContainer = resolveContainer(containerProp);\n const transform = getTranslateValue(direction, node, resolvedContainer);\n\n if (transform) {\n node.style.webkitTransform = transform;\n node.style.transform = transform;\n }\n}\nconst defaultEasing = {\n enter: easing.easeOut,\n exit: easing.sharp\n};\nconst defaultTimeout = {\n enter: duration.enteringScreen,\n exit: duration.leavingScreen\n};\n/**\n * The Slide transition is used by the [Drawer](/components/drawers/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nconst Slide = /*#__PURE__*/React.forwardRef(function Slide(props, ref) {\n const {\n addEndListener,\n appear = true,\n children,\n container: containerProp,\n direction = 'down',\n easing: easingProp = defaultEasing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = defaultTimeout,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const theme = useTheme();\n const childrenRef = React.useRef(null);\n const handleRefIntermediary = useForkRef(children.ref, childrenRef);\n const handleRef = useForkRef(handleRefIntermediary, ref);\n\n const normalizedTransitionCallback = callback => isAppearing => {\n if (callback) {\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (isAppearing === undefined) {\n callback(childrenRef.current);\n } else {\n callback(childrenRef.current, isAppearing);\n }\n }\n };\n\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n setTranslateValue(direction, node, containerProp);\n reflow(node);\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n const transitionProps = getTransitionProps({\n timeout,\n style,\n easing: easingProp\n }, {\n mode: 'enter'\n });\n node.style.webkitTransition = theme.transitions.create('-webkit-transform', _extends({}, transitionProps));\n node.style.transition = theme.transitions.create('transform', _extends({}, transitionProps));\n node.style.webkitTransform = 'none';\n node.style.transform = 'none';\n\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const transitionProps = getTransitionProps({\n timeout,\n style,\n easing: easingProp\n }, {\n mode: 'exit'\n });\n node.style.webkitTransition = theme.transitions.create('-webkit-transform', transitionProps);\n node.style.transition = theme.transitions.create('transform', transitionProps);\n setTranslateValue(direction, node, containerProp);\n\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(node => {\n // No need for transitions when the component is hidden\n node.style.webkitTransition = '';\n node.style.transition = '';\n\n if (onExited) {\n onExited(node);\n }\n });\n\n const handleAddEndListener = next => {\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(childrenRef.current, next);\n }\n };\n\n const updatePosition = React.useCallback(() => {\n if (childrenRef.current) {\n setTranslateValue(direction, childrenRef.current, containerProp);\n }\n }, [direction, containerProp]);\n React.useEffect(() => {\n // Skip configuration where the position is screen size invariant.\n if (inProp || direction === 'down' || direction === 'right') {\n return undefined;\n }\n\n const handleResize = debounce(() => {\n if (childrenRef.current) {\n setTranslateValue(direction, childrenRef.current, containerProp);\n }\n });\n const containerWindow = ownerWindow(childrenRef.current);\n containerWindow.addEventListener('resize', handleResize);\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener('resize', handleResize);\n };\n }, [direction, inProp, containerProp]);\n React.useEffect(() => {\n if (!inProp) {\n // We need to update the position of the drawer when the direction change and\n // when it's hidden.\n updatePosition();\n }\n }, [inProp, updatePosition]);\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n nodeRef: childrenRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n appear: appear,\n in: inProp,\n timeout: timeout\n }, other, {\n children: (state, childProps) => {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n ref: handleRef,\n style: _extends({\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, style, children.props.style)\n }, childProps));\n }\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Slide.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * 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 addEndListener: PropTypes.func,\n\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n\n /**\n * An HTML element, or a function that returns one.\n * It's used to set the container the Slide is transitioning from.\n */\n container: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.func]), props => {\n if (props.open) {\n const resolvedContainer = resolveContainer(props.container);\n\n if (resolvedContainer && resolvedContainer.nodeType === 1) {\n const box = resolvedContainer.getBoundingClientRect();\n\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['MUI: The `container` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else if (!resolvedContainer || typeof resolvedContainer.getBoundingClientRect !== 'function' || resolvedContainer.contextElement != null && resolvedContainer.contextElement.nodeType !== 1) {\n return new Error(['MUI: The `container` prop provided to the component is invalid.', 'It should be an HTML element instance.'].join('\\n'));\n }\n }\n\n return null;\n }),\n\n /**\n * Direction the child node will enter from.\n * @default 'down'\n */\n direction: PropTypes.oneOf(['down', 'left', 'right', 'up']),\n\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n * @default {\n * enter: easing.easeOut,\n * exit: easing.sharp,\n * }\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n * @default {\n * enter: duration.enteringScreen,\n * exit: duration.leavingScreen,\n * }\n */\n timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default Slide;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDrawerUtilityClass(slot) {\n return generateUtilityClass('MuiDrawer', slot);\n}\nconst drawerClasses = generateUtilityClasses('MuiDrawer', ['root', 'docked', 'paper', 'paperAnchorLeft', 'paperAnchorRight', 'paperAnchorTop', 'paperAnchorBottom', 'paperAnchorDockedLeft', 'paperAnchorDockedRight', 'paperAnchorDockedTop', 'paperAnchorDockedBottom', 'modal']);\nexport default drawerClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"BackdropProps\"],\n _excluded2 = [\"anchor\", \"BackdropProps\", \"children\", \"className\", \"elevation\", \"hideBackdrop\", \"ModalProps\", \"onClose\", \"open\", \"PaperProps\", \"SlideProps\", \"TransitionComponent\", \"transitionDuration\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport Modal from '../Modal';\nimport Slide from '../Slide';\nimport Paper from '../Paper';\nimport capitalize from '../utils/capitalize';\nimport { duration } from '../styles/createTransitions';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getDrawerUtilityClass } from './drawerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, (ownerState.variant === 'permanent' || ownerState.variant === 'persistent') && styles.docked, styles.modal];\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n anchor,\n variant\n } = ownerState;\n const slots = {\n root: ['root'],\n docked: [(variant === 'permanent' || variant === 'persistent') && 'docked'],\n modal: ['modal'],\n paper: ['paper', `paperAnchor${capitalize(anchor)}`, variant !== 'temporary' && `paperAnchorDocked${capitalize(anchor)}`]\n };\n return composeClasses(slots, getDrawerUtilityClass, classes);\n};\n\nconst DrawerRoot = styled(Modal, {\n name: 'MuiDrawer',\n slot: 'Root',\n overridesResolver\n})(({\n theme\n}) => ({\n zIndex: theme.zIndex.drawer\n}));\nconst DrawerDockedRoot = styled('div', {\n shouldForwardProp: rootShouldForwardProp,\n name: 'MuiDrawer',\n slot: 'Docked',\n skipVariantsResolver: false,\n overridesResolver\n})({\n flex: '0 0 auto'\n});\nconst DrawerPaper = styled(Paper, {\n name: 'MuiDrawer',\n slot: 'Paper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.paper, styles[`paperAnchor${capitalize(ownerState.anchor)}`], ownerState.variant !== 'temporary' && styles[`paperAnchorDocked${capitalize(ownerState.anchor)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n flex: '1 0 auto',\n zIndex: theme.zIndex.drawer,\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch',\n // temporary style\n position: 'fixed',\n top: 0,\n // We disable the focus ring for mouse, touch and keyboard users.\n // At some point, it would be better to keep it for keyboard users.\n // :focus-ring CSS pseudo-class will help.\n outline: 0\n}, ownerState.anchor === 'left' && {\n left: 0\n}, ownerState.anchor === 'top' && {\n top: 0,\n left: 0,\n right: 0,\n height: 'auto',\n maxHeight: '100%'\n}, ownerState.anchor === 'right' && {\n right: 0\n}, ownerState.anchor === 'bottom' && {\n top: 'auto',\n left: 0,\n bottom: 0,\n right: 0,\n height: 'auto',\n maxHeight: '100%'\n}, ownerState.anchor === 'left' && ownerState.variant !== 'temporary' && {\n borderRight: `1px solid ${theme.palette.divider}`\n}, ownerState.anchor === 'top' && ownerState.variant !== 'temporary' && {\n borderBottom: `1px solid ${theme.palette.divider}`\n}, ownerState.anchor === 'right' && ownerState.variant !== 'temporary' && {\n borderLeft: `1px solid ${theme.palette.divider}`\n}, ownerState.anchor === 'bottom' && ownerState.variant !== 'temporary' && {\n borderTop: `1px solid ${theme.palette.divider}`\n}));\nconst oppositeDirection = {\n left: 'right',\n right: 'left',\n top: 'down',\n bottom: 'up'\n};\nexport function isHorizontal(anchor) {\n return ['left', 'right'].indexOf(anchor) !== -1;\n}\nexport function getAnchor(theme, anchor) {\n return theme.direction === 'rtl' && isHorizontal(anchor) ? oppositeDirection[anchor] : anchor;\n}\nconst defaultTransitionDuration = {\n enter: duration.enteringScreen,\n exit: duration.leavingScreen\n};\n/**\n * The props of the [Modal](/api/modal/) component are available\n * when `variant=\"temporary\"` is set.\n */\n\nconst Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDrawer'\n });\n\n const {\n anchor: anchorProp = 'left',\n BackdropProps,\n children,\n className,\n elevation = 16,\n hideBackdrop = false,\n ModalProps: {\n BackdropProps: BackdropPropsProp\n } = {},\n onClose,\n open = false,\n PaperProps = {},\n SlideProps,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Slide,\n transitionDuration = defaultTransitionDuration,\n variant = 'temporary'\n } = props,\n ModalProps = _objectWithoutPropertiesLoose(props.ModalProps, _excluded),\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n\n const theme = useTheme(); // Let's assume that the Drawer will always be rendered on user space.\n // We use this state is order to skip the appear transition during the\n // initial mount of the component.\n\n const mounted = React.useRef(false);\n React.useEffect(() => {\n mounted.current = true;\n }, []);\n const anchorInvariant = getAnchor(theme, anchorProp);\n const anchor = anchorProp;\n\n const ownerState = _extends({}, props, {\n anchor,\n elevation,\n open,\n variant\n }, other);\n\n const classes = useUtilityClasses(ownerState);\n\n const drawer = /*#__PURE__*/_jsx(DrawerPaper, _extends({\n elevation: variant === 'temporary' ? elevation : 0,\n square: true\n }, PaperProps, {\n className: clsx(classes.paper, PaperProps.className),\n ownerState: ownerState,\n children: children\n }));\n\n if (variant === 'permanent') {\n return /*#__PURE__*/_jsx(DrawerDockedRoot, _extends({\n className: clsx(classes.root, classes.docked, className),\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: drawer\n }));\n }\n\n const slidingDrawer = /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: open,\n direction: oppositeDirection[anchorInvariant],\n timeout: transitionDuration,\n appear: mounted.current\n }, SlideProps, {\n children: drawer\n }));\n\n if (variant === 'persistent') {\n return /*#__PURE__*/_jsx(DrawerDockedRoot, _extends({\n className: clsx(classes.root, classes.docked, className),\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: slidingDrawer\n }));\n } // variant === temporary\n\n\n return /*#__PURE__*/_jsx(DrawerRoot, _extends({\n BackdropProps: _extends({}, BackdropProps, BackdropPropsProp, {\n transitionDuration\n }),\n className: clsx(classes.root, classes.modal, className),\n open: open,\n ownerState: ownerState,\n onClose: onClose,\n hideBackdrop: hideBackdrop,\n ref: ref\n }, other, ModalProps, {\n children: slidingDrawer\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Drawer.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Side from which the drawer will appear.\n * @default 'left'\n */\n anchor: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),\n\n /**\n * @ignore\n */\n BackdropProps: PropTypes.object,\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The elevation of the drawer.\n * @default 16\n */\n elevation: integerPropType,\n\n /**\n * If `true`, the backdrop is not rendered.\n * @default false\n */\n hideBackdrop: PropTypes.bool,\n\n /**\n * Props applied to the [`Modal`](/api/modal/) element.\n * @default {}\n */\n ModalProps: PropTypes.object,\n\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {object} event The event source of the callback.\n */\n onClose: PropTypes.func,\n\n /**\n * If `true`, the component is shown.\n * @default false\n */\n open: PropTypes.bool,\n\n /**\n * Props applied to the [`Paper`](/api/paper/) element.\n * @default {}\n */\n PaperProps: PropTypes.object,\n\n /**\n * Props applied to the [`Slide`](/api/slide/) element.\n */\n SlideProps: PropTypes.object,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n * @default { enter: duration.enteringScreen, exit: duration.leavingScreen }\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n\n /**\n * The variant to use.\n * @default 'temporary'\n */\n variant: PropTypes.oneOf(['permanent', 'persistent', 'temporary'])\n} : void 0;\nexport default Drawer;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Component, removeClass } from '@syncfusion/ej2-base';\nimport { EventHandler, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar SignatureBase = /** @class */ (function (_super) {\n __extends(SignatureBase, _super);\n function SignatureBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /* minDistance(distance between the two point) was calaculated for smoothness.*/\n _this.minDistance = 5;\n _this.previous = 0;\n /* interval handles for the smoothness in the mouse move event.*/\n _this.interval = 30;\n _this.timeout = null;\n _this.isSignatureEmpty = true;\n _this.backgroundLoaded = null;\n _this.clearArray = [];\n _this.isBlazor = false;\n return _this;\n }\n /**\n * To Initialize the component rendering\n *\n * @private\n * @param {HTMLCanvasElement} element - Specifies the canvas element.\n * @param {parameter} parameter - Specifies only for the blazor parameter.\n * @param {BlazorDotnetObject} dotnetRef - Specifies for blazor client to server communication.\n * @returns {void}\n */\n SignatureBase.prototype.initialize = function (element, parameter, dotnetRef) {\n this.element = element;\n this.canvasContext = this.element.getContext('2d');\n this.canvasContext.canvas.tabIndex = 0;\n if (parameter) {\n this.setBlazorParameter(parameter);\n this.dotnetRef = dotnetRef;\n }\n this.setHTMLProperties();\n if (isNullOrUndefined(this.signatureValue)) {\n this.updateSnapCollection(true);\n }\n this.wireEvents();\n this.isSignatureEmpty = true;\n if (!this.isBlazor) {\n this.trigger('created', null);\n }\n };\n SignatureBase.prototype.setBlazorParameter = function (parameter) {\n this.isBlazor = true;\n this.backgroundColor = parameter.backgroundColor;\n this.backgroundImage = parameter.backgroundImage;\n this.disabled = parameter.disabled;\n this.isReadOnly = parameter.isReadOnly;\n this.maxStrokeWidth = parameter.maxStrokeWidth || 2;\n this.minStrokeWidth = parameter.minStrokeWidth || 0.5;\n this.velocity = parameter.velocity || 0.7;\n this.strokeColor = parameter.strokeColor || '#000000';\n this.saveWithBackground = parameter.saveWithBackground;\n this.interval = 30;\n this.previous = 0;\n this.minDistance = 5;\n this.signatureValue = parameter.signatureValue;\n if (this.signatureValue) {\n this.loadPersistedSignature();\n }\n };\n SignatureBase.prototype.wireEvents = function () {\n if (isNullOrUndefined(this.pointColl) && !this.isReadOnly && !this.disabled) {\n EventHandler.add(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler, this);\n EventHandler.add(this.canvasContext.canvas, 'keydown', this.keyboardHandler, this);\n window.addEventListener('resize', this.resizeHandler.bind(this));\n }\n else if (this.pointColl) {\n EventHandler.add(this.canvasContext.canvas, 'mousemove touchmove', this.mouseMoveHandler, this);\n EventHandler.add(this.canvasContext.canvas, 'mouseup touchend', this.mouseUpHandler, this);\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n }\n };\n SignatureBase.prototype.unwireEvents = function (type) {\n if (type === 'mouseup' || type === 'touchend') {\n EventHandler.remove(this.canvasContext.canvas, 'mousemove touchmove', this.mouseMoveHandler);\n EventHandler.remove(this.canvasContext.canvas, 'mouseup touchend', this.mouseUpHandler);\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n }\n else {\n EventHandler.remove(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler);\n EventHandler.remove(this.canvasContext.canvas, 'mousemove touchmove', this.mouseMoveHandler);\n EventHandler.remove(this.canvasContext.canvas, 'mouseup touchend', this.mouseUpHandler);\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.canvasContext.canvas, 'keydown', this.keyboardHandler);\n window.removeEventListener('resize', this.resizeHandler);\n }\n };\n SignatureBase.prototype.setHTMLProperties = function () {\n if (this.element.height === 150) {\n this.element.height = this.element.offsetHeight;\n }\n if (this.element.width === 300) {\n this.element.width = this.element.offsetWidth;\n }\n this.canvasContext.scale(1, 1);\n this.canvasContext.fillStyle = this.strokeColor;\n if (this.backgroundImage) {\n this.canvasContext.canvas.style.backgroundImage = 'url(' + this.backgroundImage + ')';\n }\n else if (this.backgroundColor) {\n this.canvasContext.canvas.style.backgroundColor = this.backgroundColor;\n }\n };\n SignatureBase.prototype.mouseDownHandler = function (e) {\n if (e.buttons === 1 || e.buttons === 2 || e.type === 'touchstart') {\n if (e.type === 'touchstart') {\n e.preventDefault();\n e.stopPropagation();\n }\n this.beginStroke(e);\n this.wireEvents();\n }\n };\n SignatureBase.prototype.mouseMoveHandler = function (e) {\n if (e.buttons === 1 || e.buttons === 2 || e.type === 'touchmove') {\n if (e.type === 'touchmove') {\n e.preventDefault();\n e.stopPropagation();\n }\n if (this.interval) {\n this.updateStrokeWithThrottle(e);\n }\n else {\n this.updateStroke(e);\n }\n }\n };\n SignatureBase.prototype.mouseUpHandler = function (e) {\n var args = { actionName: 'strokeUpdate' };\n if (e.type === 'touchstart') {\n e.preventDefault();\n e.stopPropagation();\n }\n this.endDraw();\n this.updateSnapCollection();\n this.unwireEvents(e.type);\n if (!this.isBlazor) {\n this.trigger('change', args);\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'mouseUp');\n }\n this.signatureValue = this.snapColl[this.incStep];\n };\n SignatureBase.prototype.keyboardHandler = function (e) {\n var _this = this;\n var args = { fileName: 'Signature', type: 'Png', cancel: false };\n switch (e.key) {\n case 'Delete':\n this.clear();\n break;\n case (e.ctrlKey && 's'):\n if (!this.isBlazor) {\n this.trigger('beforeSave', args, function (observableSaveArgs) {\n if (!args.cancel) {\n _this.save(observableSaveArgs.type, observableSaveArgs.fileName);\n }\n });\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'beforeSave');\n }\n e.preventDefault();\n e.stopImmediatePropagation();\n break;\n case (e.ctrlKey && 'z'):\n this.undo();\n break;\n case (e.ctrlKey && 'y'):\n this.redo();\n break;\n }\n };\n SignatureBase.prototype.resizeHandler = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n this.canvasContext.canvas.width = this.element.offsetWidth;\n this.canvasContext.canvas.height = this.element.offsetHeight;\n this.canvasContext.scale(1, 1);\n var restoreImg = new Image();\n restoreImg.src = this.snapColl[this.incStep];\n restoreImg.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(restoreImg, 0, 0, proxy.element.width, proxy.element.height);\n };\n };\n SignatureBase.prototype.beginStroke = function (e) {\n this.refresh();\n this.updateStroke(e);\n };\n SignatureBase.prototype.updateStroke = function (e) {\n var point = this.createPoint(e);\n this.addPoint(point);\n };\n SignatureBase.prototype.updateStrokeWithThrottle = function (args) {\n var now = Date.now();\n var remaining = this.interval - (now - this.previous);\n this.storedArgs = args;\n if (remaining <= 0 || remaining > this.interval) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.previous = now;\n this.updateStroke(this.storedArgs);\n if (!this.timeout) {\n this.storedArgs = null;\n }\n }\n else if (!this.timeout) {\n this.timeout = window.setTimeout(this.delay.bind(this), remaining);\n }\n };\n SignatureBase.prototype.delay = function () {\n this.previous = Date.now();\n this.timeout = null;\n this.updateStroke(this.storedArgs);\n if (!this.timeout) {\n this.storedArgs = null;\n }\n };\n SignatureBase.prototype.createPoint = function (e) {\n var rect = this.canvasContext.canvas.getBoundingClientRect();\n if (e.type === 'mousedown' || e.type === 'mousemove') {\n return this.point(e.clientX - rect.left, e.clientY - rect.top, new Date().getTime());\n }\n else {\n return this.point(e.touches[0].clientX - rect.left, e.touches[0].clientY - rect.top, new Date().getTime());\n }\n };\n /* Returns the current point corrdinates(x, y) and time.*/\n SignatureBase.prototype.point = function (pointX, pointY, time) {\n this.pointX = pointX;\n this.pointY = pointY;\n this.time = time || new Date().getTime();\n return { x: this.pointX, y: this.pointY, time: this.time };\n };\n SignatureBase.prototype.addPoint = function (point) {\n var points = this.pointColl;\n var controlPoint1;\n var controlPoint2;\n var lastPoint = points.length > 0 && points[points.length - 1];\n var isLastPointTooClose = lastPoint ? this.distanceTo(lastPoint) <= this.minDistance : false;\n if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n points.push(point);\n if (points.length > 2) {\n if (points.length === 3) {\n points.unshift(points[0]);\n }\n controlPoint1 = (this.calculateCurveControlPoints(points[0], points[1], points[2])).controlPoint2;\n controlPoint2 = (this.calculateCurveControlPoints(points[1], points[2], points[3])).controlPoint1;\n this.startPoint = points[1];\n this.controlPoint1 = controlPoint1;\n this.controlPoint2 = controlPoint2;\n this.endPoint = points[2];\n this.startDraw();\n points.shift();\n }\n }\n };\n SignatureBase.prototype.startDraw = function () {\n var velocity;\n velocity = this.pointVelocityCalc(this.startPoint);\n velocity = this.velocity * velocity + (1 - this.velocity) * this.lastVelocity;\n var newWidth = Math.max(this.maxStrokeWidth / (velocity + 1), this.minStrokeWidth);\n this.curveDraw(this.lastWidth, newWidth);\n this.lastVelocity = velocity;\n this.lastWidth = newWidth;\n };\n SignatureBase.prototype.endDraw = function () {\n var canDrawCurve = this.pointColl.length > 2;\n var point = this.pointColl[0];\n if (!canDrawCurve && point) {\n this.strokeDraw(point);\n }\n };\n /* Calculate the Bezier (x, y) coordinate of the curve. */\n SignatureBase.prototype.curveDraw = function (startWidth, endWidth) {\n var context = this.canvasContext;\n var width;\n var i;\n var t1;\n var t2;\n var t3;\n var u1;\n var u2;\n var u3;\n var x;\n var y;\n var widthValue = endWidth - startWidth;\n var bezierLength = this.bezierLengthCalc();\n var drawSteps = Math.ceil(bezierLength) * 2;\n context.beginPath();\n for (i = 0; i < drawSteps; i++) {\n t1 = i / drawSteps;\n t2 = t1 * t1;\n t3 = t2 * t1;\n u1 = 1 - t1;\n u2 = u1 * u1;\n u3 = u2 * u1;\n x = u3 * this.startPoint.x;\n x += 3 * u2 * t1 * this.controlPoint1.x;\n x += 3 * u1 * t2 * this.controlPoint2.x;\n x += t3 * this.endPoint.x;\n y = u3 * this.startPoint.y;\n y += 3 * u2 * t1 * this.controlPoint1.y;\n y += 3 * u1 * t2 * this.controlPoint2.y;\n y += t3 * this.endPoint.y;\n width = Math.min(startWidth + t3 * widthValue, this.maxStrokeWidth);\n this.arcDraw(x, y, width);\n }\n context.closePath();\n context.fill();\n this.isSignatureEmpty = false;\n };\n SignatureBase.prototype.strokeDraw = function (point) {\n var context = this.canvasContext;\n var pointSize = (this.minStrokeWidth + this.maxStrokeWidth) / 2;\n context.beginPath();\n this.arcDraw(point.x, point.y, pointSize);\n context.closePath();\n context.fill();\n this.isSignatureEmpty = false;\n };\n SignatureBase.prototype.arcDraw = function (x, y, size) {\n var context = this.canvasContext;\n context.moveTo(x, y);\n context.arc(x, y, size, 0, 2 * Math.PI, false);\n };\n /* Utility functions for Bezier algorithm*/\n SignatureBase.prototype.calculateCurveControlPoints = function (p1, p2, p3) {\n var dx1 = p1.x - p2.x;\n var dy1 = p1.y - p2.y;\n var dx2 = p2.x - p3.x;\n var dy2 = p2.y - p3.y;\n var m1 = { x: (p1.x + p2.x) / 2.0, y: (p1.y + p2.y) / 2.0 };\n var m2 = { x: (p2.x + p3.x) / 2.0, y: (p2.y + p3.y) / 2.0 };\n var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n var dxm = (m1.x - m2.x);\n var dym = (m1.y - m2.y);\n var k = l2 / (l1 + l2);\n var cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n var tx = p2.x - cm.x;\n var ty = p2.y - cm.y;\n return {\n controlPoint1: this.point(m1.x + tx, m1.y + ty, 0),\n controlPoint2: this.point(m2.x + tx, m2.y + ty, 0)\n };\n };\n /* Returns approximated bezier length of the curuve.*/\n SignatureBase.prototype.bezierLengthCalc = function () {\n var steps = 10;\n var length = 0;\n var i;\n var t;\n var pointx1;\n var pointy1;\n var pointx2;\n var pointy2;\n var pointx3;\n var pointy3;\n for (i = 0; i <= steps; i++) {\n t = i / steps;\n pointx1 = this.bezierPointCalc(t, this.startPoint.x, this.controlPoint1.x, this.controlPoint2.x, this.endPoint.x);\n pointy1 = this.bezierPointCalc(t, this.startPoint.y, this.controlPoint1.y, this.controlPoint2.y, this.endPoint.y);\n if (i > 0) {\n pointx3 = pointx1 - pointx2;\n pointy3 = pointy1 - pointy2;\n length += Math.sqrt(pointx3 * pointx3 + pointy3 * pointy3);\n }\n pointx2 = pointx1;\n pointy2 = pointy1;\n }\n return length;\n };\n /* Calculate parametric value of x or y given t and the\n four point(startpoint, controlpoint1, controlpoint2, endpoint) coordinates of a cubic bezier curve.*/\n SignatureBase.prototype.bezierPointCalc = function (t, startpoint, cp1, cp2, endpoint) {\n return startpoint * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * cp1 * (1.0 - t) * (1.0 - t) * t + 3.0 *\n cp2 * (1.0 - t) * t * t + endpoint * t * t * t;\n };\n /* Velocity between the current point and last point.*/\n SignatureBase.prototype.pointVelocityCalc = function (startPoint) {\n return (this.time !== startPoint.time) ? this.distanceTo(startPoint) / (this.time - startPoint.time) : 0;\n };\n /* Distance between the current point and last point.*/\n SignatureBase.prototype.distanceTo = function (start) {\n return Math.sqrt(Math.pow(this.pointX - start.x, 2) + Math.pow(this.pointY - start.y, 2));\n };\n SignatureBase.prototype.isRead = function (isRead) {\n if (isRead) {\n EventHandler.remove(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler);\n }\n else if (!this.disabled) {\n EventHandler.add(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler, this);\n }\n };\n SignatureBase.prototype.enableOrDisable = function (isDisable) {\n this.disabled = isDisable;\n if (isDisable) {\n this.reDraw('0.5');\n this.isRead(true);\n }\n else {\n this.reDraw('1');\n this.isRead(false);\n }\n };\n SignatureBase.prototype.reDraw = function (opacity) {\n var data = this.canvasContext.getImageData(0, 0, this.element.width, this.element.height);\n this.canvasContext.clearRect(0, 0, this.element.width, this.element.height);\n this.element.style.opacity = opacity;\n this.canvasContext.putImageData(data, 0, 0);\n };\n SignatureBase.prototype.updateSnapCollection = function (isClear) {\n if (isNullOrUndefined(this.incStep)) {\n this.incStep = -1;\n this.incStep++;\n this.snapColl = [];\n this.clearArray = [];\n }\n else {\n this.incStep++;\n }\n if (this.incStep < this.snapColl.length) {\n this.snapColl.length = this.incStep;\n }\n if (this.incStep > 0) {\n var canvasNew = this.createElement('canvas', { className: 'e-' + this.getModuleName() + '-wrapper' });\n var canvasContextNew = canvasNew.getContext('2d');\n canvasNew.width = this.canvasContext.canvas.width;\n canvasNew.height = this.canvasContext.canvas.height;\n canvasContextNew.drawImage(this.canvasContext.canvas, 0, 0, canvasNew.width, canvasNew.height);\n this.snapColl.push(canvasNew.toDataURL());\n }\n else {\n this.snapColl.push(this.canvasContext.canvas.toDataURL());\n }\n if (isClear) {\n this.clearArray.push(this.incStep);\n }\n };\n SignatureBase.prototype.setBackgroundImage = function (imageSrc) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var imageObj = new Image();\n imageObj.crossOrigin = 'anonymous';\n imageObj.src = imageSrc;\n imageObj.onload = function () {\n proxy.canvasContext.globalCompositeOperation = 'source-over';\n proxy.canvasContext.drawImage(imageObj, 0, 0, proxy.element.width, proxy.element.height);\n proxy.updateSnapCollection();\n proxy.saveBackground(true);\n };\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n };\n SignatureBase.prototype.setBackgroundColor = function (color) {\n var canvasEle = this.canvasContext;\n canvasEle.strokeStyle = color;\n var i;\n var j;\n for (i = 1; i <= canvasEle.canvas.width; i++) {\n for (j = 1; j <= canvasEle.canvas.height; j++) {\n canvasEle.strokeRect(0, 0, i, j);\n }\n }\n this.updateSnapCollection();\n };\n SignatureBase.prototype.loadPersistedSignature = function () {\n if (isNullOrUndefined(this.signatureValue)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var lastImage = new Image();\n lastImage.src = this.signatureValue;\n lastImage.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(lastImage, 0, 0);\n proxy.updateSnapCollection();\n };\n this.isSignatureEmpty = false;\n };\n /**\n * To get the signature as Blob.\n *\n * @param {string} url - specify the url/base 64 string to get blob of the signature.\n * @returns {Blob}.\n */\n SignatureBase.prototype.getBlob = function (url) {\n var arr = url.split(',');\n var type = 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: type });\n };\n SignatureBase.prototype.download = function (blob, fileName) {\n var blobUrl = URL.createObjectURL(blob);\n var a = document.createElement('a');\n a.href = blobUrl;\n a.target = '_parent';\n a.download = fileName;\n (document.body || document.documentElement).appendChild(a);\n a.click();\n a.parentNode.removeChild(a);\n };\n /**\n * To refresh the signature.\n *\n * @private\n * @returns {void}.\n */\n SignatureBase.prototype.refresh = function () {\n this.pointColl = [];\n this.lastVelocity = 0;\n this.lastWidth = (this.minStrokeWidth + this.maxStrokeWidth) / 2;\n };\n /**\n * Erases all the signature strokes signed by user.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.clear = function () {\n var args = { actionName: 'clear' };\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n this.refresh();\n this.updateSnapCollection(true);\n this.isSignatureEmpty = true;\n if (!this.isBlazor) {\n this.trigger('change', args);\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'Clear');\n }\n };\n /**\n * Undo the last user action.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.undo = function () {\n var args = { actionName: 'undo' };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (this.incStep > 0) {\n this.incStep--;\n var undoImg_1 = new Image();\n undoImg_1.src = this.snapColl[this.incStep];\n undoImg_1.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(undoImg_1, 0, 0, proxy.element.width, proxy.element.height);\n };\n }\n this.isClear();\n if (!this.isBlazor) {\n this.trigger('change', args);\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'Undo');\n }\n };\n /**\n * Redo the last user action.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.redo = function () {\n var args = { actionName: 'redo' };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (this.incStep < this.snapColl.length - 1) {\n this.incStep++;\n var redoImg_1 = new Image();\n redoImg_1.src = this.snapColl[this.incStep];\n redoImg_1.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(redoImg_1, 0, 0, proxy.element.width, proxy.element.height);\n };\n }\n this.isClear();\n if (!this.isBlazor) {\n this.trigger('change', args);\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'Redo');\n }\n };\n SignatureBase.prototype.isClear = function () {\n if (this.clearArray) {\n var empty = false;\n for (var i = 0; i < this.clearArray.length; i++) {\n if (this.clearArray[i] === this.incStep) {\n this.isSignatureEmpty = true;\n empty = true;\n }\n }\n if (!empty) {\n this.isSignatureEmpty = false;\n }\n }\n };\n /**\n * To check whether the signature is empty or not.\n *\n * @returns {boolean}.\n */\n SignatureBase.prototype.isEmpty = function () {\n return this.isSignatureEmpty;\n };\n /**\n * To check whether the undo collection is empty or not.\n *\n * @returns {boolean}.\n */\n SignatureBase.prototype.canUndo = function () {\n return this.incStep > 0;\n };\n /**\n * To check whether the redo collection is empty or not.\n *\n * @returns {boolean}.\n */\n SignatureBase.prototype.canRedo = function () {\n return this.incStep < this.snapColl.length - 1;\n };\n /**\n * To draw the signature based on the given text, with the font family and font size.\n *\n * @param {string} text - specify text to be drawn as signature.\n * @param {string} fontFamily - specify font family of a signature.\n * @param {number} fontSize - specify font size of a signature.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.draw = function (text, fontFamily, fontSize) {\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n fontFamily = fontFamily || 'Arial';\n fontSize = fontSize || 30;\n this.canvasContext.font = fontSize + 'px ' + fontFamily;\n this.canvasContext.textAlign = 'center';\n this.canvasContext.textBaseline = 'middle';\n this.canvasContext.fillText(text, this.element.width / 2, this.element.height / 2);\n this.updateSnapCollection();\n this.isSignatureEmpty = false;\n };\n /**\n * To load the signature with the given base 64 string, height and width.\n *\n * @param {string} signature - specify the url/base 64 string to be drawn as signature.\n * @param {number} width - specify the width of the loaded signature image.\n * @param {number} height - specify the height of the loaded signature image.\n * @returns {void}.\n */\n SignatureBase.prototype.load = function (signature, width, height) {\n height = height || this.element.height;\n width = width || this.element.width;\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var bitmapImage = new Image();\n bitmapImage.src = signature;\n bitmapImage.onload = function () {\n Promise.all([\n createImageBitmap(bitmapImage, 0, 0, width, height)\n ]).then(function (results) {\n var tempCanvas = document.createElement('canvas');\n tempCanvas.width = width;\n tempCanvas.height = height;\n tempCanvas.getContext('2d').drawImage(results[0], 0, 0);\n proxy.canvasContext.drawImage(tempCanvas, 0, 0, width, height, 0, 0, proxy.element.width, proxy.element.height);\n proxy.updateSnapCollection();\n });\n };\n this.isSignatureEmpty = false;\n };\n SignatureBase.prototype.saveBackground = function (savebg) {\n var imageSrc;\n if (savebg && this.backgroundImage) {\n imageSrc = this.snapColl[this.incStep - 1];\n }\n else {\n imageSrc = this.snapColl[this.incStep];\n }\n if (!savebg) {\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n if (this.backgroundImage) {\n this.setBackgroundImage(this.backgroundImage);\n }\n else if (this.backgroundColor) {\n this.setBackgroundColor(this.backgroundColor);\n savebg = true;\n }\n }\n if (savebg) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n var imageObj_1 = new Image();\n imageObj_1.crossOrigin = 'anonymous';\n imageObj_1.src = imageSrc;\n imageObj_1.onload = function () {\n proxy_1.backgroundLoaded = true;\n proxy_1.canvasContext.globalCompositeOperation = 'source-over';\n proxy_1.canvasContext.drawImage(imageObj_1, 0, 0, proxy_1.element.width, proxy_1.element.height);\n proxy_1.save(proxy_1.fileType, proxy_1.fileName);\n };\n }\n };\n /**\n * To save the signature with the given file type and file name.\n *\n * @param {SignatureFileType} type - specify type of the file to be saved a signature.\n * @param {string} fileName - specify name of the file to be saved a signature.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.save = function (type, fileName) {\n if (this.saveWithBackground && this.backgroundLoaded == null && (this.backgroundImage || this.backgroundColor)) {\n this.backgroundLoaded = false;\n this.fileType = type;\n this.fileName = fileName;\n this.saveBackground(false);\n }\n else if (type === 'Svg') {\n fileName = fileName || 'Signature';\n this.toSVG(fileName);\n }\n else if (type === 'Jpeg') {\n fileName = fileName || 'Signature';\n if (!this.saveWithBackground || this.saveWithBackground && !(this.backgroundImage || this.backgroundColor)) {\n this.toJPEG(fileName);\n }\n else {\n var dataURL = this.canvasContext.canvas.toDataURL('image/jpeg');\n this.download(this.getBlob(dataURL), fileName + '.' + 'jpeg');\n }\n }\n else {\n fileName = fileName || 'Signature';\n var dataURL = this.canvasContext.canvas.toDataURL('image/png');\n this.download(this.getBlob(dataURL), fileName + '.' + 'png');\n }\n if (this.saveWithBackground && this.backgroundLoaded) {\n this.resetSnap();\n }\n };\n SignatureBase.prototype.resetSnap = function () {\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var restoreObj = new Image();\n restoreObj.src = this.snapColl[this.incStep - 1];\n restoreObj.onload = function () {\n proxy.canvasContext.drawImage(restoreObj, 0, 0, proxy.element.width, proxy.element.height);\n proxy.updateSnapCollection();\n };\n this.backgroundLoaded = null;\n this.snapColl.pop();\n this.incStep--;\n this.snapColl.pop();\n this.incStep--;\n };\n SignatureBase.prototype.toJPEG = function (fileName) {\n var _this = this;\n var imageSrc = this.snapColl[this.incStep];\n this.setBackgroundColor('#ffffff');\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var imageObj = new Image();\n imageObj.crossOrigin = 'anonymous';\n imageObj.src = imageSrc;\n imageObj.onload = function () {\n proxy.canvasContext.globalCompositeOperation = 'source-over';\n proxy.canvasContext.drawImage(imageObj, 0, 0, proxy.element.width, proxy.element.height);\n var dataURL = proxy.canvasContext.canvas.toDataURL('image/jpeg');\n proxy.download(proxy.getBlob(dataURL), fileName + '.' + 'jpeg');\n proxy.canvasContext.clearRect(0, 0, proxy.canvasContext.canvas.width, proxy.canvasContext.canvas.height);\n _this.resizeHandler();\n };\n this.snapColl.pop();\n this.incStep--;\n };\n SignatureBase.prototype.toSVG = function (fileName) {\n var dataUrl = this.canvasContext.canvas.toDataURL();\n var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('width', this.canvasContext.canvas.width.toString());\n svg.setAttribute('height', this.canvasContext.canvas.height.toString());\n var XLinkNS = 'http://www.w3.org/1999/xlink';\n var img = document.createElementNS('http://www.w3.org/2000/svg', 'image');\n img.setAttributeNS(null, 'height', this.canvasContext.canvas.height.toString());\n img.setAttributeNS(null, 'width', this.canvasContext.canvas.width.toString());\n img.setAttributeNS(XLinkNS, 'xlink:href', dataUrl);\n svg.appendChild(img);\n var prefix = 'data:image/svg+xml;base64,';\n var header = '';\n var footer = '';\n var body = svg.innerHTML;\n var data = header + body + footer;\n var svgDataUrl = prefix + btoa(data);\n if (fileName == null) {\n return svgDataUrl;\n }\n else {\n this.download(this.getBlob(svgDataUrl), fileName + '.' + 'svg');\n return null;\n }\n };\n /**\n * To save the signature as Blob.\n *\n * @returns {Blob}.\n */\n SignatureBase.prototype.saveAsBlob = function () {\n return this.getBlob(this.canvasContext.canvas.toDataURL('image/png'));\n };\n /**\n * To get the signature as Base 64.\n *\n * @private\n * @param {SignatureFileType} type - Specifies the type of the image format.\n * @returns {string}.\n */\n SignatureBase.prototype.getSignature = function (type) {\n if (type === 'Jpeg') {\n var imgData = this.canvasContext.getImageData(0, 0, this.element.width, this.element.height);\n var data = imgData.data;\n for (var i = 0; i < data.length; i += 4) {\n if (data[i + 3] < 255) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n data[i + 3] = 255 - data[i + 3];\n }\n }\n this.canvasContext.putImageData(imgData, 0, 0);\n var dataURL = this.canvasContext.canvas.toDataURL('image/jpeg');\n this.resizeHandler();\n return dataURL;\n }\n else if (type === 'Svg') {\n return this.toSVG(null);\n }\n else {\n return this.canvasContext.canvas.toDataURL('image/png');\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n SignatureBase.prototype.getModuleName = function () {\n return 'signature';\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n SignatureBase.prototype.getPersistData = function () {\n this.signatureValue = this.snapColl[this.incStep];\n return this.addOnPersist(['signatureValue']);\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 SignatureBase.prototype.destroy = function () {\n this.unwireEvents(null);\n removeClass([this.element], 'e-' + this.getModuleName());\n this.element.removeAttribute('tabindex');\n this.pointColl = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Modified onPropertyChanged method for both blazor and EJ2 signature component.\n *\n * @private\n * @param {string} key - Specifies the property, which changed.\n * @param {string} value - Specifies the property value changed.\n * @returns {void}\n */\n SignatureBase.prototype.propertyChanged = function (key, value) {\n var canvasNew = this.canvasContext;\n switch (key) {\n case 'backgroundColor':\n canvasNew.canvas.style.backgroundColor = value;\n this.backgroundColor = value;\n break;\n case 'backgroundImage':\n canvasNew.canvas.style.backgroundImage = 'url(' + value + ')';\n this.backgroundImage = value;\n break;\n case 'strokeColor':\n canvasNew.fillStyle = value;\n this.strokeColor = value;\n break;\n case 'saveWithBackground':\n this.saveWithBackground = value;\n break;\n case 'maxStrokeWidth':\n this.maxStrokeWidth = value;\n break;\n case 'minStrokeWidth':\n this.minStrokeWidth = value;\n break;\n case 'velocity':\n this.velocity = value;\n break;\n case 'isReadOnly':\n this.isRead(value);\n break;\n case 'disabled':\n this.enableOrDisable(value);\n break;\n }\n };\n return SignatureBase;\n}(Component));\nexport { SignatureBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, addClass } from '@syncfusion/ej2-base';\nimport { SignatureBase } from '../common/signature-base';\n/**\n * The Signature component allows user to draw smooth signatures as vector outline of strokes using variable width bezier curve interpolation.\n * It allows to save signature as image.\n * You can use your finger, pen, or mouse on a tablet, touchscreen, etc., to draw your own signature on this Signature component.\n * Signature component is a user interface to draw the Signature or Text.\n * It provides supports for various Background color, Stroke color and Background Image.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Signature = /** @class */ (function (_super) {\n __extends(Signature, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {SignatureModel} options - Specifies the Signature model.\n * @param {string | HTMLCanvasElement} element - Specifies the element.\n * @private\n */\n function Signature(options, element) {\n return _super.call(this, options, element) || this;\n }\n Signature.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * To Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Signature.prototype.render = function () {\n this.initialize();\n };\n Signature.prototype.initialize = function () {\n addClass([this.element], 'e-' + this.getModuleName());\n _super.prototype.initialize.call(this, this.element);\n if (this.enablePersistence) {\n this.loadPersistedSignature();\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n Signature.prototype.getModuleName = function () {\n return 'signature';\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Signature.prototype.getPersistData = function () {\n return this.addOnPersist(['signatureValue']);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SignatureModel} newProp - Specifies new properties\n * @param {SignatureModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Signature.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 'backgroundColor':\n _super.prototype.propertyChanged.call(this, prop, newProp.backgroundColor);\n break;\n case 'backgroundImage':\n _super.prototype.propertyChanged.call(this, prop, newProp.backgroundImage);\n break;\n case 'strokeColor':\n if (newProp.strokeColor !== oldProp.strokeColor) {\n _super.prototype.propertyChanged.call(this, prop, newProp.strokeColor);\n }\n break;\n case 'saveWithBackground':\n _super.prototype.propertyChanged.call(this, prop, newProp.saveWithBackground);\n break;\n case 'isReadOnly':\n _super.prototype.propertyChanged.call(this, prop, newProp.isReadOnly);\n break;\n case 'disabled':\n _super.prototype.propertyChanged.call(this, prop, newProp.disabled);\n break;\n }\n }\n };\n __decorate([\n Property('')\n ], Signature.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('')\n ], Signature.prototype, \"backgroundImage\", void 0);\n __decorate([\n Property(false)\n ], Signature.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Signature.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property(true)\n ], Signature.prototype, \"saveWithBackground\", void 0);\n __decorate([\n Property('#000000')\n ], Signature.prototype, \"strokeColor\", void 0);\n __decorate([\n Property(0.5)\n ], Signature.prototype, \"minStrokeWidth\", void 0);\n __decorate([\n Property(2)\n ], Signature.prototype, \"maxStrokeWidth\", void 0);\n __decorate([\n Property(0.7)\n ], Signature.prototype, \"velocity\", void 0);\n __decorate([\n Property('en-US')\n ], Signature.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Signature.prototype, \"enableRtl\", void 0);\n __decorate([\n Property(false)\n ], Signature.prototype, \"enablePersistence\", void 0);\n __decorate([\n Event()\n ], Signature.prototype, \"beforeSave\", void 0);\n __decorate([\n Event()\n ], Signature.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Signature.prototype, \"created\", void 0);\n Signature = __decorate([\n NotifyPropertyChanges\n ], Signature);\n return Signature;\n}(SignatureBase));\nexport { Signature };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Signature } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Signature Component\n * ```html\n * \n * ```\n */\nvar SignatureComponent = /** @class */ (function (_super) {\n __extends(SignatureComponent, _super);\n function SignatureComponent(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 SignatureComponent.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('canvas', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return SignatureComponent;\n}(Signature));\nexport { SignatureComponent };\napplyMixins(SignatureComponent, [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.getDataModule().isRemote() &&\n this.parent.parentDetails ? this.getData() : 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 if (isNullOrUndefined(e) && this.parent.isAutoFitColumns) {\n this.parent.autoFitColumns();\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.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\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.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\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.parentDetails && !this.parent.getDataModule().isRemote()) {\n currentViewData = this.getData();\n }\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","import { addClass, Browser, removeClass, EventHandler, formatUnit, isNullOrUndefined, isNullOrUndefined as isNOU } 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 && !isNOU(args.element.parentElement.querySelector('.e-cell-merge')) &&\n (!isNOU(args.element.parentElement.querySelector('.e-cell-horizontal-split')) || !isNOU(args.element.parentElement.querySelector('.e-cell-vertical-split')))) {\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 * @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, defaultColor) {\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 var initialBackgroundColor = (isNullOrUndefined(defaultColor)) ? proxy.parent.backgroundColor.default : defaultColor;\n inlineEle.style.borderBottomColor = (item === 'backgroundcolor') ?\n initialBackgroundColor : 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 value: '#fff',\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 { detach, getUniqueID, append, closest, selectAll, select, isNullOrUndefined as isNOU } 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 = { 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 = 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 * 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 = 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, isNullOrUndefined as isNOU } 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.keyUpQT = function (e) {\n if (e.which == 27) {\n this.hideQuickToolbars();\n }\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 EventHandler.add(this.linkQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.imageQTBar) {\n EventHandler.add(this.imageQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.imageQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.textQTBar) {\n EventHandler.add(this.textQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.textQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.tableQTBar) {\n EventHandler.add(this.tableQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.tableQTBar.element, 'keyup', this.keyUpQT, 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 EventHandler.add(this.inlineQTBar.element, 'keyup', this.keyUpQT, 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 || target.tagName.toLowerCase() === \"img\") {\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 var startNode = this.parent.getRange().startContainer.parentElement;\n var endNode = this.parent.getRange().endContainer.parentElement;\n if ((isNOU(closest(startNode, 'A')) || isNOU(closest(endNode, 'A'))) && (!closest(target, 'td,th') || !range.collapsed) &&\n (target.tagName !== 'IMG' || this.parent.getRange().startOffset !== this.parent.getRange().endOffset)) {\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 EventHandler.remove(this.linkQTBar.element, 'keyup', this.keyUpQT);\n this.linkQTBar.destroy();\n }\n if (this.textQTBar) {\n EventHandler.remove(this.textQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.textQTBar.element, 'keyup', this.keyUpQT);\n this.textQTBar.destroy();\n }\n if (this.imageQTBar) {\n EventHandler.remove(this.imageQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.imageQTBar.element, 'keyup', this.keyUpQT);\n this.imageQTBar.destroy();\n }\n if (this.tableQTBar) {\n EventHandler.remove(this.tableQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.tableQTBar.element, 'keyup', this.keyUpQT);\n this.tableQTBar.destroy();\n }\n if (this.inlineQTBar) {\n EventHandler.remove(this.inlineQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.inlineQTBar.element, 'keyup', this.keyUpQT);\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","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogContentUtilityClass(slot) {\n return generateUtilityClass('MuiDialogContent', slot);\n}\nconst dialogContentClasses = generateUtilityClasses('MuiDialogContent', ['root', 'dividers']);\nexport default dialogContentClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"dividers\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDialogContentUtilityClass } from './dialogContentClasses';\nimport dialogTitleClasses from '../DialogTitle/dialogTitleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n dividers\n } = ownerState;\n const slots = {\n root: ['root', dividers && 'dividers']\n };\n return composeClasses(slots, getDialogContentUtilityClass, classes);\n};\n\nconst DialogContentRoot = styled('div', {\n name: 'MuiDialogContent',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.dividers && styles.dividers];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n flex: '1 1 auto',\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch',\n overflowY: 'auto',\n padding: '20px 24px'\n}, ownerState.dividers ? {\n padding: '16px 24px',\n borderTop: `1px solid ${theme.palette.divider}`,\n borderBottom: `1px solid ${theme.palette.divider}`\n} : {\n [`.${dialogTitleClasses.root} + &`]: {\n paddingTop: 0\n }\n}));\nconst DialogContent = /*#__PURE__*/React.forwardRef(function DialogContent(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogContent'\n });\n\n const {\n className,\n dividers = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n dividers\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogContentRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContent.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * Display the top and bottom dividers.\n * @default false\n */\n dividers: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogContent;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogContentTextUtilityClass(slot) {\n return generateUtilityClass('MuiDialogContentText', slot);\n}\nconst dialogContentTextClasses = generateUtilityClasses('MuiDialogContentText', ['root']);\nexport default dialogContentTextClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Typography from '../Typography';\nimport { getDialogContentTextUtilityClass } from './dialogContentTextClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n const composedClasses = composeClasses(slots, getDialogContentTextUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\n\nconst DialogContentTextRoot = styled(Typography, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiDialogContentText',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\nconst DialogContentText = /*#__PURE__*/React.forwardRef(function DialogContentText(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogContentText'\n });\n\n const ownerState = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogContentTextRoot, _extends({\n component: \"p\",\n variant: \"body1\",\n color: \"text.secondary\",\n ref: ref,\n ownerState: ownerState\n }, props, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContentText.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogContentText;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getListUtilityClass(slot) {\n return generateUtilityClass('MuiList', slot);\n}\nconst listClasses = generateUtilityClasses('MuiList', ['root', 'padding', 'dense', 'subheader']);\nexport default listClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from './ListContext';\nimport { getListUtilityClass } from './listClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePadding,\n dense,\n subheader\n } = ownerState;\n const slots = {\n root: ['root', !disablePadding && 'padding', dense && 'dense', subheader && 'subheader']\n };\n return composeClasses(slots, getListUtilityClass, classes);\n};\n\nconst ListRoot = styled('ul', {\n name: 'MuiList',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disablePadding && styles.padding, ownerState.dense && styles.dense, ownerState.subheader && styles.subheader];\n }\n})(({\n ownerState\n}) => _extends({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative'\n}, !ownerState.disablePadding && {\n paddingTop: 8,\n paddingBottom: 8\n}, ownerState.subheader && {\n paddingTop: 0\n}));\nconst List = /*#__PURE__*/React.forwardRef(function List(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiList'\n });\n\n const {\n children,\n className,\n component = 'ul',\n dense = false,\n disablePadding = false,\n subheader\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const context = React.useMemo(() => ({\n dense\n }), [dense]);\n\n const ownerState = _extends({}, props, {\n component,\n dense,\n disablePadding\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: context,\n children: /*#__PURE__*/_jsxs(ListRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [subheader, children]\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n * the list and list items.\n * The prop is available to descendant components as the `dense` context.\n * @default false\n */\n dense: PropTypes.bool,\n\n /**\n * If `true`, vertical padding is removed from the list.\n * @default false\n */\n disablePadding: PropTypes.bool,\n\n /**\n * The content of the subheader, normally `ListSubheader`.\n */\n subheader: PropTypes.node,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default List;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getLinkUtilityClass(slot) {\n return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"onBlur\", \"onFocus\", \"TypographyClasses\", \"underline\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha, getPath } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useForkRef from '../utils/useForkRef';\nimport Typography from '../Typography';\nimport linkClasses, { getLinkUtilityClass } from './linkClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst colorTransformations = {\n primary: 'primary.main',\n textPrimary: 'text.primary',\n secondary: 'secondary.main',\n textSecondary: 'text.secondary',\n error: 'error.main'\n};\n\nconst transformDeprecatedColors = color => {\n return colorTransformations[color] || color;\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n component,\n focusVisible,\n underline\n } = ownerState;\n const slots = {\n root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n };\n return composeClasses(slots, getLinkUtilityClass, classes);\n};\n\nconst LinkRoot = styled(Typography, {\n name: 'MuiLink',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n }\n})(({\n theme,\n ownerState\n}) => {\n const color = getPath(theme, `palette.${transformDeprecatedColors(ownerState.color)}`) || ownerState.color;\n return _extends({}, ownerState.underline === 'none' && {\n textDecoration: 'none'\n }, ownerState.underline === 'hover' && {\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline'\n }\n }, ownerState.underline === 'always' && {\n textDecoration: 'underline',\n textDecorationColor: color !== 'inherit' ? alpha(color, 0.4) : undefined,\n '&:hover': {\n textDecorationColor: 'inherit'\n }\n }, ownerState.component === 'button' && {\n position: 'relative',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n [`&.${linkClasses.focusVisible}`]: {\n outline: 'auto'\n }\n });\n});\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiLink'\n });\n\n const {\n className,\n color = 'primary',\n component = 'a',\n onBlur,\n onFocus,\n TypographyClasses,\n underline = 'always',\n variant = 'inherit'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n isFocusVisibleRef,\n onBlur: handleBlurVisible,\n onFocus: handleFocusVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n const handlerRef = useForkRef(ref, focusVisibleRef);\n\n const handleBlur = event => {\n handleBlurVisible(event);\n\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleFocus = event => {\n handleFocusVisible(event);\n\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const ownerState = _extends({}, props, {\n color,\n component,\n focusVisible,\n underline,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(LinkRoot, _extends({\n className: clsx(classes.root, className),\n classes: TypographyClasses,\n color: color,\n component: component,\n onBlur: handleBlur,\n onFocus: handleFocus,\n ref: handlerRef,\n ownerState: ownerState,\n variant: variant\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the link.\n * @default 'primary'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .any,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: elementTypeAcceptingRef,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * `classes` prop applied to the [`Typography`](/api/typography/) element.\n */\n TypographyClasses: PropTypes.object,\n\n /**\n * Controls when the link should have an underline.\n * @default 'always'\n */\n underline: PropTypes.oneOf(['always', 'hover', 'none']),\n\n /**\n * Applies the theme typography styles.\n * @default 'inherit'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getCollapseUtilityClass(slot) {\n return generateUtilityClass('MuiCollapse', slot);\n}\nconst collapseClasses = generateUtilityClasses('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\nexport default collapseClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"addEndListener\", \"children\", \"className\", \"collapsedSize\", \"component\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"orientation\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { duration } from '../styles/createTransitions';\nimport { getTransitionProps } from '../transitions/utils';\nimport useTheme from '../styles/useTheme';\nimport { useForkRef } from '../utils';\nimport { getCollapseUtilityClass } from './collapseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n orientation,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `${orientation}`],\n entered: ['entered'],\n hidden: ['hidden'],\n wrapper: ['wrapper', `${orientation}`],\n wrapperInner: ['wrapperInner', `${orientation}`]\n };\n return composeClasses(slots, getCollapseUtilityClass, classes);\n};\n\nconst CollapseRoot = styled('div', {\n name: 'MuiCollapse',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n height: 0,\n overflow: 'hidden',\n transition: theme.transitions.create('height')\n}, ownerState.orientation === 'horizontal' && {\n height: 'auto',\n width: 0,\n transition: theme.transitions.create('width')\n}, ownerState.state === 'entered' && _extends({\n height: 'auto',\n overflow: 'visible'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto'\n}), ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && {\n visibility: 'hidden'\n}));\nconst CollapseWrapper = styled('div', {\n name: 'MuiCollapse',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => styles.wrapper\n})(({\n ownerState\n}) => _extends({\n // Hack to get children with a negative margin to not falsify the height computation.\n display: 'flex',\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\nconst CollapseWrapperInner = styled('div', {\n name: 'MuiCollapse',\n slot: 'WrapperInner',\n overridesResolver: (props, styles) => styles.wrapperInner\n})(({\n ownerState\n}) => _extends({\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/components/steppers/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nconst Collapse = /*#__PURE__*/React.forwardRef(function Collapse(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCollapse'\n });\n\n const {\n addEndListener,\n children,\n className,\n collapsedSize: collapsedSizeProp = '0px',\n component,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n orientation = 'vertical',\n style,\n timeout = duration.standard,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n orientation,\n collapsedSize: collapsedSizeProp\n });\n\n const classes = useUtilityClasses(ownerState);\n const theme = useTheme();\n const timer = React.useRef();\n const wrapperRef = React.useRef(null);\n const autoTransitionDuration = React.useRef();\n const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n const isHorizontal = orientation === 'horizontal';\n const size = isHorizontal ? 'width' : 'height';\n React.useEffect(() => {\n return () => {\n clearTimeout(timer.current);\n };\n }, []);\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(ref, nodeRef);\n\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n\n const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n if (wrapperRef.current && isHorizontal) {\n // Set absolute position to get the size of collapsed content\n wrapperRef.current.style.position = 'absolute';\n }\n\n node.style[size] = collapsedSize;\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n const wrapperSize = getWrapperSize();\n\n if (wrapperRef.current && isHorizontal) {\n // After the size is read reset the position back to default\n wrapperRef.current.style.position = '';\n }\n\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n\n if (timeout === 'auto') {\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n\n node.style[size] = `${wrapperSize}px`;\n node.style.transitionTimingFunction = transitionTimingFunction;\n\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n node.style[size] = 'auto';\n\n if (onEntered) {\n onEntered(node, isAppearing);\n }\n });\n const handleExit = normalizedTransitionCallback(node => {\n node.style[size] = `${getWrapperSize()}px`;\n\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleExiting = normalizedTransitionCallback(node => {\n const wrapperSize = getWrapperSize();\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n\n if (timeout === 'auto') {\n // TODO: rename getAutoHeightDuration to something more generic (width support)\n // Actually it just calculates animation duration based on size\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n\n node.style[size] = collapsedSize;\n node.style.transitionTimingFunction = transitionTimingFunction;\n\n if (onExiting) {\n onExiting(node);\n }\n });\n\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: inProp,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => /*#__PURE__*/_jsx(CollapseRoot, _extends({\n as: component,\n className: clsx(classes.root, className, {\n 'entered': classes.entered,\n 'exited': !inProp && collapsedSize === '0px' && classes.hidden\n }[state]),\n style: _extends({\n [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize\n }, style),\n ownerState: _extends({}, ownerState, {\n state\n }),\n ref: handleRef\n }, childProps, {\n children: /*#__PURE__*/_jsx(CollapseWrapper, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapper,\n ref: wrapperRef,\n children: /*#__PURE__*/_jsx(CollapseWrapperInner, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapperInner,\n children: children\n })\n })\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * 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 addEndListener: PropTypes.func,\n\n /**\n * The content node to be collapsed.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The width (horizontal) or height (vertical) of the container when collapsed.\n * @default '0px'\n */\n collapsedSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: elementTypeAcceptingRef,\n\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n\n /**\n * The transition orientation.\n * @default 'vertical'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default duration.standard\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nCollapse.muiSupportAuto = true;\nexport default Collapse;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getAccordionSummaryUtilityClass(slot) {\n return generateUtilityClass('MuiAccordionSummary', slot);\n}\nconst accordionSummaryClasses = generateUtilityClasses('MuiAccordionSummary', ['root', 'expanded', 'focusVisible', 'disabled', 'gutters', 'contentGutters', 'content', 'expandIconWrapper']);\nexport default accordionSummaryClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"expandIcon\", \"focusVisibleClassName\", \"onClick\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport AccordionContext from '../Accordion/AccordionContext';\nimport accordionSummaryClasses, { getAccordionSummaryUtilityClass } from './accordionSummaryClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n expanded,\n disabled,\n disableGutters\n } = ownerState;\n const slots = {\n root: ['root', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n focusVisible: ['focusVisible'],\n content: ['content', expanded && 'expanded', !disableGutters && 'contentGutters'],\n expandIconWrapper: ['expandIconWrapper', expanded && 'expanded']\n };\n return composeClasses(slots, getAccordionSummaryUtilityClass, classes);\n};\n\nconst AccordionSummaryRoot = styled(ButtonBase, {\n name: 'MuiAccordionSummary',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme,\n ownerState\n}) => {\n const transition = {\n duration: theme.transitions.duration.shortest\n };\n return _extends({\n display: 'flex',\n minHeight: 48,\n padding: theme.spacing(0, 2),\n transition: theme.transitions.create(['min-height', 'background-color'], transition),\n [`&.${accordionSummaryClasses.focusVisible}`]: {\n backgroundColor: theme.palette.action.focus\n },\n [`&.${accordionSummaryClasses.disabled}`]: {\n opacity: theme.palette.action.disabledOpacity\n },\n [`&:hover:not(.${accordionSummaryClasses.disabled})`]: {\n cursor: 'pointer'\n }\n }, !ownerState.disableGutters && {\n [`&.${accordionSummaryClasses.expanded}`]: {\n minHeight: 64\n }\n });\n});\nconst AccordionSummaryContent = styled('div', {\n name: 'MuiAccordionSummary',\n slot: 'Content',\n overridesResolver: (props, styles) => styles.content\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n flexGrow: 1,\n margin: '12px 0'\n}, !ownerState.disableGutters && {\n transition: theme.transitions.create(['margin'], {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${accordionSummaryClasses.expanded}`]: {\n margin: '20px 0'\n }\n}));\nconst AccordionSummaryExpandIconWrapper = styled('div', {\n name: 'MuiAccordionSummary',\n slot: 'ExpandIconWrapper',\n overridesResolver: (props, styles) => styles.expandIconWrapper\n})(({\n theme\n}) => ({\n display: 'flex',\n color: theme.palette.action.active,\n transform: 'rotate(0deg)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${accordionSummaryClasses.expanded}`]: {\n transform: 'rotate(180deg)'\n }\n}));\nconst AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAccordionSummary'\n });\n\n const {\n children,\n className,\n expandIcon,\n focusVisibleClassName,\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n disabled = false,\n disableGutters,\n expanded,\n toggle\n } = React.useContext(AccordionContext);\n\n const handleChange = event => {\n if (toggle) {\n toggle(event);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n const ownerState = _extends({}, props, {\n expanded,\n disabled,\n disableGutters\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(AccordionSummaryRoot, _extends({\n focusRipple: false,\n disableRipple: true,\n disabled: disabled,\n component: \"div\",\n \"aria-expanded\": expanded,\n className: clsx(classes.root, className),\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n onClick: handleChange,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(AccordionSummaryContent, {\n className: classes.content,\n ownerState: ownerState,\n children: children\n }), expandIcon && /*#__PURE__*/_jsx(AccordionSummaryExpandIconWrapper, {\n className: classes.expandIconWrapper,\n ownerState: ownerState,\n children: expandIcon\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionSummary.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The icon to display as the expand indicator.\n */\n expandIcon: PropTypes.node,\n\n /**\n * This prop can help identify which element has keyboard focus.\n * The class name will be applied when the element gains the focus through keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionSummary;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getAccordionDetailsUtilityClass(slot) {\n return generateUtilityClass('MuiAccordionDetails', slot);\n}\nconst accordionDetailsClasses = generateUtilityClasses('MuiAccordionDetails', ['root']);\nexport default accordionDetailsClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getAccordionDetailsUtilityClass } from './accordionDetailsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getAccordionDetailsUtilityClass, classes);\n};\n\nconst AccordionDetailsRoot = styled('div', {\n name: 'MuiAccordionDetails',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n padding: theme.spacing(1, 2, 2)\n}));\nconst AccordionDetails = /*#__PURE__*/React.forwardRef(function AccordionDetails(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAccordionDetails'\n });\n\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(AccordionDetailsRoot, _extends({\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionDetails.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionDetails;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getCircularProgressUtilityClass(slot) {\n return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"disableShrink\", \"size\", \"style\", \"thickness\", \"value\", \"variant\"];\n\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { keyframes, css } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getCircularProgressUtilityClass } from './circularProgressClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes(_t || (_t = _`\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n`));\nconst circularDashKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -15px;\n }\n\n 100% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -125px;\n }\n`));\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n color,\n disableShrink\n } = ownerState;\n const slots = {\n root: ['root', variant, `color${capitalize(color)}`],\n svg: ['svg'],\n circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n };\n return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\n\nconst CircularProgressRoot = styled('span', {\n name: 'MuiCircularProgress',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n display: 'inline-block'\n}, ownerState.variant === 'determinate' && {\n transition: theme.transitions.create('transform')\n}, ownerState.color !== 'inherit' && {\n color: theme.palette[ownerState.color].main\n}), ({\n ownerState\n}) => ownerState.variant === 'indeterminate' && css(_t3 || (_t3 = _`\n animation: ${0} 1.4s linear infinite;\n `), circularRotateKeyframe));\nconst CircularProgressSVG = styled('svg', {\n name: 'MuiCircularProgress',\n slot: 'Svg',\n overridesResolver: (props, styles) => styles.svg\n})({\n display: 'block' // Keeps the progress centered\n\n});\nconst CircularProgressCircle = styled('circle', {\n name: 'MuiCircularProgress',\n slot: 'Circle',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n stroke: 'currentColor'\n}, ownerState.variant === 'determinate' && {\n transition: theme.transitions.create('stroke-dashoffset')\n}, ownerState.variant === 'indeterminate' && {\n // Some default value that looks fine waiting for the animation to kicks in.\n strokeDasharray: '80px, 200px',\n strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n\n}), ({\n ownerState\n}) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink && css(_t4 || (_t4 = _`\n animation: ${0} 1.4s ease-in-out infinite;\n `), circularDashKeyframe));\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\n\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCircularProgress'\n });\n\n const {\n className,\n color = 'primary',\n disableShrink = false,\n size = 40,\n style,\n thickness = 3.6,\n value = 0,\n variant = 'indeterminate'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n color,\n disableShrink,\n size,\n thickness,\n value,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n const circleStyle = {};\n const rootStyle = {};\n const rootProps = {};\n\n if (variant === 'determinate') {\n const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n circleStyle.strokeDasharray = circumference.toFixed(3);\n rootProps['aria-valuenow'] = Math.round(value);\n circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n rootStyle.transform = 'rotate(-90deg)';\n }\n\n return /*#__PURE__*/_jsx(CircularProgressRoot, _extends({\n className: clsx(classes.root, className),\n style: _extends({\n width: size,\n height: size\n }, rootStyle, style),\n ownerState: ownerState,\n ref: ref,\n role: \"progressbar\"\n }, rootProps, other, {\n children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n className: classes.svg,\n ownerState: ownerState,\n viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n className: classes.circle,\n style: circleStyle,\n ownerState: ownerState,\n cx: SIZE,\n cy: SIZE,\n r: (SIZE - thickness) / 2,\n fill: \"none\",\n strokeWidth: thickness\n })\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'primary'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n\n /**\n * If `true`, the shrink animation is disabled.\n * This only works if variant is `indeterminate`.\n * @default false\n */\n disableShrink: chainPropTypes(PropTypes.bool, props => {\n if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n }\n\n return null;\n }),\n\n /**\n * The size of the component.\n * If using a number, the pixel unit is assumed.\n * If using a string, you need to provide the CSS unit, e.g '3rem'.\n * @default 40\n */\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The thickness of the circle.\n * @default 3.6\n */\n thickness: PropTypes.number,\n\n /**\n * The value of the progress indicator for the determinate variant.\n * Value between 0 and 100.\n * @default 0\n */\n value: PropTypes.number,\n\n /**\n * The variant to use.\n * Use indeterminate when there is no progress value.\n * @default 'indeterminate'\n */\n variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"name\"],\n _excluded2 = [\"children\", \"className\", \"clone\", \"component\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { chainPropTypes, getDisplayName } from '@mui/utils';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport makeStyles from '../makeStyles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction omit(input, fields) {\n const output = {};\n Object.keys(input).forEach(prop => {\n if (fields.indexOf(prop) === -1) {\n output[prop] = input[prop];\n }\n });\n return output;\n} // styled-components's API removes the mapping between components and styles.\n// Using components as a low-level styling construct can be simpler.\n\n\nexport default function styled(Component) {\n const componentCreator = (style, options = {}) => {\n const {\n name\n } = options,\n stylesOptions = _objectWithoutPropertiesLoose(options, _excluded);\n\n if (process.env.NODE_ENV !== 'production' && Component === undefined) {\n throw new Error(['You are calling styled(Component)(style) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n\n let classNamePrefix = name;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n // Provide a better DX outside production.\n const displayName = getDisplayName(Component);\n\n if (displayName !== undefined) {\n classNamePrefix = displayName;\n }\n }\n }\n\n const stylesOrCreator = typeof style === 'function' ? theme => ({\n root: props => style(_extends({\n theme\n }, props))\n }) : {\n root: style\n };\n const useStyles = makeStyles(stylesOrCreator, _extends({\n Component,\n name: name || Component.displayName,\n classNamePrefix\n }, stylesOptions));\n let filterProps;\n let propTypes = {};\n\n if (style.filterProps) {\n filterProps = style.filterProps;\n delete style.filterProps;\n }\n /* eslint-disable react/forbid-foreign-prop-types */\n\n\n if (style.propTypes) {\n propTypes = style.propTypes;\n delete style.propTypes;\n }\n /* eslint-enable react/forbid-foreign-prop-types */\n\n\n const StyledComponent = /*#__PURE__*/React.forwardRef(function StyledComponent(props, ref) {\n const {\n children,\n className: classNameProp,\n clone,\n component: ComponentProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n\n const classes = useStyles(props);\n const className = clsx(classes.root, classNameProp);\n let spread = other;\n\n if (filterProps) {\n spread = omit(spread, filterProps);\n }\n\n if (clone) {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n className: clsx(children.props.className, className)\n }, spread));\n }\n\n if (typeof children === 'function') {\n return children(_extends({\n className\n }, spread));\n }\n\n const FinalComponent = ComponentProp || Component;\n return /*#__PURE__*/_jsx(FinalComponent, _extends({\n ref: ref,\n className: className\n }, spread, {\n children: children\n }));\n });\n process.env.NODE_ENV !== \"production\" ? StyledComponent.propTypes = _extends({\n /**\n * A render function or node.\n */\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the component will recycle it's children HTML element.\n * It's using `React.cloneElement` internally.\n *\n * This prop will be deprecated and removed in v5\n */\n clone: chainPropTypes(PropTypes.bool, props => {\n if (props.clone && props.component) {\n return new Error('You can not use the clone and component prop at the same time.');\n }\n\n return null;\n }),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType\n }, propTypes) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n StyledComponent.displayName = `Styled(${classNamePrefix})`;\n }\n\n hoistNonReactStatics(StyledComponent, Component);\n return StyledComponent;\n };\n\n return componentCreator;\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getSwitchUtilityClass(slot) {\n return generateUtilityClass('MuiSwitch', slot);\n}\nconst switchClasses = generateUtilityClasses('MuiSwitch', ['root', 'edgeStart', 'edgeEnd', 'switchBase', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium', 'checked', 'disabled', 'input', 'thumb', 'track']);\nexport default switchClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"edge\", \"size\", \"sx\"];\n// @inheritedComponent IconButton\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha, darken, lighten } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport SwitchBase from '../internal/SwitchBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport switchClasses, { getSwitchUtilityClass } from './switchClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n edge,\n size,\n color,\n checked,\n disabled\n } = ownerState;\n const slots = {\n root: ['root', edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`],\n switchBase: ['switchBase', `color${capitalize(color)}`, checked && 'checked', disabled && 'disabled'],\n thumb: ['thumb'],\n track: ['track'],\n input: ['input']\n };\n const composedClasses = composeClasses(slots, getSwitchUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\n\nconst SwitchRoot = styled('span', {\n name: 'MuiSwitch',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inline-flex',\n width: 34 + 12 * 2,\n height: 14 + 12 * 2,\n overflow: 'hidden',\n padding: 12,\n boxSizing: 'border-box',\n position: 'relative',\n flexShrink: 0,\n zIndex: 0,\n // Reset the stacking context.\n verticalAlign: 'middle',\n // For correct alignment with the text.\n '@media print': {\n colorAdjust: 'exact'\n }\n}, ownerState.edge === 'start' && {\n marginLeft: -8\n}, ownerState.edge === 'end' && {\n marginRight: -8\n}, ownerState.size === 'small' && {\n width: 40,\n height: 24,\n padding: 7,\n [`& .${switchClasses.thumb}`]: {\n width: 16,\n height: 16\n },\n [`& .${switchClasses.switchBase}`]: {\n padding: 4,\n [`&.${switchClasses.checked}`]: {\n transform: 'translateX(16px)'\n }\n }\n}));\nconst SwitchSwitchBase = styled(SwitchBase, {\n name: 'MuiSwitch',\n slot: 'SwitchBase',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.switchBase, {\n [`& .${switchClasses.input}`]: styles.input\n }, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n theme\n}) => ({\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 1,\n // Render above the focus ripple.\n color: theme.palette.mode === 'light' ? theme.palette.common.white : theme.palette.grey[300],\n transition: theme.transitions.create(['left', 'transform'], {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${switchClasses.checked}`]: {\n transform: 'translateX(20px)'\n },\n [`&.${switchClasses.disabled}`]: {\n color: theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[600]\n },\n [`&.${switchClasses.checked} + .${switchClasses.track}`]: {\n opacity: 0.5\n },\n [`&.${switchClasses.disabled} + .${switchClasses.track}`]: {\n opacity: theme.palette.mode === 'light' ? 0.12 : 0.2\n },\n [`& .${switchClasses.input}`]: {\n left: '-100%',\n width: '300%'\n }\n}), ({\n theme,\n ownerState\n}) => _extends({\n '&:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n}, ownerState.color !== 'default' && {\n [`&.${switchClasses.checked}`]: {\n color: theme.palette[ownerState.color].main,\n '&:hover': {\n backgroundColor: alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${switchClasses.disabled}`]: {\n color: theme.palette.mode === 'light' ? lighten(theme.palette[ownerState.color].main, 0.62) : darken(theme.palette[ownerState.color].main, 0.55)\n }\n },\n [`&.${switchClasses.checked} + .${switchClasses.track}`]: {\n backgroundColor: theme.palette[ownerState.color].main\n }\n}));\nconst SwitchTrack = styled('span', {\n name: 'MuiSwitch',\n slot: 'Track',\n overridesResolver: (props, styles) => styles.track\n})(({\n theme\n}) => ({\n height: '100%',\n width: '100%',\n borderRadius: 14 / 2,\n zIndex: -1,\n transition: theme.transitions.create(['opacity', 'background-color'], {\n duration: theme.transitions.duration.shortest\n }),\n backgroundColor: theme.palette.mode === 'light' ? theme.palette.common.black : theme.palette.common.white,\n opacity: theme.palette.mode === 'light' ? 0.38 : 0.3\n}));\nconst SwitchThumb = styled('span', {\n name: 'MuiSwitch',\n slot: 'Thumb',\n overridesResolver: (props, styles) => styles.thumb\n})(({\n theme\n}) => ({\n boxShadow: theme.shadows[1],\n backgroundColor: 'currentColor',\n width: 20,\n height: 20,\n borderRadius: '50%'\n}));\nconst Switch = /*#__PURE__*/React.forwardRef(function Switch(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSwitch'\n });\n\n const {\n className,\n color = 'primary',\n edge = false,\n size = 'medium',\n sx\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n color,\n edge,\n size\n });\n\n const classes = useUtilityClasses(ownerState);\n\n const icon = /*#__PURE__*/_jsx(SwitchThumb, {\n className: classes.thumb,\n ownerState: ownerState\n });\n\n return /*#__PURE__*/_jsxs(SwitchRoot, {\n className: clsx(classes.root, className),\n sx: sx,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(SwitchSwitchBase, _extends({\n type: \"checkbox\",\n icon: icon,\n checkedIcon: icon,\n ref: ref,\n ownerState: ownerState\n }, other, {\n classes: _extends({}, classes, {\n root: classes.switchBase\n })\n })), /*#__PURE__*/_jsx(SwitchTrack, {\n className: classes.track,\n ownerState: ownerState\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Switch.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n\n /**\n * The icon to display when the component is checked.\n */\n checkedIcon: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'primary'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n\n /**\n * The default checked state. Use when the component is not controlled.\n */\n defaultChecked: PropTypes.bool,\n\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect is disabled.\n */\n disableRipple: PropTypes.bool,\n\n /**\n * If given, uses a negative margin to counteract the padding on one\n * side (this is often helpful for aligning the left or right\n * side of the icon with content above or below, without ruining the border\n * size and shape).\n * @default false\n */\n edge: PropTypes.oneOf(['end', 'start', false]),\n\n /**\n * The icon to display when the component is unchecked.\n */\n icon: PropTypes.node,\n\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n\n /**\n * Callback fired when the state is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n\n /**\n * The size of the component.\n * `small` is equivalent to the dense switch styling.\n * @default 'medium'\n */\n size: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The value of the component. The DOM API casts this to a string.\n * The browser uses \"on\" as the default value.\n */\n value: PropTypes.any\n} : void 0;\nexport default Switch;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getInputAdornmentUtilityClass(slot) {\n return generateUtilityClass('MuiInputAdornment', slot);\n}\nconst inputAdornmentClasses = generateUtilityClasses('MuiInputAdornment', ['root', 'filled', 'standard', 'outlined', 'positionStart', 'positionEnd', 'disablePointerEvents', 'hiddenLabel', 'sizeSmall']);\nexport default inputAdornmentClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"disablePointerEvents\", \"disableTypography\", \"position\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport Typography from '../Typography';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport inputAdornmentClasses, { getInputAdornmentUtilityClass } from './inputAdornmentClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`position${capitalize(ownerState.position)}`], ownerState.disablePointerEvents === true && styles.disablePointerEvents, styles[ownerState.variant]];\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePointerEvents,\n hiddenLabel,\n position,\n size,\n variant\n } = ownerState;\n const slots = {\n root: ['root', disablePointerEvents && 'disablePointerEvents', position && `position${capitalize(position)}`, variant, hiddenLabel && 'hiddenLabel', size && `size${capitalize(size)}`]\n };\n return composeClasses(slots, getInputAdornmentUtilityClass, classes);\n};\n\nconst InputAdornmentRoot = styled('div', {\n name: 'MuiInputAdornment',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n height: '0.01em',\n // Fix IE11 flexbox alignment. To remove at some point.\n maxHeight: '2em',\n alignItems: 'center',\n whiteSpace: 'nowrap',\n color: theme.palette.action.active\n}, ownerState.variant === 'filled' && {\n // Styles applied to the root element if `variant=\"filled\"`.\n [`&.${inputAdornmentClasses.positionStart}&:not(.${inputAdornmentClasses.hiddenLabel})`]: {\n marginTop: 16\n }\n}, ownerState.position === 'start' && {\n // Styles applied to the root element if `position=\"start\"`.\n marginRight: 8\n}, ownerState.position === 'end' && {\n // Styles applied to the root element if `position=\"end\"`.\n marginLeft: 8\n}, ownerState.disablePointerEvents === true && {\n // Styles applied to the root element if `disablePointerEvents={true}`.\n pointerEvents: 'none'\n}));\nconst InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInputAdornment'\n });\n\n const {\n children,\n className,\n component = 'div',\n disablePointerEvents = false,\n disableTypography = false,\n position,\n variant: variantProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const muiFormControl = useFormControl() || {};\n let variant = variantProp;\n\n if (variantProp && muiFormControl.variant) {\n if (process.env.NODE_ENV !== 'production') {\n if (variantProp === muiFormControl.variant) {\n console.error('MUI: The `InputAdornment` variant infers the variant prop ' + 'you do not have to provide one.');\n }\n }\n }\n\n if (muiFormControl && !variant) {\n variant = muiFormControl.variant;\n }\n\n const ownerState = _extends({}, props, {\n hiddenLabel: muiFormControl.hiddenLabel,\n size: muiFormControl.size,\n disablePointerEvents,\n position,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(InputAdornmentRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: typeof children === 'string' && !disableTypography ? /*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n children: children\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [position === 'start' ?\n /*#__PURE__*/\n\n /* notranslate needed while Google Translate will not fix zero-width space issue */\n\n /* eslint-disable-next-line react/no-danger */\n _jsx(\"span\", {\n className: \"notranslate\",\n dangerouslySetInnerHTML: {\n __html: '​'\n }\n }) : null, children]\n })\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputAdornment.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component, normally an `IconButton` or string.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * Disable pointer events on the root.\n * This allows for the content of the adornment to focus the `input` on click.\n * @default false\n */\n disablePointerEvents: PropTypes.bool,\n\n /**\n * If children is a string then disable wrapping in a Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n\n /**\n * The position this adornment should appear relative to the `Input`.\n */\n position: PropTypes.oneOf(['end', 'start']).isRequired,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The variant to use.\n * Note: If you are using the `TextField` component or the `FormControl` component\n * you do not have to set this manually.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputAdornment;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getCardUtilityClass(slot) {\n return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"raised\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Paper from '../Paper';\nimport { getCardUtilityClass } from './cardClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getCardUtilityClass, classes);\n};\n\nconst CardRoot = styled(Paper, {\n name: 'MuiCard',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(() => {\n return {\n overflow: 'hidden'\n };\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCard'\n });\n\n const {\n className,\n raised = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n raised\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CardRoot, _extends({\n className: clsx(classes.root, className),\n elevation: raised ? 8 : undefined,\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the card will use raised styling.\n * @default false\n */\n raised: chainPropTypes(PropTypes.bool, props => {\n if (props.raised && props.variant === 'outlined') {\n return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n }\n\n return null;\n }),\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Card;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getCardContentUtilityClass(slot) {\n return generateUtilityClass('MuiCardContent', slot);\n}\nconst cardContentClasses = generateUtilityClasses('MuiCardContent', ['root']);\nexport default cardContentClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getCardContentUtilityClass } from './cardContentClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getCardContentUtilityClass, classes);\n};\n\nconst CardContentRoot = styled('div', {\n name: 'MuiCardContent',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(() => {\n return {\n padding: 16,\n '&:last-child': {\n paddingBottom: 24\n }\n };\n});\nconst CardContent = /*#__PURE__*/React.forwardRef(function CardContent(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCardContent'\n });\n\n const {\n className,\n component = 'div'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n component\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CardContentRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardContent;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTabUtilityClass(slot) {\n return generateUtilityClass('MuiTab', slot);\n}\nconst tabClasses = generateUtilityClasses('MuiTab', ['root', 'labelIcon', 'textColorInherit', 'textColorPrimary', 'textColorSecondary', 'selected', 'disabled', 'fullWidth', 'wrapped', 'iconWrapper']);\nexport default tabClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disabled\", \"disableFocusRipple\", \"fullWidth\", \"icon\", \"iconPosition\", \"indicator\", \"label\", \"onChange\", \"onClick\", \"onFocus\", \"selected\", \"selectionFollowsFocus\", \"textColor\", \"value\", \"wrapped\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport unsupportedProp from '../utils/unsupportedProp';\nimport tabClasses, { getTabUtilityClass } from './tabClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n textColor,\n fullWidth,\n wrapped,\n icon,\n label,\n selected,\n disabled\n } = ownerState;\n const slots = {\n root: ['root', icon && label && 'labelIcon', `textColor${capitalize(textColor)}`, fullWidth && 'fullWidth', wrapped && 'wrapped', selected && 'selected', disabled && 'disabled'],\n iconWrapper: ['iconWrapper']\n };\n return composeClasses(slots, getTabUtilityClass, classes);\n};\n\nconst TabRoot = styled(ButtonBase, {\n name: 'MuiTab',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.label && ownerState.icon && styles.labelIcon, styles[`textColor${capitalize(ownerState.textColor)}`], ownerState.fullWidth && styles.fullWidth, ownerState.wrapped && styles.wrapped];\n }\n})(({\n theme,\n ownerState\n}) => _extends({}, theme.typography.button, {\n maxWidth: 360,\n minWidth: 90,\n position: 'relative',\n minHeight: 48,\n flexShrink: 0,\n padding: '12px 16px',\n overflow: 'hidden',\n whiteSpace: 'normal',\n textAlign: 'center'\n}, ownerState.label && {\n flexDirection: ownerState.iconPosition === 'top' || ownerState.iconPosition === 'bottom' ? 'column' : 'row'\n}, {\n lineHeight: 1.25\n}, ownerState.icon && ownerState.label && {\n minHeight: 72,\n paddingTop: 9,\n paddingBottom: 9,\n [`& > .${tabClasses.iconWrapper}`]: _extends({}, ownerState.iconPosition === 'top' && {\n marginBottom: 6\n }, ownerState.iconPosition === 'bottom' && {\n marginTop: 6\n }, ownerState.iconPosition === 'start' && {\n marginRight: theme.spacing(1)\n }, ownerState.iconPosition === 'end' && {\n marginLeft: theme.spacing(1)\n })\n}, ownerState.textColor === 'inherit' && {\n color: 'inherit',\n opacity: 0.6,\n // same opacity as theme.palette.text.secondary\n [`&.${tabClasses.selected}`]: {\n opacity: 1\n },\n [`&.${tabClasses.disabled}`]: {\n opacity: theme.palette.action.disabledOpacity\n }\n}, ownerState.textColor === 'primary' && {\n color: theme.palette.text.secondary,\n [`&.${tabClasses.selected}`]: {\n color: theme.palette.primary.main\n },\n [`&.${tabClasses.disabled}`]: {\n color: theme.palette.text.disabled\n }\n}, ownerState.textColor === 'secondary' && {\n color: theme.palette.text.secondary,\n [`&.${tabClasses.selected}`]: {\n color: theme.palette.secondary.main\n },\n [`&.${tabClasses.disabled}`]: {\n color: theme.palette.text.disabled\n }\n}, ownerState.fullWidth && {\n flexShrink: 1,\n flexGrow: 1,\n flexBasis: 0,\n maxWidth: 'none'\n}, ownerState.wrapped && {\n fontSize: theme.typography.pxToRem(12)\n}));\nconst Tab = /*#__PURE__*/React.forwardRef(function Tab(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTab'\n });\n\n const {\n className,\n disabled = false,\n disableFocusRipple = false,\n // eslint-disable-next-line react/prop-types\n fullWidth,\n icon: iconProp,\n iconPosition = 'top',\n // eslint-disable-next-line react/prop-types\n indicator,\n label,\n onChange,\n onClick,\n onFocus,\n // eslint-disable-next-line react/prop-types\n selected,\n // eslint-disable-next-line react/prop-types\n selectionFollowsFocus,\n // eslint-disable-next-line react/prop-types\n textColor = 'inherit',\n value,\n wrapped = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n disabled,\n disableFocusRipple,\n selected,\n icon: !!iconProp,\n iconPosition,\n label: !!label,\n fullWidth,\n textColor,\n wrapped\n });\n\n const classes = useUtilityClasses(ownerState);\n const icon = iconProp && label && /*#__PURE__*/React.isValidElement(iconProp) ? /*#__PURE__*/React.cloneElement(iconProp, {\n className: clsx(classes.iconWrapper, iconProp.props.className)\n }) : iconProp;\n\n const handleClick = event => {\n if (!selected && onChange) {\n onChange(event, value);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n const handleFocus = event => {\n if (selectionFollowsFocus && !selected && onChange) {\n onChange(event, value);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n return /*#__PURE__*/_jsxs(TabRoot, _extends({\n focusRipple: !disableFocusRipple,\n className: clsx(classes.root, className),\n ref: ref,\n role: \"tab\",\n \"aria-selected\": selected,\n disabled: disabled,\n onClick: handleClick,\n onFocus: handleFocus,\n ownerState: ownerState,\n tabIndex: selected ? 0 : -1\n }, other, {\n children: [iconPosition === 'top' || iconPosition === 'start' ? /*#__PURE__*/_jsxs(React.Fragment, {\n children: [icon, label]\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [label, icon]\n }), indicator]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Tab.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * This prop isn't supported.\n * Use the `component` prop if you need to change the children structure.\n */\n children: unsupportedProp,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect is disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n * @default false\n */\n disableRipple: PropTypes.bool,\n\n /**\n * The icon to display.\n */\n icon: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n\n /**\n * The position of the icon relative to the label.\n * @default 'top'\n */\n iconPosition: PropTypes.oneOf(['bottom', 'end', 'start', 'top']),\n\n /**\n * The label element.\n */\n label: PropTypes.node,\n\n /**\n * @ignore\n */\n onChange: PropTypes.func,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * You can provide your own value. Otherwise, we fallback to the child position index.\n */\n value: PropTypes.any,\n\n /**\n * Tab labels appear in a single row.\n * They can use a second line if needed.\n * @default false\n */\n wrapped: PropTypes.bool\n} : void 0;\nexport default Tab;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTableContainerUtilityClass(slot) {\n return generateUtilityClass('MuiTableContainer', slot);\n}\nconst tableContainerClasses = generateUtilityClasses('MuiTableContainer', ['root']);\nexport default tableContainerClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableContainerUtilityClass } from './tableContainerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getTableContainerUtilityClass, classes);\n};\n\nconst TableContainerRoot = styled('div', {\n name: 'MuiTableContainer',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n width: '100%',\n overflowX: 'auto'\n});\nconst TableContainer = /*#__PURE__*/React.forwardRef(function TableContainer(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTableContainer'\n });\n\n const {\n className,\n component = 'div'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n component\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TableContainerRoot, _extends({\n ref: ref,\n as: component,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableContainer.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component, normally `Table`.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableContainer;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getAppBarUtilityClass(slot) {\n return generateUtilityClass('MuiAppBar', slot);\n}\nconst appBarClasses = generateUtilityClasses('MuiAppBar', ['root', 'positionFixed', 'positionAbsolute', 'positionSticky', 'positionStatic', 'positionRelative', 'colorDefault', 'colorPrimary', 'colorSecondary', 'colorInherit', 'colorTransparent']);\nexport default appBarClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"enableColorOnDark\", \"position\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport Paper from '../Paper';\nimport { getAppBarUtilityClass } from './appBarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n color,\n position,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, `position${capitalize(position)}`]\n };\n return composeClasses(slots, getAppBarUtilityClass, classes);\n};\n\nconst AppBarRoot = styled(Paper, {\n name: 'MuiAppBar',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`position${capitalize(ownerState.position)}`], styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n const backgroundColorDefault = theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[900];\n return _extends({\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n boxSizing: 'border-box',\n // Prevent padding issue with the Modal and fixed positioned AppBar.\n flexShrink: 0\n }, ownerState.position === 'fixed' && {\n position: 'fixed',\n zIndex: theme.zIndex.appBar,\n top: 0,\n left: 'auto',\n right: 0,\n '@media print': {\n // Prevent the app bar to be visible on each printed page.\n position: 'absolute'\n }\n }, ownerState.position === 'absolute' && {\n position: 'absolute',\n zIndex: theme.zIndex.appBar,\n top: 0,\n left: 'auto',\n right: 0\n }, ownerState.position === 'sticky' && {\n // ⚠️ sticky is not supported by IE11.\n position: 'sticky',\n zIndex: theme.zIndex.appBar,\n top: 0,\n left: 'auto',\n right: 0\n }, ownerState.position === 'static' && {\n position: 'static'\n }, ownerState.position === 'relative' && {\n position: 'relative'\n }, ownerState.color === 'default' && {\n backgroundColor: backgroundColorDefault,\n color: theme.palette.getContrastText(backgroundColorDefault)\n }, ownerState.color && ownerState.color !== 'default' && ownerState.color !== 'inherit' && ownerState.color !== 'transparent' && {\n backgroundColor: theme.palette[ownerState.color].main,\n color: theme.palette[ownerState.color].contrastText\n }, ownerState.color === 'inherit' && {\n color: 'inherit'\n }, theme.palette.mode === 'dark' && !ownerState.enableColorOnDark && {\n backgroundColor: null,\n color: null\n }, ownerState.color === 'transparent' && _extends({\n backgroundColor: 'transparent',\n color: 'inherit'\n }, theme.palette.mode === 'dark' && {\n backgroundImage: 'none'\n }));\n});\nconst AppBar = /*#__PURE__*/React.forwardRef(function AppBar(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAppBar'\n });\n\n const {\n className,\n color = 'primary',\n enableColorOnDark = false,\n position = 'fixed'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n color,\n position,\n enableColorOnDark\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(AppBarRoot, _extends({\n square: true,\n component: \"header\",\n ownerState: ownerState,\n elevation: 4,\n className: clsx(classes.root, className, position === 'fixed' && 'mui-fixed'),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AppBar.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'primary'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary', 'transparent']), PropTypes.string]),\n\n /**\n * If true, the `color` prop is applied in dark mode.\n * @default false\n */\n enableColorOnDark: PropTypes.bool,\n\n /**\n * The positioning type. The behavior of the different options is described\n * [in the MDN web docs](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning).\n * Note: `sticky` is not universally supported and will fall back to `static` when unavailable.\n * @default 'fixed'\n */\n position: PropTypes.oneOf(['absolute', 'fixed', 'relative', 'static', 'sticky']),\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AppBar;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getListItemAvatarUtilityClass(slot) {\n return generateUtilityClass('MuiListItemAvatar', slot);\n}\nconst listItemAvatarClasses = generateUtilityClasses('MuiListItemAvatar', ['root', 'alignItemsFlexStart']);\nexport default listItemAvatarClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport ListContext from '../List/ListContext';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getListItemAvatarUtilityClass } from './listItemAvatarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n alignItems,\n classes\n } = ownerState;\n const slots = {\n root: ['root', alignItems === 'flex-start' && 'alignItemsFlexStart']\n };\n return composeClasses(slots, getListItemAvatarUtilityClass, classes);\n};\n\nconst ListItemAvatarRoot = styled('div', {\n name: 'MuiListItemAvatar',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart];\n }\n})(({\n ownerState\n}) => _extends({\n minWidth: 56,\n flexShrink: 0\n}, ownerState.alignItems === 'flex-start' && {\n marginTop: 8\n}));\n/**\n * A simple wrapper to apply `List` styles to an `Avatar`.\n */\n\nconst ListItemAvatar = /*#__PURE__*/React.forwardRef(function ListItemAvatar(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListItemAvatar'\n });\n\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const context = React.useContext(ListContext);\n\n const ownerState = _extends({}, props, {\n alignItems: context.alignItems\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListItemAvatarRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemAvatar.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component, normally an `Avatar`.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemAvatar;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getFabUtilityClass(slot) {\n return generateUtilityClass('MuiFab', slot);\n}\nconst fabClasses = generateUtilityClasses('MuiFab', ['root', 'primary', 'secondary', 'extended', 'circular', 'focusVisible', 'disabled', 'colorInherit', 'sizeSmall', 'sizeMedium', 'sizeLarge']);\nexport default fabClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"disableFocusRipple\", \"focusVisibleClassName\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport fabClasses, { getFabUtilityClass } from './fabClasses';\nimport styled from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n color,\n variant,\n classes,\n size\n } = ownerState;\n const slots = {\n root: ['root', variant, `size${capitalize(size)}`, color === 'inherit' && 'colorInherit', color === 'primary' && 'primary', color === 'secondary' && 'secondary']\n };\n return composeClasses(slots, getFabUtilityClass, classes);\n};\n\nconst FabRoot = styled(ButtonBase, {\n name: 'MuiFab',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, ownerState.color === 'primary' && styles.primary, ownerState.color === 'secondary' && styles.secondary];\n }\n})(({\n theme,\n ownerState\n}) => _extends({}, theme.typography.button, {\n minHeight: 36,\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n duration: theme.transitions.duration.short\n }),\n borderRadius: '50%',\n padding: 0,\n minWidth: 0,\n width: 56,\n height: 56,\n boxShadow: theme.shadows[6],\n '&:active': {\n boxShadow: theme.shadows[12]\n },\n color: theme.palette.getContrastText(theme.palette.grey[300]),\n backgroundColor: theme.palette.grey[300],\n '&:hover': {\n backgroundColor: theme.palette.grey.A100,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.palette.grey[300]\n },\n textDecoration: 'none'\n },\n [`&.${fabClasses.focusVisible}`]: {\n boxShadow: theme.shadows[6]\n },\n [`&.${fabClasses.disabled}`]: {\n color: theme.palette.action.disabled,\n boxShadow: theme.shadows[0],\n backgroundColor: theme.palette.action.disabledBackground\n }\n}, ownerState.size === 'small' && {\n width: 40,\n height: 40\n}, ownerState.size === 'medium' && {\n width: 48,\n height: 48\n}, ownerState.variant === 'extended' && {\n borderRadius: 48 / 2,\n padding: '0 16px',\n width: 'auto',\n minHeight: 'auto',\n minWidth: 48,\n height: 48\n}, ownerState.variant === 'extended' && ownerState.size === 'small' && {\n width: 'auto',\n padding: '0 8px',\n borderRadius: 34 / 2,\n minWidth: 34,\n height: 34\n}, ownerState.variant === 'extended' && ownerState.size === 'medium' && {\n width: 'auto',\n padding: '0 16px',\n borderRadius: 40 / 2,\n minWidth: 40,\n height: 40\n}, ownerState.color === 'inherit' && {\n color: 'inherit'\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.color === 'primary' && {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.palette.primary.main\n }\n }\n}, ownerState.color === 'secondary' && {\n color: theme.palette.secondary.contrastText,\n backgroundColor: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: theme.palette.secondary.dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.palette.secondary.main\n }\n }\n}));\nconst Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFab'\n });\n\n const {\n children,\n className,\n color = 'default',\n component = 'button',\n disabled = false,\n disableFocusRipple = false,\n focusVisibleClassName,\n size = 'large',\n variant = 'circular'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n color,\n component,\n disabled,\n disableFocusRipple,\n size,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FabRoot, _extends({\n className: clsx(classes.root, className),\n component: component,\n disabled: disabled,\n focusRipple: !disableFocusRipple,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Fab.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'default'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary']), PropTypes.string]),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect is disabled.\n */\n disableRipple: PropTypes.bool,\n\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * The URL to link to when the button is clicked.\n * If defined, an `a` element will be used as the root node.\n */\n href: PropTypes.string,\n\n /**\n * The size of the component.\n * `small` is equivalent to the dense button styling.\n * @default 'large'\n */\n size: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The variant to use.\n * @default 'circular'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['circular', 'extended']), PropTypes.string])\n} : void 0;\nexport default Fab;","import { generateUtilityClass, generateUtilityClasses } from '@mui/core';\nexport function getTreeViewUtilityClass(slot) {\n return generateUtilityClass('MuiTreeView', slot);\n}\nconst treeViewClasses = generateUtilityClasses('MuiTreeView', ['root']);\nexport default treeViewClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"defaultCollapseIcon\", \"defaultEndIcon\", \"defaultExpanded\", \"defaultExpandIcon\", \"defaultParentIcon\", \"defaultSelected\", \"disabledItemsFocusable\", \"disableSelection\", \"expanded\", \"id\", \"multiSelect\", \"onBlur\", \"onFocus\", \"onKeyDown\", \"onNodeFocus\", \"onNodeSelect\", \"onNodeToggle\", \"selected\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { styled, useTheme, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/core';\nimport { useControlled, useForkRef, ownerDocument, unstable_useId as useId } from '@mui/material/utils';\nimport TreeViewContext from './TreeViewContext';\nimport { DescendantProvider } from './descendants';\nimport { getTreeViewUtilityClass } from './treeViewClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getTreeViewUtilityClass, classes);\n};\n\nconst TreeViewRoot = styled('ul', {\n name: 'MuiTreeView',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n padding: 0,\n margin: 0,\n listStyle: 'none',\n outline: 0\n});\n\nfunction isPrintableCharacter(string) {\n return string && string.length === 1 && string.match(/\\S/);\n}\n\nfunction findNextFirstChar(firstChars, startIndex, char) {\n for (let i = startIndex; i < firstChars.length; i += 1) {\n if (char === firstChars[i]) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction noopSelection() {\n return false;\n}\n\nconst defaultDefaultExpanded = [];\nconst defaultDefaultSelected = [];\nconst TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTreeView'\n });\n\n const {\n children,\n className,\n defaultCollapseIcon,\n defaultEndIcon,\n defaultExpanded = defaultDefaultExpanded,\n defaultExpandIcon,\n defaultParentIcon,\n defaultSelected = defaultDefaultSelected,\n disabledItemsFocusable = false,\n disableSelection = false,\n expanded: expandedProp,\n id: idProp,\n multiSelect = false,\n onBlur,\n onFocus,\n onKeyDown,\n onNodeFocus,\n onNodeSelect,\n onNodeToggle,\n selected: selectedProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n\n const ownerState = _extends({}, props, {\n defaultExpanded,\n defaultSelected,\n disabledItemsFocusable,\n disableSelection,\n multiSelect\n });\n\n const classes = useUtilityClasses(ownerState);\n const treeId = useId(idProp);\n const treeRef = React.useRef(null);\n const handleRef = useForkRef(treeRef, ref);\n const [focusedNodeId, setFocusedNodeId] = React.useState(null);\n const nodeMap = React.useRef({});\n const firstCharMap = React.useRef({});\n const [expanded, setExpandedState] = useControlled({\n controlled: expandedProp,\n default: defaultExpanded,\n name: 'TreeView',\n state: 'expanded'\n });\n const [selected, setSelectedState] = useControlled({\n controlled: selectedProp,\n default: defaultSelected,\n name: 'TreeView',\n state: 'selected'\n });\n /*\n * Status Helpers\n */\n\n const isExpanded = React.useCallback(id => Array.isArray(expanded) ? expanded.indexOf(id) !== -1 : false, [expanded]);\n const isExpandable = React.useCallback(id => nodeMap.current[id] && nodeMap.current[id].expandable, []);\n const isSelected = React.useCallback(id => Array.isArray(selected) ? selected.indexOf(id) !== -1 : selected === id, [selected]);\n const isDisabled = React.useCallback(id => {\n let node = nodeMap.current[id]; // This can be called before the node has been added to the node map.\n\n if (!node) {\n return false;\n }\n\n if (node.disabled) {\n return true;\n }\n\n while (node.parentId != null) {\n node = nodeMap.current[node.parentId];\n\n if (node.disabled) {\n return true;\n }\n }\n\n return false;\n }, []);\n\n const isFocused = id => focusedNodeId === id;\n /*\n * Child Helpers\n */\n // Using Object.keys -> .map to mimic Object.values we should replace with Object.values() once we stop IE11 support.\n\n\n const getChildrenIds = id => Object.keys(nodeMap.current).map(key => {\n return nodeMap.current[key];\n }).filter(node => node.parentId === id).sort((a, b) => a.index - b.index).map(child => child.id);\n\n const getNavigableChildrenIds = id => {\n let childrenIds = getChildrenIds(id);\n\n if (!disabledItemsFocusable) {\n childrenIds = childrenIds.filter(node => !isDisabled(node));\n }\n\n return childrenIds;\n };\n /*\n * Node Helpers\n */\n\n\n const getNextNode = id => {\n // If expanded get first child\n if (isExpanded(id) && getNavigableChildrenIds(id).length > 0) {\n return getNavigableChildrenIds(id)[0];\n }\n\n let node = nodeMap.current[id];\n\n while (node != null) {\n // Try to get next sibling\n const siblings = getNavigableChildrenIds(node.parentId);\n const nextSibling = siblings[siblings.indexOf(node.id) + 1];\n\n if (nextSibling) {\n return nextSibling;\n } // If the sibling does not exist, go up a level to the parent and try again.\n\n\n node = nodeMap.current[node.parentId];\n }\n\n return null;\n };\n\n const getPreviousNode = id => {\n const node = nodeMap.current[id];\n const siblings = getNavigableChildrenIds(node.parentId);\n const nodeIndex = siblings.indexOf(id);\n\n if (nodeIndex === 0) {\n return node.parentId;\n }\n\n let currentNode = siblings[nodeIndex - 1];\n\n while (isExpanded(currentNode) && getNavigableChildrenIds(currentNode).length > 0) {\n currentNode = getNavigableChildrenIds(currentNode).pop();\n }\n\n return currentNode;\n };\n\n const getLastNode = () => {\n let lastNode = getNavigableChildrenIds(null).pop();\n\n while (isExpanded(lastNode)) {\n lastNode = getNavigableChildrenIds(lastNode).pop();\n }\n\n return lastNode;\n };\n\n const getFirstNode = () => getNavigableChildrenIds(null)[0];\n\n const getParent = id => nodeMap.current[id].parentId;\n /**\n * This is used to determine the start and end of a selection range so\n * we can get the nodes between the two border nodes.\n *\n * It finds the nodes' common ancestor using\n * a naive implementation of a lowest common ancestor algorithm\n * (https://en.wikipedia.org/wiki/Lowest_common_ancestor).\n * Then compares the ancestor's 2 children that are ancestors of nodeA and NodeB\n * so we can compare their indexes to work out which node comes first in a depth first search.\n * (https://en.wikipedia.org/wiki/Depth-first_search)\n *\n * Another way to put it is which node is shallower in a trémaux tree\n * https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree\n */\n\n\n const findOrderInTremauxTree = (nodeAId, nodeBId) => {\n if (nodeAId === nodeBId) {\n return [nodeAId, nodeBId];\n }\n\n const nodeA = nodeMap.current[nodeAId];\n const nodeB = nodeMap.current[nodeBId];\n\n if (nodeA.parentId === nodeB.id || nodeB.parentId === nodeA.id) {\n return nodeB.parentId === nodeA.id ? [nodeA.id, nodeB.id] : [nodeB.id, nodeA.id];\n }\n\n const aFamily = [nodeA.id];\n const bFamily = [nodeB.id];\n let aAncestor = nodeA.parentId;\n let bAncestor = nodeB.parentId;\n let aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n let bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n let continueA = true;\n let continueB = true;\n\n while (!bAncestorIsCommon && !aAncestorIsCommon) {\n if (continueA) {\n aFamily.push(aAncestor);\n aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n continueA = aAncestor !== null;\n\n if (!aAncestorIsCommon && continueA) {\n aAncestor = nodeMap.current[aAncestor].parentId;\n }\n }\n\n if (continueB && !aAncestorIsCommon) {\n bFamily.push(bAncestor);\n bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n continueB = bAncestor !== null;\n\n if (!bAncestorIsCommon && continueB) {\n bAncestor = nodeMap.current[bAncestor].parentId;\n }\n }\n }\n\n const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor;\n const ancestorFamily = getChildrenIds(commonAncestor);\n const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1];\n const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1];\n return ancestorFamily.indexOf(aSide) < ancestorFamily.indexOf(bSide) ? [nodeAId, nodeBId] : [nodeBId, nodeAId];\n };\n\n const getNodesInRange = (nodeA, nodeB) => {\n const [first, last] = findOrderInTremauxTree(nodeA, nodeB);\n const nodes = [first];\n let current = first;\n\n while (current !== last) {\n current = getNextNode(current);\n nodes.push(current);\n }\n\n return nodes;\n };\n /*\n * Focus Helpers\n */\n\n\n const focus = (event, id) => {\n if (id) {\n setFocusedNodeId(id);\n\n if (onNodeFocus) {\n onNodeFocus(event, id);\n }\n }\n };\n\n const focusNextNode = (event, id) => focus(event, getNextNode(id));\n\n const focusPreviousNode = (event, id) => focus(event, getPreviousNode(id));\n\n const focusFirstNode = event => focus(event, getFirstNode());\n\n const focusLastNode = event => focus(event, getLastNode());\n\n const focusByFirstCharacter = (event, id, char) => {\n let start;\n let index;\n const lowercaseChar = char.toLowerCase();\n const firstCharIds = [];\n const firstChars = []; // This really only works since the ids are strings\n\n Object.keys(firstCharMap.current).forEach(nodeId => {\n const firstChar = firstCharMap.current[nodeId];\n const map = nodeMap.current[nodeId];\n const visible = map.parentId ? isExpanded(map.parentId) : true;\n const shouldBeSkipped = disabledItemsFocusable ? false : isDisabled(nodeId);\n\n if (visible && !shouldBeSkipped) {\n firstCharIds.push(nodeId);\n firstChars.push(firstChar);\n }\n }); // Get start index for search based on position of currentItem\n\n start = firstCharIds.indexOf(id) + 1;\n\n if (start >= firstCharIds.length) {\n start = 0;\n } // Check remaining slots in the menu\n\n\n index = findNextFirstChar(firstChars, start, lowercaseChar); // If not found in remaining slots, check from beginning\n\n if (index === -1) {\n index = findNextFirstChar(firstChars, 0, lowercaseChar);\n } // If match was found...\n\n\n if (index > -1) {\n focus(event, firstCharIds[index]);\n }\n };\n /*\n * Expansion Helpers\n */\n\n\n const toggleExpansion = (event, value = focusedNodeId) => {\n let newExpanded;\n\n if (expanded.indexOf(value) !== -1) {\n newExpanded = expanded.filter(id => id !== value);\n } else {\n newExpanded = [value].concat(expanded);\n }\n\n if (onNodeToggle) {\n onNodeToggle(event, newExpanded);\n }\n\n setExpandedState(newExpanded);\n };\n\n const expandAllSiblings = (event, id) => {\n const map = nodeMap.current[id];\n const siblings = getChildrenIds(map.parentId);\n const diff = siblings.filter(child => isExpandable(child) && !isExpanded(child));\n const newExpanded = expanded.concat(diff);\n\n if (diff.length > 0) {\n setExpandedState(newExpanded);\n\n if (onNodeToggle) {\n onNodeToggle(event, newExpanded);\n }\n }\n };\n /*\n * Selection Helpers\n */\n\n\n const lastSelectedNode = React.useRef(null);\n const lastSelectionWasRange = React.useRef(false);\n const currentRangeSelection = React.useRef([]);\n\n const handleRangeArrowSelect = (event, nodes) => {\n let base = selected.slice();\n const {\n start,\n next,\n current\n } = nodes;\n\n if (!next || !current) {\n return;\n }\n\n if (currentRangeSelection.current.indexOf(current) === -1) {\n currentRangeSelection.current = [];\n }\n\n if (lastSelectionWasRange.current) {\n if (currentRangeSelection.current.indexOf(next) !== -1) {\n base = base.filter(id => id === start || id !== current);\n currentRangeSelection.current = currentRangeSelection.current.filter(id => id === start || id !== current);\n } else {\n base.push(next);\n currentRangeSelection.current.push(next);\n }\n } else {\n base.push(next);\n currentRangeSelection.current.push(current, next);\n }\n\n if (onNodeSelect) {\n onNodeSelect(event, base);\n }\n\n setSelectedState(base);\n };\n\n const handleRangeSelect = (event, nodes) => {\n let base = selected.slice();\n const {\n start,\n end\n } = nodes; // If last selection was a range selection ignore nodes that were selected.\n\n if (lastSelectionWasRange.current) {\n base = base.filter(id => currentRangeSelection.current.indexOf(id) === -1);\n }\n\n let range = getNodesInRange(start, end);\n range = range.filter(node => !isDisabled(node));\n currentRangeSelection.current = range;\n let newSelected = base.concat(range);\n newSelected = newSelected.filter((id, i) => newSelected.indexOf(id) === i);\n\n if (onNodeSelect) {\n onNodeSelect(event, newSelected);\n }\n\n setSelectedState(newSelected);\n };\n\n const handleMultipleSelect = (event, value) => {\n let newSelected;\n\n if (selected.indexOf(value) !== -1) {\n newSelected = selected.filter(id => id !== value);\n } else {\n newSelected = [value].concat(selected);\n }\n\n if (onNodeSelect) {\n onNodeSelect(event, newSelected);\n }\n\n setSelectedState(newSelected);\n };\n\n const handleSingleSelect = (event, value) => {\n const newSelected = multiSelect ? [value] : value;\n\n if (onNodeSelect) {\n onNodeSelect(event, newSelected);\n }\n\n setSelectedState(newSelected);\n };\n\n const selectNode = (event, id, multiple = false) => {\n if (id) {\n if (multiple) {\n handleMultipleSelect(event, id);\n } else {\n handleSingleSelect(event, id);\n }\n\n lastSelectedNode.current = id;\n lastSelectionWasRange.current = false;\n currentRangeSelection.current = [];\n return true;\n }\n\n return false;\n };\n\n const selectRange = (event, nodes, stacked = false) => {\n const {\n start = lastSelectedNode.current,\n end,\n current\n } = nodes;\n\n if (stacked) {\n handleRangeArrowSelect(event, {\n start,\n next: end,\n current\n });\n } else if (start != null && end != null) {\n handleRangeSelect(event, {\n start,\n end\n });\n }\n\n lastSelectionWasRange.current = true;\n };\n\n const rangeSelectToFirst = (event, id) => {\n if (!lastSelectedNode.current) {\n lastSelectedNode.current = id;\n }\n\n const start = lastSelectionWasRange.current ? lastSelectedNode.current : id;\n selectRange(event, {\n start,\n end: getFirstNode()\n });\n };\n\n const rangeSelectToLast = (event, id) => {\n if (!lastSelectedNode.current) {\n lastSelectedNode.current = id;\n }\n\n const start = lastSelectionWasRange.current ? lastSelectedNode.current : id;\n selectRange(event, {\n start,\n end: getLastNode()\n });\n };\n\n const selectNextNode = (event, id) => {\n if (!isDisabled(getNextNode(id))) {\n selectRange(event, {\n end: getNextNode(id),\n current: id\n }, true);\n }\n };\n\n const selectPreviousNode = (event, id) => {\n if (!isDisabled(getPreviousNode(id))) {\n selectRange(event, {\n end: getPreviousNode(id),\n current: id\n }, true);\n }\n };\n\n const selectAllNodes = event => {\n selectRange(event, {\n start: getFirstNode(),\n end: getLastNode()\n });\n };\n /*\n * Mapping Helpers\n */\n\n\n const registerNode = React.useCallback(node => {\n const {\n id,\n index,\n parentId,\n expandable,\n idAttribute,\n disabled\n } = node;\n nodeMap.current[id] = {\n id,\n index,\n parentId,\n expandable,\n idAttribute,\n disabled\n };\n }, []);\n const unregisterNode = React.useCallback(id => {\n const newMap = _extends({}, nodeMap.current);\n\n delete newMap[id];\n nodeMap.current = newMap;\n setFocusedNodeId(oldFocusedNodeId => {\n if (oldFocusedNodeId === id && treeRef.current === ownerDocument(treeRef.current).activeElement) {\n return getChildrenIds(null)[0];\n }\n\n return oldFocusedNodeId;\n });\n }, []);\n const mapFirstChar = React.useCallback((id, firstChar) => {\n firstCharMap.current[id] = firstChar;\n }, []);\n const unMapFirstChar = React.useCallback(id => {\n const newMap = _extends({}, firstCharMap.current);\n\n delete newMap[id];\n firstCharMap.current = newMap;\n }, []);\n /**\n * Event handlers and Navigation\n */\n\n const handleNextArrow = event => {\n if (isExpandable(focusedNodeId)) {\n if (isExpanded(focusedNodeId)) {\n focusNextNode(event, focusedNodeId);\n } else if (!isDisabled(focusedNodeId)) {\n toggleExpansion(event);\n }\n }\n\n return true;\n };\n\n const handlePreviousArrow = event => {\n if (isExpanded(focusedNodeId) && !isDisabled(focusedNodeId)) {\n toggleExpansion(event, focusedNodeId);\n return true;\n }\n\n const parent = getParent(focusedNodeId);\n\n if (parent) {\n focus(event, parent);\n return true;\n }\n\n return false;\n };\n\n const handleKeyDown = event => {\n let flag = false;\n const key = event.key; // If the tree is empty there will be no focused node\n\n if (event.altKey || event.currentTarget !== event.target || !focusedNodeId) {\n return;\n }\n\n const ctrlPressed = event.ctrlKey || event.metaKey;\n\n switch (key) {\n case ' ':\n if (!disableSelection && !isDisabled(focusedNodeId)) {\n if (multiSelect && event.shiftKey) {\n selectRange(event, {\n end: focusedNodeId\n });\n flag = true;\n } else if (multiSelect) {\n flag = selectNode(event, focusedNodeId, true);\n } else {\n flag = selectNode(event, focusedNodeId);\n }\n }\n\n event.stopPropagation();\n break;\n\n case 'Enter':\n if (!isDisabled(focusedNodeId)) {\n if (isExpandable(focusedNodeId)) {\n toggleExpansion(event);\n flag = true;\n }\n }\n\n event.stopPropagation();\n break;\n\n case 'ArrowDown':\n if (multiSelect && event.shiftKey && !disableSelection) {\n selectNextNode(event, focusedNodeId);\n }\n\n focusNextNode(event, focusedNodeId);\n flag = true;\n break;\n\n case 'ArrowUp':\n if (multiSelect && event.shiftKey && !disableSelection) {\n selectPreviousNode(event, focusedNodeId);\n }\n\n focusPreviousNode(event, focusedNodeId);\n flag = true;\n break;\n\n case 'ArrowRight':\n if (isRtl) {\n flag = handlePreviousArrow(event);\n } else {\n flag = handleNextArrow(event);\n }\n\n break;\n\n case 'ArrowLeft':\n if (isRtl) {\n flag = handleNextArrow(event);\n } else {\n flag = handlePreviousArrow(event);\n }\n\n break;\n\n case 'Home':\n if (multiSelect && ctrlPressed && event.shiftKey && !disableSelection && !isDisabled(focusedNodeId)) {\n rangeSelectToFirst(event, focusedNodeId);\n }\n\n focusFirstNode(event);\n flag = true;\n break;\n\n case 'End':\n if (multiSelect && ctrlPressed && event.shiftKey && !disableSelection && !isDisabled(focusedNodeId)) {\n rangeSelectToLast(event, focusedNodeId);\n }\n\n focusLastNode(event);\n flag = true;\n break;\n\n default:\n if (key === '*') {\n expandAllSiblings(event, focusedNodeId);\n flag = true;\n } else if (multiSelect && ctrlPressed && key.toLowerCase() === 'a' && !disableSelection) {\n selectAllNodes(event);\n flag = true;\n } else if (!ctrlPressed && !event.shiftKey && isPrintableCharacter(key)) {\n focusByFirstCharacter(event, focusedNodeId, key);\n flag = true;\n }\n\n }\n\n if (flag) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n const handleFocus = event => {\n // if the event bubbled (which is React specific) we don't want to steal focus\n if (event.target === event.currentTarget) {\n const firstSelected = Array.isArray(selected) ? selected[0] : selected;\n focus(event, firstSelected || getNavigableChildrenIds(null)[0]);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const handleBlur = event => {\n setFocusedNodeId(null);\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const activeDescendant = nodeMap.current[focusedNodeId] ? nodeMap.current[focusedNodeId].idAttribute : null;\n return /*#__PURE__*/_jsx(TreeViewContext.Provider, {\n value: {\n icons: {\n defaultCollapseIcon,\n defaultExpandIcon,\n defaultParentIcon,\n defaultEndIcon\n },\n focus,\n toggleExpansion,\n isExpanded,\n isExpandable,\n isFocused,\n isSelected,\n isDisabled,\n selectNode: disableSelection ? noopSelection : selectNode,\n selectRange: disableSelection ? noopSelection : selectRange,\n multiSelect,\n disabledItemsFocusable,\n mapFirstChar,\n unMapFirstChar,\n registerNode,\n unregisterNode,\n treeId\n },\n children: /*#__PURE__*/_jsx(DescendantProvider, {\n children: /*#__PURE__*/_jsx(TreeViewRoot, _extends({\n role: \"tree\",\n id: treeId,\n \"aria-activedescendant\": activeDescendant,\n \"aria-multiselectable\": multiSelect,\n className: clsx(classes.root, className),\n ref: handleRef,\n tabIndex: 0,\n onKeyDown: handleKeyDown,\n onFocus: handleFocus,\n onBlur: handleBlur,\n ownerState: ownerState\n }, other, {\n children: children\n }))\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TreeView.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The default icon used to collapse the node.\n */\n defaultCollapseIcon: PropTypes.node,\n\n /**\n * The default icon displayed next to a end node. This is applied to all\n * tree nodes and can be overridden by the TreeItem `icon` prop.\n */\n defaultEndIcon: PropTypes.node,\n\n /**\n * Expanded node ids. (Uncontrolled)\n * @default []\n */\n defaultExpanded: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * The default icon used to expand the node.\n */\n defaultExpandIcon: PropTypes.node,\n\n /**\n * The default icon displayed next to a parent node. This is applied to all\n * parent nodes and can be overridden by the TreeItem `icon` prop.\n */\n defaultParentIcon: PropTypes.node,\n\n /**\n * Selected node ids. (Uncontrolled)\n * When `multiSelect` is true this takes an array of strings; when false (default) a string.\n * @default []\n */\n defaultSelected: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.string]),\n\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n\n /**\n * If `true` selection is disabled.\n * @default false\n */\n disableSelection: PropTypes.bool,\n\n /**\n * Expanded node ids. (Controlled)\n */\n expanded: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id: PropTypes.string,\n\n /**\n * If true `ctrl` and `shift` will trigger multiselect.\n * @default false\n */\n multiSelect: PropTypes.bool,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n\n /**\n * Callback fired when tree items are focused.\n *\n * @param {React.SyntheticEvent} event The event source of the callback **Warning**: This is a generic event not a focus event.\n * @param {string} value of the focused node.\n */\n onNodeFocus: PropTypes.func,\n\n /**\n * Callback fired when tree items are selected/unselected.\n *\n * @param {React.SyntheticEvent} event The event source of the callback\n * @param {string[] | string} nodeIds Ids of the selected nodes. When `multiSelect` is true\n * this is an array of strings; when false (default) a string.\n */\n onNodeSelect: PropTypes.func,\n\n /**\n * Callback fired when tree items are expanded/collapsed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {array} nodeIds The ids of the expanded nodes.\n */\n onNodeToggle: PropTypes.func,\n\n /**\n * Selected node ids. (Controlled)\n * When `multiSelect` is true this takes an array of strings; when false (default) a string.\n */\n selected: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.string]),\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.object\n} : void 0;\nexport default TreeView;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar draggable = 'e-draggable';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n td.setAttribute('id', '' + j);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col || this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (document.getElementById(id)) {\n var row = parseInt(document.getElementById(id).getAttribute('data-row'), 10);\n var col = parseInt(document.getElementById(id).getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n // eslint-disable-next-line\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n // eslint-disable-next-line\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n // eslint-disable-next-line\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n this.elementWidth += currentX;\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + item.sizeX > this.columns) {\n item.sizeX = item.sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n var curColWidth = this.cellSize[0];\n if (isCeil) {\n return Math.ceil(pixels / curColWidth);\n }\n else {\n return Math.floor(pixels / curColWidth);\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (item.minSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (item.minSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n this.checkDragging(this.dragCollection);\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n // eslint-disable-next-line\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n // eslint-disable-next-line radix\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 0);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n this.setClasses(this.panelCollection);\n this.checkDragging(this.dragCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n var widthValue;\n if (this.checkMediaQuery()) {\n heightValue = ((this.maxRow()) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n // eslint-disable-next-line prefer-const\n widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n // eslint-disable-next-line\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col || this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(document.getElementById(item.id)) === -1) &&\n items.indexOf(document.getElementById(item.id)) === -1) {\n items.push(document.getElementById(item.id));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n // eslint-disable-next-line no-self-assign\n this.spacedColumnValue = this.spacedColumnValue;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = document.getElementById(this.panels[i].id);\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_1 = this;\n collisionModels.forEach(function (item1) {\n if (proxy_1.overlapElement.indexOf(item1) === -1) {\n proxy_1.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[key].row, this.overlapElement, this.collisionChecker[key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_2 = this;\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n proxy_2.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n var _loop_5 = function (p) {\n var rowVal = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this_3.collisions(rowVal, colValue_1, sizeX, sizeY, this_3.overlapSubElementClone);\n if (this_3.mainElement && collisionModels1.indexOf(this_3.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this_3.mainElement), 1);\n }\n // eslint-disable-next-line\n var proxy = this_3;\n collisionModels1.forEach(function (item1) {\n proxy.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this_3.updateRowColumn(rowVal, this_3.overlapElement, this_3.overlapSubElementClone[p]);\n }\n };\n var this_3 = this;\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n _loop_5(p);\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector(\".e-resize\")) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: panelModel.sizeX.toString(),\n sizeY: panelModel.sizeY.toString(),\n minSizeX: panelModel.minSizeX.toString(),\n minSizeY: panelModel.minSizeY.toString(),\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: panelModel.row.toString(),\n col: panelModel.col.toString()\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row || this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n for (var i = 0; i < collections.length; i++) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this.element,\n isDragScroll: true,\n handle: this.draggableHandle ? this.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this.onDraggingStart.bind(this),\n dragStop: function (args) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.trigger('dragStop', args);\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this.dragCollection.indexOf(this.dragobj) === -1) {\n this.dragCollection.push(this.dragobj);\n }\n }\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n // eslint-disable-next-line\n dragobj.setDragArea();\n });\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function (dragArgs) {\n });\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n this.shadowEle.classList.add('e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n this.shadowEle.style.height = (this.getCellInstance(args.element.id).sizeY * this.cellSize[1]) + 'px';\n this.shadowEle.style.width = (this.getCellInstance(args.element.id).sizeX * this.cellSize[0]) + 'px';\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n // tslint:disable-next-line\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][k] = source[i][k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n var cellSizeOne = this.getCellSize()[1];\n var cellSizeZero = this.getCellSize()[0];\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n this.elementRef.height = this.shadowEle.style.height = ((sizeY * cellSizeOne) + ((sizeY - 1) * this.cellSpacing[1])) + 'px';\n this.elementRef.width = this.shadowEle.style.width = ((sizeX * cellSizeZero) + ((sizeX - 1) * this.cellSpacing[0])) + 'px';\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.updatePanelLayout(cell, panelProp);\n }\n this.addPanelCalled = false;\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col, sizeX: cloneModel[i].sizeX,\n sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX, minSizeY: cloneModel[i].minSizeY,\n maxSizeX: cloneModel[i].maxSizeX, maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n // eslint-disable-next-line\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n // eslint-disable-next-line\n DashboardLayout.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\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 this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : 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 getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_6 = function (i) {\n this_4.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { DashboardLayout } from '@syncfusion/ej2-layouts';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the Essential JS 2 React DashboardLayout Component.\n * ```ts\n * \n * ```\n */\nvar DashboardLayoutComponent = /** @class */ (function (_super) {\n __extends(DashboardLayoutComponent, _super);\n function DashboardLayoutComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'panels': 'panel' };\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DashboardLayoutComponent.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 DashboardLayoutComponent;\n}(DashboardLayout));\nexport { DashboardLayoutComponent };\napplyMixins(DashboardLayoutComponent, [ComponentBase, React.Component]);\n","import { RowModelGenerator } from '../services/row-model-generator';\nimport { splitFrozenRowObjectCells } from '../base/util';\n/**\n * FreezeRowModelGenerator is used to generate grid data rows with freeze row and column.\n *\n * @hidden\n */\nvar FreezeRowModelGenerator = /** @class */ (function () {\n function FreezeRowModelGenerator(parent) {\n this.parent = parent;\n this.rowModelGenerator = new RowModelGenerator(this.parent);\n }\n FreezeRowModelGenerator.prototype.generateRows = function (data, notifyArgs, virtualRows) {\n var tableName;\n if (notifyArgs.renderFrozenRightContent || (notifyArgs.renderMovableContent && !this.parent.enableVirtualization)) {\n tableName = 'frozen-right';\n }\n else if (notifyArgs.renderMovableContent || notifyArgs.isFrozen) {\n tableName = 'movable';\n }\n else {\n tableName = this.parent.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n }\n if (notifyArgs.requestType === 'virtualscroll' && notifyArgs.virtualInfo.sentinelInfo.axis === 'X') {\n if (tableName !== 'movable') {\n return null;\n }\n }\n var row = this.parent.enableVirtualization && !notifyArgs.isFrozenRowsRender ? virtualRows\n : this.rowModelGenerator.generateRows(data, notifyArgs);\n for (var i = 0, len = row.length; i < len; i++) {\n row[i].cells = splitFrozenRowObjectCells(this.parent, row[i].cells, tableName);\n }\n return row;\n };\n return FreezeRowModelGenerator;\n}());\nexport { FreezeRowModelGenerator };\n","import { isNullOrUndefined, remove, extend } from '@syncfusion/ej2-base';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { FreezeRowModelGenerator } from '../services/freeze-row-model-generator';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport * as events from '../base/constant';\nimport { getScrollBarWidth, getEditedDataIndex, resetRowIndex, setRowElements, getRowIndexFromElement, getGroupKeysAndFields, getPredicates, generateExpandPredicates } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * Infinite Scrolling class\n *\n * @hidden\n */\nvar InfiniteScroll = /** @class */ (function () {\n /**\n * Constructor for the Grid infinite scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n function InfiniteScroll(parent, serviceLocator) {\n this.infiniteCache = {};\n this.infiniteCurrentViewData = {};\n this.infiniteFrozenCache = {};\n this.isDownScroll = false;\n this.isUpScroll = false;\n this.isScroll = true;\n this.enableContinuousScroll = false;\n this.initialRender = true;\n this.isRemove = false;\n this.isInitialCollapse = false;\n this.prevScrollTop = 0;\n this.actions = ['filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'sorting', 'refresh'];\n this.keys = [literals.downArrow, literals.upArrow, literals.enter, literals.shiftEnter];\n this.rowTop = 0;\n this.isInitialMovableRender = true;\n this.virtualInfiniteData = {};\n this.isCancel = false;\n this.emptyRowData = {};\n this.isNormaledit = false;\n this.isInfiniteScroll = false;\n this.isLastPage = false;\n this.isInitialRender = true;\n this.isFocusScroll = false;\n this.isGroupCollapse = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.isNormaledit = this.parent.editSettings.mode === 'Normal';\n this.addEventListener();\n this.widthService = serviceLocator.getService('widthService');\n this.rowModelGenerator = this.parent.isFrozenGrid() ? new FreezeRowModelGenerator(this.parent)\n : new RowModelGenerator(this.parent);\n }\n InfiniteScroll.prototype.getModuleName = function () {\n return 'infiniteScroll';\n };\n /**\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.addEventListener = function () {\n this.parent.on(events.dataReady, this.onDataReady, this);\n this.parent.on(events.dataSourceModified, this.dataSourceModified, this);\n this.parent.on(events.infinitePageQuery, this.infinitePageQuery, this);\n this.parent.on(events.infiniteScrollHandler, this.infiniteScrollHandler, this);\n this.parent.on(events.beforeCellFocused, this.infiniteCellFocus, this);\n this.parent.on(events.appendInfiniteContent, this.appendInfiniteRows, this);\n this.parent.on(events.removeInfiniteRows, this.removeInfiniteCacheRows, this);\n this.parent.on(events.resetInfiniteBlocks, this.resetInfiniteBlocks, this);\n this.parent.on(events.setInfiniteCache, this.setCache, this);\n this.parent.on(events.initialCollapse, this.ensureIntialCollapse, this);\n this.parent.on(events.keyPressed, this.infiniteCellFocus, this);\n this.parent.on(events.infiniteShowHide, this.setDisplayNone, this);\n this.parent.on(events.virtualScrollEditActionBegin, this.editActionBegin, this);\n this.parent.on(events.getVirtualData, this.getVirtualInfiniteData, this);\n this.parent.on(events.editReset, this.resetInfiniteEdit, this);\n this.parent.on(events.virtualScrollEditSuccess, this.infiniteEditSuccess, this);\n this.parent.on(events.refreshVirtualCache, this.refreshInfiniteCache, this);\n this.parent.on(events.refreshInfiniteEditrowindex, this.refreshInfiniteEditrowindex, this);\n this.parent.on(events.infiniteEditHandler, this.infiniteEditHandler, this);\n this.parent.on(events.virtualScrollAddActionBegin, this.infiniteAddActionBegin, this);\n this.parent.on(events.modelChanged, this.modelChanged, this);\n this.parent.on(events.refreshInfiniteCurrentViewData, this.refreshInfiniteCurrentViewData, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.contentReady, this.selectNewRow, this);\n this.parent.on(events.captionActionComplete, this.captionActionComplete, this);\n this.parent.on(events.setVirtualPageQuery, this.setGroupCollapsePageQuery, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.parent.on(events.deleteComplete, this.deleteComplate, this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.dataReady, this.onDataReady);\n this.parent.off(events.dataSourceModified, this.dataSourceModified);\n this.parent.off(events.infinitePageQuery, this.infinitePageQuery);\n this.parent.off(events.infiniteScrollHandler, this.infiniteScrollHandler);\n this.parent.off(events.beforeCellFocused, this.infiniteCellFocus);\n this.parent.off(events.appendInfiniteContent, this.appendInfiniteRows);\n this.parent.off(events.removeInfiniteRows, this.removeInfiniteCacheRows);\n this.parent.off(events.resetInfiniteBlocks, this.resetInfiniteBlocks);\n this.parent.off(events.setInfiniteCache, this.setCache);\n this.parent.off(events.initialCollapse, this.ensureIntialCollapse);\n this.parent.off(events.keyPressed, this.infiniteCellFocus);\n this.parent.off(events.infiniteShowHide, this.setDisplayNone);\n this.parent.off(events.virtualScrollEditActionBegin, this.editActionBegin);\n this.parent.off(events.getVirtualData, this.getVirtualInfiniteData);\n this.parent.off(events.editReset, this.resetInfiniteEdit);\n this.parent.off(events.virtualScrollEditSuccess, this.infiniteEditSuccess);\n this.parent.off(events.refreshVirtualCache, this.refreshInfiniteCache);\n this.parent.on(events.refreshInfiniteEditrowindex, this.refreshInfiniteEditrowindex);\n this.parent.off(events.infiniteEditHandler, this.infiniteEditHandler);\n this.parent.off(events.virtualScrollAddActionBegin, this.infiniteAddActionBegin);\n this.parent.off(events.modelChanged, this.modelChanged);\n this.parent.off(events.refreshInfiniteCurrentViewData, this.refreshInfiniteCurrentViewData);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.contentReady, this.selectNewRow);\n this.parent.off(events.captionActionComplete, this.captionActionComplete);\n this.parent.off(events.setVirtualPageQuery, this.setGroupCollapsePageQuery);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n };\n InfiniteScroll.prototype.dataBound = function () {\n if (this.groupCaptionAction === 'collapse') {\n this.groupCaptionAction = 'refresh';\n this.makeGroupCollapseRequest();\n }\n else if (this.groupCaptionAction === 'refresh') {\n this.parent.hideSpinner();\n this.groupCaptionAction = this.empty;\n }\n };\n InfiniteScroll.prototype.setGroupCollapsePageQuery = function (args) {\n var gObj = this.parent;\n if (!gObj.infiniteScrollSettings.enableCache && this.isGroupCollapse) {\n args.skipPage = true;\n this.isGroupCollapse = false;\n if (this.groupCaptionAction === 'collapse') {\n var captionRow = gObj.getRowObjectFromUID(this.parentCapUid);\n var rowObjs = gObj.getRowsObject();\n var childCount = 0;\n for (var i = rowObjs.length - 1; i >= 0; i--) {\n if (rowObjs[i].indent === captionRow.indent) {\n break;\n }\n if (rowObjs[i].isDataRow) {\n childCount++;\n }\n }\n var key = getGroupKeysAndFields(rowObjs.indexOf(captionRow), rowObjs);\n var pred = generateExpandPredicates(key.fields, key.keys, this);\n var predicateList = getPredicates(pred);\n pred = predicateList[predicateList.length - 1];\n for (var i = predicateList.length - 2; i >= 0; i--) {\n pred = pred.and(predicateList[i]);\n }\n args.query.where(pred);\n args.query.skip(childCount);\n this.parentCapUid = this.empty;\n }\n else {\n var rows = gObj.getRows();\n var size = gObj.pageSettings.pageSize;\n var skip = getRowIndexFromElement(rows[rows.length - 1]) + 1;\n var additionalCnt = ((skip - (skip % size)) + size) - skip;\n if ((skip % size) === 0) {\n additionalCnt = 0;\n }\n args.query.skip(skip);\n args.query.take((gObj.infiniteScrollSettings.initialBlocks * gObj.pageSettings.pageSize) + additionalCnt);\n }\n }\n };\n InfiniteScroll.prototype.captionActionComplete = function (args) {\n var gObj = this.parent;\n if (!gObj.infiniteScrollSettings.enableCache && args.isCollapse) {\n var contetRect = gObj.getContent().firstElementChild.getBoundingClientRect();\n var tableReact = gObj.contentModule.getTable().getBoundingClientRect();\n if (Math.round(tableReact.bottom - gObj.getRowHeight()) <= Math.round(contetRect.bottom)) {\n this.parentCapUid = args.parentUid;\n this.groupCaptionAction = 'collapse';\n gObj.showSpinner();\n var caption = gObj.getRowObjectFromUID(args.parentUid);\n var childCount = this.getCaptionChildCount(caption);\n if (!childCount) {\n this.groupCaptionAction = 'refresh';\n this.makeGroupCollapseRequest();\n }\n else {\n this.makeGroupCollapseRequest(args.parentUid);\n }\n }\n }\n };\n InfiniteScroll.prototype.makeGroupCollapseRequest = function (parentUid) {\n var gObj = this.parent;\n var rows = gObj.getRows();\n var index = getRowIndexFromElement(rows[rows.length - 1]);\n var prevPage = this.parent.pageSettings.currentPage;\n this.parent.pageSettings.currentPage = Math.ceil(index / this.parent.pageSettings.pageSize) + 1;\n if (this.parent.pageSettings.currentPage > this.maxPage) {\n gObj.hideSpinner();\n return;\n }\n var scrollArg = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: index + 1,\n direction: 'down',\n isCaptionCollapse: true,\n parentUid: parentUid\n };\n this.isGroupCollapse = true;\n this.parent.notify('model-changed', scrollArg);\n };\n InfiniteScroll.prototype.getCaptionChildCount = function (caption) {\n var rowObj = this.parent.getRowsObject();\n var index = rowObj.indexOf(caption);\n var make = false;\n for (var i = index; i < rowObj.length; i++) {\n if ((rowObj[i].indent === caption.indent || rowObj[i].indent < caption.indent)\n && rowObj[i].data.key !== caption.data.key) {\n break;\n }\n if (rowObj[i].isCaptionRow && !this.childCheck(rowObj, rowObj[i], i)) {\n make = true;\n break;\n }\n }\n return make;\n };\n InfiniteScroll.prototype.childCheck = function (rowObj, row, index) {\n var childCount = 0;\n for (var i = index + 1; i < rowObj.length; i++) {\n if (rowObj[i].indent === row.indent) {\n break;\n }\n if (rowObj[i].indent === (row.indent + 1) && rowObj[i].parentUid === row.uid) {\n childCount++;\n }\n }\n return row.data.count === childCount;\n };\n InfiniteScroll.prototype.updateCurrentViewData = function () {\n var gObj = this.parent;\n if (gObj.groupSettings.columns.length) {\n return;\n }\n var keys = Object.keys(this.infiniteCurrentViewData);\n gObj.currentViewData = [];\n var page = gObj.pageSettings.currentPage;\n var isCache = gObj.infiniteScrollSettings.enableCache;\n var blocks = gObj.infiniteScrollSettings.maxBlocks;\n var isMiddlePage = isCache && (page > blocks || (this.isUpScroll && page > 1));\n var start = isMiddlePage ? this.isUpScroll ? page : (page - blocks) + 1 : 1;\n var end = isMiddlePage ? (start + blocks) - 1 : isCache ? blocks : keys.length;\n for (var i = start; i <= end; i++) {\n if (this.infiniteCurrentViewData[i]) {\n gObj.currentViewData = gObj.currentViewData.concat(this.infiniteCurrentViewData[i]);\n }\n }\n };\n InfiniteScroll.prototype.refreshInfiniteCurrentViewData = function (e) {\n var page = this.parent.pageSettings.currentPage;\n var size = this.parent.pageSettings.pageSize;\n var blocks = this.parent.infiniteScrollSettings.initialBlocks;\n var keys = Object.keys(this.infiniteCurrentViewData);\n var cache = this.parent.infiniteScrollSettings.enableCache;\n if (!this.parent.groupSettings.columns.length) {\n var isAdd = e.args.requestType === 'save';\n var isDelete = e.args.requestType === 'delete';\n if (!cache && (isAdd || isDelete)) {\n if (isAdd) {\n this.infiniteCurrentViewData[1] = e.data.concat(this.infiniteCurrentViewData[1]);\n }\n else {\n this.infiniteCurrentViewData[keys[keys.length - 1]].push(e.data[0]);\n }\n }\n else {\n if (blocks > 1 && e.data.length === (blocks * size)) {\n this.setInitialCache(e.data.slice(), {}, cache && e.args.requestType === 'delete', true);\n }\n else {\n this.infiniteCurrentViewData[page] = e.data.slice();\n }\n }\n }\n };\n InfiniteScroll.prototype.deleteComplate = function () {\n if (this.parent.isFrozenGrid() && !this.parent.infiniteScrollSettings.enableCache) {\n this.parent.contentModule.refreshScrollOffset();\n }\n };\n InfiniteScroll.prototype.modelChanged = function (args) {\n var rows = this.parent.getRows();\n if (rows && rows.length && args.requestType !== 'infiniteScroll' && (args.requestType === 'delete' || this.requestType === 'add')) {\n this.firstIndex = getRowIndexFromElement(rows[0]);\n this.firstBlock = Math.ceil((this.firstIndex + 1) / this.parent.pageSettings.pageSize);\n this.lastIndex = getRowIndexFromElement(rows[rows.length - 1]);\n if (args.requestType === 'delete') {\n var rowObj = this.parent.getRowsObject();\n args.startIndex = this.parent.infiniteScrollSettings.enableCache\n ? (this.firstBlock - 1) * this.parent.pageSettings.pageSize : rowObj[rowObj.length - 1].index;\n }\n else {\n args.startIndex = this.firstIndex;\n }\n if (!this.parent.infiniteScrollSettings.enableCache\n && this.parent.pageSettings.currentPage === this.maxPage && args.requestType === 'delete') {\n this.isLastPage = true;\n this.lastIndex = this.lastIndex - 1;\n }\n }\n };\n InfiniteScroll.prototype.infiniteAddActionBegin = function (args) {\n if (this.isNormaledit) {\n this.isAdd = true;\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.emptyRowData).length) {\n this.createEmptyRowdata();\n }\n if (this.parent.pageSettings.currentPage > 1) {\n args.startEdit = false;\n this.resetInfiniteBlocks({}, true);\n this.makeRequest({ currentPage: 1 });\n }\n }\n }\n };\n InfiniteScroll.prototype.infiniteEditHandler = function (args) {\n if (!this.parent.infiniteScrollSettings.enableCache && (args.e.requestType === 'delete'\n || (args.e.requestType === 'save' && this.requestType === 'add'))) {\n var frozenCols = this.parent.isFrozenGrid();\n var rowElms = this.parent.getRows();\n var rows = this.parent.getRowsObject();\n if (this.ensureRowAvailability(rows, args.result[0])) {\n if (rowElms.length) {\n this.resetRowIndex(rows, args.e, rowElms, this.requestType === 'add', true);\n if (frozenCols) {\n var rows_1 = this.parent.getMovableRowsObject();\n this.resetRowIndex(rows_1, args.e, this.parent.getMovableDataRows(), this.requestType === 'add');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frRows = this.parent.getFrozenRightRowsObject();\n this.resetRowIndex(frRows, args.e, this.parent.getFrozenRightRows(), this.requestType === 'add');\n }\n }\n }\n if (!this.isLastPage) {\n this.createRow(rows, args);\n }\n else {\n this.isLastPage = false;\n this.parent.pageSettings.currentPage = this.maxPage;\n if (this.parent.selectionModule.index < this.parent.frozenRows) {\n remove(rowElms[this.parent.frozenRows - 1]);\n this.createRow([rows[this.parent.frozenRows - 1]], args, false, true);\n if (frozenCols) {\n var movableRows = this.parent.getMovableDataRows();\n remove(movableRows[this.parent.frozenRows]);\n this.createRow([this.parent.getMovableRowsObject()[this.parent.frozenRows - 1]], args, true, true);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var rightRows = this.parent.getFrozenRightDataRows();\n remove(rightRows[this.parent.frozenRows]);\n this.createRow([this.parent.getFrozenRightRowsObject()[this.parent.frozenRows - 1]], args, false, true, true);\n }\n }\n setRowElements(this.parent);\n }\n }\n }\n this.parent.hideSpinner();\n this.parent.notify(events.refreshInfinitePersistSelection, {});\n if (this.requestType === 'delete') {\n this.parent.notify(events.deleteComplete, args.e);\n }\n else {\n this.parent.notify(events.saveComplete, args.e);\n }\n }\n this.parent.notify(events.freezeRender, { case: 'refreshHeight' });\n };\n InfiniteScroll.prototype.createRow = function (rows, args, isMovable, isFrozenRows, isFrozenRight) {\n var row = !isFrozenRows ? this.generateRows(args.result, args.e) : rows;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var tbody;\n if (isFrozenRight) {\n tbody = this.parent.element.querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n }\n else {\n tbody = !this.parent.isFrozenGrid() ? this.parent.getContent().querySelector(literals.tbody) : isMovable\n ? this.parent.getMovableVirtualContent().querySelector(literals.tbody)\n : this.parent.getFrozenVirtualContent().querySelector(literals.tbody);\n }\n if (this.parent.frozenRows) {\n tbody = isFrozenRows && this.requestType !== 'add' || !isFrozenRows && this.requestType === 'add'\n ? !this.parent.isFrozenGrid() ? this.parent.getHeaderContent().querySelector(literals.tbody)\n : isMovable ? this.parent.getMovableVirtualHeader().querySelector(literals.tbody)\n : isFrozenRight ? this.parent.element.querySelector('.e-frozen-right-header').querySelector(literals.tbody)\n : this.parent.getFrozenVirtualHeader().querySelector(literals.tbody) : tbody;\n }\n var notifyArgs = {\n rows: rows, cancel: false, args: args, isMovable: isMovable,\n isFrozenRows: isFrozenRows, isFrozenRight: isFrozenRows, row: row\n };\n this.parent.notify(events.infiniteCrudCancel, notifyArgs);\n if (!notifyArgs.cancel) {\n for (var i = row.length - 1; i >= 0; i--) {\n if (this.requestType === 'delete') {\n tbody.appendChild(rowRenderer.render(row[i], this.parent.getColumns()));\n }\n else {\n tbody.insertBefore(rowRenderer.render(row[i], this.parent.getColumns()), tbody.firstElementChild);\n }\n }\n }\n if (!isFrozenRows && this.parent.frozenRows\n && (this.parent.selectionModule.index < this.parent.frozenRows || this.requestType === 'add')) {\n var rowElems = isMovable ? this.parent.getMovableDataRows() : isFrozenRight ? this.parent.getFrozenRightDataRows()\n : this.parent.getRows();\n var index = (isMovable || isFrozenRight) && this.requestType === 'add'\n ? this.parent.frozenRows : this.parent.frozenRows - 1;\n remove(rowElems[index]);\n this.createRow([rows[this.parent.frozenRows - 1]], args, isMovable, true, isFrozenRight);\n }\n if (!this.parent.infiniteScrollSettings.enableCache && !isFrozenRows) {\n if (isFrozenRight) {\n setRowElements(this.parent);\n this.parent.contentModule.rightFreezeRows = this.requestType === 'add'\n ? row.concat(rows) : rows.concat(row);\n }\n else if (!this.parent.isFrozenGrid() || isMovable) {\n setRowElements(this.parent);\n this.parent.contentModule.visibleRows = this.requestType === 'add'\n ? row.concat(rows) : rows.concat(row);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n args.e.renderMovableContent = true;\n this.createRow(this.parent.getFrozenRightRowsObject(), args, false, false, true);\n }\n }\n else {\n this.parent.contentModule.visibleFrozenRows = this.requestType === 'add'\n ? row.concat(rows) : rows.concat(row);\n args.e.isFrozen = true;\n this.createRow(this.parent.getMovableRowsObject(), args, true);\n }\n }\n };\n InfiniteScroll.prototype.ensureRowAvailability = function (rows, data) {\n var resume = true;\n if (this.parent.frozenRows && !this.parent.infiniteScrollSettings.enableCache\n && this.parent.sortSettings.columns && this.requestType === 'add') {\n var key = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].data[key] === data[key]) {\n resume = false;\n break;\n }\n }\n }\n return resume;\n };\n InfiniteScroll.prototype.generateRows = function (data, args) {\n return this.rowModelGenerator.generateRows(data, args);\n };\n InfiniteScroll.prototype.resetRowIndex = function (rows, args, rowElms, isAdd, isFrozen) {\n var _this = this;\n var keyField = this.parent.getPrimaryKeyFieldNames()[0];\n var isRemove = !(rowElms.length % this.parent.pageSettings.pageSize);\n if (isAdd) {\n if (isRemove) {\n if (isFrozen && !this.parent.groupSettings.columns.length) {\n this.swapCurrentViewData(1, true);\n }\n remove(rowElms[rows.length - 1]);\n rowElms.splice(rows.length - 1, 1);\n rows.splice(rows.length - 1, 1);\n }\n }\n else {\n rows.filter(function (e, index) {\n if (e.data[keyField] === args.data[0][keyField]) {\n if (isFrozen && !_this.parent.groupSettings.columns.length) {\n var page = Math.ceil((index + 1) / _this.parent.pageSettings.pageSize);\n _this.resetInfiniteCurrentViewData(page, index);\n }\n rows.splice(index, 1);\n remove(rowElms[index]);\n rowElms.splice(index, 1);\n }\n });\n }\n var startIndex = isAdd ? 1 : 0;\n resetRowIndex(this.parent, rows, rowElms, startIndex);\n };\n InfiniteScroll.prototype.resetInfiniteCurrentViewData = function (page, index) {\n index = index - ((page - 1) * this.parent.pageSettings.pageSize);\n this.infiniteCurrentViewData[page].splice(index, 1);\n this.swapCurrentViewData(page, false);\n };\n InfiniteScroll.prototype.swapCurrentViewData = function (page, isAdd) {\n var keys = Object.keys(this.infiniteCurrentViewData);\n var end = isAdd ? keys.length + 1 : keys.length;\n for (var i = page; i < end; i++) {\n if (this.infiniteCurrentViewData[i + 1]) {\n var pageIndex = isAdd ? i : i + 1;\n var index = isAdd ? this.infiniteCurrentViewData[i].length - 1 : 0;\n var data = this.infiniteCurrentViewData[pageIndex].splice(index, 1);\n if (isAdd) {\n this.infiniteCurrentViewData[i + 1] = data.concat(this.infiniteCurrentViewData[i + 1]);\n if ((i + 1) === end - 1) {\n this.infiniteCurrentViewData[i + 1].splice(this.infiniteCurrentViewData[i + 1].length - 1, 1);\n }\n }\n else {\n this.infiniteCurrentViewData[i].push(data[0]);\n }\n }\n }\n this.updateCurrentViewData();\n };\n InfiniteScroll.prototype.setDisplayNone = function (args) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var frozenCols = this.parent.isFrozenGrid();\n var keys = frozenCols ? Object.keys(this.infiniteFrozenCache) : Object.keys(this.infiniteCache);\n for (var i = 1; i <= keys.length; i++) {\n var cache = frozenCols ? args.isFreeze ? this.infiniteFrozenCache[i][0]\n : this.infiniteFrozenCache[i][1] : this.infiniteCache[i];\n cache.filter(function (e) {\n e.cells[args.index].visible = args.visible === '';\n });\n }\n this.resetContentModuleCache(frozenCols ? this.infiniteFrozenCache : this.infiniteCache);\n }\n };\n InfiniteScroll.prototype.refreshInfiniteCache = function (args) {\n this.getEditedRowObject().data = args.data;\n };\n InfiniteScroll.prototype.refreshInfiniteEditrowindex = function (args) {\n this.editRowIndex = args.index;\n };\n InfiniteScroll.prototype.getEditedRowObject = function () {\n var rowObjects = this.parent.getRowsObject();\n var editedrow;\n for (var i = 0; i < rowObjects.length; i++) {\n if (rowObjects[i].index === this.editRowIndex) {\n editedrow = rowObjects[i];\n }\n }\n return editedrow;\n };\n InfiniteScroll.prototype.infiniteEditSuccess = function (args) {\n if (this.isNormaledit) {\n if (!this.isAdd && args.data) {\n this.updateCurrentViewRecords(args.data);\n }\n this.isAdd = false;\n }\n };\n InfiniteScroll.prototype.updateCurrentViewRecords = function (data) {\n var index = getEditedDataIndex(this.parent, data);\n if (!isNullOrUndefined(index)) {\n this.parent.getCurrentViewRecords()[index] = data;\n }\n };\n InfiniteScroll.prototype.actionBegin = function (args) {\n if (args.requestType === 'add' || args.requestType === 'delete') {\n this.requestType = args.requestType;\n }\n else if (args.action === 'add' && args.requestType === 'save') {\n this.requestType = args.action;\n }\n if (this.parent.isFrozenGrid() && !args.cancel && args.requestType === 'searching'\n || args.requestType === 'sorting' || args.requestType === 'filtering') {\n this.isInitialRender = true;\n }\n };\n InfiniteScroll.prototype.actionComplete = function (args) {\n if (args.requestType === 'delete' || args.requestType === 'save' || args.requestType === 'cancel') {\n this.requestType = this.empty;\n this.isCancel = args.requestType === 'cancel' || args.requestType === 'save';\n this.isAdd = this.isEdit = false;\n if (this.isNormaledit) {\n this.editRowIndex = this.empty;\n this.virtualInfiniteData = {};\n this.parent.editModule.previousVirtualData = {};\n }\n }\n };\n InfiniteScroll.prototype.resetInfiniteEdit = function () {\n if (this.parent.enableInfiniteScrolling && this.isNormaledit) {\n if ((this.parent.editSettings.allowEditing && this.isEdit) || (this.parent.editSettings.allowAdding && this.isAdd)) {\n this.parent.isEdit = true;\n }\n }\n };\n InfiniteScroll.prototype.getVirtualInfiniteData = function (data) {\n data.virtualData = this.virtualInfiniteData;\n data.isAdd = this.isAdd;\n data.isCancel = this.isCancel;\n };\n InfiniteScroll.prototype.editActionBegin = function (e) {\n this.isEdit = true;\n this.editRowIndex = e.index;\n var rowObject = extend({}, this.getEditedRowObject().data);\n e.data = Object.keys(this.virtualInfiniteData).length ? this.virtualInfiniteData : rowObject;\n };\n InfiniteScroll.prototype.dataSourceModified = function () {\n this.resetInfiniteBlocks({ requestType: this.empty }, true);\n };\n InfiniteScroll.prototype.onDataReady = function (e) {\n if (!isNullOrUndefined(e.count) && e.requestType !== 'infiniteScroll') {\n this.maxPage = Math.ceil(e.count / this.parent.pageSettings.pageSize);\n }\n };\n InfiniteScroll.prototype.ensureIntialCollapse = function (isExpand) {\n this.isInitialCollapse = !isExpand;\n };\n InfiniteScroll.prototype.infiniteScrollHandler = function (e) {\n this.restoreInfiniteEdit();\n this.restoreInfiniteAdd();\n var targetEle = e.target;\n var isInfinite = targetEle.classList.contains(literals.content);\n if (isInfinite && this.parent.enableInfiniteScrolling && !e.isLeft) {\n var scrollEle = this.parent.getContent().firstElementChild;\n this.prevScrollTop = scrollEle.scrollTop;\n var rows = this.parent.getRows();\n if (!rows.length) {\n return;\n }\n var index = getRowIndexFromElement(rows[rows.length - 1]) + 1;\n var prevPage = this.parent.pageSettings.currentPage;\n var args = void 0;\n var offset = targetEle.scrollHeight - targetEle.scrollTop;\n var round = Math.round(targetEle.scrollHeight - targetEle.scrollTop);\n var floor = offset < targetEle.clientHeight ? Math.ceil(offset) : Math.floor(offset);\n if (floor > targetEle.clientHeight) {\n floor = floor - 1;\n }\n var isBottom = (floor === targetEle.clientHeight || round === targetEle.clientHeight);\n if (!isNullOrUndefined(this.groupCaptionAction)) {\n return;\n }\n if (this.isScroll && isBottom && (this.parent.pageSettings.currentPage <= this.maxPage - 1 || this.enableContinuousScroll)) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n this.isUpScroll = false;\n this.isDownScroll = true;\n }\n var rows_2 = [].slice.call(scrollEle.querySelectorAll('.e-row:not(.e-addedrow)'));\n var row = rows_2[rows_2.length - 1];\n var rowIndex = getRowIndexFromElement(row);\n this.parent.pageSettings.currentPage = Math.ceil(rowIndex / this.parent.pageSettings.pageSize) + 1;\n args = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: index,\n direction: 'down'\n };\n this.makeRequest(args);\n }\n if (this.isScroll && this.parent.infiniteScrollSettings.enableCache && targetEle.scrollTop === 0\n && this.parent.pageSettings.currentPage !== 1) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n this.isDownScroll = false;\n this.isUpScroll = true;\n }\n var row = [].slice.call(scrollEle.getElementsByClassName(literals.row));\n var rowIndex = getRowIndexFromElement(row[this.parent.pageSettings.pageSize - 1]);\n var startIndex = getRowIndexFromElement(row[0]) - this.parent.pageSettings.pageSize;\n this.parent.pageSettings.currentPage = Math.ceil(rowIndex / this.parent.pageSettings.pageSize) - 1;\n if (this.parent.pageSettings.currentPage) {\n args = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: startIndex,\n direction: 'up'\n };\n this.makeRequest(args);\n }\n }\n if (this.parent.infiniteScrollSettings.enableCache && !this.isScroll && isNullOrUndefined(args)) {\n if (this.isDownScroll || this.isUpScroll) {\n scrollEle.scrollTop = this.top;\n }\n }\n }\n };\n InfiniteScroll.prototype.makeRequest = function (args) {\n var _this = this;\n if (this.parent.pageSettings.currentPage !== args.prevPage) {\n var initBlocks = this.parent.infiniteScrollSettings.initialBlocks;\n if (initBlocks < this.maxPage && this.parent.pageSettings.currentPage <= this.maxPage) {\n this.isInfiniteScroll = true;\n if (isNullOrUndefined(this.infiniteCache[args.currentPage])) {\n setTimeout(function () {\n _this.getVirtualInfiniteEditedData();\n _this.parent.notify('model-changed', args);\n }, 100);\n }\n else {\n setTimeout(function () {\n _this.getVirtualInfiniteEditedData();\n _this.parent.notify(events.refreshInfiniteModeBlocks, args);\n }, 100);\n }\n }\n else {\n this.parent.pageSettings.currentPage = this.maxPage;\n }\n }\n };\n InfiniteScroll.prototype.infinitePageQuery = function (query) {\n if (this.initialRender) {\n this.initialRender = false;\n this.intialPageQuery(query);\n }\n else {\n if (!this.isInfiniteScroll && (this.requestType === 'delete' || this.requestType === 'add')) {\n this.editPageQuery(query);\n }\n else {\n query.page(this.parent.pageSettings.currentPage, this.parent.pageSettings.pageSize);\n }\n }\n };\n InfiniteScroll.prototype.editPageQuery = function (query) {\n var initialBlocks = this.parent.infiniteScrollSettings.initialBlocks;\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (isCache) {\n this.infiniteCache = {};\n this.infiniteFrozenCache = {};\n this.infiniteCurrentViewData = {};\n query.skip(this.firstIndex);\n query.take(initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n if (this.parent.editSettings.mode === 'Dialog') {\n this.parent.clearSelection();\n }\n var index = this.requestType === 'delete' ? this.lastIndex : this.firstIndex;\n query.skip(index);\n query.take(1);\n }\n };\n InfiniteScroll.prototype.intialPageQuery = function (query) {\n if (this.parent.infiniteScrollSettings.enableCache\n && this.parent.infiniteScrollSettings.initialBlocks > this.parent.infiniteScrollSettings.maxBlocks) {\n this.parent.infiniteScrollSettings.initialBlocks = this.parent.infiniteScrollSettings.maxBlocks;\n }\n var pageSize = this.parent.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks;\n query.page(1, pageSize);\n };\n InfiniteScroll.prototype.scrollToLastFocusedCell = function (e) {\n var gObj = this.parent;\n var rowIdx = this.lastFocusInfo.rowIdx + (e.keyArgs.action === literals.upArrow ? -1 : 1);\n var cellIdx = this.lastFocusInfo.cellIdx;\n var row = gObj.getRowByIndex(rowIdx);\n var content = gObj.getContent().firstElementChild;\n if (!row) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var page = Math.floor(rowIdx / this.parent.pageSettings.pageSize) + 1;\n gObj.pageSettings.currentPage = page;\n var cols = gObj.getColumns();\n remove(gObj.getContent().querySelector('tbody'));\n gObj.getContent().querySelector('table').appendChild(gObj.createElement('tbody'));\n var focusRows = [];\n for (var i = (page === 1 || this.maxPage === page) ? 0 : -1, k = 0; k < gObj.infiniteScrollSettings.maxBlocks; this.maxPage === page ? i-- : i++, k++) {\n var rows = this.infiniteCache[page + i];\n if (rows) {\n focusRows = focusRows.concat(rows);\n for (var j = 0; j < rows.length; j++) {\n gObj.getContent().querySelector('tbody').appendChild(rowRenderer.render(rows[j], cols));\n }\n }\n }\n gObj.notify(events.contentReady, { rows: focusRows, args: {} });\n setRowElements(gObj);\n }\n row = gObj.getRowByIndex(rowIdx);\n var target = row.cells[cellIdx];\n gObj.focusModule.isInfiniteScroll = true;\n gObj.focusModule.onClick({ target: target }, true);\n gObj.selectRow(rowIdx);\n target.focus();\n this.isFocusScroll = false;\n e.cancel = true;\n };\n InfiniteScroll.prototype.setLastCellFocusInfo = function (e) {\n var cell = ((e.byClick && e.clickArgs.target) || (e.byKey && e.keyArgs.target)\n || (!this.isFocusScroll && e).target);\n if (cell && cell.classList.contains('e-rowcell')) {\n var cellIdx = parseInt(cell.getAttribute('aria-colindex'), 10);\n var rowIdx = parseInt(cell.parentElement.getAttribute('aria-rowindex'));\n this.lastFocusInfo = { rowIdx: rowIdx, cellIdx: cellIdx };\n }\n };\n InfiniteScroll.prototype.infiniteCellFocus = function (e) {\n var gObj = this.parent;\n var cache = gObj.infiniteScrollSettings.enableCache;\n if (e.byKey) {\n if (cache && this.isFocusScroll) {\n this.scrollToLastFocusedCell(e);\n return;\n }\n var cell = document.activeElement;\n var rowIndex = getRowIndexFromElement(cell.parentElement);\n this.cellIndex = parseInt(cell.getAttribute(literals.ariaColIndex), 10);\n var content = gObj.getContent().firstElementChild;\n var totalRowsCount = (this.maxPage * gObj.pageSettings.pageSize) - 1;\n var visibleRowCount = Math.floor(content.offsetHeight / this.parent.getRowHeight());\n var contentRect = content.getBoundingClientRect();\n if (!isNaN(rowIndex)) {\n if (e.keyArgs.action === literals.downArrow || e.keyArgs.action === literals.enter) {\n this.rowIndex = rowIndex += 1;\n var row = gObj.getRowByIndex(rowIndex);\n var rowRect = row && row.getBoundingClientRect();\n if (cache) {\n rowIndex = cell.parentElement.rowIndex + 1;\n }\n if (this.isFocusScroll || (!row && rowIndex < totalRowsCount)\n || (rowRect && rowRect.bottom >= contentRect.bottom)) {\n if (!this.isFocusScroll) {\n this.pressedKey = e.keyArgs.action;\n }\n this.isFocusScroll = false;\n content.scrollTop = ((rowIndex - visibleRowCount) + 1) * this.parent.getRowHeight();\n }\n else if (!cache && row) {\n if (rowRect && (rowRect.bottom >= contentRect.bottom || rowRect.top < contentRect.top)) {\n row.cells[this.cellIndex].scrollIntoView();\n }\n }\n }\n else if (e.keyArgs.action === literals.upArrow || e.keyArgs.action === literals.shiftEnter) {\n this.rowIndex = rowIndex -= 1;\n var row = gObj.getRowByIndex(rowIndex);\n var rowRect = row && row.getBoundingClientRect();\n if (cache) {\n rowIndex = cell.parentElement.rowIndex - 1;\n }\n if (!row || rowRect.top <= contentRect.top) {\n this.pressedKey = e.keyArgs.action;\n content.scrollTop = rowIndex * this.parent.getRowHeight();\n }\n }\n }\n }\n else if (e.key === 'PageDown' || e.key === 'PageUp') {\n this.pressedKey = e.key;\n }\n this.setLastCellFocusInfo(e);\n };\n InfiniteScroll.prototype.createEmptyRowdata = function () {\n var _this = this;\n this.parent.getColumns().filter(function (e) {\n _this.emptyRowData[e.field] = _this.empty;\n });\n };\n InfiniteScroll.prototype.getVirtualInfiniteEditedData = function () {\n var editForm = this.parent.element.querySelector('.' + literals.editedRow);\n var addForm = this.parent.element.querySelector('.' + literals.addedRow);\n var gridForm = this.parent.element.querySelector('.e-gridform');\n if (this.parent.infiniteScrollSettings.enableCache && (editForm || addForm)) {\n var rowData = editForm ? extend({}, this.getEditedRowObject().data)\n : extend({}, this.emptyRowData);\n this.virtualInfiniteData = this.parent.editModule.getCurrentEditedData(gridForm, rowData);\n if (this.parent.isFrozenGrid()) {\n this.virtualInfiniteData = this.parent.editModule\n .getCurrentEditedData(this.parent.getMovableVirtualContent().querySelector('.e-gridform'), rowData);\n }\n }\n };\n InfiniteScroll.prototype.restoreInfiniteEdit = function () {\n var content = this.parent.getContent().firstElementChild;\n var frozenEdit = this.parent.frozenRows ? this.editRowIndex >= this.parent.frozenRows : true;\n if (this.isNormaledit && this.parent.infiniteScrollSettings.enableCache && frozenEdit) {\n if (this.parent.editSettings.allowEditing && !isNullOrUndefined(this.editRowIndex)) {\n var row = this.parent.getRowByIndex(this.editRowIndex);\n if (Object.keys(this.virtualInfiniteData).length && row && !this.parent.getContent().querySelector('.' + literals.editedRow)) {\n var top_1 = row.getBoundingClientRect().top;\n if (top_1 < content.offsetHeight && top_1 > this.parent.getRowHeight()) {\n this.parent.isEdit = false;\n this.parent.editModule.startEdit(row);\n }\n }\n }\n }\n };\n InfiniteScroll.prototype.restoreInfiniteAdd = function () {\n var content = this.parent.getContent().firstElementChild;\n if (this.parent.getCurrentViewRecords().length && this.parent.getRowByIndex(0) && this.isNormaledit &&\n this.parent.infiniteScrollSettings.enableCache && this.isAdd && !content.querySelector('.' + literals.addedRow)) {\n var isTop = content.scrollTop < this.parent.getRowHeight();\n if (isTop) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n }\n };\n InfiniteScroll.prototype.appendInfiniteRows = function (e) {\n var frozenCols = this.parent.isFrozenGrid();\n var scrollEle = this.parent.getContent().firstElementChild;\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.args.requestType === 'infiniteScroll';\n var isMovable = this.parent.getFrozenMode() === literals.leftRight && e.tableName === 'movable';\n if ((isInfiniteScroll && !e.args.isFrozen && !isMovable) || !isInfiniteScroll) {\n if (isInfiniteScroll && e.args.direction === 'up') {\n e.tbody.insertBefore(e.frag, e.tbody.firstElementChild);\n }\n else {\n e.tbody.appendChild(e.frag);\n }\n }\n if (!frozenCols) {\n this.parent.contentModule.getTable().appendChild(e.tbody);\n this.updateCurrentViewData();\n }\n else {\n if (isInfiniteScroll) {\n if (e.tableName === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right' && e.tableName === literals.frozenRight)) {\n this.frozenFrag = e.frag;\n }\n else if (this.parent.getFrozenMode() === literals.leftRight && e.tableName === 'movable') {\n this.movableFrag = e.frag;\n }\n else {\n var tbody = this.parent.getFrozenVirtualContent().querySelector(literals.tbody);\n if (e.args.direction === 'up') {\n tbody.insertBefore(this.frozenFrag, tbody.firstElementChild);\n }\n else {\n tbody.appendChild(this.frozenFrag);\n }\n if (e.tableName === literals.frozenRight) {\n this.parent.getMovableVirtualContent().querySelector(literals.tbody).appendChild(this.movableFrag);\n this.parent.element.querySelector('.e-frozen-right-content').querySelector(literals.tbody).appendChild(e.frag);\n }\n else {\n this.parent.getMovableVirtualContent().querySelector('.' + literals.table).appendChild(e.tbody);\n }\n this.parent.contentModule.refreshScrollOffset();\n this.updateCurrentViewData();\n }\n }\n else {\n var table = void 0;\n if (e.tableName === literals.frozenLeft) {\n table = this.parent.getFrozenVirtualContent().querySelector('.' + literals.table);\n }\n else if (e.tableName === 'movable') {\n table = this.parent.getMovableVirtualContent().querySelector('.' + literals.table);\n if (this.parent.getFrozenMode() !== literals.leftRight) {\n this.parent.contentModule.refreshScrollOffset();\n this.updateCurrentViewData();\n }\n }\n else {\n table = this.parent.element.querySelector('.e-frozen-right-content').querySelector('.' + literals.table);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.parent.contentModule.refreshScrollOffset();\n this.updateCurrentViewData();\n }\n }\n table.appendChild(e.tbody);\n this.widthService.refreshFrozenScrollbar();\n }\n }\n if (this.isInitialRender && !e.args.isFrozen) {\n this.isInitialRender = false;\n this.parent.scrollModule.setHeight();\n }\n if (!e.args.isFrozen) {\n this.rowTop = !this.rowTop ? this.parent.getRows()[0].getBoundingClientRect().top : this.rowTop;\n if (isInfiniteScroll) {\n if (this.parent.infiniteScrollSettings.enableCache && this.isRemove) {\n scrollEle.scrollTop = this.top;\n }\n setRowElements(this.parent);\n }\n this.restoreInfiniteAdd();\n this.isScroll = true;\n }\n this.isInfiniteScroll = false;\n };\n InfiniteScroll.prototype.selectNewRow = function (args) {\n var _this = this;\n var gObj = this.parent;\n var row = gObj.getRowByIndex(this.rowIndex);\n var cache = gObj.infiniteScrollSettings.enableCache;\n if (row && this.keys.some(function (value) { return value === _this.pressedKey; })) {\n var content = gObj.getContent().firstElementChild;\n var rowHeight = gObj.getRowHeight();\n var target = row.cells[this.cellIndex];\n if ((this.pressedKey === literals.downArrow || this.pressedKey === literals.enter)\n || (cache && (this.pressedKey === literals.upArrow || this.pressedKey === literals.shiftEnter))) {\n if (!cache && this.pressedKey !== literals.upArrow && this.pressedKey !== literals.shiftEnter) {\n content.scrollTop = content.scrollTop + rowHeight;\n }\n gObj.focusModule.isInfiniteScroll = true;\n gObj.focusModule.onClick({ target: target }, true);\n gObj.selectRow(this.rowIndex);\n }\n }\n else if (this.lastFocusInfo || this.pressedKey === literals.pageDown || this.pressedKey === literals.pageUp) {\n var idx = cache ? 0 : this.lastFocusInfo.rowIdx;\n if (gObj.getRowByIndex(idx)) {\n var target = gObj.getCellFromIndex(idx, this.lastFocusInfo.cellIdx);\n if (target) {\n this.isFocusScroll = true;\n if (!cache) {\n gObj.focusModule.isInfiniteScroll = true;\n gObj.focusModule.onClick({ target: target }, true);\n }\n else {\n target.focus({ preventScroll: true });\n }\n }\n }\n }\n this.pressedKey = undefined;\n };\n InfiniteScroll.prototype.removeInfiniteCacheRows = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.args.requestType === 'infiniteScroll';\n if (!e.args.isFrozen && isInfiniteScroll && this.parent.infiniteScrollSettings.enableCache && this.isRemove) {\n var rows = [].slice.call(this.parent.getContentTable().getElementsByClassName(literals.row));\n if (e.args.direction === 'down') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n var captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.removeCaptionRows(captionRows, e.args);\n }\n var addRowCount = this.parent.element.querySelector('.' + literals.addedRow) ? 0 : 1;\n this.removeTopRows(rows, this.parent.pageSettings.pageSize - addRowCount);\n }\n if (e.args.direction === 'up') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n var captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.removeCaptionRows(captionRows, e.args);\n }\n else {\n this.removeBottomRows(rows, rows.length - 1, e.args);\n }\n }\n this.isScroll = false;\n this.top = this.calculateScrollTop(e.args);\n }\n };\n InfiniteScroll.prototype.calculateScrollTop = function (args) {\n var top = 0;\n var scrollCnt = this.parent.getContent().firstElementChild;\n if (args.direction === 'down') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !this.isInitialCollapse) {\n top = this.captionRowHeight();\n }\n var captionRows = [].slice.call(this.parent.getContent().firstElementChild.querySelectorAll('tr:not(.e-row)'));\n var captionCount = 0;\n if (this.isInitialCollapse && !isNullOrUndefined(captionRows)) {\n captionCount = Math.round((captionRows.length - 1) / this.parent.groupSettings.columns.length);\n }\n var value = captionCount ? captionCount\n : this.parent.pageSettings.pageSize * (this.parent.infiniteScrollSettings.maxBlocks - 1);\n var currentViewRowCount = 0;\n var i = 0;\n while (currentViewRowCount < scrollCnt.clientHeight) {\n i++;\n currentViewRowCount = i * this.parent.getRowHeight();\n }\n i = i - 1;\n top += (value - i) * this.parent.getRowHeight();\n }\n if (args.direction === 'up') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !this.isInitialCollapse) {\n top = this.infiniteCache[this.parent.pageSettings.currentPage].length * this.parent.getRowHeight();\n }\n else if (this.isInitialCollapse) {\n var groupedData = this.infiniteCache[this.parent.pageSettings.currentPage];\n var count = 0;\n for (var i = 0; i < groupedData.length; i++) {\n if (groupedData[i].isCaptionRow) {\n count++;\n }\n }\n top += Math.round(count / this.parent.groupSettings.columns.length) * this.parent.getRowHeight();\n }\n else {\n top += (this.parent.pageSettings.pageSize * this.parent.getRowHeight() + getScrollBarWidth());\n }\n }\n return top;\n };\n InfiniteScroll.prototype.captionRowHeight = function () {\n var rows = [].slice.call(this.parent.getContent().querySelectorAll('tr:not(.e-row)'));\n return rows.length * this.parent.getRowHeight();\n };\n InfiniteScroll.prototype.removeTopRows = function (rows, maxIndx) {\n var frozeCols = this.parent.isFrozenGrid();\n var frRows = this.parent.getFrozenMode() === literals.leftRight\n ? [].slice.call(this.parent.element.querySelector('.e-frozen-right-content').getElementsByClassName(literals.row)) : null;\n var movableRows = frozeCols ?\n [].slice.call(this.parent.getMovableVirtualContent().getElementsByClassName(literals.row)) : null;\n for (var i = 0; i <= maxIndx; i++) {\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage === this.parent.infiniteScrollSettings.maxBlocks + 1\n && i > (maxIndx - this.parent.frozenRows)) {\n continue;\n }\n remove(rows[i]);\n if (movableRows) {\n remove(movableRows[i]);\n }\n if (frRows) {\n remove(frRows[i]);\n }\n }\n };\n InfiniteScroll.prototype.removeBottomRows = function (rows, maxIndx, args) {\n var cnt = 0;\n var frozeCols = this.parent.isFrozenGrid();\n var movableRows = frozeCols ?\n [].slice.call(this.parent.getMovableVirtualContent().getElementsByClassName(literals.row)) : null;\n var frRows = this.parent.getFrozenMode() === literals.leftRight ?\n [].slice.call(this.parent.element.querySelector('.e-frozen-right-content').getElementsByClassName(literals.row)) : null;\n var pageSize = this.parent.pageSettings.pageSize;\n if (!frozeCols && this.infiniteCache[args.prevPage].length < pageSize) {\n cnt = this.parent.pageSettings.pageSize - this.infiniteCache[args.prevPage].length;\n }\n if (frozeCols && this.infiniteFrozenCache[args.prevPage][1].length < pageSize) {\n cnt = this.parent.pageSettings.pageSize - this.infiniteFrozenCache[args.prevPage][1].length;\n }\n for (var i = maxIndx; cnt < pageSize; i--) {\n cnt++;\n remove(rows[i]);\n if (movableRows) {\n remove(movableRows[i]);\n }\n if (frRows) {\n remove(frRows[i]);\n }\n }\n };\n InfiniteScroll.prototype.removeCaptionRows = function (rows, args) {\n var rowElements = [].slice.call(this.parent.getContent().getElementsByClassName(literals.row));\n if (args.direction === 'down') {\n var lastRow = rowElements[this.parent.pageSettings.pageSize - 1];\n var lastRowIndex = getRowIndexFromElement(lastRow) - 1;\n var k = 0;\n for (var i = 0; k < lastRowIndex; i++) {\n if (!rows[i].classList.contains(literals.row)) {\n remove(rows[i]);\n }\n else {\n k = getRowIndexFromElement(rows[i]);\n }\n }\n }\n if (args.direction === 'up') {\n var lastIndex = getRowIndexFromElement(rowElements[rowElements.length - 1]);\n var page = Math.ceil(lastIndex / this.parent.pageSettings.pageSize);\n var startIndex = 0;\n for (var i = this.parent.pageSettings.currentPage + 1; i < page; i++) {\n startIndex += this.infiniteCache[i].length;\n }\n for (var i = startIndex; i < rows.length; i++) {\n remove(rows[i]);\n }\n }\n };\n InfiniteScroll.prototype.resetInfiniteBlocks = function (args, isDataModified) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && args.requestType !== 'infiniteScroll';\n if (!this.initialRender && !isNullOrUndefined(this.parent.infiniteScrollModule) && isInfiniteScroll) {\n if (this.actions.some(function (value) { return value === args.requestType; }) || isDataModified) {\n var scrollEle = this.parent.getContent().firstElementChild;\n this.initialRender = true;\n scrollEle.scrollTop = 0;\n this.parent.pageSettings.currentPage = 1;\n this.infiniteCache = this.infiniteFrozenCache = {};\n this.infiniteCurrentViewData = {};\n this.resetContentModuleCache({});\n this.isRemove = false;\n this.top = 0;\n this.isInitialMovableRender = true;\n this.isInitialCollapse = false;\n this.parent.contentModule.isRemove = this.isRemove;\n this.parent.contentModule.isAddRows = this.isRemove;\n this.parent.contentModule.visibleRows = [];\n this.parent.contentModule.visibleFrozenRows = [];\n }\n }\n };\n InfiniteScroll.prototype.setCache = function (e) {\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n var frozeCols = this.parent.isFrozenGrid();\n var idx = e.args.isFrozen ? 1 : 0;\n var isEdit = e.args.requestType !== 'infiniteScroll'\n && (this.requestType === 'delete' || this.requestType === 'add');\n var currentPage = this.parent.pageSettings.currentPage;\n if ((frozeCols && this.isInitialMovableRender) || (!frozeCols && !Object.keys(this.infiniteCache).length) || isEdit) {\n this.isInitialMovableRender = !e.args.isFrozen;\n this.setInitialCache(e.modelData, e.args, isEdit);\n }\n if (!frozeCols && isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.infiniteCache[this.parent.pageSettings.currentPage] = e.modelData;\n this.resetContentModuleCache(this.infiniteCache);\n }\n if (frozeCols) {\n if ((idx === 0 && isNullOrUndefined(this.infiniteFrozenCache[currentPage]))\n || !this.infiniteFrozenCache[currentPage][idx].length) {\n this.createFrozenCache(currentPage);\n this.infiniteFrozenCache[currentPage][idx] = e.modelData;\n if (idx === 1) {\n this.resetContentModuleCache(this.infiniteFrozenCache);\n }\n }\n }\n if (e.isInfiniteScroll && !this.isRemove) {\n this.isRemove = (currentPage - 1) % this.parent.infiniteScrollSettings.maxBlocks === 0;\n this.parent.contentModule.isRemove = this.isRemove;\n }\n }\n };\n InfiniteScroll.prototype.setInitialCache = function (data, args, isEdit, isCurrentViewData) {\n var frozenCols = this.parent.isFrozenGrid();\n var idx = args.isFrozen ? 1 : 0;\n var k = !isEdit ? 1 : this.firstBlock;\n for (var i = 1; i <= this.parent.infiniteScrollSettings.initialBlocks; i++) {\n var startIndex = (i - 1) * this.parent.pageSettings.pageSize;\n var endIndex = i * this.parent.pageSettings.pageSize;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !isCurrentViewData) {\n this.setInitialGroupCache(data, k, startIndex, endIndex);\n }\n else {\n if (isCurrentViewData) {\n this.infiniteCurrentViewData[k] = data.slice(startIndex, endIndex);\n }\n else {\n if (frozenCols) {\n this.createFrozenCache(k);\n this.infiniteFrozenCache[k][idx] = data.slice(startIndex, endIndex);\n this.resetContentModuleCache(this.infiniteFrozenCache);\n }\n else {\n this.infiniteCache[k] = data.slice(startIndex, endIndex);\n this.resetContentModuleCache(this.infiniteCache);\n }\n }\n }\n k++;\n }\n };\n InfiniteScroll.prototype.createFrozenCache = function (index) {\n if (!this.infiniteFrozenCache[index]) {\n this.infiniteFrozenCache[index] = [[], []];\n }\n };\n InfiniteScroll.prototype.setInitialGroupCache = function (data, index, sIndex, eIndex) {\n var pageData = [];\n var startIndex = 0;\n for (var i = 1; i <= Object.keys(this.infiniteCache).length; i++) {\n startIndex += this.infiniteCache[i].length;\n }\n var k = sIndex;\n for (var i = startIndex; i < data.length && k < eIndex; i++) {\n if (data[i].index < eIndex || data[i].isCaptionRow) {\n k = data[i].isCaptionRow ? k : data[i].index;\n pageData.push(data[i]);\n }\n if (data[i].index >= eIndex || data[i].index === eIndex - 1) {\n break;\n }\n }\n this.infiniteCache[index] = pageData;\n this.resetContentModuleCache(this.infiniteCache);\n };\n InfiniteScroll.prototype.resetContentModuleCache = function (data) {\n this.parent.contentModule\n .infiniteCache = data;\n };\n /**\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return InfiniteScroll;\n}());\nexport { InfiniteScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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-explicit-any */\nimport { addClass, append, createElement, extend, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, EventHandler } from '@syncfusion/ej2-base';\nimport { TimelineEvent } from './timeline-view';\nimport * as util from '../base/util';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\nvar EVENT_GAP = 2;\n/**\n * Year view events render\n */\nvar YearEvent = /** @class */ (function (_super) {\n __extends(YearEvent, _super);\n function YearEvent(parent) {\n var _this = _super.call(this, parent, 'day') || this;\n _this.isResource = false;\n return _this;\n }\n YearEvent.prototype.renderAppointments = function () {\n if (this.parent.dragAndDropModule) {\n this.parent.dragAndDropModule.setDragArea();\n }\n this.fields = this.parent.eventFields;\n var elementSelector = (this.parent.currentView === 'Year') ? '.' + cls.APPOINTMENT_CLASS :\n '.' + cls.APPOINTMENT_WRAPPER_CLASS + ',.' + cls.MORE_INDICATOR_CLASS;\n var eventWrappers = [].slice.call(this.parent.element.querySelectorAll(elementSelector));\n for (var _i = 0, eventWrappers_1 = eventWrappers; _i < eventWrappers_1.length; _i++) {\n var wrapper = eventWrappers_1[_i];\n remove(wrapper);\n }\n this.renderedEvents = [];\n if (this.parent.currentView === 'Year') {\n this.yearViewEvents();\n }\n else {\n this.removeCellHeight();\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n this.isResource = true;\n this.timelineResourceEvents();\n }\n else {\n this.timelineYearViewEvents();\n }\n }\n this.parent.renderTemplates();\n this.parent.notify(events.contentReady, {});\n };\n YearEvent.prototype.yearViewEvents = function () {\n var months = this.getMonths();\n for (var _i = 0, months_1 = months; _i < months_1.length; _i++) {\n var month = months_1[_i];\n var queryString = \".e-month-calendar:nth-child(\" + (months.indexOf(month) + 1) + \") td.e-work-cells\";\n var workCells = [].slice.call(this.parent.element.querySelectorAll(queryString));\n var monthDate = new Date(this.parent.selectedDate.getFullYear(), month, 1);\n var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));\n var monthEnd = this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime()));\n var startDate = util.getWeekFirstDate(monthStart, this.parent.firstDayOfWeek);\n var endDate = util.addDays(util.getWeekLastDate(monthEnd, this.parent.firstDayOfWeek), 1);\n for (var index = 0; startDate.getTime() < endDate.getTime(); index++) {\n var start = util.resetTime(new Date(startDate.getTime()));\n var end = util.addDays(new Date(start.getTime()), 1);\n var filterEvents = this.parent.eventBase.filterEvents(start, end);\n if (filterEvents.length > 0) {\n var workCell = workCells[index];\n if (workCell) {\n workCell.appendChild(createElement('div', { className: cls.APPOINTMENT_CLASS }));\n }\n }\n startDate = util.addDays(new Date(startDate.getTime()), 1);\n }\n }\n };\n YearEvent.prototype.timelineYearViewEvents = function () {\n var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);\n this.cellWidth = workCell.offsetWidth;\n this.cellHeader = util.getOuterHeight(workCell.querySelector('.' + cls.DATE_HEADER_CLASS));\n var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n this.eventHeight = util.getElementHeightFromClass(eventTable, cls.APPOINTMENT_CLASS);\n var wrapperCollection = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));\n var months = this.getMonths();\n for (var row = 0; row < months.length; row++) {\n var wrapper = wrapperCollection[row];\n var td = row + 1;\n var eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper.appendChild(eventWrapper);\n var monthStart = new Date(this.parent.selectedDate.getFullYear(), months[row], 1);\n var monthEnd = new Date(monthStart.getFullYear(), monthStart.getMonth() + 1, 0);\n var dayIndex = monthStart.getDay();\n var isSpannedCollection = [];\n if (this.parent.activeViewOptions.orientation === 'Horizontal') {\n this.renderedEvents = [];\n }\n while (monthStart.getTime() <= monthEnd.getTime()) {\n var leftValue = void 0;\n var rightValue = void 0;\n if (this.parent.activeViewOptions.orientation === 'Vertical') {\n var wrapper_1 = wrapperCollection[dayIndex];\n td = dayIndex + 1;\n var eventWrapper_1 = wrapper_1.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!eventWrapper_1) {\n eventWrapper_1 = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper_1.appendChild(eventWrapper_1);\n }\n if (this.parent.enableRtl) {\n rightValue = row * this.cellWidth;\n }\n else {\n leftValue = row * this.cellWidth;\n }\n }\n else {\n if (this.parent.enableRtl) {\n rightValue = ((dayIndex + monthStart.getDate()) - 1) * this.cellWidth;\n }\n else {\n leftValue = ((dayIndex + monthStart.getDate()) - 1) * this.cellWidth;\n }\n }\n var rowTd = this.parent.element.querySelector(\".e-content-wrap tr:nth-child(\" + td + \") td\");\n this.cellHeight = rowTd.offsetHeight;\n var dayStart = util.resetTime(new Date(monthStart.getTime()));\n var dayEnd = util.addDays(new Date(dayStart.getTime()), 1);\n var resource = void 0;\n if (this.parent.uiStateValues.isGroupAdaptive) {\n resource = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n }\n var dayEvents = this.parent.eventBase.filterEvents(dayStart, dayEnd, undefined, resource);\n dayEvents = this.parent.eventBase.sortByDateTime(dayEvents);\n var _loop_1 = function (index, count) {\n var eventData = extend({}, dayEvents[index], null, true);\n this_1.updateSpannedEvents(eventData, dayStart, dayEnd);\n var overlapIndex = this_1.getIndex(dayStart);\n eventData.Index = overlapIndex;\n var availedHeight = this_1.cellHeader + (this_1.eventHeight * (overlapIndex + 1)) + EVENT_GAP +\n this_1.moreIndicatorHeight;\n var appArea = this_1.cellHeight - this_1.cellHeader - this_1.moreIndicatorHeight;\n var renderedAppCount = Math.floor(appArea / (this_1.eventHeight + EVENT_GAP));\n var moreIndicatorCount = (count - renderedAppCount) <= 0 ? 1 : (count - renderedAppCount);\n if (this_1.parent.activeViewOptions.orientation === 'Horizontal') {\n var isRendered = this_1.renderedEvents.filter(function (eventObj) {\n return eventObj.Guid === eventData.Guid;\n });\n var isSpanned = isSpannedCollection.filter(function (eventObj) {\n return eventObj.Guid === eventData.Guid;\n });\n if (isRendered.length > 0 && isRendered[0].MoreIndicator || isSpanned.length > 0 && isSpanned[0].MoreIndicator) {\n var moreIndex = this_1.parent.activeViewOptions.orientation === 'Horizontal' ? row : dayIndex;\n this_1.renderMoreIndicator(eventWrapper, moreIndicatorCount, dayStart, moreIndex, leftValue, rightValue);\n return \"continue\";\n }\n else if (isRendered.length > 0 || isSpanned.length > 0) {\n return \"continue\";\n }\n }\n var isRowAutoHeight = this_1.parent.rowAutoHeight && this_1.parent.activeViewOptions.orientation === 'Horizontal';\n if (isRowAutoHeight || this_1.cellHeight > availedHeight) {\n this_1.renderEvent(eventWrapper, eventData, row, leftValue, rightValue, monthStart, dayIndex);\n this_1.updateCellHeight(rowTd, availedHeight);\n isSpannedCollection.push(eventData);\n }\n else {\n var moreIndex = this_1.parent.activeViewOptions.orientation === 'Horizontal' ? row : dayIndex;\n this_1.renderMoreIndicator(eventWrapper, moreIndicatorCount, dayStart, moreIndex, leftValue, rightValue);\n if (this_1.parent.activeViewOptions.orientation === 'Horizontal') {\n eventData.MoreIndicator = true;\n this_1.renderedEvents.push(eventData);\n isSpannedCollection.push(eventData);\n }\n }\n };\n var this_1 = this;\n for (var index = 0, count = dayEvents.length; index < count; index++) {\n _loop_1(index, count);\n }\n monthStart = util.addDays(new Date(monthStart.getTime()), 1);\n if (this.parent.activeViewOptions.orientation === 'Vertical') {\n dayIndex++;\n this.renderedEvents = [];\n }\n }\n }\n };\n YearEvent.prototype.updateSpannedEvents = function (eventObj, dayStart, dayEnd) {\n var isLeftRightResize = (this.isResource && this.parent.activeViewOptions.orientation === 'Vertical') ||\n (!this.isResource && this.parent.activeViewOptions.orientation === 'Horizontal');\n var data = { isLeft: true, isRight: true, isBottom: true, isTop: true };\n if (dayStart.getTime() <= eventObj[this.fields.startTime].getTime()) {\n if (isLeftRightResize) {\n data.isLeft = false;\n }\n else {\n data.isTop = false;\n }\n }\n if ((dayEnd.getTime() >= eventObj[this.fields.endTime].getTime()) || (isLeftRightResize && !this.isResource &&\n util.addDays(dayEnd, -1).getMonth() === eventObj[this.fields.endTime].getMonth())) {\n if (isLeftRightResize) {\n data.isRight = false;\n }\n else {\n data.isBottom = false;\n }\n }\n eventObj.data = data;\n };\n YearEvent.prototype.timelineResourceEvents = function () {\n var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);\n this.cellWidth = workCell.offsetWidth;\n this.cellHeader = 0;\n var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n this.eventHeight = util.getElementHeightFromClass(eventTable, cls.APPOINTMENT_CLASS);\n var wrapperCollection = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));\n var resources = this.parent.uiStateValues.isGroupAdaptive ?\n [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] : this.parent.resourceBase.lastResourceLevel;\n var months = this.getMonths();\n if (this.parent.activeViewOptions.orientation === 'Horizontal') {\n for (var month = 0; month < months.length; month++) {\n var monthStart = new Date(this.parent.selectedDate.getFullYear(), months[month], 1);\n for (var i = 0, len = resources.length; i < len; i++) {\n this.renderedEvents = [];\n this.renderResourceEvent(wrapperCollection[month], resources[i], month, i, monthStart);\n }\n }\n }\n else {\n for (var i = 0, len = resources.length; i < len; i++) {\n this.renderedEvents = [];\n for (var month = 0; month < months.length; month++) {\n var monthStart = new Date(this.parent.selectedDate.getFullYear(), months[month], 1);\n this.renderResourceEvent(wrapperCollection[i], resources[i], month, i, monthStart);\n }\n }\n }\n };\n YearEvent.prototype.renderResourceEvent = function (wrapper, resource, month, index, monthStart) {\n var eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper.appendChild(eventWrapper);\n var monthEnd = util.addDays(util.lastDateOfMonth(new Date(monthStart.getTime())), 1);\n var eventDatas = this.parent.eventBase.filterEvents(monthStart, monthEnd, undefined, resource);\n var rowIndex = this.parent.activeViewOptions.orientation === 'Vertical' ? index : month;\n var td = this.parent.element.querySelector(\".e-content-wrap tr:nth-child(\" + (rowIndex + 1) + \") td\");\n this.cellHeight = td.offsetHeight;\n this.groupOrder = resource.groupOrder;\n for (var a = 0; a < eventDatas.length; a++) {\n var data = eventDatas[a];\n var overlapIndex = void 0;\n var eventData = extend({}, data, null, true);\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var eventObj = this.isSpannedEvent(eventData, monthStart);\n overlapIndex = this.getIndex(eventObj[this.fields.startTime]);\n eventData.Index = overlapIndex;\n }\n else {\n overlapIndex = this.getIndex(eventData[this.fields.startTime]);\n eventData.Index = overlapIndex;\n }\n var availedHeight = this.cellHeader + (this.eventHeight * (a + 1)) + EVENT_GAP + this.moreIndicatorHeight;\n var leftValue = (this.parent.activeViewOptions.orientation === 'Vertical') ?\n month * this.cellWidth : index * this.cellWidth;\n if (this.parent.rowAutoHeight || this.cellHeight > availedHeight) {\n this.renderEvent(eventWrapper, eventData, month, leftValue, leftValue, monthStart, index);\n this.updateCellHeight(td, availedHeight);\n }\n else {\n var moreIndex = this.parent.activeViewOptions.orientation === 'Horizontal' ? month : index;\n this.renderMoreIndicator(eventWrapper, eventDatas.length - a, monthStart, moreIndex, leftValue, leftValue, index);\n if (this.parent.activeViewOptions.orientation === 'Horizontal') {\n for (var i = index; i < eventDatas.length; i++) {\n this.renderedEvents.push(extend({}, eventDatas[i], { Index: overlapIndex + i }, true));\n }\n }\n break;\n }\n }\n };\n // eslint-disable-next-line max-len\n YearEvent.prototype.renderEvent = function (wrapper, eventData, row, left, right, monthDate, rowIndex) {\n var _this = this;\n var eventObj = this.isSpannedEvent(eventData, monthDate);\n var wrap = this.createEventElement(eventObj);\n var width;\n var index;\n if (eventObj.isSpanned.count === 1) {\n var endTime = util.addDays(eventObj[this.fields.endTime], -1);\n eventObj[this.fields.endTime] = (endTime > eventObj[this.fields.startTime]) ? endTime : eventObj[this.fields.endTime];\n }\n if (eventObj[this.fields.startTime] > eventObj[this.fields.endTime]) {\n return;\n }\n if (this.parent.activeViewOptions.orientation === 'Horizontal') {\n index = row + 1;\n if (eventObj[this.fields.startTime].getTime() === eventObj[this.fields.endTime].getTime()) {\n eventObj.isSpanned.count = 1;\n }\n width = eventObj.isSpanned.count * this.cellWidth;\n }\n else {\n index = rowIndex + 1;\n width = this.cellWidth;\n }\n var rowTd = this.parent.element.querySelector(\".e-content-wrap tr:nth-child(\" + index + \") td\");\n var top = rowTd.offsetTop + this.cellHeader + (this.eventHeight * eventObj.Index) + EVENT_GAP;\n setStyleAttribute(wrap, {\n 'width': width + 'px', 'height': this.eventHeight + 'px', 'left': left + 'px', 'right': right + 'px', 'top': top + 'px'\n });\n var args = { data: eventObj, element: wrap, cancel: false, type: 'event' };\n this.parent.trigger(events.eventRendered, args, function (eventArgs) {\n if (!eventArgs.cancel) {\n wrapper.appendChild(wrap);\n _this.wireAppointmentEvents(wrap, eventObj);\n if (_this.parent.activeViewOptions.group.resources.length > 0) {\n _this.renderedEvents.push(extend({}, eventObj, null, true));\n }\n else if (_this.parent.activeViewOptions.orientation === 'Vertical') {\n _this.renderedEvents.push(extend({}, eventObj, null, true));\n }\n else if ((eventObj.isSpanned.isRight || eventObj.isSpanned.isLeft) && _this.parent.activeViewOptions.orientation === 'Horizontal'\n || !eventObj.isSpanned.isRight) {\n _this.renderedEvents.push(extend({}, eventObj, null, true));\n }\n }\n });\n };\n // eslint-disable-next-line max-len\n YearEvent.prototype.renderMoreIndicator = function (wrapper, count, startDate, row, left, right, index) {\n if (this.parent.activeViewOptions.group.resources.length === 0 && wrapper.querySelector('[data-start-date=\"' + startDate.getTime() + '\"]')) {\n return;\n }\n var endDate;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n endDate = util.addDays(util.lastDateOfMonth(new Date(startDate.getTime())), 1);\n }\n else {\n endDate = util.addDays(new Date(startDate.getTime()), 1);\n }\n var moreIndicator = this.getMoreIndicatorElement(count, startDate, endDate);\n var rowTr = this.parent.element.querySelector(\".e-content-wrap tr:nth-child(\" + (row + 1) + \")\");\n var top = rowTr.offsetTop + (this.cellHeight - this.moreIndicatorHeight);\n left = (Math.floor(left / this.cellWidth) * this.cellWidth);\n right = (Math.floor(right / this.cellWidth) * this.cellWidth);\n setStyleAttribute(moreIndicator, { 'width': this.cellWidth + 'px', 'left': left + 'px', 'right': right + 'px', 'top': top + 'px' });\n if (!isNullOrUndefined(index)) {\n moreIndicator.setAttribute('data-group-index', index.toString());\n }\n wrapper.appendChild(moreIndicator);\n EventHandler.add(moreIndicator, 'click', this.moreIndicatorClick, this);\n };\n YearEvent.prototype.createEventElement = function (record) {\n var eventSubject = (record[this.fields.subject] || this.parent.eventSettings.fields.subject.default\n || this.parent.localeObj.getConstant('addTitle'));\n var eventWrapper = createElement('div', {\n className: cls.APPOINTMENT_CLASS,\n attrs: {\n 'data-id': 'Appointment_' + record[this.fields.id],\n 'data-guid': record.Guid,\n 'role': 'button', 'tabindex': '0',\n 'aria-readonly': this.parent.eventBase.getReadonlyAttribute(record), 'aria-selected': 'false', 'aria-grabbed': 'true',\n 'aria-label': this.parent.getAnnouncementString(record)\n }\n });\n if (this.cssClass) {\n addClass([eventWrapper], this.cssClass);\n }\n if (record[this.fields.isReadonly]) {\n addClass([eventWrapper], cls.READ_ONLY);\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var resIndex = this.getGroupIndexFromEvent(record);\n eventWrapper.setAttribute('data-group-index', resIndex.toString());\n }\n var templateElement = [];\n var eventObj = extend({}, record, null, true);\n if (this.parent.activeViewOptions.eventTemplate) {\n var templateId = this.parent.element.id + '_' + this.parent.activeViewOptions.eventTemplateName + 'eventTemplate';\n templateElement = this.parent.getAppointmentTemplate()(eventObj, this.parent, 'eventTemplate', templateId, false);\n }\n else {\n var locationEle = (record[this.fields.location] || this.parent.eventSettings.fields.location.default || '');\n var subjectEle = createElement('div', {\n className: cls.SUBJECT_CLASS,\n innerHTML: (eventSubject + (locationEle ? '; ' + locationEle : ''))\n });\n var startTimeEle = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(eventObj[this.fields.startTime])\n });\n var endTimeEle = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(eventObj[this.fields.endTime])\n });\n addClass([subjectEle], 'e-text-center');\n if (record[this.fields.isAllDay]) {\n templateElement = [subjectEle];\n }\n else if (!eventObj.isLeft && !eventObj.isRight) {\n templateElement = [startTimeEle, subjectEle, endTimeEle];\n }\n else {\n if (!eventObj.isLeft) {\n templateElement.push(startTimeEle);\n }\n templateElement.push(subjectEle);\n if (!eventObj.isRight) {\n templateElement.push(endTimeEle);\n }\n }\n }\n var appointmentDetails = createElement('div', { className: cls.APPOINTMENT_DETAILS });\n append(templateElement, appointmentDetails);\n eventWrapper.appendChild(appointmentDetails);\n this.renderResizeHandler(eventWrapper, record.data, record[this.fields.isReadonly]);\n this.applyResourceColor(eventWrapper, eventObj, 'backgroundColor', this.groupOrder);\n return eventWrapper;\n };\n YearEvent.prototype.isSpannedEvent = function (eventObj, monthDate) {\n var monthStart = new Date(monthDate.getFullYear(), monthDate.getMonth(), 1);\n var monthEnd = util.addDays(new Date(monthDate.getFullYear(), monthDate.getMonth() + 1, 0), 1);\n var eventData = extend({}, eventObj, null, true);\n var eventStart = eventData[this.fields.startTime];\n var eventEnd = eventData[this.fields.endTime];\n var isSpanned = { isLeft: false, isRight: false, count: 1 };\n if (this.isResource) {\n this.updateSpannedEvents(eventObj, monthStart, monthEnd);\n }\n if (eventStart.getTime() < monthStart.getTime()) {\n eventData[this.fields.startTime] = monthStart;\n isSpanned.isLeft = true;\n }\n if (eventEnd.getTime() > monthEnd.getTime()) {\n eventData[this.fields.endTime] = monthEnd;\n isSpanned.isRight = true;\n }\n if (this.parent.activeViewOptions.group.resources.length === 0) {\n var end = util.resetTime(eventData[this.fields.endTime]).getTime();\n var start = util.resetTime(eventData[this.fields.startTime]).getTime();\n if (eventObj[this.fields.isAllDay] && end === eventObj[this.fields.endTime].getTime() || isSpanned.isRight) {\n end = util.addDays(new Date(end), -1).getTime();\n }\n isSpanned.count = Math.ceil((end - start) / util.MS_PER_DAY) + 1;\n }\n eventData.isSpanned = isSpanned;\n if (util.resetTime(eventStart).getTime() < util.resetTime(this.parent.minDate).getTime()) {\n eventData[this.fields.startTime] = this.parent.minDate;\n }\n if (util.resetTime(eventEnd).getTime() > util.resetTime(this.parent.maxDate).getTime()) {\n eventData[this.fields.endTime] = this.parent.maxDate;\n }\n return eventData;\n };\n YearEvent.prototype.getOverlapEvents = function (date, appointments) {\n var appointmentsList = [];\n var dateStart;\n var dateEnd;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(date.getTime()));\n var monthEnd = util.addDays(this.parent.calendarUtil.getMonthEndDate(new Date(date.getTime())), -1);\n dateStart = util.resetTime(new Date(monthStart.getTime())).getTime();\n dateEnd = util.resetTime(new Date(monthEnd.getTime())).getTime();\n }\n else {\n if (this.parent.rowAutoHeight) {\n dateStart = util.resetTime(new Date(date.getTime())).getTime();\n dateEnd = util.addDays(util.resetTime(new Date(date.getTime())), 1).getTime();\n }\n else {\n dateStart = dateEnd = util.resetTime(new Date(date.getTime())).getTime();\n }\n }\n for (var _i = 0, appointments_1 = appointments; _i < appointments_1.length; _i++) {\n var app = appointments_1[_i];\n var appStart = new Date(app[this.fields.startTime].getTime());\n var appEnd = new Date(app[this.fields.endTime].getTime());\n if (this.parent.activeViewOptions.orientation === 'Vertical' &&\n this.parent.activeViewOptions.group.resources.length > 0) {\n if ((util.resetTime(appStart).getTime() >= dateStart) && (util.resetTime(appEnd).getTime() <= dateEnd)) {\n appointmentsList.push(app);\n }\n }\n else {\n var timeCondition = app[this.fields.isAllDay] ? util.resetTime(appEnd).getTime() > dateStart :\n util.resetTime(appEnd).getTime() >= dateStart;\n if (((util.resetTime(appStart).getTime() <= dateStart) && (timeCondition)) ||\n (util.resetTime(appStart).getTime() >= dateStart) && (util.resetTime(appEnd).getTime() <= dateEnd)) {\n appointmentsList.push(app);\n }\n }\n }\n return appointmentsList;\n };\n YearEvent.prototype.getMonths = function () {\n var _this = this;\n // eslint-disable-next-line prefer-spread\n return Array.apply(null, { length: this.parent.monthsCount }).map(function (value, index) {\n return _this.parent.firstMonthOfYear + index;\n });\n };\n YearEvent.prototype.removeCellHeight = function () {\n var elementSelector = \".\" + cls.MONTH_HEADER_WRAPPER + \" tbody tr,.\" + cls.RESOURCE_COLUMN_TABLE_CLASS + \" tbody tr,.\" + cls.CONTENT_TABLE_CLASS + \" tbody tr\";\n var rows = [].slice.call(this.element.querySelectorAll(elementSelector));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n row.firstElementChild.style.height = '';\n }\n };\n YearEvent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.parent = null;\n };\n return YearEvent;\n}(TimelineEvent));\nexport { YearEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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-explicit-any */\nimport { EventHandler, formatUnit, createElement, addClass, closest, prepend } from '@syncfusion/ej2-base';\nimport { ViewBase } from './view-base';\nimport { YearEvent } from '../event-renderer/year';\nimport * as util from '../base/util';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * year view\n */\nvar Year = /** @class */ (function (_super) {\n __extends(Year, _super);\n function Year(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-year-view';\n _this.isInverseTableSelect = false;\n _this.yearEventModule = null;\n return _this;\n }\n Year.prototype.getModuleName = function () {\n return 'year';\n };\n Year.prototype.renderLayout = function (className) {\n if (this.parent.resourceBase) {\n this.parent.resourceBase.generateResourceLevels([{ renderDates: this.parent.activeView.renderDates }]);\n }\n this.setPanel(createElement('div', { className: cls.TABLE_WRAP_CLASS }));\n var viewTypeClass = this.parent.activeViewOptions.orientation === 'Horizontal' ? 'e-horizontal' : 'e-vertical';\n addClass([this.element], [this.viewClass, viewTypeClass, className]);\n this.renderPanel(className);\n var calendarTable = this.createTableLayout(cls.OUTER_TABLE_CLASS);\n this.element.appendChild(calendarTable);\n this.element.querySelector('table').setAttribute('role', 'presentation');\n var calendarTBody = calendarTable.querySelector('tbody');\n this.rowCount = this.getRowColumnCount('row');\n this.columnCount = this.getRowColumnCount('column');\n this.renderHeader(calendarTBody);\n this.renderContent(calendarTBody);\n if (this.parent.currentView !== 'Year' && this.parent.uiStateValues.isGroupAdaptive) {\n this.generateColumnLevels();\n this.renderResourceMobileLayout();\n }\n this.wireEvents(this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS), 'scroll');\n this.parent.notify(event.contentReady, {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Year.prototype.renderHeader = function (headerWrapper) { };\n Year.prototype.renderContent = function (content) {\n var tr = createElement('tr');\n content.appendChild(tr);\n var td = createElement('td');\n tr.appendChild(td);\n this.element.querySelector('tbody').appendChild(tr);\n var contentWrapper = createElement('div', { className: cls.CONTENT_WRAP_CLASS });\n td.appendChild(contentWrapper);\n var calendarTable = this.createTableLayout('e-calendar-table');\n contentWrapper.appendChild(calendarTable);\n var cTr = createElement('tr');\n calendarTable.querySelector('tbody').appendChild(cTr);\n var cTd = createElement('td');\n cTr.appendChild(cTd);\n var calendarWrapper = createElement('div', { className: 'e-calendar-wrapper' });\n cTd.appendChild(calendarWrapper);\n var months = this.getMonths();\n for (var _i = 0, months_1 = months; _i < months_1.length; _i++) {\n var month = months_1[_i];\n var currentMonth = new Date(this.parent.selectedDate.getFullYear(), month, 1);\n var calendarElement = createElement('div', {\n className: 'e-month-calendar e-calendar',\n attrs: { 'data-role': 'calendar' }\n });\n calendarElement.appendChild(this.renderCalendarHeader(currentMonth));\n calendarElement.appendChild(this.renderCalendarContent(currentMonth));\n calendarWrapper.appendChild(calendarElement);\n }\n };\n Year.prototype.renderCalendarHeader = function (currentDate) {\n var headerWrapper = createElement('div', { className: 'e-header e-month' });\n var headerContent = createElement('div', { className: 'e-day e-title', innerHTML: this.getMonthName(currentDate) });\n headerWrapper.appendChild(headerContent);\n this.parent.trigger(event.renderCell, { elementType: 'headerCells', element: headerContent, date: currentDate });\n return headerWrapper;\n };\n Year.prototype.renderCalendarContent = function (currentDate) {\n var dateCollection = this.getMonthDates(currentDate);\n var contentWrapper = createElement('div', { className: 'e-content e-month' });\n var contentTable = this.createTableLayout('e-calendar-table ' + cls.CONTENT_TABLE_CLASS);\n contentWrapper.appendChild(contentTable);\n var thead = createElement('thead', { className: 'e-week-header' });\n var tr = createElement('tr');\n var currentWeek = util.getWeekFirstDate(util.firstDateOfMonth(currentDate), this.parent.firstDayOfWeek);\n if (this.parent.activeViewOptions.showWeekNumber) {\n tr.appendChild(createElement('th'));\n }\n for (var i = 0; i < util.WEEK_LENGTH; i++) {\n tr.appendChild(createElement('th', { innerHTML: this.parent.getDayNames('narrow')[currentWeek.getDay()] }));\n currentWeek = new Date(currentWeek.getTime() + util.MS_PER_DAY);\n }\n thead.appendChild(tr);\n prepend([thead], contentTable);\n var tbody = contentTable.querySelector('tbody');\n while (dateCollection.length > 0) {\n var weekDates = dateCollection.splice(0, util.WEEK_LENGTH);\n var tr_1 = createElement('tr', { attrs: { 'role': 'row' } });\n if (this.parent.activeViewOptions.showWeekNumber) {\n var weekNumber = this.parent.getWeekNumberContent(weekDates);\n var td = createElement('td', {\n className: 'e-week-number',\n attrs: { 'role': 'gridcell', 'title': this.parent.localeObj.getConstant('week') + ' ' + weekNumber },\n innerHTML: weekNumber\n });\n tr_1.appendChild(td);\n this.parent.trigger(event.renderCell, { elementType: 'weekNumberCells', element: td });\n }\n for (var _i = 0, weekDates_1 = weekDates; _i < weekDates_1.length; _i++) {\n var date = weekDates_1[_i];\n var td = createElement('td', {\n className: 'e-cell ' + cls.WORK_CELLS_CLASS,\n attrs: { 'role': 'gridcell', 'aria-selected': 'false', 'data-date': date.getTime().toString() }\n });\n var span = createElement('span', {\n className: 'e-day', innerHTML: this.parent.globalize.formatDate(date, { skeleton: 'd', calendar: this.parent.getCalendarMode() }),\n attrs: { title: this.parent.globalize.formatDate(date, { type: 'date', skeleton: 'full' }) }\n });\n td.appendChild(span);\n var classList = [];\n if (currentDate.getMonth() !== date.getMonth()) {\n classList.push(cls.OTHERMONTH_CLASS);\n }\n if (this.isCurrentDate(date) && currentDate.getMonth() === date.getMonth()) {\n classList = classList.concat(['e-today', 'e-selected']);\n }\n if (classList.length > 0) {\n addClass([td], classList);\n }\n tr_1.appendChild(td);\n this.wireEvents(td, 'cell');\n this.parent.trigger(event.renderCell, { elementType: 'workCells', element: td, date: date });\n }\n tbody.appendChild(tr_1);\n }\n return contentWrapper;\n };\n Year.prototype.createTableColGroup = function (count) {\n var colGroupEle = createElement('colgroup');\n for (var i = 0; i < count; i++) {\n colGroupEle.appendChild(createElement('col'));\n }\n return colGroupEle;\n };\n Year.prototype.getMonthName = function (date) {\n var month = this.parent.globalize.formatDate(date, {\n format: this.parent.activeViewOptions.dateFormat || 'MMMM y',\n calendar: this.parent.getCalendarMode()\n });\n return util.capitalizeFirstWord(month, 'multiple');\n };\n Year.prototype.generateColumnLevels = function () {\n var colLevels = [];\n var level = this.getDateSlots([this.parent.selectedDate], this.parent.activeViewOptions.workDays);\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n colLevels = this.parent.resourceBase.generateResourceLevels(level);\n if (this.parent.uiStateValues.isGroupAdaptive) {\n var resourceLevel = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n colLevels = [this.getDateSlots([this.parent.selectedDate], resourceLevel.workDays)];\n }\n }\n else {\n colLevels.push(level);\n }\n colLevels.pop();\n this.colLevels = colLevels;\n return colLevels;\n };\n // eslint-disable-next-line max-len\n Year.prototype.getDateSlots = function (renderDates, workDays, startHour, endHour) {\n if (startHour === void 0) { startHour = this.parent.workHours.start; }\n if (endHour === void 0) { endHour = this.parent.workHours.end; }\n var dateCol = [{\n date: renderDates[0], type: 'dateHeader', className: [cls.HEADER_CELLS_CLASS], colSpan: 1, workDays: workDays,\n startHour: new Date(+this.parent.globalize.parseDate(startHour, { skeleton: 'Hm' })),\n endHour: new Date(+this.parent.globalize.parseDate(endHour, { skeleton: 'Hm' }))\n }];\n return dateCol;\n };\n Year.prototype.getMonthDates = function (date) {\n var startDate = util.getWeekFirstDate(util.firstDateOfMonth(date), this.parent.firstDayOfWeek);\n var endDate = util.addDays(new Date(+startDate), (6 * util.WEEK_LENGTH));\n var dateCollection = [];\n for (var start = startDate; start.getTime() < endDate.getTime(); start = util.addDays(start, 1)) {\n dateCollection.push(util.resetTime(new Date(start)));\n }\n return dateCollection;\n };\n Year.prototype.getRowColumnCount = function (type) {\n var months = this.getMonths();\n var year = this.parent.selectedDate.getFullYear();\n var monthDaysCount = [];\n for (var _i = 0, months_2 = months; _i < months_2.length; _i++) {\n var month = months_2[_i];\n monthDaysCount.push(new Date(year, month, 1).getDay() + new Date(year, month + 1, 0).getDate());\n }\n var maxCount = Math.max.apply(Math, monthDaysCount);\n var count;\n if (type === 'row') {\n count = this.parent.activeViewOptions.orientation === 'Horizontal' ? months.length : maxCount;\n }\n else {\n count = this.parent.activeViewOptions.orientation === 'Horizontal' ? maxCount : months.length;\n }\n return count;\n };\n Year.prototype.isCurrentDate = function (date) {\n return util.resetTime(new Date()).getTime() === util.resetTime(new Date(date.getTime())).getTime();\n };\n Year.prototype.getMonths = function () {\n var _this = this;\n // eslint-disable-next-line prefer-spread\n return Array.apply(null, { length: this.parent.activeViewOptions.monthsCount }).map(function (value, index) {\n return _this.parent.firstMonthOfYear + index;\n });\n };\n Year.prototype.onCellClick = function (e) {\n var target = closest(e.target, '.' + cls.WORK_CELLS_CLASS);\n var startDate = this.parent.getDateFromElement(target);\n this.parent.activeCellsData = this.parent.getCellDetails(target);\n var isPrevious = startDate.getTime() < this.getStartDate().getTime();\n if (isPrevious || startDate.getTime() > this.getEndDate().getTime()) {\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate(isPrevious ? 'previous' : 'next'), e);\n var activeDate = this.parent.activeCellsData.startTime.getTime();\n var inRange = activeDate >= this.getStartDate().getTime() && activeDate <= this.getEndDate().getTime();\n var dateAttr = inRange ? activeDate : (isPrevious ? this.getEndDate() : this.getStartDate()).getTime();\n var selectedCell = this.parent.element.querySelector(':not(.' + cls.OTHERMONTH_CLASS + ')[data-date=\"' + dateAttr + '\"]');\n this.parent.selectCell(selectedCell);\n this.parent.activeCellsData = this.parent.getCellDetails(selectedCell);\n }\n else {\n var endDate = util.addDays(new Date(startDate.getTime()), 1);\n var filteredEvents = this.parent.eventBase.filterEvents(startDate, endDate);\n var moreEventArgs = { date: startDate, event: filteredEvents, element: e.target };\n if (target.classList.contains(cls.OTHERMONTH_CLASS)) {\n target = this.parent.element.querySelector(':not(.' + cls.OTHERMONTH_CLASS + ')[data-date=\"' + target.getAttribute('data-date') + '\"]');\n }\n this.parent.activeCellsData = this.parent.getCellDetails(target);\n this.parent.quickPopup.moreEventClick(moreEventArgs, endDate);\n }\n };\n Year.prototype.onContentScroll = function (e) {\n var target = e.target;\n var headerWrapper = this.getDatesHeaderElement();\n if (headerWrapper) {\n headerWrapper.firstElementChild.scrollLeft = target.scrollLeft;\n }\n var scrollTopSelector = \".\" + cls.MONTH_HEADER_WRAPPER + \",.\" + cls.RESOURCE_COLUMN_WRAP_CLASS;\n var scrollTopElement = this.element.querySelector(scrollTopSelector);\n if (scrollTopElement) {\n scrollTopElement.scrollTop = target.scrollTop;\n }\n this.setPersistence();\n };\n Year.prototype.onScrollUiUpdate = function (args) {\n var height = this.parent.element.offsetHeight - this.getHeaderBarHeight();\n var headerWrapper = this.element.querySelector('.' + cls.DATE_HEADER_CONTAINER_CLASS);\n if (headerWrapper) {\n height -= headerWrapper.offsetHeight;\n }\n var contentWrapper = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (contentWrapper) {\n contentWrapper.style.height = formatUnit(height);\n }\n if (!this.parent.isAdaptive && headerWrapper) {\n var scrollBarWidth = util.getScrollBarWidth();\n if (contentWrapper.offsetWidth - contentWrapper.clientWidth > 0) {\n headerWrapper.firstElementChild.style[args.cssProperties.border] = scrollBarWidth > 0 ? '1px' : '0px';\n headerWrapper.style[args.cssProperties.padding] = scrollBarWidth > 0 ? scrollBarWidth - 1 + 'px' : '0px';\n }\n else {\n headerWrapper.firstElementChild.style[args.cssProperties.border] = '';\n headerWrapper.style[args.cssProperties.padding] = '';\n }\n }\n this.setColWidth(this.getContentAreaElement());\n var leftPanelSelector = \".\" + cls.MONTH_HEADER_WRAPPER + \",.\" + cls.RESOURCE_COLUMN_WRAP_CLASS;\n var leftPanelElement = this.element.querySelector(leftPanelSelector);\n if (leftPanelElement) {\n var isYScroll = contentWrapper.scrollWidth > contentWrapper.clientWidth;\n leftPanelElement.style.height = formatUnit(height - (isYScroll ? 17 : 0));\n }\n this.retainScrollPosition();\n };\n Year.prototype.getStartDate = function () {\n return new Date(this.parent.selectedDate.getFullYear(), this.parent.firstMonthOfYear % 12, 1);\n };\n Year.prototype.getEndDate = function () {\n return util.addDays(util.addMonths(this.getStartDate(), this.parent.monthsCount), -1);\n };\n Year.prototype.startDate = function () {\n return this.parent.currentView === 'Year' ? util.getWeekFirstDate(this.getStartDate(), this.parent.firstDayOfWeek) : this.getStartDate();\n };\n Year.prototype.endDate = function () {\n return this.parent.currentView === 'Year' ? util.addDays(util.getWeekLastDate(this.getEndDate(), this.parent.firstDayOfWeek), 1) : this.getEndDate();\n };\n Year.prototype.getEndDateFromStartDate = function (start) {\n var date = new Date(start.getTime());\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n date = util.lastDateOfMonth(date);\n }\n return util.addDays(new Date(date.getTime()), 1);\n };\n Year.prototype.getNextPreviousDate = function (type) {\n return util.addYears(this.parent.selectedDate, ((type === 'next') ? 1 : -1));\n };\n Year.prototype.getDateRangeText = function () {\n var startDate = this.getStartDate();\n var endDate = this.getEndDate();\n if (startDate.getFullYear() !== endDate.getFullYear()) {\n return this.parent.globalize.formatDate(startDate, { skeleton: 'yMMM' }) + ' - ' + this.parent.globalize.formatDate(endDate, { skeleton: 'yMMM' });\n }\n else {\n return this.parent.globalize.formatDate(this.parent.selectedDate, { skeleton: 'y' });\n }\n };\n Year.prototype.addEventListener = function () {\n this.parent.on(event.scrollUiUpdate, this.onScrollUiUpdate, this);\n this.parent.on(event.dataReady, this.onDataReady, this);\n };\n Year.prototype.removeEventListener = function () {\n if (this.parent) {\n this.parent.off(event.scrollUiUpdate, this.onScrollUiUpdate);\n this.parent.off(event.dataReady, this.onDataReady);\n }\n };\n Year.prototype.onDataReady = function (args) {\n this.yearEventModule = new YearEvent(this.parent);\n this.yearEventModule.renderAppointments();\n this.parent.notify(event.eventsLoaded, args);\n };\n Year.prototype.wireEvents = function (element, type) {\n if (type === 'cell') {\n if (this.parent.currentView !== 'TimelineYear') {\n EventHandler.add(element, 'click', this.onCellClick, this);\n }\n else {\n EventHandler.add(element, 'mousedown', this.parent.workCellAction.cellMouseDown, this.parent.workCellAction);\n EventHandler.add(element, 'click', this.parent.workCellAction.cellClick, this.parent.workCellAction);\n if (!this.parent.isAdaptive) {\n EventHandler.add(element, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);\n }\n }\n }\n else {\n EventHandler.add(element, 'scroll', this.onContentScroll, this);\n }\n };\n Year.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n if (this.element) {\n var contentScroll = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (contentScroll) {\n EventHandler.remove(contentScroll, 'scroll', this.onContentScroll);\n }\n if (this.yearEventModule) {\n this.yearEventModule.destroy();\n this.yearEventModule = null;\n }\n if (this.parent.resourceBase) {\n this.parent.resourceBase.destroy();\n }\n _super.prototype.destroy.call(this);\n }\n };\n return Year;\n}(ViewBase));\nexport { Year };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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-explicit-any */\nimport { isNullOrUndefined, addClass, createElement, append, EventHandler, extend, remove } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { ViewBase } from '../renderer/view-base';\nimport * as util from '../base/util';\nimport * as cls from '../base/css-constant';\nimport * as event from '../base/constant';\nvar AgendaBase = /** @class */ (function (_super) {\n __extends(AgendaBase, _super);\n function AgendaBase(parent) {\n return _super.call(this, parent) || this;\n }\n // eslint-disable-next-line max-len\n AgendaBase.prototype.createAgendaContentElement = function (type, listData, aTd, groupOrder, groupIndex) {\n var _this = this;\n var listElement;\n var fieldMapping = this.parent.eventFields;\n if (type === 'noEvents') {\n var noEvents = [{ 'subject': this.parent.localeObj.getConstant('noEvents') }];\n listElement = ListBase.createList(this.parent.createElement, noEvents, {\n moduleName: 'agenda',\n listClass: this.parent.activeView.viewClass,\n itemClass: this.parent.activeView.viewClass,\n template: '
    ${subject}
    '\n });\n }\n else {\n listElement = ListBase.createList(this.parent.createElement, listData, {\n moduleName: 'agenda',\n listClass: this.parent.activeView.viewClass,\n itemClass: this.parent.activeView.viewClass\n });\n var listElements = [].slice.call(listElement.children);\n listElements.forEach(function (element, li) {\n var appWrapper = createElement('div', {\n className: cls.APPOINTMENT_CLASS, attrs: {\n 'data-id': 'Appointment_' + listData[li][_this.parent.eventFields.id],\n 'data-guid': listData[li].Guid,\n 'role': 'button',\n 'tabindex': '0',\n 'aria-readonly': _this.parent.eventBase.getReadonlyAttribute(listData[li]),\n 'aria-selected': 'false',\n 'aria-grabbed': 'true',\n 'aria-label': _this.parent.getAnnouncementString(listData[li])\n }\n });\n if (!isNullOrUndefined(groupIndex)) {\n appWrapper.setAttribute('data-group-index', groupIndex.toString());\n }\n _this.parent.eventBase.applyResourceColor(appWrapper, listData[li], 'borderColor', groupOrder);\n var templateEle;\n if (!isNullOrUndefined(_this.parent.activeViewOptions.eventTemplate)) {\n addClass([appWrapper], cls.EVENT_TEMPLATE);\n var scheduleId = _this.parent.element.id + '_';\n var viewName = _this.parent.activeViewOptions.eventTemplateName;\n var templateId = scheduleId + viewName + 'eventTemplate';\n templateEle = _this.parent.getAppointmentTemplate()(listData[li], _this.parent, 'eventTemplate', templateId, false);\n if (!isNullOrUndefined(listData[li][fieldMapping.recurrenceRule])) {\n var iconClass = (listData[li][fieldMapping.id] === listData[li][fieldMapping.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n appWrapper.appendChild(createElement('div', { className: cls.ICON + ' ' + iconClass }));\n }\n }\n else {\n templateEle = _this.createAppointment(listData[li]);\n }\n append([].slice.call(templateEle), appWrapper);\n util.removeChildren(element);\n element.appendChild(appWrapper);\n var args = {\n data: extend({}, listData[li], null, true),\n element: element, cancel: false\n };\n _this.parent.trigger(event.eventRendered, args, function (eventArgs) {\n if (eventArgs.cancel) {\n remove(element);\n }\n });\n });\n }\n aTd.appendChild(listElement);\n if ((this.parent.currentView === 'MonthAgenda' && this.parent.activeViewOptions.group.resources.length > 0)\n || this.parent.currentView === 'Agenda') {\n addClass([aTd], cls.AGENDA_DAY_BORDER_CLASS);\n }\n this.parent.renderTemplates();\n return aTd;\n };\n AgendaBase.prototype.createAppointment = function (event) {\n var fieldMapping = this.parent.eventFields;\n var eventSubject = (event[fieldMapping.subject] || this.parent.eventSettings.fields.subject.default\n || this.parent.localeObj.getConstant('addTitle'));\n var eventLocation = (event[fieldMapping.location] || this.parent.eventSettings.fields.location.default);\n var appSubjectWrap = createElement('div', { className: cls.SUBJECT_WRAP });\n if (!isNullOrUndefined(eventLocation) && eventLocation !== '') {\n eventSubject += ',';\n }\n appSubjectWrap.appendChild(createElement('div', { className: cls.SUBJECT_CLASS, innerHTML: eventSubject }));\n if (!isNullOrUndefined(eventLocation) && eventLocation !== '') {\n appSubjectWrap.appendChild(createElement('div', { className: cls.LOCATION_CLASS, innerHTML: eventLocation }));\n }\n if (!isNullOrUndefined(event[fieldMapping.recurrenceRule])) {\n var iconClass = (event[fieldMapping.id] === event[fieldMapping.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n appSubjectWrap.appendChild(createElement('div', { className: cls.ICON + ' ' + iconClass }));\n }\n var strDate = event[fieldMapping.startTime];\n var endDate = event[fieldMapping.endTime];\n var isAllDay = event[fieldMapping.isAllDay];\n var allDayStr = this.parent.localeObj.getConstant('allDay');\n var timeStr = this.parent.getTimeString(strDate) + ' - ' + this.parent.getTimeString(endDate);\n if (!isNullOrUndefined(event.data)) {\n var milliSeconds = (endDate.getTimezoneOffset() !== strDate.getTimezoneOffset()) ?\n (endDate.getTime() - strDate.getTime() + 3600000) : (endDate.getTime() - strDate.getTime());\n var eventString = (milliSeconds / util.MS_PER_DAY) >= 1 ? allDayStr : timeStr;\n allDayStr = eventString + ' (' + this.parent.localeObj.getConstant('day') + ' '\n + event.data.index + '/' + event.data.count + ')';\n }\n var displayStr = (!isNullOrUndefined(event.data) || isAllDay) ? allDayStr : timeStr;\n var appDateTime = createElement('div', { className: cls.DATE_TIME_CLASS, innerHTML: displayStr });\n return [appSubjectWrap, appDateTime];\n };\n AgendaBase.prototype.processAgendaEvents = function (events) {\n var eventsProcessed = [];\n if (isNullOrUndefined(events)) {\n return eventsProcessed;\n }\n for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {\n var event_1 = events_1[_i];\n var spanned = this.parent.eventBase.splitEventByDay(event_1);\n eventsProcessed = eventsProcessed.concat(spanned.length > 1 ? spanned : event_1);\n }\n return eventsProcessed;\n };\n AgendaBase.prototype.wireEventActions = function () {\n var eventElement = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n for (var _i = 0, eventElement_1 = eventElement; _i < eventElement_1.length; _i++) {\n var element = eventElement_1[_i];\n this.parent.eventBase.wireAppointmentEvents(element, this.parent.getEventDetails(element), true);\n }\n var dateHeaderElement = [].slice.call(this.parent.element.querySelectorAll('.e-m-date'));\n for (var _a = 0, dateHeaderElement_1 = dateHeaderElement; _a < dateHeaderElement_1.length; _a++) {\n var element = dateHeaderElement_1[_a];\n EventHandler.add(element, 'click', this.parent.agendaModule.dayNavigationClick, this);\n }\n };\n AgendaBase.prototype.calculateResourceTableElement = function (tBody, noOfDays, agendaDate) {\n if (isNullOrUndefined(this.parent.resourceBase.lastResourceLevel)) {\n var level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);\n this.parent.resourceBase.generateResourceLevels(level);\n }\n var agendaLastDate = util.addDays(new Date(agendaDate.getTime()), noOfDays);\n var days = (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') ? noOfDays : 1;\n var resColl = this.parent.resourceBase.resourceCollection;\n var resData = this.parent.resourceBase.lastResourceLevel;\n var initialDate = agendaDate;\n for (var i = 0; i < days; i++) {\n var lastLevelInfo = [];\n var tempLastLevelInfo = [];\n var tempIndex = 0;\n var eventObj = void 0;\n var dateObj = void 0;\n var firstDate = util.addDays(initialDate, i);\n var finalDate = (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda')\n ? util.addDays(firstDate, 1) : agendaLastDate;\n var agendaCollection = this.parent.eventBase.filterEvents(firstDate, finalDate);\n if (agendaCollection.length > 0 || !this.parent.hideEmptyAgendaDays || this.parent.currentView === 'MonthAgenda') {\n for (var res = 0; res < resData.length; res++) {\n noOfDays = (!this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') ? noOfDays : 1;\n var data = [];\n agendaDate = firstDate;\n // eslint-disable-next-line max-len\n var resDataCollection = this.parent.eventBase.filterEvents(agendaDate, agendaLastDate, agendaCollection, resData[res]);\n if (resDataCollection.length > 0 || !this.parent.hideEmptyAgendaDays || this.parent.currentView === 'MonthAgenda') {\n for (var r = 0; r < noOfDays; r++) {\n // eslint-disable-next-line max-len\n var resDayCollection = this.parent.eventBase.filterEvents(agendaDate, util.addDays(agendaDate, 1), resDataCollection, undefined);\n if (resDayCollection.length > 0 || !this.parent.hideEmptyAgendaDays ||\n this.parent.currentView === 'MonthAgenda') {\n data.push(resDayCollection[0]);\n eventObj = {\n rowSpan: 1, type: 'eventColumn', resource: resColl[resColl.length - 1],\n groupIndex: resData[res].groupIndex, groupOrder: resData[res].groupOrder,\n resourceData: resData[res].resourceData, eventData: resDayCollection, date: agendaDate\n };\n dateObj = {\n rowSpan: 1, type: 'dateColumn', resource: resColl[resColl.length - 1],\n groupOrder: resData[res].groupOrder, resourceData: resData[res].resourceData,\n date: agendaDate\n };\n if (!lastLevelInfo[tempIndex]) {\n lastLevelInfo[tempIndex] = [];\n }\n lastLevelInfo[tempIndex].push(eventObj);\n lastLevelInfo[tempIndex].push(dateObj);\n tempIndex++;\n }\n agendaDate = util.addDays(agendaDate, 1);\n if (agendaDate.getTime() >= agendaLastDate.getTime() || this.parent.activeViewOptions.group.byDate\n || this.parent.currentView === 'MonthAgenda') {\n lastLevelInfo[lastLevelInfo.length - 1][1].cssClass = cls.AGENDA_DAY_BORDER_CLASS;\n var tempObj = {\n rowSpan: data.length, type: 'resourceColumn', resource: resColl[resColl.length - 1],\n groupOrder: resData[res].groupOrder.slice(0, -1), resourceData: resData[res].resourceData,\n groupIndex: (lastLevelInfo.length - data.length), className: [cls.RESOURCE_NAME],\n date: agendaDate\n };\n lastLevelInfo[lastLevelInfo.length - data.length].push(tempObj);\n tempLastLevelInfo.push(extend({}, tempObj, null, true));\n break;\n }\n }\n }\n }\n var topResources = resColl.slice(0, -1);\n var tempGroupedData = [];\n var totalRowSpan = 0;\n for (var y = 0; y < topResources.length; y++) {\n var data = topResources[topResources.length - (y + 1)].dataSource;\n for (var x = 0; x < data.length; x++) {\n var z = 0;\n for (var u = 0; u < tempLastLevelInfo.length; u++) {\n // eslint-disable-next-line max-len\n if (tempLastLevelInfo[u].groupOrder[topResources.length - (y + 1)] === data[x][topResources[topResources.length - (y + 1)].idField]) {\n totalRowSpan = totalRowSpan + tempLastLevelInfo[u].rowSpan;\n tempGroupedData.push(extend({}, tempLastLevelInfo[u], null, true));\n }\n if (++z === tempLastLevelInfo.length && tempGroupedData.length > 0) {\n tempGroupedData[0].rowSpan = totalRowSpan;\n tempGroupedData[0].type = 'parentColumnLevel_' + (y + 1);\n tempGroupedData[0].resource = topResources[topResources.length - (y + 1)];\n tempGroupedData[0].resourceData = data[x];\n tempGroupedData[0].date = agendaDate;\n lastLevelInfo[tempGroupedData[0].groupIndex].push(tempGroupedData[0]);\n tempGroupedData = [];\n totalRowSpan = 0;\n }\n }\n }\n }\n this.createResourceTableRow(lastLevelInfo, tBody);\n }\n }\n var totalCollection = this.parent.eventBase.filterEvents(initialDate, agendaLastDate);\n if (totalCollection.length === 0 && !this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) {\n this.renderEmptyContent(tBody, initialDate);\n }\n };\n AgendaBase.prototype.createResourceTableRow = function (tContent, tBody) {\n var tr = createElement('tr', { attrs: { role: 'row' } });\n var ntr;\n var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });\n var tempData;\n var rowSpan = 0;\n var level;\n if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {\n var tContentCollection = [];\n var parentCollection = this.parent.resourceBase.resourceCollection.slice(0, -1);\n for (var w = 0; w < tContent.length; w++) {\n tContentCollection = tContentCollection.concat(tContent[w]);\n }\n level = (parentCollection.length > 0) ? 'parentColumnLevel_' + parentCollection.length : 'resourceColumn';\n var rowSpanCollection = tContentCollection.filter(function (data) { return data.type === level; });\n for (var x = 0; x < rowSpanCollection.length; x++) {\n rowSpan = rowSpan + rowSpanCollection[x].rowSpan;\n }\n }\n for (var row = 0; row < tContent.length; row++) {\n ntr = tr.cloneNode();\n for (var col = tContent[row].length - 1; col >= 0; col--) {\n var data = tContent[row][col];\n var ntd = td.cloneNode();\n if (data.type === 'dateColumn') {\n if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {\n tempData = tContent[row][col];\n continue;\n }\n ntd.setAttribute('data-date', data.date.getTime().toString());\n ntd.appendChild(this.createDateHeaderElement(data.date));\n var className = [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DATE_CLASS];\n if (data.cssClass) {\n className.push(data.cssClass);\n }\n addClass([ntd], className);\n ntr.appendChild(ntd);\n }\n else if (data.type === 'eventColumn') {\n var elementType = (data.eventData.length === 0) ? 'noEvents' : 'data';\n ntd = this.createAgendaContentElement(elementType, data.eventData, ntd, data.groupOrder, data.groupIndex);\n ntd.setAttribute('data-date', data.date.getTime().toString());\n if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {\n addClass([ntd], [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DAY_PADDING_CLASS]);\n }\n ntr.appendChild(ntd);\n }\n else {\n ntd.setAttribute('rowspan', data.rowSpan.toString());\n addClass([ntd], cls.AGENDA_RESOURCE_CLASS);\n this.setResourceHeaderContent(ntd, data, data.className[0]);\n ntr.appendChild(ntd);\n }\n }\n if (this.parent.activeViewOptions.group.byDate && row === 0 && this.parent.currentView !== 'MonthAgenda') {\n var ntd = td.cloneNode();\n ntd.setAttribute('data-date', tempData.date.getTime().toString());\n ntd.setAttribute('rowspan', rowSpan.toString());\n ntd.appendChild(this.createDateHeaderElement(tempData.date));\n addClass([ntd], [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DATE_CLASS, cls.DATE_BORDER_CLASS]);\n var daysCount = util.getDaysCount(this.parent.selectedDate.getTime(), tempData.date.getTime());\n ntr.setAttribute('aria-rowindex', daysCount.toString());\n if (this.parent.element.querySelector(\".e-agenda-view tr[aria-rowindex=\\\"\" + daysCount + \"\\\"]\")) {\n break;\n }\n ntr.insertBefore(ntd, ntr.childNodes[0]);\n }\n tBody.appendChild(ntr);\n }\n };\n AgendaBase.prototype.createDateHeaderElement = function (date) {\n var dateHeader;\n if (this.parent.activeViewOptions.dateHeaderTemplate) {\n dateHeader = createElement('div', { className: cls.AGENDA_HEADER_CLASS });\n var args = { date: date, type: 'dateHeader' };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;\n var templateId = scheduleId + viewName + 'dateHeaderTemplate';\n var dateTemplate = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, 'dateHeaderTemplate', templateId, false));\n append(dateTemplate, dateHeader);\n }\n else {\n dateHeader = this.getMobileDateElement(date, cls.AGENDA_HEADER_CLASS);\n }\n return dateHeader;\n };\n AgendaBase.prototype.renderEmptyContent = function (tBody, agendaDate) {\n var eTr = this.createTableRowElement(agendaDate, 'noEvents');\n var eTd = eTr.children[0];\n var noEvents = createElement('div', {\n className: cls.AGENDA_EMPTY_EVENT_CLASS,\n innerHTML: this.parent.localeObj.getConstant('noEvents')\n });\n eTd.appendChild(noEvents);\n tBody.appendChild(eTr);\n };\n AgendaBase.prototype.createTableRowElement = function (date, type) {\n var daysCount = util.getDaysCount(this.parent.selectedDate.getTime(), date.getTime());\n var tr = createElement('tr', { attrs: { 'role': 'row', 'aria-rowindex': daysCount.toString() } });\n var td = createElement('td', {\n attrs: {\n 'class': (type === 'monthHeader') ? cls.MONTH_HEADER_CLASS : cls.AGENDA_CELLS_CLASS,\n 'role': 'gridcell',\n 'aria-selected': 'false',\n 'aria-colindex': daysCount.toString(),\n 'data-date': date.getTime().toString()\n }\n });\n var dTd = td.cloneNode();\n var aTd = td.cloneNode();\n tr.appendChild(dTd);\n if (type !== 'noEvents') {\n tr.appendChild(aTd);\n }\n return tr;\n };\n AgendaBase.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return AgendaBase;\n}(ViewBase));\nexport { AgendaBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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-explicit-any */\nimport { formatUnit, isNullOrUndefined, closest, extend, append, prepend, remove } from '@syncfusion/ej2-base';\nimport { createElement, addClass, EventHandler } from '@syncfusion/ej2-base';\nimport { AgendaBase } from '../event-renderer/agenda-base';\nimport * as util from '../base/util';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * agenda view\n */\nvar Agenda = /** @class */ (function (_super) {\n __extends(Agenda, _super);\n function Agenda(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-agenda-view';\n _this.isInverseTableSelect = false;\n _this.agendaDates = {};\n _this.virtualScrollTop = 1;\n return _this;\n }\n Agenda.prototype.getModuleName = function () {\n return 'agenda';\n };\n Agenda.prototype.renderLayout = function () {\n this.agendaDates = {};\n this.element = createElement('div', { className: cls.TABLE_WRAP_CLASS });\n addClass([this.element], this.viewClass);\n this.element.appendChild(this.createTableLayout(cls.OUTER_TABLE_CLASS));\n this.element.querySelector('table').setAttribute('role', 'presentation');\n this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS).appendChild(this.element);\n var eTr = createElement('tr');\n this.element.querySelector('tbody').appendChild(eTr);\n var workTd = createElement('td');\n eTr.appendChild(workTd);\n var wrap = createElement('div', { className: cls.CONTENT_WRAP_CLASS });\n workTd.appendChild(wrap);\n var tbl = this.createTableLayout(cls.CONTENT_TABLE_CLASS);\n wrap.appendChild(tbl);\n var tBody = tbl.querySelector('tbody');\n var agendaDate = util.resetTime(this.parent.selectedDate);\n this.renderEmptyContent(tBody, agendaDate);\n this.wireEvents();\n if (this.parent.resourceBase) {\n this.parent.resourceBase.generateResourceLevels([{ renderDates: this.parent.activeView.renderDates }]);\n }\n if (this.parent.uiStateValues.isGroupAdaptive && !this.parent.element.querySelector('.' + cls.RESOURCE_TOOLBAR_CONTAINER)) {\n this.renderResourceMobileLayout();\n }\n this.parent.notify(event.contentReady, {});\n };\n Agenda.prototype.eventLoad = function (args) {\n this.dataSource = extend([], this.parent.eventsData, null, true);\n for (var _i = 0, _a = this.parent.eventsData; _i < _a.length; _i++) {\n var event_1 = _a[_i];\n delete event_1.generatedDates;\n }\n var eventCollection = this.parent.activeViewOptions.allowVirtualScrolling ?\n args.processedData : this.parent.eventsProcessed;\n if (this.parent.uiStateValues.isGroupAdaptive) {\n var resource = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n this.dataSource = this.parent.eventBase.filterEventsByResource(resource, this.dataSource);\n eventCollection = this.parent.eventBase.filterEventsByResource(resource, eventCollection);\n }\n this.parent.eventsProcessed = this.processAgendaEvents(eventCollection);\n var agendaDate = util.resetTime(this.parent.selectedDate);\n var tBody = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n util.removeChildren(tBody);\n this.renderInitialContent(tBody, agendaDate);\n this.wireEventActions();\n var contentArea = closest(tBody, '.' + cls.CONTENT_WRAP_CLASS);\n contentArea.scrollTop = 1;\n this.parent.notify(event.eventsLoaded, {});\n if (!this.parent.activeViewOptions.allowVirtualScrolling) {\n this.retainScrollPosition();\n }\n };\n Agenda.prototype.refreshEvent = function (refreshDate) {\n var processedData = [];\n var fields = this.parent.eventFields;\n for (var _i = 0, _a = this.dataSource; _i < _a.length; _i++) {\n var data = _a[_i];\n if (isNullOrUndefined(data[fields.recurrenceID]) && !isNullOrUndefined(data[fields.recurrenceRule]) &&\n !isNullOrUndefined(data.generatedDates) && refreshDate >= data.generatedDates.end) {\n processedData = processedData.concat(this.parent.eventBase.generateOccurrence(data, refreshDate));\n }\n }\n this.parent.eventsProcessed = this.parent.eventsProcessed.concat(this.processAgendaEvents(processedData));\n };\n Agenda.prototype.refreshHeader = function () {\n var tBody = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n if (this.parent.activeViewOptions.group.byDate) {\n util.removeChildren(tBody);\n }\n else {\n remove(tBody.firstElementChild);\n }\n var agendaDate = util.resetTime(this.parent.selectedDate);\n var emptyTBody = createElement('tbody');\n var firstDate = new Date(agendaDate.getTime());\n var lastDate = (this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) ?\n this.getEndDateFromStartDate(firstDate) : util.addDays(firstDate, this.parent.agendaDaysCount);\n this.renderContent(emptyTBody, firstDate, lastDate);\n append([].slice.call(emptyTBody.childNodes), tBody);\n };\n Agenda.prototype.renderInitialContent = function (tBody, agendaDate) {\n var emptyTBody = createElement('tbody');\n var firstDate = new Date(agendaDate.getTime());\n var lastDate = (this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) ?\n this.getEndDateFromStartDate(firstDate) : util.addDays(firstDate, this.parent.agendaDaysCount);\n this.renderContent(emptyTBody, firstDate, lastDate);\n append([].slice.call(emptyTBody.childNodes), tBody);\n // Initial rendering, to load previous date events upto scroll bar enable\n if (this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays && this.parent.eventsData.length > 0) {\n var contentArea = this.getContentAreaElement();\n var contentChild = contentArea.querySelector('.e-content-table');\n while (contentArea.offsetWidth <= contentArea.clientWidth) {\n if (this.parent.isAdaptive && contentChild.offsetHeight >= contentArea.clientHeight) {\n break;\n }\n var emptyTBody_1 = createElement('tbody');\n lastDate = firstDate;\n firstDate = util.addDays(lastDate, -this.parent.agendaDaysCount);\n this.renderContent(emptyTBody_1, firstDate, lastDate);\n prepend([].slice.call(emptyTBody_1.childNodes), tBody);\n if (firstDate <= this.parent.minDate) {\n break;\n }\n }\n }\n if (tBody.childNodes.length <= 0) {\n this.renderEmptyContent(tBody, agendaDate);\n }\n };\n Agenda.prototype.renderContent = function (tBody, agendaDate, lastDate) {\n var fieldMapping = this.parent.eventFields;\n var firstDate = new Date(agendaDate.getTime());\n var isObject = this.appointmentFiltering(firstDate, lastDate);\n if (isObject.length > 0 && this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) {\n agendaDate = isObject[0][fieldMapping.startTime];\n agendaDate = new Date(new Date(agendaDate.getTime()).setHours(0, 0, 0, 0));\n this.updateHeaderText(isObject[0][fieldMapping.startTime]);\n }\n var endDate;\n if (!this.parent.hideEmptyAgendaDays || (this.parent.agendaDaysCount > 0 && isObject.length > 0)) {\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n var date = agendaDate;\n if (!this.parent.activeViewOptions.group.byDate) {\n this.parent.activeViewOptions.allowVirtualScrolling = false;\n date = firstDate;\n if (this.parent.headerModule) {\n this.parent.headerModule.updateDateRange(this.parent.activeView.getDateRangeText());\n this.parent.headerModule.updateHeaderItems('remove');\n }\n }\n this.calculateResourceTableElement(tBody, this.parent.agendaDaysCount, date);\n }\n else {\n for (var day = 0; day < this.parent.agendaDaysCount; day++) {\n var filterData = this.appointmentFiltering(agendaDate);\n var nTr = this.createTableRowElement(agendaDate, 'data');\n if (this.element.querySelector('tr[aria-rowindex=\"' + parseInt(nTr.getAttribute('aria-rowindex'), 10) + '\"]')) {\n agendaDate = util.addDays(agendaDate, 1);\n continue;\n }\n var dTd = nTr.children[0];\n var aTd = nTr.children[1];\n if (filterData.length > 0 || (!this.parent.hideEmptyAgendaDays && filterData.length === 0)) {\n var elementType = (!this.parent.hideEmptyAgendaDays && filterData.length === 0) ? 'noEvents' : 'data';\n dTd.appendChild(this.createDateHeaderElement(agendaDate));\n nTr.appendChild(dTd);\n var cTd = this.createAgendaContentElement(elementType, filterData, aTd);\n nTr.appendChild(cTd);\n if (cTd.querySelectorAll('li').length > 0) {\n tBody.appendChild(nTr);\n }\n }\n else if (this.parent.activeViewOptions.allowVirtualScrolling) {\n day--;\n }\n if (this.isCurrentDate(new Date(agendaDate.getTime()))) {\n addClass(dTd.childNodes, cls.AGENDA_CURRENT_DAY_CLASS);\n }\n agendaDate = util.addDays(agendaDate, 1);\n if (agendaDate.getTime() > lastDate.getTime()) {\n break;\n }\n }\n }\n endDate = new Date(agendaDate.getTime() - util.MS_PER_DAY);\n }\n this.agendaDates = { start: firstDate, end: endDate };\n };\n Agenda.prototype.agendaScrolling = function (event) {\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide();\n }\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n this.virtualScrolling(event);\n }\n if (!this.parent.activeViewOptions.allowVirtualScrolling) {\n this.setPersistence();\n }\n };\n Agenda.prototype.virtualScrolling = function (event) {\n var target = event.target;\n var scrollTop = target.scrollTop;\n var scrollHeight = target.scrollHeight;\n var offsetHeight = target.clientHeight;\n var totalHeight = scrollTop + offsetHeight;\n var direction = (this.virtualScrollTop < scrollTop) ? 'next' : 'previous';\n var tBody = target.querySelector('tbody');\n var emptyTBody = createElement('tbody');\n var topElement = this.getElementFromScrollerPosition(event);\n var scrollDate = this.parent.getDateFromElement(topElement);\n var filterDate;\n var filterData;\n if (scrollTop === 0) {\n filterDate = this.getPreviousNextDate(util.addDays(scrollDate, -1), direction);\n filterData = this.appointmentFiltering(filterDate.start, filterDate.end);\n if (filterData.length > 0 || !this.parent.hideEmptyAgendaDays) {\n this.renderContent(emptyTBody, filterDate.start, filterDate.end);\n prepend([].slice.call(emptyTBody.childNodes), tBody);\n this.wireEventActions();\n for (var s = 0, element = tBody.children; s < element.length; s++) {\n if (element[s].getAttribute('aria-rowindex') === topElement.getAttribute('aria-colindex')) {\n var scrollToValue = element[s].offsetTop -\n this.element.querySelector('.e-agenda-item').offsetHeight;\n target.scrollTop = scrollToValue;\n break;\n }\n }\n this.updateHeaderText(scrollDate);\n }\n }\n else if (totalHeight >= (scrollHeight - 5)) {\n filterDate = this.getPreviousNextDate(util.addDays(scrollDate, 1), direction);\n filterData = this.appointmentFiltering(filterDate.start, filterDate.end);\n if (filterData.length > 0 || !this.parent.hideEmptyAgendaDays) {\n this.renderContent(emptyTBody, filterDate.start, filterDate.end);\n append([].slice.call(emptyTBody.childNodes), tBody);\n this.wireEventActions();\n this.updateHeaderText(scrollDate);\n }\n }\n else {\n this.updateHeaderText(scrollDate);\n }\n this.virtualScrollTop = scrollTop;\n var selectedElements = this.parent.eventBase.getSelectedAppointments();\n if (selectedElements.length > 0) {\n selectedElements[selectedElements.length - 1].focus();\n }\n };\n Agenda.prototype.getElementFromScrollerPosition = function (event) {\n var filterElement;\n var target = event.target;\n var scrollTop = target.scrollTop;\n var scrollHeight = target.scrollHeight;\n var offsetHeight = target.clientHeight;\n var totalHeight = scrollTop + offsetHeight;\n var liCollection = [].slice.call(target.querySelectorAll('.e-agenda-item'));\n var li;\n var liDetails;\n if (liCollection.length > 0) {\n if (scrollTop === 0) {\n li = liCollection[0];\n filterElement = closest(li, '.' + cls.AGENDA_CELLS_CLASS);\n }\n else if (totalHeight === scrollHeight) {\n li = liCollection[liCollection.length - 1];\n filterElement = closest(li, '.' + cls.AGENDA_CELLS_CLASS);\n }\n else {\n for (var a = 0, length_1 = liCollection.length; a < length_1; a++) {\n li = liCollection[a];\n liDetails = li.getBoundingClientRect();\n if (liDetails.top >= 0) {\n filterElement = closest(li, '.' + cls.AGENDA_CELLS_CLASS);\n break;\n }\n }\n }\n }\n return filterElement;\n };\n Agenda.prototype.updateHeaderText = function (date) {\n if (this.parent.showHeaderBar) {\n this.parent.headerModule.updateDateRange(this.getDateRangeText(date));\n }\n };\n Agenda.prototype.getPreviousNextDate = function (date, type) {\n var currentDate = new Date(date.getTime());\n var firstDate = this.getStartDateFromEndDate(date);\n var lastDate = this.getEndDateFromStartDate(date);\n var daysCount = 0;\n do {\n var filterData = this.appointmentFiltering(currentDate);\n if (filterData.length > 0 || !this.parent.hideEmptyAgendaDays) {\n daysCount++;\n }\n currentDate = util.addDays(currentDate, (type === 'next') ? 1 : -1);\n if (currentDate < firstDate || currentDate > lastDate) {\n break;\n }\n } while (daysCount !== this.parent.agendaDaysCount);\n var endDate = util.addDays(currentDate, (type === 'next') ? -1 : 1);\n return (type === 'next') ? { start: date, end: util.addDays(endDate, 1) } : { start: endDate, end: util.addDays(date, 1) };\n };\n Agenda.prototype.appointmentFiltering = function (startDate, endDate) {\n var dateStart;\n var dateEnd;\n if (!isNullOrUndefined(startDate) && isNullOrUndefined(endDate)) {\n dateStart = util.resetTime(new Date(startDate.getTime()));\n dateEnd = util.setTime(new Date(dateStart.getTime()), util.MS_PER_DAY);\n }\n else {\n dateStart = new Date(startDate.getTime());\n dateEnd = new Date(endDate.getTime());\n }\n var filterData = this.parent.eventBase.filterEvents(dateStart, dateEnd);\n if (filterData.length === 0) {\n this.refreshEvent(startDate);\n filterData = this.parent.eventBase.filterEvents(dateStart, dateEnd);\n }\n return filterData;\n };\n Agenda.prototype.getStartDateFromEndDate = function (endDate) {\n var filterDate;\n var fields = this.parent.eventFields;\n if (this.parent.eventsProcessed.length > 0) {\n var firstDate = Math.min.apply(Math, this.parent.eventsProcessed.map(function (a) {\n return a[fields.startTime].getTime();\n }));\n filterDate = this.parent.hideEmptyAgendaDays ? new Date(firstDate) : this.parent.minDate;\n }\n else {\n filterDate = this.parent.hideEmptyAgendaDays ? util.addMonths(endDate, -1) : this.parent.minDate;\n }\n return util.resetTime(filterDate);\n };\n Agenda.prototype.getEndDateFromStartDate = function (startDate) {\n var filterDate;\n var fieldMapping = this.parent.eventFields;\n if (this.parent.eventsProcessed.length > 0) {\n var lastDate = Math.max.apply(Math, this.parent.eventsProcessed.map(function (a) {\n return a[fieldMapping.endTime].getTime();\n }));\n filterDate = this.parent.hideEmptyAgendaDays ? new Date(lastDate) : this.parent.maxDate;\n }\n else {\n filterDate = this.parent.hideEmptyAgendaDays ? util.addMonths(startDate, 1) : this.parent.maxDate;\n }\n return util.resetTime(util.addDays(filterDate, 1));\n };\n Agenda.prototype.getNextPreviousDate = function (type) {\n var noOfDays = (type === 'next') ? 1 : -1;\n return util.addDays(this.parent.selectedDate, noOfDays);\n };\n Agenda.prototype.startDate = function () {\n return util.resetTime(this.parent.selectedDate);\n };\n Agenda.prototype.endDate = function () {\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n return this.getEndDateFromStartDate(this.startDate());\n }\n else {\n return util.addDays(this.startDate(), this.parent.agendaDaysCount);\n }\n };\n Agenda.prototype.getDateRangeText = function (date) {\n var formatDate = (this.parent.activeViewOptions.dateFormat) ? this.parent.activeViewOptions.dateFormat : 'MMMM y';\n if (this.parent.activeViewOptions.allowVirtualScrolling || this.parent.isAdaptive) {\n var currentDate = isNullOrUndefined(date) ? this.parent.selectedDate : date;\n return util.capitalizeFirstWord(this.parent.globalize.formatDate(currentDate, { format: formatDate, calendar: this.parent.getCalendarMode() }), 'multiple');\n }\n else {\n var startDate = this.parent.selectedDate;\n var endDate = util.addDays(startDate, this.parent.agendaDaysCount - 1);\n return this.formatDateRange(startDate, endDate);\n }\n };\n Agenda.prototype.dayNavigationClick = function (e) {\n var element = closest(e.currentTarget, '.' + cls.AGENDA_CELLS_CLASS);\n var date = this.parent.getDateFromElement(element);\n if (!isNullOrUndefined(date) && !this.parent.isAdaptive && this.parent.isMinMaxDate(date)) {\n this.parent.setProperties({ selectedDate: date }, true);\n this.parent.changeView('Day', e);\n }\n };\n Agenda.prototype.wireEvents = function () {\n EventHandler.add(this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS), event.scroll, this.agendaScrolling, this);\n };\n Agenda.prototype.unWireEvents = function () {\n EventHandler.remove(this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS), event.scroll, this.agendaScrolling);\n var dateHeaderElement = [].slice.call(this.element.querySelectorAll('.e-m-date'));\n for (var _i = 0, dateHeaderElement_1 = dateHeaderElement; _i < dateHeaderElement_1.length; _i++) {\n var element = dateHeaderElement_1[_i];\n EventHandler.remove(element, 'click', this.dayNavigationClick);\n }\n };\n Agenda.prototype.addEventListener = function () {\n this.parent.on(event.scrollUiUpdate, this.onAgendaScrollUiUpdate, this);\n this.parent.on(event.dataReady, this.eventLoad, this);\n };\n Agenda.prototype.removeEventListener = function () {\n if (this.parent) {\n this.parent.off(event.scrollUiUpdate, this.onAgendaScrollUiUpdate);\n this.parent.off(event.dataReady, this.eventLoad);\n }\n };\n Agenda.prototype.onAgendaScrollUiUpdate = function () {\n var headerHeight = this.getHeaderBarHeight();\n if (this.parent.headerModule) {\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n this.parent.headerModule.updateHeaderItems('add');\n }\n else {\n this.parent.headerModule.updateHeaderItems('remove');\n }\n }\n var contentArea = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (this.parent.height !== 'auto') {\n contentArea.style.height = formatUnit(this.parent.element.offsetHeight - headerHeight);\n }\n };\n Agenda.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n if (this.element) {\n this.unWireEvents();\n if (this.parent.resourceBase) {\n this.parent.resourceBase.destroy();\n }\n if (this.parent.headerModule && this.parent.activeViewOptions.allowVirtualScrolling) {\n this.parent.headerModule.updateHeaderItems('remove');\n }\n _super.prototype.destroy.call(this);\n }\n };\n return Agenda;\n}(AgendaBase));\nexport { Agenda };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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};\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 createPopupOnClick: this.createPopupOnClick,\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 if (this.value === null) {\n this.value = '#008000ff';\n }\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 if (this.enableOpacity) {\n this.setProperties({ 'value': cValue }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\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 Property(false)\n ], ColorPicker.prototype, \"createPopupOnClick\", 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : 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, (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : 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","import { createElement, Browser, isBlazor } from '@syncfusion/ej2-base';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nimport { ListView } from '@syncfusion/ej2-lists';\nimport { AjaxHandler } from '../index';\n/**\n * BookmarkView module\n */\nvar BookmarkView = /** @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function BookmarkView(pdfViewer, pdfViewerBase) {\n var _this = this;\n /**\n * @private\n */\n this.childNavigateCount = 0;\n // eslint-disable-next-line\n this.bookmarkClick = function (args) {\n // eslint-disable-next-line\n if (!args.event.target.classList.contains('e-icons')) {\n var bookid = args.data.Id;\n _this.childNavigateCount = 0;\n _this.pdfViewerBase.navigationPane.goBackToToolbar();\n // eslint-disable-next-line\n var selectedItem = _this.bookmarkList.getSelectedItems();\n _this.navigateToBookmark(bookid, args.text, selectedItem.data.FileName);\n }\n else {\n _this.childNavigateCount++;\n }\n return false;\n };\n this.nodeClick = function (args) {\n _this.setHeight(args.node);\n var bookid = Number(args.nodeData.id);\n // eslint-disable-next-line\n var data = _this.treeObj.getTreeData(args.node);\n _this.navigateToBookmark(bookid, args.node.textContent, data[0].FileName);\n if (_this.pdfViewer.annotationModule && _this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(_this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n _this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n return false;\n };\n this.bookmarkPanelBeforeOpen = function (args) {\n if (_this.pdfViewer.enableBookmarkStyles) {\n for (var k = 0; k < _this.bookmarkStyles.length; k++) {\n if ((args.text.trim()) === (_this.bookmarkStyles[k].Text.trim())) {\n // eslint-disable-next-line\n var element = args.node.lastElementChild;\n if (element) {\n // eslint-disable-next-line\n var fontStyle = _this.bookmarkStyles[k].FontStyle.split(',');\n for (var n = 0; n < fontStyle.length; n++) {\n switch (fontStyle[n].trim()) {\n case 'Italic':\n element.style.fontStyle = 'italic';\n break;\n case 'Bold':\n element.style.fontWeight = 'Bold';\n }\n }\n // eslint-disable-next-line\n var currentElement = element.getElementsByClassName('e-pv-bookmark-title')[0];\n if (currentElement) {\n currentElement.style.color = _this.bookmarkStyles[k].Color;\n }\n else {\n element.children[0].style.color = _this.bookmarkStyles[k].Color;\n }\n }\n break;\n }\n }\n }\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n */\n BookmarkView.prototype.createRequestForBookmarks = function () {\n var proxy = this;\n // eslint-disable-next-line max-len\n var jsonObject = { hashId: this.pdfViewerBase.hashId, action: 'Bookmarks', elementId: this.pdfViewer.element.id, uniqueId: this.pdfViewerBase.documentId };\n if (this.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;\n }\n if (this.pdfViewer.enableBookmarkStyles) {\n // eslint-disable-next-line\n jsonObject.bookmarkStyles = this.pdfViewer.enableBookmarkStyles;\n }\n this.bookmarkRequestHandler = new AjaxHandler(this.pdfViewer);\n this.bookmarkRequestHandler.url = proxy.pdfViewer.serviceUrl + '/Bookmarks';\n this.bookmarkRequestHandler.responseType = 'json';\n this.bookmarkRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.bookmarkRequestHandler.onSuccess = function (result) {\n if (proxy.pdfViewerBase.navigationPane) {\n proxy.pdfViewerBase.navigationPane.disableBookmarkButton();\n }\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, 'Bookmarks');\n data = null;\n }\n }\n if (data && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess('Bookmarks', data);\n proxy.bookmarks = { bookMark: data.Bookmarks };\n proxy.bookmarkStyles = data.Bookmarkstyles;\n proxy.bookmarksDestination = { bookMarkDestination: data.BookmarksDestination };\n if (isBlazor()) {\n // eslint-disable-next-line\n var bookmarkCollection = { bookmarks: proxy.bookmarks, bookmarksDestination: proxy.bookmarksDestination };\n if (proxy.pdfViewer && proxy.pdfViewer._dotnetInstance) {\n proxy.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateBookmarkCollection', bookmarkCollection);\n }\n }\n }\n }\n if (proxy.pdfViewerBase.navigationPane) {\n if (proxy.bookmarks == null) {\n proxy.pdfViewerBase.navigationPane.disableBookmarkButton();\n if (isBlazor() && proxy.pdfViewer._dotnetInstance) {\n proxy.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateBookmarkCollection', null);\n }\n }\n else {\n proxy.pdfViewerBase.navigationPane.enableBookmarkButton();\n proxy.isBookmarkViewDiv = false;\n if (proxy.pdfViewer.isBookmarkPanelOpen) {\n proxy.pdfViewerBase.navigationPane.openBookmarkcontentInitially();\n }\n }\n }\n };\n // eslint-disable-next-line\n this.bookmarkRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, 'Bookmarks');\n };\n // eslint-disable-next-line\n this.bookmarkRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, 'Bookmarks');\n };\n };\n /**\n * @private\n */\n BookmarkView.prototype.renderBookmarkcontent = function () {\n var _this = this;\n if (!this.isBookmarkViewDiv) {\n var isblazor = isBlazor();\n // eslint-disable-next-line max-len\n this.bookmarkView = isblazor ? this.pdfViewer.element.querySelector('.e-pv-bookmark-view') : createElement('div', { id: this.pdfViewer.element.id + '_bookmark_view', className: 'e-pv-bookmark-view' });\n this.pdfViewerBase.navigationPane.sideBarContent.appendChild(this.bookmarkView);\n // eslint-disable-next-line max-len\n var bookmarkIconView = createElement('div', { id: this.pdfViewer.element.id + '_bookmark_iconview', className: 'e-pv-bookmark-icon-view' });\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n var bookmarkIcon = createElement('span', { id: this.pdfViewer.element.id + '_bookmark_icon', className: 'e-pv-bookmark-icon e-pv-icon' });\n bookmarkIconView.appendChild(bookmarkIcon);\n }\n else {\n // eslint-disable-next-line max-len\n var bookmarkIcon = createElement('span', { id: this.pdfViewer.element.id + '_bookmark_icon', className: 'e-pv-bookmark-icon e-pv-icon e-right' });\n bookmarkIconView.appendChild(bookmarkIcon);\n }\n // eslint-disable-next-line max-len\n var bookmarkTitle = createElement('div', { id: this.pdfViewer.element.id + '_bookmark_Title', className: 'e-pv-bookmark-title' });\n if (this.pdfViewer.enableRtl) {\n bookmarkTitle.style.paddingRight = 26 + 'px';\n }\n bookmarkTitle.innerText = '${Title}';\n bookmarkIconView.appendChild(bookmarkTitle);\n if (!isblazor) {\n // eslint-disable-next-line max-len\n this.treeObj = new TreeView({\n fields: {\n dataSource: this.bookmarks.bookMark,\n id: 'Id',\n text: 'Title',\n child: 'Child',\n hasChildren: 'HasChild'\n },\n nodeTemplate: bookmarkIconView.outerHTML,\n nodeSelected: this.nodeClick.bind(this),\n drawNode: this.bookmarkPanelBeforeOpen.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.treeObj.enableRtl = true;\n }\n this.treeObj.appendTo(this.bookmarkView);\n }\n // eslint-disable-next-line\n var event_1 = ['mouseover', 'keydown'];\n for (var m = 0; m < event_1.length; m++) {\n this.bookmarkView.addEventListener(event_1[m], function (event) {\n _this.setHeight(event.target);\n });\n }\n this.isBookmarkViewDiv = true;\n }\n this.bookmarkView.style.display = 'block';\n };\n /**\n * @private\n */\n BookmarkView.prototype.renderBookmarkContentMobile = function () {\n if (this.bookmarkView != null) {\n this.bookmarkView.remove();\n }\n this.bookmarkView = createElement('div', { id: this.pdfViewer.element.id + '_bookmark_view', className: 'e-pv-bookmark-view' });\n this.pdfViewerBase.getElement('_bookmarks_container').appendChild(this.bookmarkView);\n this.bookmarkList = new ListView({\n dataSource: this.bookmarks.bookMark,\n fields: {\n id: 'Id',\n text: 'Title',\n child: 'Child'\n },\n showHeader: false,\n select: this.bookmarkClick.bind(this)\n });\n this.bookmarkList.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.bookmarkList.enableRtl = true;\n }\n this.bookmarkList.appendTo(this.bookmarkView);\n };\n // eslint-disable-next-line\n BookmarkView.prototype.setHeight = function (element) {\n if (this.treeObj) {\n if (this.treeObj.fullRowSelect && element.classList) {\n if (element.classList.contains('e-treeview')) {\n element = element.querySelector('.e-node-focus').querySelector('.e-fullrow');\n }\n else if (element.classList.contains('e-list-parent')) {\n element = element.querySelector('.e-fullrow');\n }\n else if (element.classList.value !== ('e-fullrow')) {\n if (element.closest && element.closest('.e-list-item')) {\n element = element.closest('.e-list-item').querySelector('.e-fullrow');\n }\n else {\n if (element.classList.contains('e-list-item')) {\n element = element.querySelector('.e-fullrow');\n }\n else if (element.classList.contains('e-icons') && element.classList.contains('interaction')\n && element.parentElement.parentElement.classList.contains('e-list-item')) {\n element = element.parentElement.parentElement.querySelector('.e-fullrow');\n }\n }\n }\n if (element.nextElementSibling) {\n element.style.height = element.nextElementSibling.offsetHeight + 'px';\n }\n }\n }\n };\n /**\n * @private\n */\n BookmarkView.prototype.setBookmarkContentHeight = function () {\n if (this.treeObj) {\n // eslint-disable-next-line\n var element = this.treeObj.element;\n if (this.treeObj.fullRowSelect) {\n if (element.classList.contains('e-treeview')) {\n element = element.querySelector('.e-node-focus').querySelector('.e-fullrow');\n }\n if (element.nextElementSibling) {\n element.style.height = element.nextElementSibling.offsetHeight + 'px';\n }\n }\n }\n };\n BookmarkView.prototype.navigateToBookmark = function (bookid, text, fileName) {\n var pageIndex = this.bookmarksDestination.bookMarkDestination[bookid].PageIndex;\n var Y = this.bookmarksDestination.bookMarkDestination[bookid].Y;\n if (pageIndex !== -1) {\n this.goToBookmark(pageIndex, Y);\n }\n this.pdfViewer.fireBookmarkClick(pageIndex !== -1 ? pageIndex + 1 : pageIndex, Y, text, fileName);\n };\n /**\n * Get Bookmarks of the PDF document being loaded in the ejPdfViewer control\n *\n * @returns any\n */\n // eslint-disable-next-line\n BookmarkView.prototype.getBookmarks = function () {\n if (this.bookmarks && this.bookmarksDestination) {\n // eslint-disable-next-line max-len\n return { bookmarks: this.bookmarks, bookmarksDestination: this.bookmarksDestination };\n }\n };\n /**\n * Navigate To current Bookmark location of the PDF document being loaded in the ejPdfViewer control.\n *\n * @param {number} pageIndex - Specifies the pageIndex for Navigate\n * @param {number} y - Specifies the Y coordinates value of the Page\n * @returns void\n */\n BookmarkView.prototype.goToBookmark = function (pageIndex, y) {\n var proxy = this;\n var destPage = (this.pdfViewerBase.pageSize[pageIndex].height);\n var scrollValue;\n if (y === 0) {\n scrollValue = this.pdfViewerBase.pageSize[pageIndex].top * this.pdfViewerBase.getZoomFactor();\n }\n else {\n // eslint-disable-next-line max-len\n scrollValue = this.pdfViewerBase.pageSize[pageIndex].top * this.pdfViewerBase.getZoomFactor() + ((destPage - y) * this.pdfViewerBase.getZoomFactor());\n }\n var scroll = scrollValue.toString();\n // eslint-disable-next-line radix\n proxy.pdfViewerBase.viewerContainer.scrollTop = parseInt(scroll);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewerBase.mobileScrollerContainer.style.display = '';\n this.pdfViewerBase.updateMobileScrollerPosition();\n }\n proxy.pdfViewerBase.focusViewerContainer();\n return false;\n };\n /**\n * @private\n */\n BookmarkView.prototype.clear = function () {\n if (this.pdfViewerBase.navigationPane) {\n this.pdfViewerBase.navigationPane.disableBookmarkButton();\n this.pdfViewerBase.navigationPane.updateViewerContainerOnClose();\n }\n if (this.bookmarks) {\n this.bookmarks.bookMark = [];\n this.bookmarks = null;\n }\n if (this.bookmarksDestination) {\n this.bookmarksDestination.bookMarkDestination = [];\n }\n if (this.bookmarkView != null && !isBlazor()) {\n if (this.bookmarkView.parentElement !== null) {\n this.bookmarkView.parentElement.removeChild(this.bookmarkView);\n }\n while (this.bookmarkView.hasChildNodes()) {\n this.bookmarkView.removeChild(this.bookmarkView.lastChild);\n }\n }\n if (this.bookmarkRequestHandler) {\n this.bookmarkRequestHandler.clear();\n }\n };\n /**\n * @private\n */\n BookmarkView.prototype.destroy = function () {\n this.clear();\n };\n /**\n * @private\n */\n BookmarkView.prototype.getModuleName = function () {\n return 'BookmarkView';\n };\n return BookmarkView;\n}());\nexport { BookmarkView };\n"],"sourceRoot":""}